Browse Source

board_serial: use a uint8_t buffer

we should not be using 'char' for binary APIs, as the C standard does
not specify if it is signed or unsigned, so results may not be
consistent
sbg
Andrew Tridgell 11 years ago committed by Lorenz Meier
parent
commit
37b4cdfce2
  1. 2
      src/drivers/px4fmu/fmu.cpp
  2. 8
      src/modules/systemlib/board_serial.c
  3. 2
      src/modules/systemlib/board_serial.h
  4. 2
      src/modules/systemlib/otp.h

2
src/drivers/px4fmu/fmu.cpp

@ -1784,7 +1784,7 @@ fmu_main(int argc, char *argv[]) @@ -1784,7 +1784,7 @@ fmu_main(int argc, char *argv[])
}
if (!strcmp(verb, "id")) {
char id[12];
uint8_t id[12];
(void)get_board_serial(id);
errx(0, "Board serial:\n %02X%02X%02X%02X %02X%02X%02X%02X %02X%02X%02X%02X",

8
src/modules/systemlib/board_serial.c

@ -44,11 +44,11 @@ @@ -44,11 +44,11 @@
#include "board_config.h"
#include "board_serial.h"
int get_board_serial(char *serialid)
int get_board_serial(uint8_t *serialid)
{
const volatile unsigned *udid_ptr = (const unsigned *)UDID_START;
const volatile uint32_t *udid_ptr = (const uint32_t *)UDID_START;
union udid id;
val_read((unsigned *)&id, udid_ptr, sizeof(id));
val_read((uint32_t *)&id, udid_ptr, sizeof(id));
/* Copy the serial from the chips non-write memory and swap endianess */
@ -57,4 +57,4 @@ int get_board_serial(char *serialid) @@ -57,4 +57,4 @@ int get_board_serial(char *serialid)
serialid[8] = id.data[11]; serialid[9] = id.data[10]; serialid[10] = id.data[9]; serialid[11] = id.data[8];
return 0;
}
}

2
src/modules/systemlib/board_serial.h

@ -44,6 +44,6 @@ @@ -44,6 +44,6 @@
__BEGIN_DECLS
__EXPORT int get_board_serial(char *serialid);
__EXPORT int get_board_serial(uint8_t *serialid);
__END_DECLS

2
src/modules/systemlib/otp.h

@ -125,7 +125,7 @@ struct otp_lock { @@ -125,7 +125,7 @@ struct otp_lock {
#pragma pack(push, 1)
union udid {
uint32_t serial[3];
char data[12];
uint8_t data[12];
};
#pragma pack(pop)

Loading…
Cancel
Save