@@ -38,7 +38,7 @@ void setup() {
3838 Serial.println (" Read: " );
3939 printMemory ();
4040 Serial.println ();
41- uint32_t crcOfData = calculateCRC32 ((( uint8_t *) &rtcData) + 4 , sizeof (rtcData) - 4 );
41+ uint32_t crcOfData = calculateCRC32 ( ( uint8_t *) &rtcData. data [ 0 ] , sizeof (rtcData. data ) );
4242 Serial.print (" CRC32 of data: " );
4343 Serial.println (crcOfData, HEX);
4444 Serial.print (" CRC32 read from RTC: " );
@@ -52,11 +52,11 @@ void setup() {
5252 }
5353
5454 // Generate new data set for the struct
55- for (int i = 0 ; i < sizeof (rtcData); i++) {
55+ for (int i = 0 ; i < sizeof (rtcData. data ); i++) {
5656 rtcData.data [i] = random (0 , 128 );
5757 }
5858 // Update CRC32 of data
59- rtcData.crc32 = calculateCRC32 ((( uint8_t *) &rtcData) + 4 , sizeof (rtcData) - 4 );
59+ rtcData.crc32 = calculateCRC32 ( ( uint8_t *) &rtcData. data [ 0 ] , sizeof (rtcData. data ) );
6060 // Write struct to RTC memory
6161 if (ESP.rtcUserMemoryWrite (0 , (uint32_t *) &rtcData, sizeof (rtcData))) {
6262 Serial.println (" Write: " );
@@ -90,10 +90,12 @@ uint32_t calculateCRC32(const uint8_t *data, size_t length)
9090 return crc;
9191}
9292
93+ // prints all rtcData, including the leading crc32
9394void printMemory () {
9495 char buf[3 ];
96+ uint8_t *ptr = (uint8_t *)&rtcData;
9597 for (int i = 0 ; i < sizeof (rtcData); i++) {
96- sprintf (buf, " %02X" , rtcData. data [i]);
98+ sprintf (buf, " %02X" , ptr [i]);
9799 Serial.print (buf);
98100 if ((i + 1 ) % 32 == 0 ) {
99101 Serial.println ();
0 commit comments