@@ -65,9 +65,6 @@ int UavcanBatteryBridge::init()
65
65
66
66
} else if (uavcan_sub_bat == RAW_AUX_CBAT_DATA) {
67
67
_batt_update_mod[instance] = BatteryDataType::RawAuxCBAT;
68
-
69
- } else if (uavcan_sub_bat == FILTER_DATA) {
70
- _batt_update_mod[instance] = BatteryDataType::Filter;
71
68
}
72
69
}
73
70
@@ -85,8 +82,6 @@ int UavcanBatteryBridge::init()
85
82
return res;
86
83
}
87
84
88
- return 0 ;
89
-
90
85
res = _sub_cbat.start (CBATCbBinder (this , &UavcanBatteryBridge::cbat_sub_cb));
91
86
92
87
if (res < 0 ) {
@@ -100,8 +95,6 @@ int UavcanBatteryBridge::init()
100
95
void
101
96
UavcanBatteryBridge::battery_sub_cb (const uavcan::ReceivedDataStructure<uavcan::equipment::power::BatteryInfo> &msg)
102
97
{
103
- PX4_INFO (" Battery Sub Cb called" );
104
-
105
98
uint8_t instance = 0 ;
106
99
107
100
for (instance = 0 ; instance < battery_status_s::MAX_INSTANCES; instance++) {
@@ -114,12 +107,6 @@ UavcanBatteryBridge::battery_sub_cb(const uavcan::ReceivedDataStructure<uavcan::
114
107
return ;
115
108
}
116
109
117
- if (_batt_update_mod[instance] == BatteryDataType::Filter) {
118
-
119
- filterData (msg, instance);
120
- return ;
121
- }
122
-
123
110
_battery_status[instance].timestamp = hrt_absolute_time ();
124
111
_battery_status[instance].voltage_v = msg.voltage ;
125
112
_battery_status[instance].current_a = msg.current ;
@@ -130,7 +117,7 @@ UavcanBatteryBridge::battery_sub_cb(const uavcan::ReceivedDataStructure<uavcan::
130
117
_battery_status[instance].discharged_mah = _discharged_mah;
131
118
}
132
119
133
- _battery_status[instance].remaining = msg.state_of_charge_pct / 100 .0f ; // between 0 and 1
120
+ _battery_status[instance].remaining = msg.state_of_charge_pct / 100 .0f ; // Between 0 and 1
134
121
// _battery_status[instance].scale = msg.; // Power scaling factor, >= 1, or -1 if unknown
135
122
_battery_status[instance].temperature = msg.temperature + atmosphere::kAbsoluteNullCelsius ; // Kelvin to Celsius
136
123
// _battery_status[instance].cell_count = msg.;
@@ -163,17 +150,13 @@ UavcanBatteryBridge::battery_sub_cb(const uavcan::ReceivedDataStructure<uavcan::
163
150
164
151
if (_batt_update_mod[instance] == BatteryDataType::Raw) {
165
152
publish (msg.getSrcNodeID ().get (), &_battery_status[instance]);
166
- PX4_INFO (" Battery Sub Cb published" );
167
-
168
153
}
169
154
}
170
155
171
156
void
172
157
UavcanBatteryBridge::battery_aux_sub_cb (const uavcan::ReceivedDataStructure<ardupilot::equipment::power::BatteryInfoAux>
173
158
&msg)
174
159
{
175
- PX4_INFO (" Battery Aux Sub Cb called" );
176
-
177
160
uint8_t instance = 0 ;
178
161
179
162
for (instance = 0 ; instance < battery_status_s::MAX_INSTANCES; instance++) {
@@ -186,10 +169,6 @@ UavcanBatteryBridge::battery_aux_sub_cb(const uavcan::ReceivedDataStructure<ardu
186
169
return ;
187
170
}
188
171
189
- if (_batt_update_mod[instance] == BatteryDataType::Filter) {
190
- return ;
191
- }
192
-
193
172
_battery_status[instance].discharged_mah = (_battery_status[instance].full_charge_capacity_wh -
194
173
_battery_status[instance].remaining_capacity_wh ) / msg.nominal_voltage *
195
174
1000 ;
@@ -208,7 +187,6 @@ UavcanBatteryBridge::battery_aux_sub_cb(const uavcan::ReceivedDataStructure<ardu
208
187
209
188
if (_batt_update_mod[instance] == BatteryDataType::RawAux) {
210
189
publish (msg.getSrcNodeID ().get (), &_battery_status[instance]);
211
- PX4_INFO (" Battery Aux Sub Cb published" );
212
190
}
213
191
214
192
}
@@ -217,18 +195,6 @@ UavcanBatteryBridge::battery_aux_sub_cb(const uavcan::ReceivedDataStructure<ardu
217
195
void
218
196
UavcanBatteryBridge::cbat_sub_cb (const uavcan::ReceivedDataStructure<cuav::equipment::power::CBAT> &msg)
219
197
{
220
- /*
221
- if (msg.serial_number != 0){
222
- PX4_ERR("CBAT message received");
223
- }
224
-
225
- else{
226
- PX4_ERR("No CBAT message received");
227
- }
228
- */
229
-
230
- PX4_INFO (" Battery CBAT Sub Cb called" );
231
-
232
198
uint8_t instance = 0 ;
233
199
234
200
for (instance = 0 ; instance < battery_status_s::MAX_INSTANCES; instance++) {
@@ -242,24 +208,17 @@ UavcanBatteryBridge::cbat_sub_cb(const uavcan::ReceivedDataStructure<cuav::equip
242
208
return ;
243
209
}
244
210
245
- if (_batt_update_mod[instance] == BatteryDataType::Filter) {
246
- return ;
247
- }
248
-
249
211
determineWarning (_battery_status[instance].remaining );
250
212
_battery_status[instance].warning = _warning;
251
213
252
214
if (_batt_update_mod[instance] == BatteryDataType::RawAuxCBAT) {
253
- // char ser_num[32] = {0};
254
- // snprintf(ser_num, 32, "%hu", msg.serial_number);
255
- // strncpy(_battery_status[instance].serial_number, ser_num, sizeof(_battery_status[instance].serial_number) - 1);
256
- strncpy (_battery_status[instance].serial_number , " 123456" , sizeof (_battery_status[instance].serial_number ));
215
+ char ser_num[32 ] = {0 };
216
+ snprintf (ser_num, 32 , " %hu" , msg.serial_number );
217
+ strncpy (_battery_status[instance].serial_number , ser_num, sizeof (_battery_status[instance].serial_number ) - 1 );
257
218
258
219
_battery_status[instance].serial_number [sizeof (_battery_status[instance].serial_number ) - 1 ] = ' \0 ' ;
259
220
260
221
publish (msg.getSrcNodeID ().get (), &_battery_status[instance]);
261
- PX4_INFO (" CBAT Sub Cb published" );
262
-
263
222
}
264
223
}
265
224
@@ -288,7 +247,7 @@ UavcanBatteryBridge::sumDischarged(hrt_abstime timestamp, float current_a)
288
247
void
289
248
UavcanBatteryBridge::determineWarning (float remaining)
290
249
{
291
- // propagate warning state only if the state is higher, otherwise remain in current warning state
250
+ // Propagate warning state only if new state is higher, otherwise remain in current warning state
292
251
if (remaining < _param_bat_emergen_thr.get () || (_warning == battery_status_s::WARNING_EMERGENCY)) {
293
252
_warning = battery_status_s::WARNING_EMERGENCY;
294
253
@@ -299,21 +258,3 @@ UavcanBatteryBridge::determineWarning(float remaining)
299
258
_warning = battery_status_s::WARNING_LOW;
300
259
}
301
260
}
302
-
303
- void
304
- UavcanBatteryBridge::filterData (const uavcan::ReceivedDataStructure<uavcan::equipment::power::BatteryInfo> &msg,
305
- uint8_t instance)
306
- {
307
- _battery[instance]->setConnected (true );
308
- _battery[instance]->updateVoltage (msg.voltage );
309
- _battery[instance]->updateCurrent (msg.current );
310
- _battery[instance]->updateBatteryStatus (hrt_absolute_time ());
311
-
312
- /* Override data that is expected to arrive from UAVCAN msg*/
313
- _battery_status[instance] = _battery[instance]->getBatteryStatus ();
314
- _battery_status[instance].temperature = msg.temperature + atmosphere::kAbsoluteNullCelsius ; // Kelvin to Celsius
315
- // _battery_status[instance].serial_number = msg.model_instance_id;
316
- _battery_status[instance].id = msg.getSrcNodeID ().get (); // overwrite zeroed index from _battery
317
-
318
- publish (msg.getSrcNodeID ().get (), &_battery_status[instance]);
319
- }
0 commit comments