From b5b0f4f0d231b2e99eb4451c7da10935359b0225 Mon Sep 17 00:00:00 2001 From: Nanosonde <2073569+nanosonde@users.noreply.github.com> Date: Sat, 4 Jul 2020 12:08:41 +0200 Subject: [PATCH] cleanup --- examples/knx-linux/fdsk.cpp | 25 ++++++++++++++++--------- examples/knx-linux/fdsk.h | 2 +- examples/knx-linux/main.cpp | 4 +++- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/examples/knx-linux/fdsk.cpp b/examples/knx-linux/fdsk.cpp index 6243718..8d9b28c 100644 --- a/examples/knx-linux/fdsk.cpp +++ b/examples/knx-linux/fdsk.cpp @@ -1,7 +1,6 @@ #include "fdsk.h" #include -#include // CRC-4 generator polynom: 10011 (x^4+x+1) const uint8_t FdskCalculator::crc4_tab[16] = @@ -10,21 +9,29 @@ const uint8_t FdskCalculator::crc4_tab[16] = 0xb, 0x8, 0xd, 0xe, 0x7, 0x4, 0x1, 0x2 }; -void FdskCalculator::printFdsk(uint8_t* serialNumber, uint8_t* key) +int FdskCalculator::snprintFdsk(char* str, int strSize, uint8_t* serialNumber, uint8_t* key) { - char* str = generateFdskString(serialNumber, key); + char* tmpStr = generateFdskString(serialNumber, key); + int written = 0; - uint8_t len = strlen(str); - printf("FDSK(len: %d): ", len); for (int i = 0; i < 36; i++) { if (((i % 6) == 0) && (i!=0)) - printf("-"); - printf("%c", str[i]); + { + *(str+written++) = '-'; + if (written >= strSize-1) + break; + } + *(str+written++) = tmpStr[i]; + if (written >= strSize-1) + break; } - printf("\n"); - delete[] str; + *(str+written++) = '\0'; + + delete[] tmpStr; + + return written; } char* FdskCalculator::generateFdskString(uint8_t* serialNumber, uint8_t* key) diff --git a/examples/knx-linux/fdsk.h b/examples/knx-linux/fdsk.h index 2655f69..560ba22 100644 --- a/examples/knx-linux/fdsk.h +++ b/examples/knx-linux/fdsk.h @@ -5,7 +5,7 @@ class FdskCalculator { public: - void printFdsk(uint8_t* serialNumber, uint8_t* key); + int snprintFdsk(char* str, int strSize, uint8_t* serialNumber, uint8_t* key); private: char* generateFdskString(uint8_t* serialNumber, uint8_t* key); diff --git a/examples/knx-linux/main.cpp b/examples/knx-linux/main.cpp index a680b8d..2b96854 100644 --- a/examples/knx-linux/main.cpp +++ b/examples/knx-linux/main.cpp @@ -134,7 +134,9 @@ int main(int argc, char **argv) uint8_t key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; FdskCalculator calc; - calc.printFdsk(serialNumber, key); + char fdskString[42]; // 6 * 6 chars + 5 dashes + nullbyte = 42 + calc.snprintFdsk(fdskString, sizeof(fdskString), serialNumber, key); + printf("FDSK: %s\n", fdskString); // Prevent swapping of this process struct sched_param sp;