drivers: hwinfo: fix endianness for sam0 and nrf

HWINFO drivers should be responsible for ensuring that
the data structure is a sequence of bytes. That is not
what the current sam0 and nordic drivers do. The drivers
read the data as u32_t and then memcpy the data to a
buffer. This ensures the data has the endianness of the
underlying MCU, which in this case is Cortex M0 which
is little endian.

This commit fixes the endianness so the data can be
interpreted as a "left to right sequence of bytes".

This commit updates the API doc to provide clarification
of the data structure.
Add to 2.3 release notes.

Fixes #23444, #24103

Signed-off-by: Steven Slupsky <sslupsky@gmail.com>
This commit is contained in:
Steven Slupsky 2020-04-08 12:23:10 -06:00 committed by Carles Cufí
commit c54f7ec1fc
4 changed files with 31 additions and 6 deletions

View file

@ -37,6 +37,12 @@ extern "C" {
* If the device ID is smaller then length, the rest of the buffer is left unchanged.
* The ID depends on the hardware and is not guaranteed unique.
*
* Drivers are responsible for ensuring that the ID data structure is a
* sequence of bytes. The returned ID value is not supposed to be interpreted
* based on vendor-specific assumptions of byte order. It should express the
* identifier as a raw byte sequence, doing any endian conversion necessary so
* that a hex representation of the bytes produces the intended serial number.
*
* @param buffer Buffer to write the ID to.
* @param length Max length of the buffer.
*