mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 00:04:28 +01:00
Missed erase function (#549)
* Update swd.h * Update swd.cpp * Update usbflasher.cpp
This commit is contained in:
@@ -56,6 +56,7 @@ class nrfswd : protected swd {
|
||||
|
||||
uint8_t nrf_read_bank(uint32_t address, uint32_t buffer[], int size);
|
||||
uint8_t nrf_write_bank(uint32_t address, uint32_t buffer[], int size);
|
||||
uint8_t nrf_erase_all();
|
||||
uint8_t erase_all_flash();
|
||||
uint8_t erase_uicr();
|
||||
uint8_t erase_page(uint32_t page);
|
||||
|
||||
@@ -264,7 +264,19 @@ void nrfswd::write_register(uint32_t address, uint32_t value) {
|
||||
bool state3 = DP_Read(DP_RDBUFF, temp);
|
||||
// if (showDebug) Serial.printf("%i%i%i Write Register: 0x%08x : 0x%08x\r\n", state1, state2, state3, address, value);
|
||||
}
|
||||
|
||||
uint8_t nrfswd::nrf_erase_all() {
|
||||
nrf_port_selection(1);
|
||||
nrf_write_port(1, AP_NRF_ERASEALL, 1);
|
||||
long timeout = millis();
|
||||
while (nrf_read_port(1, AP_NRF_ERASEALLSTATUS)) {
|
||||
if (millis() - timeout > 1000) return 1;
|
||||
}
|
||||
nrf_write_port(1, AP_NRF_ERASEALL, 0);
|
||||
nrf_port_selection(0);
|
||||
nrf_soft_reset();
|
||||
init();
|
||||
return 0;
|
||||
}
|
||||
uint8_t nrfswd::erase_all_flash() {
|
||||
write_register(0x4001e504, 2);
|
||||
long timeout = millis();
|
||||
|
||||
@@ -306,6 +306,7 @@ typedef enum {
|
||||
|
||||
CMD_ERASE_FLASH = 26,
|
||||
CMD_ERASE_INFOPAGE = 27,
|
||||
CMD_ERASE_ALL = 28,
|
||||
CMD_SAVE_MAC_FROM_FW = 40,
|
||||
CMD_PASS_THROUGH = 50,
|
||||
|
||||
@@ -420,6 +421,16 @@ void processFlasherCommand(struct flasherCommand* cmd, uint8_t transportType) {
|
||||
}
|
||||
sendFlasherAnswer(CMD_ERASE_INFOPAGE, NULL, 0, transportType);
|
||||
break;
|
||||
case CMD_ERASE_ALL:
|
||||
if (selectedController == CONTROLLER_NRF82511) {
|
||||
if (nrfflasherp == nullptr) return;
|
||||
nrfflasherp->nrf_erase_all();
|
||||
} else if (selectedController == CONTROLLER_CC) {
|
||||
if (ccflasherp == nullptr) return;
|
||||
ccflasherp->erase_chip();
|
||||
}
|
||||
sendFlasherAnswer(CMD_ERASE_ALL, NULL, 0, transportType);
|
||||
break;
|
||||
case CMD_SELECT_PORT:
|
||||
wsSerial("> select port");
|
||||
selectedFlasherPort = cmd->data[0];
|
||||
@@ -453,7 +464,7 @@ void processFlasherCommand(struct flasherCommand* cmd, uint8_t transportType) {
|
||||
break;
|
||||
}
|
||||
nrfflasherp->init();
|
||||
temp_buff[0] = (nrfflasherp->isConnected && !nrfflasherp->isLocked);
|
||||
temp_buff[0] = nrfflasherp->isConnected ? (nrfflasherp->isLocked ? 2 : 1) : 0;
|
||||
sendFlasherAnswer(CMD_SELECT_NRF82511, temp_buff, 1, transportType);
|
||||
currentFlasherOffset = 0;
|
||||
selectedController = CONTROLLER_NRF82511;
|
||||
|
||||
Reference in New Issue
Block a user