Arduino-Style read/write using FreescaleIAP for KL25Z

Files at this revision

API Documentation at this revision

Comitter:
kpan
Date:
Sat Nov 10 10:46:10 2018 +0000
Parent:
0:d21f696a705c
Commit message:
Finished functions and docs

Changed in this revision

FlashRW.cpp Show annotated file Show diff for this revision Revisions of this file
FlashRW.h Show annotated file Show diff for this revision Revisions of this file
diff -r d21f696a705c -r 2713ad5a5dab FlashRW.cpp
--- 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
diff -r d21f696a705c -r 2713ad5a5dab FlashRW.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FlashRW.h	Sat Nov 10 10:46:10 2018 +0000
@@ -0,0 +1,28 @@
+#include "mbed.h"
+#include "FreescaleIAP.h"
+
+/** Write contiguous integer data to flash memory
+ *
+ * @param data address of the data to be written
+ * @param data_len size of data to be written
+ * @param return Success if no errors were encountered, otherwise one of the error states defined in Freescale.h
+ */
+IAPCode write(int* data, size_t data_len);
+
+/** Write a single integer to flash memory
+ *  
+ * @param data data that needs to be writter
+ * @param return Success if no errors were encountered, otherwise one of the error states defined in Freescale.h
+ */
+IAPCode write(int data);
+/** Retrieve written data
+ * 
+ * @param return address of start of data write sector
+ */ 
+int *getData();
+
+/** Retrieve size of written data
+ * 
+ * @param return size of data written so far
+ */
+int getSize();
\ No newline at end of file