diff options
author | Michael J. Chudobiak <mjc@avtechpulse.com> | 2012-08-16 11:32:25 -0400 |
---|---|---|
committer | Michael J. Chudobiak <mjc@avtechpulse.com> | 2012-08-16 11:32:25 -0400 |
commit | 53b0084de1e0b3cdb94fd345a03911f80ebcb784 (patch) | |
tree | b757518dbaf8b3845fb34d6a22cbef00301dd3fa /globals.c | |
parent | 51aec80f5b733b25e0875e22f82537fd31eb4ee4 (diff) |
add function to initialize Flash
Diffstat (limited to 'globals.c')
-rw-r--r-- | globals.c | 50 |
1 files changed, 45 insertions, 5 deletions
@@ -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)); +} + + |