This commit is contained in:
Nanosonde 2020-07-04 12:08:41 +02:00
parent e88d13a97f
commit b5b0f4f0d2
3 changed files with 20 additions and 11 deletions

View File

@ -1,7 +1,6 @@
#include "fdsk.h" #include "fdsk.h"
#include <string.h> #include <string.h>
#include <stdio.h>
// CRC-4 generator polynom: 10011 (x^4+x+1) // CRC-4 generator polynom: 10011 (x^4+x+1)
const uint8_t FdskCalculator::crc4_tab[16] = 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 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++) for (int i = 0; i < 36; i++)
{ {
if (((i % 6) == 0) && (i!=0)) 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) char* FdskCalculator::generateFdskString(uint8_t* serialNumber, uint8_t* key)

View File

@ -5,7 +5,7 @@
class FdskCalculator class FdskCalculator
{ {
public: public:
void printFdsk(uint8_t* serialNumber, uint8_t* key); int snprintFdsk(char* str, int strSize, uint8_t* serialNumber, uint8_t* key);
private: private:
char* generateFdskString(uint8_t* serialNumber, uint8_t* key); char* generateFdskString(uint8_t* serialNumber, uint8_t* key);

View File

@ -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}; uint8_t key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
FdskCalculator calc; 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 // Prevent swapping of this process
struct sched_param sp; struct sched_param sp;