diff --git a/master/master/lib/ini/ini.c b/master/master/lib/ini/ini.c --- a/master/master/lib/ini/ini.c +++ b/master/master/lib/ini/ini.c @@ -1,11 +1,22 @@ -/* inih -- simple .INI file parser - -inih is released under the New BSD license (see LICENSE.txt). Go to the project -home page for more info: - -http://code.google.com/p/inih/ - -*/ +/* + * Master Firmware: INI Parse Backend + * + * Wireless Observational Modular Aerial Network + * + * Ethan Zonca + * Matthew Kanning + * Kyle Ripperger + * Matthew Kroening + * + * This library was modified to use SD card FAT read/write operations + * + * Original library: + * + * inih is released under the New BSD license (see LICENSE.txt). Go to the project + * home page for more info: + * http://code.google.com/p/inih/ + * + */ #include #include @@ -21,6 +32,7 @@ http://code.google.com/p/inih/ #define MAX_SECTION 50 #define MAX_NAME 50 + /* Strip whitespace chars off end of given string, in place. Return s. */ static char* rstrip(char* s) { diff --git a/master/master/lib/ini/ini.h b/master/master/lib/ini/ini.h --- a/master/master/lib/ini/ini.h +++ b/master/master/lib/ini/ini.h @@ -1,11 +1,22 @@ -/* inih -- simple .INI file parser - -inih is released under the New BSD license (see LICENSE.txt). Go to the project -home page for more info: - -http://code.google.com/p/inih/ - -*/ +/* + * Master Firmware: INI Parse Backend + * + * Wireless Observational Modular Aerial Network + * + * Ethan Zonca + * Matthew Kanning + * Kyle Ripperger + * Matthew Kroening + * + * This library was modified to use SD card FAT read/write operations + * + * Original library: + * + * inih is released under the New BSD license (see LICENSE.txt). Go to the project + * home page for more info: + * http://code.google.com/p/inih/ + * + */ #ifndef __INI_H__ #define __INI_H__ diff --git a/master/master/lib/iniparse.c b/master/master/lib/iniparse.c --- a/master/master/lib/iniparse.c +++ b/master/master/lib/iniparse.c @@ -18,33 +18,31 @@ #include "ini/ini.h" #include "logger.h" + +// Callback function for INI file parsing static int handler(void* user, const char* section, const char* name, const char* value) { configuration* pconfig = (configuration*)user; #define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0 - + + // MATCH(section name, variable name) if (MATCH("general", "temp")) { pconfig->heater_threshold = atoi(value); - } else if (MATCH("general", "reqrate")) { pconfig->datarequest_rate = strtol(value, NULL, 10); - } else if (MATCH("blackout", "enable")) { pconfig->blackout_enable = strncmp(value, "false", 4); - } else if (MATCH("blackout", "timeout")) { pconfig->blackout_timeout = strtol(value, NULL, 10); - } else if (MATCH("buzzer", "failsafe")) { pconfig->buzzer_failsafe_duration = strtol(value, NULL, 10); - } else if (MATCH("buzzer", "mintime")) { pconfig->buzzer_trigger_minduration = strtol(value, NULL, 10); @@ -53,13 +51,10 @@ static int handler(void* user, const cha } else if (MATCH("aprs", "call")) { strncpy(pconfig->s_callsign, value, 10); - //pconfig->s_callsign = strdup(value); - } else if (MATCH("aprs", "call_id")) { pconfig->s_callsign_id = atoi(value); - } else if (MATCH("aprs", "period")) { pconfig->aprs_transmit_period = strtol(value, NULL, 10); @@ -68,11 +63,12 @@ static int handler(void* user, const cha return 0; /* unknown section/name, error */ } - return 1; } -configuration config = { +// Initialize configuration structure pre-set to DEFINE'ed defaults +configuration config = +{ #ifdef BLACKOUT_ENABLE .blackout_enable = true, #else @@ -90,20 +86,19 @@ configuration config = { .aprs_transmit_period = APRS_TRANSMIT_PERIOD }; +// Parse config file from SD card and set global configuration struct void iniparse_getconfig() { // Init configuration with default values from config.h - - if (ini_parse(handler, &config) < 0) { - // ERROR: Make new error code here! + if (ini_parse(handler, &config) < 0) + { error_log(ERROR_CONFIGPARSE, false); } sysconfig = &config; - // Print configuration to err + // Print critical configuration options to CSV error log for reference error_log_rawwrite("\nConf:\n"); - char msg[50]; snprintf(msg, 50,"reqrate: %lu\n",sysconfig->datarequest_rate); error_log_rawwrite(msg); diff --git a/master/master/lib/iniparse.h b/master/master/lib/iniparse.h --- a/master/master/lib/iniparse.h +++ b/master/master/lib/iniparse.h @@ -14,7 +14,6 @@ #ifndef INIPARSE_H_ #define INIPARSE_H_ - - +void iniparse_getconfig(); #endif /* INIPARSE_H_ */ \ No newline at end of file diff --git a/master/master/lib/watchdog.c b/master/master/lib/watchdog.c --- a/master/master/lib/watchdog.c +++ b/master/master/lib/watchdog.c @@ -21,7 +21,8 @@ #include "led.h" #include "logger.h" -//initialize watchdog + +// Initialize watchdog timer void watchdog_setup(void) { cli(); @@ -33,6 +34,7 @@ void watchdog_setup(void) sei(); } +// Check if a WDT reset occurred on the previous boot void watchdog_checkreset(void) { // Check if WDT reset occurred @@ -40,21 +42,23 @@ void watchdog_checkreset(void) { MCUSR &= ~(1< BUZZER_RATE) { + if(time_millis() - lastBuzz > BUZZER_RATE) + { if(sensordata_isTouchdown()) { led_on(LED_BUZZ); @@ -128,8 +130,8 @@ int main(void) } lastBuzz = time_millis(); } - - if(buzz && time_millis() - lastBuzzOn > BUZZER_DURATION) { + if(buzz && time_millis() - lastBuzzOn > BUZZER_DURATION) + { led_off(LED_BUZZ); buzz = false; }