From 0282104086a6e85ded5db1b7cd2b73bb515df7a0 Mon Sep 17 00:00:00 2001 From: Gabriel Ozouf Date: Fri, 26 Mar 2021 12:05:56 +0100 Subject: [PATCH] [ion] Add getter method for PCB version in string form --- ion/include/ion.h | 1 + .../device/shared/drivers/serial_number.cpp | 19 +++++++++++++++++++ ion/src/shared/dummy/serial_number.cpp | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/ion/include/ion.h b/ion/include/ion.h index 54e3671ce..e23ba8268 100644 --- a/ion/include/ion.h +++ b/ion/include/ion.h @@ -34,6 +34,7 @@ const char * serialNumber(); const char * softwareVersion(); const char * patchLevel(); const char * fccId(); +const char * pcbVersion(); // CRC32 : non xor-ed, non reversed, direct, polynomial 4C11DB7 uint32_t crc32Word(const uint32_t * data, size_t length); // Only accepts whole 32bit values diff --git a/ion/src/device/shared/drivers/serial_number.cpp b/ion/src/device/shared/drivers/serial_number.cpp index 4d61a6b4c..b76711242 100644 --- a/ion/src/device/shared/drivers/serial_number.cpp +++ b/ion/src/device/shared/drivers/serial_number.cpp @@ -1,4 +1,5 @@ #include "serial_number.h" +#include "board.h" #include #include "base64.h" @@ -14,6 +15,24 @@ const char * serialNumber() { return serialNumber; } +const char * pcbVersion() { + constexpr int pcbVersionLength = 5; // xx.yy + static char pcbVer[pcbVersionLength] = {'\0'}; + if (pcbVer[0] == '\0') { + Device::Board::PCBVersion ver = Device::Board::pcbVersion(); + assert(ver < 10000); + for (int i = pcbVersionLength - 1; i >= 0; i--) { + if (i == 2) { + pcbVer[i] = '.'; + } else { + pcbVer[i] = '0' + ver % 10; + ver /= 10; + } + } + } + return pcbVer; +} + } namespace Ion { diff --git a/ion/src/shared/dummy/serial_number.cpp b/ion/src/shared/dummy/serial_number.cpp index fd0c5deac..8f82f3175 100644 --- a/ion/src/shared/dummy/serial_number.cpp +++ b/ion/src/shared/dummy/serial_number.cpp @@ -3,3 +3,7 @@ const char * Ion::serialNumber() { return "000000000000"; } + +const char * Ion::pcbVersion() { + return "0.0"; +}