diff --git a/src/modules/systemlib/board_serial.c b/src/modules/systemlib/board_serial.c index 7097cda0b5..8e09ed315f 100644 --- a/src/modules/systemlib/board_serial.c +++ b/src/modules/systemlib/board_serial.c @@ -41,20 +41,17 @@ */ #include -#include "otp.h" +#include #include "board_serial.h" -int get_board_serial(uint8_t *serialid) +int get_board_serial(raw_uuid_byte_t serialid) { - const volatile uint32_t *udid_ptr = (const uint32_t *)STM32_SYSMEM_UID; - union udid id; - val_read((uint32_t *)&id, udid_ptr, sizeof(id)); - - +#if defined(BOARD_OVERRIDE_UUID) + memcpy(serialid, BOARD_OVERRIDE_UUID, PX4_CPU_UUID_BYTE_LENGTH); +#else + uuid_uint8_reorder_t odering = {3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8}; /* Copy the serial from the chips non-write memory and swap endianess */ - serialid[0] = id.data[3]; serialid[1] = id.data[2]; serialid[2] = id.data[1]; serialid[3] = id.data[0]; - serialid[4] = id.data[7]; serialid[5] = id.data[6]; serialid[6] = id.data[5]; serialid[7] = id.data[4]; - serialid[8] = id.data[11]; serialid[9] = id.data[10]; serialid[10] = id.data[9]; serialid[11] = id.data[8]; - + board_get_uuid(serialid, odering); +#endif return 0; } diff --git a/src/modules/systemlib/board_serial.h b/src/modules/systemlib/board_serial.h index 72187f17a1..f293f7be17 100644 --- a/src/modules/systemlib/board_serial.h +++ b/src/modules/systemlib/board_serial.h @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2014 PX4 Development Team. All rights reserved. + * Copyright (c) 2012-2014, 2017 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -42,10 +42,10 @@ #pragma once -#include // uint8_t +#include __BEGIN_DECLS -__EXPORT int get_board_serial(uint8_t *serialid); +__EXPORT int get_board_serial(raw_uuid_byte_t serialid); __END_DECLS