tree 86b324cf4102c9f21b9b009c4a4d897a878f095e
parent 5e0164c8712a71509249537a45826acde6ef449f
author Sam Agazaryan <samagazaryan@google.com> 1770336724 +0000
committer Robi Buranyi <rburanyi@google.com> 1775448385 -0700

libhoth: SRCREV bump bad5143..2d6aac5

Jordan Hand (1):
      Remove device check in payload info command

Kor Nielsen (1):
      Fix compiler warnings from GCC 15. (#183)

Nan Zhou (1):
      Fix Yocto Build: add tests feature (#193)

Parinita Badre (1):
      htool: Add firmware update from flash protocol and host command. (#192)

Steven Portley (5):
      Add delays after finalizing dfu update + USB fix
      Add libhoth reconnect stubs for all transports
      Add extract_ot_bundle to htool
      Move parse_time_string_us to htool_cmd
      Add a proper claim/release API to libhoth

esnguyen (1):
      Add .bazelversion (#185)

xorptr (6):
      Fix return value when payload update fails
      Change spidev `claim` and `release` APIs to lock and unlock spidev file descriptor
:...skipping...
Jordan Hand (1):
      Remove device check in payload info command

Kor Nielsen (1):
      Fix compiler warnings from GCC 15. (#183)

Nan Zhou (1):
      Fix Yocto Build: add tests feature (#193)

Parinita Badre (1):
      htool: Add firmware update from flash protocol and host command. (#192)

Steven Portley (5):
      Add delays after finalizing dfu update + USB fix
      Add libhoth reconnect stubs for all transports
      Add extract_ot_bundle to htool
      Move parse_time_string_us to htool_cmd
      Add a proper claim/release API to libhoth

esnguyen (1):
      Add .bazelversion (#185)

xorptr (6):
      Fix return value when payload update fails
      Change spidev `claim` and `release` APIs to lock and unlock spidev file descriptor
      Auto format code files using clang-format
      Update formatting check Github action
      Add `.clang-format` file with Google style
      Allow payload update with arbitrary binary files (#200)

Tested:
- platform11: http://fusion2/d33a02f3-8c31-3b84-ad54-4cfdb7fd834f
- platform11: http://fusion2/2c64dc32-8a81-3ec1-aa2f-b3a721c2b2ca
- platform5: http://fusion2/f828473c-816b-38a7-94f9-0153223bb04b
- platform15: http://fusion2/e630aa17-58fc-3141-92f4-6e7056e62adf
- platform17: http://fusion2/2bdba907-d7af-3831-8efa-ccceeda9ada2
Google-Bug-Id: 449070457
Change-Id: I0331ed0a451f8d0c61f2d74370fbb9be3c148aed
Signed-off-by: Sam Agazaryan <samagazaryan@google.com>
Platforms-Affected: all
