summaryrefslogtreecommitdiff
path: root/ports/nrf/peripherals
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2019-12-12 15:51:13 -0500
committerDan Halbert <halbert@halwitz.org>2019-12-12 15:51:13 -0500
commitef2ef7a6b8c30dd64753e2ceca7587d9ead90e44 (patch)
treeada3663598b60f30a1ba53b3a8ff5b8143af8e76 /ports/nrf/peripherals
parente11fabd5e0979fa257a81d6025a0df0b6652b600 (diff)
parentbcd03ed7ee6cfbf0f3be926c2f7912201c5a7ca6 (diff)
merge from master
Diffstat (limited to 'ports/nrf/peripherals')
-rw-r--r--ports/nrf/peripherals/nrf/nvm.c15
-rw-r--r--ports/nrf/peripherals/nrf/nvm.h2
2 files changed, 9 insertions, 8 deletions
diff --git a/ports/nrf/peripherals/nrf/nvm.c b/ports/nrf/peripherals/nrf/nvm.c
index d8fddc4dc..7118b9c87 100644
--- a/ports/nrf/peripherals/nrf/nvm.c
+++ b/ports/nrf/peripherals/nrf/nvm.c
@@ -50,7 +50,7 @@ STATIC sd_flash_operation_status_t sd_flash_operation_wait_until_done(void) {
}
#endif
-void nrf_nvm_safe_flash_page_write(uint32_t page_addr, uint8_t *data) {
+bool nrf_nvm_safe_flash_page_write(uint32_t page_addr, uint8_t *data) {
#ifdef BLUETOOTH_SD
uint8_t sd_en = 0;
(void) sd_softdevice_is_enabled(&sd_en);
@@ -61,11 +61,11 @@ void nrf_nvm_safe_flash_page_write(uint32_t page_addr, uint8_t *data) {
sd_flash_operation_start();
err_code = sd_flash_page_erase(page_addr / FLASH_PAGE_SIZE);
if (err_code != NRF_SUCCESS) {
- mp_raise_OSError_msg_varg(translate("Flash erase failed to start, err 0x%04x"), err_code);
+ return false;
}
status = sd_flash_operation_wait_until_done();
if (status == SD_FLASH_OPERATION_ERROR) {
- mp_raise_OSError_msg(translate("Flash erase failed"));
+ return false;
}
// Divide a full page into parts, because writing a full page causes an assertion failure.
@@ -78,18 +78,19 @@ void nrf_nvm_safe_flash_page_write(uint32_t page_addr, uint8_t *data) {
(uint32_t *)data + i * words_to_write,
words_to_write);
if (err_code != NRF_SUCCESS) {
- mp_raise_OSError_msg_varg(translate("Flash write failed to start, err 0x%04x"), err_code);
+ return false;
}
status = sd_flash_operation_wait_until_done();
if (status == SD_FLASH_OPERATION_ERROR) {
- mp_raise_OSError_msg(translate("Flash write failed"));
+ return false;
}
}
- return;
+ return true;
}
#endif
nrf_nvmc_page_erase(page_addr);
nrf_nvmc_write_bytes(page_addr, data, FLASH_PAGE_SIZE);
-}
+ return true;
+}
diff --git a/ports/nrf/peripherals/nrf/nvm.h b/ports/nrf/peripherals/nrf/nvm.h
index 60a663e81..e54e953df 100644
--- a/ports/nrf/peripherals/nrf/nvm.h
+++ b/ports/nrf/peripherals/nrf/nvm.h
@@ -27,4 +27,4 @@
#define FLASH_PAGE_SIZE (4096)
-void nrf_nvm_safe_flash_page_write(uint32_t page_addr, uint8_t *data);
+bool nrf_nvm_safe_flash_page_write(uint32_t page_addr, uint8_t *data);