21constexpr uint8_t i2cObjectIndex = 0;
24constexpr bool usesStopBit =
true;
26constexpr uint16_t DEVICE_NUMBER = 0x7605;
30constexpr uint8_t SAFETY_ALERT_A_ADDR = 0x02;
31constexpr uint8_t SAFETY_ALERT_B_ADDR = 0x04;
33constexpr uint8_t BATTERY_STATUS_ADDR = 0x12;
35constexpr uint8_t CELL_1_VOLTAGE_ADDR = 0x14;
36constexpr uint8_t CELL_2_VOLTAGE_ADDR = 0x16;
37constexpr uint8_t CELL_3_VOLTAGE_ADDR = 0x18;
38constexpr uint8_t CELL_4_VOLTAGE_ADDR = 0x1A;
39constexpr uint8_t CELL_5_VOLTAGE_ADDR = 0x1C;
41constexpr uint8_t REG_18_VOLTAGE_ADDR = 0x22;
43constexpr uint8_t VSS_VOLTAGE_ADDR = 0x24;
44constexpr uint8_t STACK_VOLTAGE_ADDR = 0x26;
46constexpr uint8_t INT_TEMPERATURE_ADDR = 0x28;
47constexpr uint8_t TS_MEASURMENT_ADDR = 0x2A;
49constexpr uint8_t RAW_CURRENT_ADDR = 0x36;
50constexpr uint8_t CURRENT_ADDR = 0x3A;
51constexpr uint8_t CC1_CURRENT_ADDR = 0x3C;
53constexpr uint8_t ALARM_STATUS_ADDR = 0x62;
54constexpr uint8_t ALARM_RAW_STATUS_ADDR = 0x64;
55constexpr uint8_t ALARM_ENABLE_ADDR = 0x66;
57constexpr uint8_t FET_CONTROL_ADDR = 0x68;
58constexpr uint8_t REGOUT_CONTROL_ADDR = 0x69;
60constexpr uint8_t DSG_FET_DRIVER_PWM_CONTROL_ADDR = 0x6A;
61constexpr uint8_t CHG_FET_DRIVER_PWM_CONTROL_ADDR = 0x6C;
65constexpr uint8_t SUBCOMMAND_ADDR = 0x3E;
66constexpr uint8_t SUBCOMMAND_DATA_ADDR = 0x40;
67constexpr uint8_t SUBCOMMAND_DATA_CHECKSUM_ADDR = 0x60;
69constexpr uint16_t SUBCOMMAND_DEVICE_NUMBER_ADDR = 0x0001;
70constexpr uint16_t SUBCOMMAND_FW_VERSION_ADDR = 0x0002;
71constexpr uint16_t SUBCOMMAND_HW_VERSION_ADDR = 0x0003;
73constexpr uint16_t SUBCOMMAND_PASSQ_ADDR = 0x0003;
74constexpr uint16_t SUBCOMMAND_RESET_PASSQ_ADDR = 0x0005;
76constexpr uint16_t SUBCOMMAND_EXIT_DEEPSLEEP_ADDR = 0x000E;
77constexpr uint16_t SUBCOMMAND_DEEPSLEEP_ADDR = 0x000F;
78constexpr uint16_t SUBCOMMAND_SHUTDOWN_ADDR = 0x0010;
79constexpr uint16_t SUBCOMMAND_RESET_ADDR = 0x0012;
81constexpr uint16_t SUBCOMMAND_FET_ENABLE_ADDR = 0x0022;
83constexpr uint16_t SUBCOMMAND_SEAL_ADDR = 0x0030;
85constexpr uint16_t SUBCOMMAND_SECURITY_KEYS_ADDR = 0x0035;
87constexpr uint16_t SUBCOMMAND_CB_ACTIVE_CELLS_ADDR = 0x0083;
89constexpr uint16_t SUBCOMMAND_SET_CFGUPDATE_ADDR = 0x0090;
90constexpr uint16_t SUBCOMMAND_EXIT_CFGUPDATE_ADDR = 0x0092;
92constexpr uint16_t SUBCOMMAND_PROG_TIMER_ADDR = 0x0094;
94constexpr uint16_t SUBCOMMAND_SLEEP_ENABLE_ADDR = 0x0099;
95constexpr uint16_t SUBCOMMAND_SLEEP_DISABLE_ADDR = 0x009A;
97constexpr uint16_t SUBCOMMAND_PROT_RECOVERY_ADDR = 0x009B;
103constexpr uint16_t SUBCOMMAND_CONFIGURATION_DA_ADDR = 0x9019;
104constexpr uint16_t SUBCOMMAND_CONFIGURATION_VCELL_MODE_ADDR = 0x901B;
105constexpr uint16_t SUBCOMMAND_CONFIGURATION_TS_OFFSET_ADDR = 0x900E;
108uint8_t checksum(uint8_t lenght, uint8_t* data)
110 uint8_t checksum = 0;
111 for (uint8_t i = 0; i < lenght; ++i)
113 checksum = 0xff & (~checksum);
122 static const byte BQ76905addr = 0x08;
124 template<
typename T>
bool readRegEx(T& dataParam)
128 constexpr uint8_t arrLen = 2;
130 byte valBytes[arrLen];
132 if (readDataReg(dataParam.addr, valBytes, arrLen))
135 dataParam.val0 = (byte)valBytes[0];
136 dataParam.val1 = (byte)valBytes[1];
142 template<
typename T>
static bool writeRegEx(T dataParam)
145 valBytes[0] = dataParam.val0;
146 valBytes[1] = dataParam.val1;
147 return writeData(dataParam.addr, 2, valBytes);
150#define GETMASK(index, size) (((1 << (size)) - 1) << (index))
152#define READFROM(data, index, size) (((data) & GETMASK((index), (size))) >> (index))
154#define WRITETO(data, index, size, value) ((data) = ((data) & (~GETMASK((index), (size)))) | ((value) << (index)))
159#define FIELD(data, name, index, size) \
160 inline decltype(data) name() { return READFROM(data, index, size); } \
161 inline void set_##name(decltype(data) value) { WRITETO(data, index, size, value); }
165#define FIELD_RO(data, name, index, size) \
166 inline decltype(data) name() { return READFROM(data, index, size); }
169 inline static bool isFlagRaised =
false;
176 virtual uint16_t address()
const = 0;
181 if (readDataReg(address(), valBytes, 2))
184 byte val0 = (byte)valBytes[0];
185 byte val1 = (byte)valBytes[1];
188 uint16_t res = val1 << 8 | val0;
190 return (uint16_t)res;
202 virtual uint16_t command_address()
const = 0;
208 if (!writeData16(SUBCOMMAND_ADDR, command_address()))
220 static constexpr uint8_t readDataSize = 12;
221 byte valBytes[readDataSize];
223 uint32_t get_read_results()
225 const uint32_t res = (valBytes[3] << 24) | (valBytes[2] << 16) | (valBytes[1] << 8) | valBytes[0];
237 if (!readDataReg(SUBCOMMAND_DATA_ADDR, valBytes, readDataSize))
243 void raw_read_big_endian()
250 byte tempValBytes[readDataSize];
251 if (readDataReg(SUBCOMMAND_DATA_ADDR, tempValBytes, 12))
253 for (uint i = 0; i < readDataSize; i += 2)
256 valBytes[i + 1] = tempValBytes[i];
257 valBytes[i] = tempValBytes[i + 1];
264 void raw_write8(uint8_t data)
266 const uint8_t dataSize = 3;
269 byte valBytes[dataSize];
270 valBytes[0] = command_address() & 0xff;
271 valBytes[1] = (command_address() >> 8) & 0xff;
274 raw_write(dataSize, valBytes);
277 void raw_write16(uint16_t data)
279 const uint8_t dataSize = 4;
282 byte valBytes[dataSize];
283 valBytes[0] = command_address() & 0xff;
284 valBytes[1] = (command_address() >> 8) & 0xff;
285 valBytes[2] = data & 0xff;
286 valBytes[3] = (data >> 8) & 0xff;
288 raw_write(dataSize, valBytes);
293 void raw_write(uint8_t lenght, uint8_t* data)
295 if (not writeData(SUBCOMMAND_ADDR, lenght, data))
303 byte checkSumData[2];
304 checkSumData[0] = checksum(lenght, data);
305 checkSumData[1] = lenght + 2;
308 if (not writeData(SUBCOMMAND_DATA_CHECKSUM_ADDR, 2, checkSumData))
330 uint16_t vals = val1 << 8 | val0;
341 uint8_t addr = SAFETY_ALERT_A_ADDR;
347 FIELD_RO(val0, COV_ALERT, 0x07, 0x01)
351 FIELD_RO(val0, CUV_ALERT, 0x06, 0x01)
355 FIELD_RO(val0, SCD_ALERT, 0x05, 0x01)
359 FIELD_RO(val0, OCD1_ALERT, 0x04, 0x01)
363 FIELD_RO(val0, OCD2_ALERT, 0x03, 0x01)
367 FIELD_RO(val0, OCC_ALERT, 0x02, 0x01)
372 FIELD_RO(val1, COV_FAULT, 0x07, 0x01)
376 FIELD_RO(val1, CUV_FAULT, 0x06, 0x01)
380 FIELD_RO(val1, SCD_FAULT, 0x05, 0x01)
384 FIELD_RO(val1, OCD1_FAULT, 0x04, 0x01)
388 FIELD_RO(val1, OCD2_FAULT, 0x03, 0x01)
392 FIELD_RO(val1, OCC_FAULT, 0x02, 0x01)
397 FIELD_RO(val1, CURLATCH, 0x01, 0x01)
401 FIELD_RO(val1, REGOUT, 0x00, 0x01)
408 uint8_t addr = SAFETY_ALERT_B_ADDR;
415 FIELD_RO(val0, OTD_ALERT, 0x07, 0x01)
419 FIELD_RO(val0, OTC_ALERT, 0x06, 0x01)
423 FIELD_RO(val0, UTD_ALERT, 0x05, 0x01)
427 FIELD_RO(val0, UTC_ALERT, 0x04, 0x01)
431 FIELD_RO(val0, OTINT_ALERT, 0x03, 0x01)
435 FIELD_RO(val0, HWD_ALERT, 0x02, 0x01)
439 FIELD_RO(val0, VREF_ALERT, 0x01, 0x01)
443 FIELD_RO(val0, VSS_ALERT, 0x00, 0x01)
448 FIELD_RO(val1, OTD_FAULT, 0x07, 0x01)
452 FIELD_RO(val1, OTC_FAULT, 0x06, 0x01)
456 FIELD_RO(val1, UTD_FAULT, 0x05, 0x01)
460 FIELD_RO(val1, UTC_FAULT, 0x04, 0x01)
464 FIELD_RO(val1, OTINT_FAULT, 0x03, 0x01)
468 FIELD_RO(val1, HWD_FAULT, 0x02, 0x01)
472 FIELD_RO(val1, VREF_FAULT, 0x01, 0x01)
476 FIELD_RO(val1, VSS_FAULT, 0x00, 0x01)
482 uint8_t addr = BATTERY_STATUS_ADDR;
491 FIELD_RO(val0, POR, 0x07, 0x01)
498 FIELD_RO(val0, SLEEP_EN, 0x06, 0x01)
503 FIELD_RO(val0, CFGUPDATE, 0x05, 0x01)
507 FIELD_RO(val0, ALERTPIN, 0x04, 0x01)
511 FIELD_RO(val0, CHG, 0x03, 0x01)
515 FIELD_RO(val0, DSG, 0x02, 0x01)
519 FIELD_RO(val0, CHGDETFLAG, 0x01, 0x01)
524 FIELD_RO(val1, SLEEP, 0x07, 0x01)
528 FIELD_RO(val1, DEEPSLEEP, 0x06, 0x01)
532 FIELD_RO(val1, SA, 0x05, 0x01)
536 FIELD_RO(val1, SS, 0x04, 0x01)
546 FIELD_RO(val1, SEC, 0x02, 0x02)
553 FIELD_RO(val1, FET_EN, 0x00, 0x01)
559 uint8_t addr = ALARM_STATUS_ADDR;
568 FIELD(val0, FULLSCAN, 0x07, 0x01)
574 FIELD(val0, ADSCAN, 0x06, 0x01)
579 FIELD(val0, WAKE, 0x05, 0x01)
584 FIELD(val0, SLEEP, 0x04, 0x01)
589 FIELD(val0, TIMER_ALARM, 0x03, 0x01)
596 FIELD(val0, INITCOMP, 0x02, 0x01)
600 FIELD(val0, CDTOGGLE, 0x01, 0x01)
604 FIELD(val0, POR, 0x00, 0x01)
610 FIELD(val1, SSB, 0x06, 0x01)
615 FIELD(val1, SAA, 0x05, 0x01)
620 FIELD(val1, SAB, 0x04, 0x01)
625 FIELD(val1, XCHG, 0x03, 0x01)
630 FIELD(val1, XDSG, 0x02, 0x01)
636 FIELD(val1, SHUTV, 0x01, 0x01)
641 FIELD(val1, CB, 0x00, 0x01)
648 uint8_t addr = ALARM_RAW_STATUS_ADDR;
654 FIELD_RO(val0, FULLSCAN, 0x07, 0x01)
657 FIELD_RO(val0, ADSCAN, 0x06, 0x01)
659 FIELD_RO(val0, WAKE, 0x05, 0x01)
663 FIELD_RO(val0, SLEEP, 0x04, 0x01)
665 FIELD_RO(val0, TIMER_ALARM, 0x03, 0x01)
668 FIELD_RO(val0, INITCOMP, 0x02, 0x01)
673 FIELD_RO(val0, CDRAW, 0x01, 0x01)
677 FIELD_RO(val0, POR, 0x00, 0x01)
682 FIELD_RO(val1, SSA, 0x07, 0x01)
686 FIELD_RO(val1, SSB, 0x06, 0x01)
690 FIELD_RO(val1, SAA, 0x05, 0x01)
694 FIELD_RO(val1, SAB, 0x04, 0x01)
698 FIELD_RO(val1, XCHG, 0x03, 0x01)
702 FIELD_RO(val1, XDSG, 0x02, 0x01)
708 FIELD_RO(val1, SHUTV, 0x01, 0x01)
712 FIELD_RO(val1, CB, 0x00, 0x01)
720 uint8_t addr = ALARM_ENABLE_ADDR;
728 FIELD(val0, FULLSCAN, 0x07, 0x01)
733 FIELD(val0, ADSCAN, 0x06, 0x01)
738 FIELD(val0, WAKE, 0x05, 0x01)
743 FIELD(val0, SLEEP, 0x04, 0x01)
748 FIELD(val0, TIMER_ALARM, 0x03, 0x01)
753 FIELD(val0, INITCOMP, 0x02, 0x01)
759 FIELD(val0, CDTOGGLE, 0x01, 0x01)
764 FIELD(val0, POR, 0x00, 0x01)
770 FIELD(val1, SSA, 0x07, 0x01)
775 FIELD(val1, SSB, 0x06, 0x01)
780 FIELD(val1, SAA, 0x05, 0x01)
785 FIELD(val1, SAB, 0x04, 0x01)
790 FIELD(val1, XCHG, 0x03, 0x01)
795 FIELD(val1, XDSG, 0x02, 0x01)
800 FIELD(val1, SHUTV, 0x01, 0x01)
805 FIELD(val1, CB, 0x00, 0x01)
811 uint8_t addr = FET_CONTROL_ADDR;
817 FIELD(val0, CHG_OFF, 0x03, 0x01)
821 FIELD(val0, DSG_OFF, 0x02, 0x01)
825 FIELD(val0, CHG_ON, 0x01, 0x01)
829 FIELD(val0, DSG_ON, 0x00, 0x01)
835 uint8_t addr = REGOUT_CONTROL_ADDR;
842 FIELD(val0, TS_ON, 0x04, 0x01)
846 FIELD(val0, REG_EN, 0x03, 0x01)
856 FIELD(val0, REGOUTV, 0x00, 0x03)
863 uint8_t addr = DSG_FET_DRIVER_PWM_CONTROL_ADDR;
870 FIELD(val0, DSGPWMOFF, 0x00, 0x08)
875 FIELD(val1, DSGPWMEN, 0x07, 0x01)
879 FIELD(val1, DSGPWMON, 0x00, 0x07)
880 } dsgFetDriverPwmControl;
885 uint8_t addr = CHG_FET_DRIVER_PWM_CONTROL_ADDR;
892 FIELD(val0, CHGPWMOFF, 0x00, 0x08)
897 FIELD(val1, DSGPWMEN, 0x07, 0x01)
901 FIELD(val1, CHGPWMON, 0x00, 0x07)
902 } chFetDriverPwmControl;
907 uint16_t address()
const override {
return CELL_1_VOLTAGE_ADDR; };
913 uint16_t address()
const override {
return CELL_2_VOLTAGE_ADDR; };
919 uint16_t address()
const override {
return CELL_3_VOLTAGE_ADDR; };
925 uint16_t address()
const override {
return CELL_4_VOLTAGE_ADDR; };
931 uint16_t address()
const override {
return CELL_5_VOLTAGE_ADDR; };
937 uint16_t address()
const override {
return REG_18_VOLTAGE_ADDR; };
943 uint16_t address()
const override {
return VSS_VOLTAGE_ADDR; };
949 uint16_t address()
const override {
return STACK_VOLTAGE_ADDR; };
955 uint16_t address()
const override {
return INT_TEMPERATURE_ADDR; };
956 } intTemperatureVoltage;
961 uint16_t address()
const override {
return TS_MEASURMENT_ADDR; };
962 } tsMeasurmentVoltage;
974 uint16_t command_address()
const override {
return SUBCOMMAND_DEVICE_NUMBER_ADDR; }
979 const uint16_t number = get_read_results() & UINT16_MAX;
987 uint16_t command_address()
const override {
return SUBCOMMAND_FW_VERSION_ADDR; }
991 uint16_t get_device_number()
993 raw_read_big_endian();
995 const uint16_t number = get_read_results() & UINT16_MAX;
1000 uint16_t get_firmware_version()
1002 raw_read_big_endian();
1004 const uint16_t number = (get_read_results() >> 16) & UINT16_MAX;
1016 uint16_t command_address()
const override {
return SUBCOMMAND_HW_VERSION_ADDR; }
1021 const uint16_t number = get_read_results() & UINT16_MAX;
1028 uint16_t command_address()
const override {
return SUBCOMMAND_PASSQ_ADDR; }
1032 uint32_t get_PassQLsb()
1035 const uint32_t number = get_read_results() & UINT32_MAX;
1066 uint16_t command_address()
const override {
return SUBCOMMAND_RESET_PASSQ_ADDR; }
1068 void send() { raw_send(); }
1074 uint16_t command_address()
const override {
return SUBCOMMAND_EXIT_DEEPSLEEP_ADDR; }
1076 void send() { raw_send(); }
1082 uint16_t command_address()
const override {
return SUBCOMMAND_DEEPSLEEP_ADDR; }
1084 void send() { raw_send(); }
1101 uint16_t command_address()
const override {
return SUBCOMMAND_RESET_ADDR; }
1103 void send() { raw_send(); }
1110 uint16_t command_address()
const override {
return SUBCOMMAND_FET_ENABLE_ADDR; }
1112 void send() { raw_send(); }
1118 uint16_t command_address()
const override {
return SUBCOMMAND_SEAL_ADDR; }
1120 void send() { raw_send(); }
1126 uint16_t command_address()
const override {
return SUBCOMMAND_SECURITY_KEYS_ADDR; }
1135 void send(
const uint16_t FaKey1,
const uint16_t FaKey2)
1138 data[0] = FaKey1 | UINT8_MAX;
1139 data[1] = (FaKey1 >> 8) | UINT8_MAX;
1140 data[2] = FaKey2 | UINT8_MAX;
1141 data[3] = (FaKey2 >> 8) | UINT8_MAX;
1153 uint16_t command_address()
const override {
return SUBCOMMAND_CB_ACTIVE_CELLS_ADDR; }
1163 void write() { raw_write8(val0); }
1171 FIELD(val0, CBCELLS_4, 0x05, 0x01);
1173 FIELD(val0, CBCELLS_3, 0x04, 0x01);
1175 FIELD(val0, CBCELLS_2, 0x03, 0x01);
1177 FIELD(val0, CBCELLS_1, 0x02, 0x01);
1179 FIELD(val0, CBCELLS_0, 0x01, 0x01);
1187 uint16_t command_address()
const override {
return SUBCOMMAND_SET_CFGUPDATE_ADDR; }
1189 void send() { raw_send(); }
1195 uint16_t command_address()
const override {
return SUBCOMMAND_EXIT_CFGUPDATE_ADDR; }
1197 void send() { raw_send(); }
1203 uint16_t command_address()
const override {
return SUBCOMMAND_PROG_TIMER_ADDR; }
1211 FIELD(val1, REGOUT_ALARM_WK, 0x03, 0x02);
1218 FIELD(val1, REGOUT_SD_DLY, 0x01, 0x02)
1225 FIELD(val1, REGOUT_SD, 0x00, 0x01)
1230 FIELD(val0, PROG_TMR, 0x00, 0x08)
1237 uint16_t command_address()
const override {
return SUBCOMMAND_SLEEP_ENABLE_ADDR; }
1239 void send() { raw_send(); }
1245 uint16_t command_address()
const override {
return SUBCOMMAND_SLEEP_DISABLE_ADDR; }
1247 void send() { raw_send(); }
1261 void write() { raw_write8(val0); }
1263 uint16_t command_address()
const override {
return SUBCOMMAND_PROT_RECOVERY_ADDR; }
1268 FIELD(val0, VOLTREC, 0x07, 0x01);
1273 FIELD(val0, DIAGREC, 0x06, 0x01);
1278 FIELD(val0, SCDREC, 0x05, 0x01);
1283 FIELD(val0, OCD1REC, 0x04, 0x01);
1288 FIELD(val0, OCD2REC, 0x03, 0x01);
1293 FIELD(val0, OCCREC, 0x02, 0x01);
1298 FIELD(val0, TEMPREC, 0x01, 0x01);
1303 uint16_t command_address()
const override {
return SUBCOMMAND_CONFIGURATION_DA_ADDR; }
1312 FIELD(val1, TSMODE, 0x00, 0x01);
1317 FIELD(val0, CCMODE, 0x06, 0x02);
1325 FIELD(val0, CVADCSPEED, 0x04, 0x02);
1332 FIELD(val0, IADCSPEED, 0x02, 0x02);
1339 FIELD(val0, SSADCSPEED, 0x00, 0x02);
1341 } settingConfiguration_DA;
1357 uint16_t command_address()
const override {
return SUBCOMMAND_CONFIGURATION_VCELL_MODE_ADDR; }
1367 void write() { raw_write8(val0); }
1381 FIELD(val0, VCELL, 0x00, 0x03);
1387 uint16_t command_address()
const override {
return SUBCOMMAND_CONFIGURATION_TS_OFFSET_ADDR; }
1390 void set(int16_t offset) { raw_write16((int16_t)offset); }
1395 static void delay_us(uint64_t dwUs)
1401 static bool readDataReg(
const byte regAddress,
byte* dataVal,
const uint8_t arrLen)
1404 return ::lampda::platform::i2c::i2c_readData(
1405 i2cObjectIndex, BQ76905addr, regAddress, arrLen, dataVal, usesStopBit ? 1 : 0) == 0;
1408 static bool writeData(
const byte regAddress, uint8_t lenght, uint8_t* data)
1411 return ::lampda::platform::i2c::i2c_writeData(
1412 i2cObjectIndex, BQ76905addr, regAddress, lenght, data, usesStopBit ? 1 : 0) == 0;
1415 static bool writeData16(
const byte regAddress, uint16_t val)
1418 data[0] = val & 0xFF;
1419 data[1] = (val >> 8) & 0xFF;
1421 return writeData(regAddress, 2, data);
Definition: BQ76905.h:118
Definition: BQ76905.h:173
Definition: BQ76905.h:317
Definition: BQ76905.h:217
Definition: BQ76905.h:199
Definition: BQ76905.h:719
Definition: BQ76905.h:647
Definition: BQ76905.h:558
Definition: BQ76905.h:481
Definition: BQ76905.h:1152
Definition: BQ76905.h:906
Definition: BQ76905.h:912
Definition: BQ76905.h:918
Definition: BQ76905.h:924
Definition: BQ76905.h:930
Definition: BQ76905.h:884
Definition: BQ76905.h:1356
Definition: BQ76905.h:1081
Definition: BQ76905.h:973
Definition: BQ76905.h:862
Definition: BQ76905.h:1194
Definition: BQ76905.h:1073
Definition: BQ76905.h:810
Definition: BQ76905.h:1109
Definition: BQ76905.h:986
Definition: BQ76905.h:1015
Definition: BQ76905.h:954
Definition: BQ76905.h:1027
Definition: BQ76905.h:1202
Definition: BQ76905.h:1252
Definition: BQ76905.h:936
Definition: BQ76905.h:834
Definition: BQ76905.h:1065
Definition: BQ76905.h:1100
Definition: BQ76905.h:340
Definition: BQ76905.h:407
Definition: BQ76905.h:1117
Definition: BQ76905.h:1125
Definition: BQ76905.h:1186
Definition: BQ76905.h:1302
Definition: BQ76905.h:1244
Definition: BQ76905.h:1236
Definition: BQ76905.h:948
Definition: BQ76905.h:960
Definition: BQ76905.h:1386
Definition: BQ76905.h:942
Definition: BQ76905.h:336