mirror of https://github.com/ArduPilot/ardupilot
AP_Logger: log battery and cell information using instance numbers
This commit is contained in:
parent
552191925b
commit
2c5e07cb09
|
@ -445,10 +445,7 @@ private:
|
||||||
void Write_Compass_instance(uint64_t time_us,
|
void Write_Compass_instance(uint64_t time_us,
|
||||||
uint8_t mag_instance,
|
uint8_t mag_instance,
|
||||||
enum LogMessages type);
|
enum LogMessages type);
|
||||||
void Write_Current_instance(uint64_t time_us,
|
void Write_Current_instance(uint64_t time_us, uint8_t battery_instance);
|
||||||
uint8_t battery_instance,
|
|
||||||
enum LogMessages type,
|
|
||||||
enum LogMessages celltype);
|
|
||||||
void Write_IMUDT_instance(uint64_t time_us,
|
void Write_IMUDT_instance(uint64_t time_us,
|
||||||
uint8_t imu_instance,
|
uint8_t imu_instance,
|
||||||
enum LogMessages type);
|
enum LogMessages type);
|
||||||
|
|
|
@ -641,9 +641,7 @@ void AP_Logger::Write_AttitudeView(AP_AHRS_View &ahrs, const Vector3f &targets)
|
||||||
}
|
}
|
||||||
|
|
||||||
void AP_Logger::Write_Current_instance(const uint64_t time_us,
|
void AP_Logger::Write_Current_instance(const uint64_t time_us,
|
||||||
const uint8_t battery_instance,
|
const uint8_t battery_instance)
|
||||||
const enum LogMessages type,
|
|
||||||
const enum LogMessages celltype)
|
|
||||||
{
|
{
|
||||||
AP_BattMonitor &battery = AP::battery();
|
AP_BattMonitor &battery = AP::battery();
|
||||||
float temp;
|
float temp;
|
||||||
|
@ -660,8 +658,9 @@ void AP_Logger::Write_Current_instance(const uint64_t time_us,
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct log_Current pkt = {
|
const struct log_Current pkt = {
|
||||||
LOG_PACKET_HEADER_INIT(type),
|
LOG_PACKET_HEADER_INIT(LOG_CURRENT_MSG),
|
||||||
time_us : time_us,
|
time_us : time_us,
|
||||||
|
instance : battery_instance,
|
||||||
voltage : battery.voltage(battery_instance),
|
voltage : battery.voltage(battery_instance),
|
||||||
voltage_resting : battery.voltage_resting_estimate(battery_instance),
|
voltage_resting : battery.voltage_resting_estimate(battery_instance),
|
||||||
current_amps : current,
|
current_amps : current,
|
||||||
|
@ -676,8 +675,9 @@ void AP_Logger::Write_Current_instance(const uint64_t time_us,
|
||||||
if (battery.has_cell_voltages(battery_instance)) {
|
if (battery.has_cell_voltages(battery_instance)) {
|
||||||
const AP_BattMonitor::cells &cells = battery.get_cell_voltages(battery_instance);
|
const AP_BattMonitor::cells &cells = battery.get_cell_voltages(battery_instance);
|
||||||
struct log_Current_Cells cell_pkt{
|
struct log_Current_Cells cell_pkt{
|
||||||
LOG_PACKET_HEADER_INIT(celltype),
|
LOG_PACKET_HEADER_INIT(LOG_CURRENT_CELLS_MSG),
|
||||||
time_us : time_us,
|
time_us : time_us,
|
||||||
|
instance : battery_instance,
|
||||||
voltage : battery.voltage(battery_instance)
|
voltage : battery.voltage(battery_instance)
|
||||||
};
|
};
|
||||||
for (uint8_t i = 0; i < ARRAY_SIZE(cells.cells); i++) {
|
for (uint8_t i = 0; i < ARRAY_SIZE(cells.cells); i++) {
|
||||||
|
@ -694,23 +694,10 @@ void AP_Logger::Write_Current_instance(const uint64_t time_us,
|
||||||
// Write an Current data packet
|
// Write an Current data packet
|
||||||
void AP_Logger::Write_Current()
|
void AP_Logger::Write_Current()
|
||||||
{
|
{
|
||||||
// Big painful assert to ensure that logging won't produce suprising results when the
|
|
||||||
// number of battery monitors changes, does have the built in expectation that
|
|
||||||
// LOG_COMPASS_MSG follows the last LOG_CURRENT_CELLSx_MSG
|
|
||||||
static_assert(((LOG_CURRENT_MSG + AP_BATT_MONITOR_MAX_INSTANCES) == LOG_CURRENT_CELLS_MSG) &&
|
|
||||||
((LOG_CURRENT_CELLS_MSG + AP_BATT_MONITOR_MAX_INSTANCES) == LOG_COMPASS_MSG),
|
|
||||||
"The number of batt monitors has changed without updating the log "
|
|
||||||
"table entries. Please add new enums for LOG_CURRENT_MSG, LOG_CURRENT_CELLS_MSG "
|
|
||||||
"directly following the highest indexed fields. Don't forget to update the log "
|
|
||||||
"description table as well.");
|
|
||||||
|
|
||||||
const uint64_t time_us = AP_HAL::micros64();
|
const uint64_t time_us = AP_HAL::micros64();
|
||||||
const uint8_t num_instances = AP::battery().num_instances();
|
const uint8_t num_instances = AP::battery().num_instances();
|
||||||
for (uint8_t i = 0; i < num_instances; i++) {
|
for (uint8_t i = 0; i < num_instances; i++) {
|
||||||
Write_Current_instance(time_us,
|
Write_Current_instance(time_us, i);
|
||||||
i,
|
|
||||||
(LogMessages)((uint8_t)LOG_CURRENT_MSG + i),
|
|
||||||
(LogMessages)((uint8_t)LOG_CURRENT_CELLS_MSG + i));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -767,6 +767,7 @@ struct PACKED log_PID {
|
||||||
struct PACKED log_Current {
|
struct PACKED log_Current {
|
||||||
LOG_PACKET_HEADER;
|
LOG_PACKET_HEADER;
|
||||||
uint64_t time_us;
|
uint64_t time_us;
|
||||||
|
uint8_t instance;
|
||||||
float voltage;
|
float voltage;
|
||||||
float voltage_resting;
|
float voltage_resting;
|
||||||
float current_amps;
|
float current_amps;
|
||||||
|
@ -801,6 +802,7 @@ struct PACKED log_ADSB {
|
||||||
struct PACKED log_Current_Cells {
|
struct PACKED log_Current_Cells {
|
||||||
LOG_PACKET_HEADER;
|
LOG_PACKET_HEADER;
|
||||||
uint64_t time_us;
|
uint64_t time_us;
|
||||||
|
uint8_t instance;
|
||||||
float voltage;
|
float voltage;
|
||||||
uint16_t cell_voltages[10];
|
uint16_t cell_voltages[10];
|
||||||
};
|
};
|
||||||
|
@ -1307,16 +1309,6 @@ struct PACKED log_Arm_Disarm {
|
||||||
#define QUAT_UNITS "s#????"
|
#define QUAT_UNITS "s#????"
|
||||||
#define QUAT_MULTS "F-????"
|
#define QUAT_MULTS "F-????"
|
||||||
|
|
||||||
#define CURR_LABELS "TimeUS,Volt,VoltR,Curr,CurrTot,EnrgTot,Temp,Res"
|
|
||||||
#define CURR_FMT "Qfffffcf"
|
|
||||||
#define CURR_UNITS "svvA?JOw"
|
|
||||||
#define CURR_MULTS "F000?/?0"
|
|
||||||
|
|
||||||
#define CURR_CELL_LABELS "TimeUS,Volt,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10"
|
|
||||||
#define CURR_CELL_FMT "QfHHHHHHHHHH"
|
|
||||||
#define CURR_CELL_UNITS "svvvvvvvvvvv"
|
|
||||||
#define CURR_CELL_MULTS "F00000000000"
|
|
||||||
|
|
||||||
#define ARSP_LABELS "TimeUS,Airspeed,DiffPress,Temp,RawPress,Offset,U,Health,Hfp,Pri"
|
#define ARSP_LABELS "TimeUS,Airspeed,DiffPress,Temp,RawPress,Offset,U,Health,Hfp,Pri"
|
||||||
#define ARSP_FMT "QffcffBBfB"
|
#define ARSP_FMT "QffcffBBfB"
|
||||||
#define ARSP_UNITS "snPOPP----"
|
#define ARSP_UNITS "snPOPP----"
|
||||||
|
@ -1372,42 +1364,10 @@ struct PACKED log_Arm_Disarm {
|
||||||
"TRIG", "QIHLLeeeccC","TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,GPSAlt,Roll,Pitch,Yaw", "s--DUmmmddd", "F--GGBBBBBB" }, \
|
"TRIG", "QIHLLeeeccC","TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,GPSAlt,Roll,Pitch,Yaw", "s--DUmmmddd", "F--GGBBBBBB" }, \
|
||||||
{ LOG_ARSP_MSG, sizeof(log_AIRSPEED), "ARSP", ARSP_FMT, ARSP_LABELS, ARSP_UNITS, ARSP_MULTS }, \
|
{ LOG_ARSP_MSG, sizeof(log_AIRSPEED), "ARSP", ARSP_FMT, ARSP_LABELS, ARSP_UNITS, ARSP_MULTS }, \
|
||||||
{ LOG_ASP2_MSG, sizeof(log_AIRSPEED), "ASP2", ARSP_FMT, ARSP_LABELS, ARSP_UNITS, ARSP_MULTS }, \
|
{ LOG_ASP2_MSG, sizeof(log_AIRSPEED), "ASP2", ARSP_FMT, ARSP_LABELS, ARSP_UNITS, ARSP_MULTS }, \
|
||||||
{ LOG_CURRENT_MSG, sizeof(log_Current), \
|
{ LOG_CURRENT_MSG, sizeof(log_Current), \
|
||||||
"BAT", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
"BAT", "QBfffffcf", "TimeUS,Instance,Volt,VoltR,Curr,CurrTot,EnrgTot,Temp,Res", "s#vvA?JOw", "F-000?/?0" }, \
|
||||||
{ LOG_CURRENT2_MSG, sizeof(log_Current), \
|
|
||||||
"BAT2", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT3_MSG, sizeof(log_Current), \
|
|
||||||
"BAT3", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT4_MSG, sizeof(log_Current), \
|
|
||||||
"BAT4", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT5_MSG, sizeof(log_Current), \
|
|
||||||
"BAT5", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT6_MSG, sizeof(log_Current), \
|
|
||||||
"BAT6", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT7_MSG, sizeof(log_Current), \
|
|
||||||
"BAT7", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT8_MSG, sizeof(log_Current), \
|
|
||||||
"BAT8", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT9_MSG, sizeof(log_Current), \
|
|
||||||
"BAT9", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS_MSG, sizeof(log_Current_Cells), \
|
{ LOG_CURRENT_CELLS_MSG, sizeof(log_Current_Cells), \
|
||||||
"BCL", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
"BCL", "QBfHHHHHHHHHH", "TimeUS,Instance,Volt,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10", "s#vvvvvvvvvvv", "F-00000000000" }, \
|
||||||
{ LOG_CURRENT_CELLS2_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL2", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS3_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL3", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS4_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL4", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS5_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL5", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS6_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL6", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS7_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL7", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS8_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL8", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_CURRENT_CELLS9_MSG, sizeof(log_Current_Cells), \
|
|
||||||
"BCL9", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
|
|
||||||
{ LOG_ATTITUDE_MSG, sizeof(log_Attitude),\
|
{ LOG_ATTITUDE_MSG, sizeof(log_Attitude),\
|
||||||
"ATT", "QccccCCCC", "TimeUS,DesRoll,Roll,DesPitch,Pitch,DesYaw,Yaw,ErrRP,ErrYaw", "sddddhhdh", "FBBBBBBBB" }, \
|
"ATT", "QccccCCCC", "TimeUS,DesRoll,Roll,DesPitch,Pitch,DesYaw,Yaw,ErrRP,ErrYaw", "sddddhhdh", "FBBBBBBBB" }, \
|
||||||
{ LOG_COMPASS_MSG, sizeof(log_Compass), \
|
{ LOG_COMPASS_MSG, sizeof(log_Compass), \
|
||||||
|
@ -1663,23 +1623,7 @@ enum LogMessages : uint8_t {
|
||||||
LOG_ARSP_MSG,
|
LOG_ARSP_MSG,
|
||||||
LOG_ATTITUDE_MSG,
|
LOG_ATTITUDE_MSG,
|
||||||
LOG_CURRENT_MSG,
|
LOG_CURRENT_MSG,
|
||||||
LOG_CURRENT2_MSG,
|
|
||||||
LOG_CURRENT3_MSG,
|
|
||||||
LOG_CURRENT4_MSG,
|
|
||||||
LOG_CURRENT5_MSG,
|
|
||||||
LOG_CURRENT6_MSG,
|
|
||||||
LOG_CURRENT7_MSG,
|
|
||||||
LOG_CURRENT8_MSG,
|
|
||||||
LOG_CURRENT9_MSG,
|
|
||||||
LOG_CURRENT_CELLS_MSG,
|
LOG_CURRENT_CELLS_MSG,
|
||||||
LOG_CURRENT_CELLS2_MSG,
|
|
||||||
LOG_CURRENT_CELLS3_MSG,
|
|
||||||
LOG_CURRENT_CELLS4_MSG,
|
|
||||||
LOG_CURRENT_CELLS5_MSG,
|
|
||||||
LOG_CURRENT_CELLS6_MSG,
|
|
||||||
LOG_CURRENT_CELLS7_MSG,
|
|
||||||
LOG_CURRENT_CELLS8_MSG,
|
|
||||||
LOG_CURRENT_CELLS9_MSG,
|
|
||||||
LOG_COMPASS_MSG,
|
LOG_COMPASS_MSG,
|
||||||
LOG_COMPASS2_MSG,
|
LOG_COMPASS2_MSG,
|
||||||
LOG_COMPASS3_MSG,
|
LOG_COMPASS3_MSG,
|
||||||
|
|
Loading…
Reference in New Issue