diff --git a/libraries/esp8266/examples/RTCUserMemory/RTCUserMemory.ino b/libraries/esp8266/examples/RTCUserMemory/RTCUserMemory.ino index 289e651a1..664a7f4d4 100644 --- a/libraries/esp8266/examples/RTCUserMemory/RTCUserMemory.ino +++ b/libraries/esp8266/examples/RTCUserMemory/RTCUserMemory.ino @@ -38,7 +38,7 @@ void setup() { Serial.println("Read: "); printMemory(); Serial.println(); - uint32_t crcOfData = calculateCRC32(((uint8_t*) &rtcData) + 4, sizeof(rtcData) - 4); + uint32_t crcOfData = calculateCRC32( (uint8_t*) &rtcData.data[0], sizeof(rtcData.data) ); Serial.print("CRC32 of data: "); Serial.println(crcOfData, HEX); Serial.print("CRC32 read from RTC: "); @@ -52,11 +52,11 @@ void setup() { } // Generate new data set for the struct - for (int i = 0; i < sizeof(rtcData); i++) { + for (int i = 0; i < sizeof(rtcData.data); i++) { rtcData.data[i] = random(0, 128); } // Update CRC32 of data - rtcData.crc32 = calculateCRC32(((uint8_t*) &rtcData) + 4, sizeof(rtcData) - 4); + rtcData.crc32 = calculateCRC32( (uint8_t*) &rtcData.data[0], sizeof(rtcData.data) ); // Write struct to RTC memory if (ESP.rtcUserMemoryWrite(0, (uint32_t*) &rtcData, sizeof(rtcData))) { Serial.println("Write: "); @@ -90,10 +90,12 @@ uint32_t calculateCRC32(const uint8_t *data, size_t length) return crc; } +//prints all rtcData, including the leading crc32 void printMemory() { char buf[3]; + uint8_t *ptr = (uint8_t *)&rtcData; for (int i = 0; i < sizeof(rtcData); i++) { - sprintf(buf, "%02X", rtcData.data[i]); + sprintf(buf, "%02X", ptr[i]); Serial.print(buf); if ((i + 1) % 32 == 0) { Serial.println();