@@ -38,7 +38,7 @@ void setup() {
38
38
Serial.println (" Read: " );
39
39
printMemory ();
40
40
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 ) );
42
42
Serial.print (" CRC32 of data: " );
43
43
Serial.println (crcOfData, HEX);
44
44
Serial.print (" CRC32 read from RTC: " );
@@ -52,11 +52,11 @@ void setup() {
52
52
}
53
53
54
54
// 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++) {
56
56
rtcData.data [i] = random (0 , 128 );
57
57
}
58
58
// 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 ) );
60
60
// Write struct to RTC memory
61
61
if (ESP.rtcUserMemoryWrite (0 , (uint32_t *) &rtcData, sizeof (rtcData))) {
62
62
Serial.println (" Write: " );
@@ -90,10 +90,12 @@ uint32_t calculateCRC32(const uint8_t *data, size_t length)
90
90
return crc;
91
91
}
92
92
93
+ // prints all rtcData, including the leading crc32
93
94
void printMemory () {
94
95
char buf[3 ];
96
+ uint8_t *ptr = (uint8_t *)&rtcData;
95
97
for (int i = 0 ; i < sizeof (rtcData); i++) {
96
- sprintf (buf, " %02X" , rtcData. data [i]);
98
+ sprintf (buf, " %02X" , ptr [i]);
97
99
Serial.print (buf);
98
100
if ((i + 1 ) % 32 == 0 ) {
99
101
Serial.println ();
0 commit comments