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 <string.h>
#include <stdio.h>
// 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)

View File

@ -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);

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};
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;