Commit Graph

15 Commits

Author SHA1 Message Date
Alex Mikhalev 6bd4dff51f drivers/smbus: Increase max block size to 34
batt_smbus for BQ40Z80 transfers up to 34 bytes (32 byte block + 2 byte
address), but this was overflowing and failing the PEC check.
So increase the buffer size

Signed-off-by: Alex Mikhalev <alex@corvus-robotics.com>
2021-02-18 07:52:26 -05:00
flochir ec7108892b batt_smbus: fix potential hardfault by checking buffer sizes (#15789)
* Added buffer length check to SMBus::block_read (triggered hardfault in batt_smbus module by writing beyond buffer end due to device returning longer byte_count than requested/expected)

Co-authored-by: Florian Olbrich <florian.olbrich@scarabot.de>
Co-authored-by: Daniel Agar <daniel@agar.ca>
Co-authored-by: BazookaJoe1900 <BazookaJoe1900@gmail.com>
Co-authored-by: Beat Küng <beat-kueng@gmx.net>
2020-09-28 09:41:40 +02:00
bazooka joe 190b96a46c SMbus battery driver - a lot of updates and optimizations
- added support for BQ40Z80 based battery
- added performance counter for interface errors
- added SMART_BATTERY_INFO mavlink message
- general code cleanups and optimization
- fixed: void flooding the log in case of interface error
- fixed: using _batt_startup_capacity instead of _batt_capacity for discharged_mah
- update: read manufacture_date
- update: get _cell_count from parameter and not const 4
- update: avoid re-reading data that has already been read and stored on class already
- currently the battery type defined by BAT_SMBUS_MODEL parameter and not by auto detection
2020-08-18 21:41:19 -04:00
Daniel Agar 02f4ad61ec I2C/SPI require device type in constructor 2020-04-01 12:24:22 -04:00
bazooka joe 53bc5fddad smbus return with error if failed transfer 2020-03-19 09:34:02 +01:00
Beat Küng 32359168d6 smbus: fix invalid memory access in read_word()
read_word() expected 3 bytes (uint16_t + PEC byte), but was passed an
address to an uint16_t value.

write_word() is changed to be type-safe as well.
2019-11-07 10:56:27 +01:00
Daniel Agar 380cae18d1 clang-tidy: partially fix modernize-use-equals-default 2019-10-27 19:19:07 -04:00
Jake Dahl d71fc31d8b added an SMBus base class 2018-11-01 10:49:26 -04:00
Jake Dahl d3b54c3599 more changes based on suggestions 2018-10-16 09:45:28 +02:00
Jake Dahl 985c5f4d73 changed I2C init() to a public function. Removed init() from constructor of SMBus base class 2018-10-16 09:45:28 +02:00
Jake Dahl e0e411ea07 additional improvements 2018-10-16 09:45:28 +02:00
Jake Dahl ad567fa537 I should really compile before pushing, fixed a scoping error on int result 2018-10-16 09:45:28 +02:00
Jake Dahl 1e1268f84b missed a return of result 2018-10-16 09:45:28 +02:00
Jake Dahl b2482b0e43 made changes based on reviewer feedback. Also added a bool option for block_read and block_write PEC, as some devices may not use the PEC 2018-10-16 09:45:28 +02:00
Jake Dahl e5b2286756 added an SMBus base class 2018-10-16 09:45:28 +02:00