| 66 | |
| 67 | |
| 68 | static uint32_t check_signature(void) |
| 69 | { |
| 70 | uint32_t sig[2]; |
| 71 | |
| 72 | SerialFlash.read(0, sig, 8); |
| 73 | //Serial.printf("sig: %08X %08X\n", sig[0], sig[1]); |
| 74 | if (sig[0] == 0xFA96554C) return sig[1]; |
| 75 | if (sig[0] == 0xFFFFFFFF) { |
| 76 | sig[0] = 0xFA96554C; |
| 77 | sig[1] = ((uint32_t)(DEFAULT_STRINGS_SIZE/4) << 16) | DEFAULT_MAXFILES; |
| 78 | SerialFlash.write(0, sig, 8); |
| 79 | while (!SerialFlash.ready()) ; // TODO: timeout |
| 80 | SerialFlash.read(0, sig, 8); |
| 81 | if (sig[0] == 0xFA96554C) return sig[1]; |
| 82 | } |
| 83 | return 0; |
| 84 | } |
| 85 | |
| 86 | static uint16_t filename_hash(const char *filename) |
| 87 | { |