MCPcopy Create free account
hub / github.com/BruceDevices/firmware / write_single_block_headless

Method write_single_block_headless

src/modules/rfid/srix_tool.cpp:1198–1263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1196}
1197
1198int SRIXTool::write_single_block_headless(uint8_t block_num, const uint8_t *block_data) {
1199 if (!nfc) {
1200 SRIX_LOG("[WriteBlock_Headless] ❌ NFC object is NULL");
1201 return -6;
1202 }
1203 if (block_num > 127) {
1204 SRIX_LOG("[WriteBlock_Headless] ❌ Invalid block num: %d", block_num);
1205 return -4;
1206 }
1207 if (!block_data) {
1208 SRIX_LOG("[WriteBlock_Headless] ❌ Invalid data pointer");
1209 return -3;
1210 }
1211
1212 SRIX_LOG(
1213 "[WriteBlock_Headless] Start writing block %u. Data: %02X %02X %02X %02X",
1214 block_num,
1215 block_data[0],
1216 block_data[1],
1217 block_data[2],
1218 block_data[3]
1219 );
1220
1221 // 1. Wait Tag
1222 // Timeout 2500ms
1223 if (!waitForTagHeadless(2500)) {
1224 SRIX_LOG("[WriteBlock_Headless] ❌ Timeout: Tag not found");
1225 return -1;
1226 }
1227
1228 // 2. Tag found and selected
1229 SRIX_LOG("[WriteBlock_Headless] Tag ready. Sending write command...");
1230
1231 if (nfc->SRIX_write_block(block_num, (uint8_t *)block_data)) {
1232
1233 // 3. Wait HW write (Critical Wait)
1234 delay(SRIX_EEPROM_WRITE_DELAY_MS);
1235 SRIX_LOG("[WriteBlock_Headless] ✅ WRITE SENT OK");
1236
1237 // ==============================
1238 // 4. VERIFY (NEED BIGGER UPGRADE)
1239 // ==============================
1240 uint8_t readBuffer[4];
1241
1242 // Re-select: NEED TO IMPLEMNTAT VERIFY WRITTEN BLOCK - NOT POSSIBLE NOW
1243 if (!nfc->SRIX_initiate_select()) { SRIX_LOG("[WriteBlock_Headless] ⚠️ Re-select failed (ignored)"); }
1244 delay(10);
1245
1246 if (nfc->SRIX_read_block(block_num, readBuffer)) {
1247 delay(5);
1248 if (memcmp(block_data, readBuffer, 4) == 0) {
1249 SRIX_LOG("[WriteBlock_Headless] ✅ VERIFY OK");
1250 return 0; // WRITE + VERIFY OK
1251 } else {
1252 SRIX_LOG("[WriteBlock_Headless] ⚠️ VERIFY MISMATCH (write assumed OK)");
1253 return 1; // WRITE OK, VERIFY FAIL
1254 }
1255 }

Callers 1

native_srixWriteBlockFunction · 0.80

Calls 3

SRIX_write_blockMethod · 0.80
SRIX_initiate_selectMethod · 0.80
SRIX_read_blockMethod · 0.80

Tested by

no test coverage detected