#ifndef SDCARD_H_ #define SDCARD_H_ #define CID_LENGTH 32 #define CSD_LENGTH 32 using namespace std; typedef uint32_t DWORD; typedef uint16_t WORD; typedef uint8_t BYTE; typedef uint32_t UDINT; typedef uint32_t DATE; typedef uint8_t USINT; typedef int32_t DINT; typedef uint16_t UINT; typedef int16_t INT; const BYTE cnibblescount = 32; const string cidFilePath = ""; class SDCard { struct SDCardData { uint8_t isCorrectLoad = 0; // SD karta je korektne nactena //bool vs byte ? uint8_t CID_nibble[32] = {0}; // surova data CID ze souboru uint8_t CID[16] = {0}; // prekodovane CID informace uint8_t manufacturerID = 0; // ID vyrobce 1B -> Byte 15 char oemID[2] = {}; // ID aplikace/oem 2B -> Byte 13-14 // oemID: !!STRING(3); char name[5] = {}; // jmeno produktu 5B -> Byte 8-12 !!STRING(6); uint8_t productRevision_hw = 0; uint8_t productRevision_sw = 0; float productRevision = 0; // revize produktu 1B [bcd sh] -> Byte 7, bity 0-3 = revize HW, bity 4-7 = revize SW uint32_t serialNumber = 0; // seriove cislo karty 4B -> Byte 3-6 uint16_t manufacturerDate_year = 0; uint8_t manufacturerDate_month = 0; char manufacturerDate[10] = {}; //: STRING(10); // datum vyroby 2B [bcd -yym] -> Byte 1-2, bity 0-3 = mesic, bity 4-11 = posledni cislice roku or roku 2000, bity 12-15 nepouzito uint8_t CRCOK = 0; // CRC 1B -> Byte 0, bity 1-7, bit 0 je vzdy = 1 uint8_t CSD_nibble[32] = {}; //: ARRAY [0..31] OF BYTE; // surova data CSD ze souboru uint8_t CSD[16] = {}; //: ARRAY [0..15] OF BYTE; // prekodovane CSD informace uint32_t cardSize = 0; //: UDINT; // velikost SD karty uint8_t cardGSize = 0; // prepocitana velikost na GB bool crcCorrect = false; }; bool readSDCard(); bool getCIDFromFile(); bool getCSDFromFile(); public: SDCardData cardData; bool isLoaded = false; char cid[32] = {}; char csd[32] = {}; string filePath = ""; string cidString = ""; //pro předání pro starý generátor string csdString = ""; //pro předání pro starý generátor SDCard(); SDCard(string cid, string csd); SDCard(const string filesPath); }; #endif