8 #define BATTMONITOR_SMBUS_MAXELL_NUM_CELLS 6 16 #define SMBUS_READ_BLOCK_MAXIMUM_TRANSFER 0x20 // A Block Read or Write is allowed to transfer a maximum of 32 data bytes. 107 uint8_t buff[read_size];
117 if (pec != buff[bufflen+1]) {
123 memcpy(data, &buff[1], bufflen);
127 data[bufflen] =
'\0';
150 uint8_t version = (data & 0xF0) >> 4;
163 if (strcmp((
char*)buff,
"Hitachi maxell") == 0) {
#define AP_BATTMONITOR_SMBUS_I2C_ADDR
#define BATTMONITOR_SMBUS_MAXELL_NUM_CELLS
void timer(void) override
#define SMBUS_READ_BLOCK_MAXIMUM_TRANSFER
bool read_word(uint8_t reg, uint16_t &data) const
uint16_t cells[MAVLINK_MSG_BATTERY_STATUS_FIELD_VOLTAGES_LEN]
uint8_t maxell_cell_ids[]
uint8_t get_PEC(const uint8_t i2c_addr, uint8_t cmd, bool reading, const uint8_t buff[], uint8_t len) const
get_PEC - calculate packet error correction code of buffer
uint32_t last_time_micros
static AP_HAL::OwnPtr< AP_HAL::Device > dev
AP_HAL::OwnPtr< AP_HAL::I2CDevice > _dev
bool read_full_charge_capacity(void)
uint8_t read_block(uint8_t reg, uint8_t *data, bool append_zero) const
Common definitions and utility routines for the ArduPilot libraries.
#define AP_BATTMONITOR_SMBUS_TIMEOUT_MICROS
AP_BattMonitor::BattMonitor_State & _state
bool read_registers(uint8_t first_reg, uint8_t *recv, uint32_t recv_len)
bool read_remaining_capacity(void)
bool read_serial_number(void)
AP_BattMonitor_SMBus_Maxell(AP_BattMonitor &mon, AP_BattMonitor::BattMonitor_State &mon_state, AP_BattMonitor_Params ¶ms, AP_HAL::OwnPtr< AP_HAL::I2CDevice > dev)