__max_num_config_instances: &max_num_config_instances 2

module_name: battery

parameters:
    - group: Battery Calibration
      definitions:
        BAT${i}_V_EMPTY:
            description:
                short: Empty cell voltage (5C load)
                long: |
                    Defines the voltage where a single cell of battery 1 is considered empty.
                    The voltage should be chosen before the steep dropoff to 2.8V. A typical
                    lithium battery can only be discharged down to 10% before it drops off
                    to a voltage level damaging the cells.

            type: float
            unit: V
            decimal: 2
            increment: 0.01
            reboot_required: true
            num_instances: *max_num_config_instances
            instance_start: 1
            default: [3.5, 3.5]

        BAT${i}_V_CHARGED:
            description:
                short: Full cell voltage (5C load)
                long: |
                    Defines the voltage where a single cell of battery 1 is considered full
                    under a mild load. This will never be the nominal voltage of 4.2V

            type: float
            unit: V
            decimal: 2
            increment: 0.01
            reboot_required: true
            num_instances: *max_num_config_instances
            instance_start: 1
            default: [4.05, 4.05]

        BAT${i}_V_LOAD_DROP:
            description:
                short: Voltage drop per cell on full throttle
                long: |
                    This implicitely defines the internal resistance
                    to maximum current ratio for battery 1 and assumes linearity.
                    A good value to use is the difference between the
                    5C and 20-25C load. Not used if BAT${i}_R_INTERNAL is
                    set.

            type: float
            unit: V
            min: 0.07
            max: 0.5
            decimal: 2
            increment: 0.01
            reboot_required: true
            num_instances: *max_num_config_instances
            instance_start: 1
            default: [0.3, 0.3]

        BAT${i}_R_INTERNAL:
            description:
                short: Explicitly defines the per cell internal resistance for battery ${i}
                long: |
                    If non-negative, then this will be used in place of
                    BAT${i}_V_LOAD_DROP for all calculations.

            type: float
            unit: Ohm
            min: -1.0
            max: 0.2
            decimal: 2
            increment: 0.01
            reboot_required: true
            num_instances: *max_num_config_instances
            instance_start: 1
            default: [-1.0, -1.0]

        BAT${i}_N_CELLS:
            description:
                short: Number of cells for battery ${i}.
                long: |
                    Defines the number of cells the attached battery consists of.

            type: enum
            values:
                2: 2S Battery
                3: 3S Battery
                4: 4S Battery
                5: 5S Battery
                6: 6S Battery
                7: 7S Battery
                8: 8S Battery
                9: 9S Battery
                10: 10S Battery
                11: 11S Battery
                12: 12S Battery
                13: 13S Battery
                14: 14S Battery
                15: 15S Battery
                16: 16S Battery
            reboot_required: true
            num_instances: *max_num_config_instances
            instance_start: 1
            default: [0, 0]

        BAT${i}_CAPACITY:
            description:
                short: Battery ${i} capacity.
                long: |
                    Defines the capacity of battery ${i} in mAh.
            type: float
            unit: mAh
            min: -1.0
            max: 100000
            decimal: 0
            increment: 50
            reboot_required: true
            num_instances: *max_num_config_instances
            instance_start: 1
            default: [-1.0, -1.0]

        BAT${i}_SOURCE:
            description:
                short: Battery ${i} monitoring source.
                long: |
                    This parameter controls the source of battery data. The value 'Power Module'
                    means that measurements are expected to come from a power module. If the value is set to
                    'External' then the system expects to receive mavlink battery status messages.
            type: enum
            unit: mAh
            values:
                0: Power Module
                1: External
            reboot_required: true
            num_instances: *max_num_config_instances
            instance_start: 1
            default: [0, 0]