summaryrefslogtreecommitdiff
path: root/globals.c
diff options
context:
space:
mode:
authorMichael J. Chudobiak <mjc@avtechpulse.com>2012-08-16 11:32:25 -0400
committerMichael J. Chudobiak <mjc@avtechpulse.com>2012-08-16 11:32:25 -0400
commit53b0084de1e0b3cdb94fd345a03911f80ebcb784 (patch)
treeb757518dbaf8b3845fb34d6a22cbef00301dd3fa /globals.c
parent51aec80f5b733b25e0875e22f82537fd31eb4ee4 (diff)
add function to initialize Flash
Diffstat (limited to 'globals.c')
-rw-r--r--globals.c50
1 files changed, 45 insertions, 5 deletions
diff --git a/globals.c b/globals.c
index 8324fed..66007d3 100644
--- a/globals.c
+++ b/globals.c
@@ -2,11 +2,51 @@
GlobalStruct globals = {
.ChannelState = {0.0},
- .Flash = { .flash_start = (char) 99,
- .aux_error_message="FIXME",
- .channels = (short) 1,
- .enable_avrq_extra_ampls = (char) 12,
- .ChanKey_frequency = (char) 0 },
.error_queue = {0},
.number_of_errors = 0
};
+
+
+int readUserBlock(void)
+{
+ // read the flash.copy file into the globals.Flash struct
+ // and return the number of bytes read in
+
+ // if the file does not exist, then "return 0";
+ return 0;
+}
+
+void writeUserBlock(int addr, int numbytes)
+{
+ // check if flash.copy file exists
+ // - if it does, update the requested address and
+ // number of bytes
+
+ // - if does not, create the file and
+ // set addr = 0, numbytes = sizeof (mem)
+ // so that entire struct will be written,
+ // instead of just the requested range
+
+ // All writing should be done in a super-safe
+ // way. Non-corruption, even during a power-off transient,
+ // is the priority here. We do not want instruments
+ // losing configuration data ever, because that
+ // means expensive repairs.
+}
+
+void initFlash(void)
+{
+ if (readUserBlock() > 0) return;
+
+ // uninitialized device!
+ globals.Flash.flash_start = (char) 99;
+ strcpy(globals.Flash.aux_error_message,"FIXME");
+ globals.Flash.channels = (short) 1;
+ globals.Flash.enable_avrq_extra_ampls = (char) 12;
+ globals.Flash.ChanKey_frequency = (char) 0;
+
+ // save the default Flash config, for nonvolatile persistence
+ writeUserBlock(0, sizeof(globals.Flash));
+}
+
+