Dump firmware feature, up to 64K

This commit is contained in:
maddiebaka
2024-02-22 17:25:25 -05:00
parent 33387cb046
commit ca0ab73cb2

View File

@@ -21,11 +21,14 @@ byte cmd = NULL;
XModem xmodem; XModem xmodem;
uint16_t addressPage = 0;
bool receiveBlockHandler(void *blk_id, size_t idSize, byte *data, size_t dataSize) { bool receiveBlockHandler(void *blk_id, size_t idSize, byte *data, size_t dataSize) {
unsigned int id = *((int *) blk_id); unsigned int id = *((int *) blk_id);
unsigned long page = (id - 1) * DATA_LEN; unsigned long page = (id - 1) * DATA_LEN;
addressPage += page;
for (int i = 0; i < dataSize; i++) { for (int i = 0; i < dataSize; i++) {
unsigned long index = i + page; unsigned long index = i + addressPage;
programData(data[i], index); programData(data[i], index);
//programData(id, i); //programData(id, i);
} }
@@ -35,14 +38,17 @@ bool receiveBlockHandler(void *blk_id, size_t idSize, byte *data, size_t dataSiz
void blockLookupHandler(void *blk_id, size_t idSize, byte *send_data, size_t dataSize) { void blockLookupHandler(void *blk_id, size_t idSize, byte *send_data, size_t dataSize) {
//uint8_t blkId = blk_id; //uint8_t blkId = blk_id;
uint16_t id = *((uint16_t *) blk_id); //uint16_t id = *((uint16_t *) blk_id);
// TODO: This was close to working // TODO: This was close to working
//byte id = *((byte *) blk_id); uint8_t id = *((uint8_t *) blk_id);
unsigned long page = (id - 1) * DATA_LEN; //unsigned long page = (id - 1) * DATA_LEN;
//addressPage += page;
for (int i = 0; i < dataSize; i++) { for (int i = 0; i < dataSize; i++) {
unsigned long index = i + page; unsigned long index = i + addressPage;
send_data[i] = readData(index); send_data[i] = readData(index);
} }
addressPage += DATA_LEN;
} }
void setup() { void setup() {
@@ -166,7 +172,7 @@ void loop() {
//cmd = NULL; //cmd = NULL;
break; break;
case CMD_ERASE: case CMD_ERASE:
eraseROM(); //eraseROM();
cmd = NULL; cmd = NULL;
break; break;
@@ -186,6 +192,7 @@ void loop() {
void dumpROM() { void dumpROM() {
setDataPinsIn(); setDataPinsIn();
addressPage = 0;
struct XModem::bulk_data container; struct XModem::bulk_data container;