Diff: FlashRW.cpp
- Revision:
- 1:2713ad5a5dab
- Parent:
- 0:d21f696a705c
--- a/FlashRW.cpp Fri Nov 09 11:14:05 2018 +0000 +++ b/FlashRW.cpp Sat Nov 10 10:46:10 2018 +0000 @@ -1,12 +1,34 @@ #include "mbed.h" #include "FreescaleIAP.h" -static int write_address = flash_size() - SECTOR_SIZE; -static int read_address = flash_size() - SECTOR_SIZE; -int write(int* data, size_t data_size){ - erase_sector(write_address); - program_flash(write_address, (char*)&data, data_size); - write_address += data_size; - return 0; +static int start_address = flash_size() - SECTOR_SIZE; +static int write_address = start_address; + +IAPCode write(int* data, size_t data_len){ + IAPCode errorCode; + + if((errorCode = erase_sector(write_address)) != 0) + return errorCode; + if((errorCode = program_flash(write_address, (char*)data, data_len)) != 0) + return errorCode; + write_address += data_len; + return Success; } +IAPCode write(int data){ + IAPCode errorCode; + if((errorCode = erase_sector(write_address)) != 0) + return errorCode; + if((errorCode = program_flash(write_address, (char*)data, sizeof(data))) != 0) + return errorCode; + write_address += sizeof(data); + return Success; +} + +int* getData(){ + return (int*)(start_address); +} + +int getSize(){ + return ((write_address - start_address)/sizeof(int)); +} \ No newline at end of file