@@ -19,6 +19,7 @@ struct composite_config {
1919 int32_t ocv_lookup_table [BATTERY_OCV_TABLE_LEN ];
2020 uint32_t charge_capacity_microamp_hours ;
2121 enum battery_chemistry chemistry ;
22+ bool fg_channels ;
2223};
2324
2425struct composite_data {
@@ -60,6 +61,7 @@ static int composite_get_prop(const struct device *dev, fuel_gauge_prop_t prop,
6061 struct composite_data * data = dev -> data ;
6162 k_ticks_t now = k_uptime_ticks ();
6263 struct sensor_value sensor_val ;
64+ enum sensor_channel sensor_chan ;
6365 int64_t voltage ;
6466 int rc = 0 ;
6567
@@ -100,7 +102,8 @@ static int composite_get_prop(const struct device *dev, fuel_gauge_prop_t prop,
100102 val -> full_charge_capacity = config -> charge_capacity_microamp_hours / 1000 ;
101103 break ;
102104 case FUEL_GAUGE_VOLTAGE :
103- rc = composite_channel_get (dev , SENSOR_CHAN_VOLTAGE , & sensor_val );
105+ sensor_chan = config -> fg_channels ? SENSOR_CHAN_GAUGE_VOLTAGE : SENSOR_CHAN_VOLTAGE ;
106+ rc = composite_channel_get (dev , sensor_chan , & sensor_val );
104107 val -> voltage = sensor_value_to_micro (& sensor_val );
105108 break ;
106109 case FUEL_GAUGE_ABSOLUTE_STATE_OF_CHARGE :
@@ -109,7 +112,8 @@ static int composite_get_prop(const struct device *dev, fuel_gauge_prop_t prop,
109112 return - ENOTSUP ;
110113 }
111114 /* Fetch the voltage from the sensor */
112- rc = composite_channel_get (dev , SENSOR_CHAN_VOLTAGE , & sensor_val );
115+ sensor_chan = config -> fg_channels ? SENSOR_CHAN_GAUGE_VOLTAGE : SENSOR_CHAN_VOLTAGE ;
116+ rc = composite_channel_get (dev , sensor_chan , & sensor_val );
113117 voltage = sensor_value_to_micro (& sensor_val );
114118 if (rc == 0 ) {
115119 /* Convert voltage to state of charge */
@@ -119,7 +123,9 @@ static int composite_get_prop(const struct device *dev, fuel_gauge_prop_t prop,
119123 break ;
120124 case FUEL_GAUGE_CURRENT :
121125 case FUEL_GAUGE_AVG_CURRENT :
122- rc = composite_channel_get (dev , SENSOR_CHAN_CURRENT , & sensor_val );
126+ sensor_chan =
127+ config -> fg_channels ? SENSOR_CHAN_GAUGE_AVG_CURRENT : SENSOR_CHAN_CURRENT ;
128+ rc = composite_channel_get (dev , sensor_chan , & sensor_val );
123129 val -> current = sensor_value_to_micro (& sensor_val );
124130 break ;
125131 default :
@@ -156,6 +162,7 @@ static DEVICE_API(fuel_gauge, composite_api) = {
156162 .charge_capacity_microamp_hours = \
157163 DT_INST_PROP_OR(inst, charge_full_design_microamp_hours, 0), \
158164 .chemistry = BATTERY_CHEMISTRY_DT_GET(inst), \
165+ .fg_channels = DT_INST_PROP(inst, fuel_gauge_channels), \
159166 }; \
160167 static struct composite_data composite_##inst##_data; \
161168 DEVICE_DT_INST_DEFINE(inst, fuel_gauge_composite_init, NULL, &composite_##inst##_data, \
0 commit comments