Changeset - f38d55cb0429
[Not reviewed]
default
0 3 0
ethanzonca@CL-ENS241-08.cedarville.edu - 12 years ago 2013-02-19 14:55:10
ethanzonca@CL-ENS241-08.cedarville.edu
Add option to error logging to not flash the LED. This is useful for soft failures such as a slave timeout.
3 files changed with 21 insertions and 15 deletions:
0 comments (0 inline, 0 general)
master/master/lib/logger.c
Show inline comments
 
@@ -66,7 +66,7 @@ void logger_setup()
 
 
	if(!sd_raw_init())
 
	{
 
		error_log(ERROR_SD_INIT);
 
		error_log(ERROR_SD_INIT, true);
 
		return;
 
	}
 
 
@@ -80,7 +80,7 @@ void logger_setup()
 
	if(!partition)
 
	{
 
		// Error opening partition. MBR might be screwed up.
 
		error_log(ERROR_SD_PARTITION);
 
		error_log(ERROR_SD_PARTITION, true);
 
		return;
 
	}
 
	
 
@@ -90,7 +90,7 @@ void logger_setup()
 
	if(!fs)
 
	{
 
		// opening filesystem failed
 
		error_log(ERROR_SD_PARTITION);
 
		error_log(ERROR_SD_PARTITION, true);
 
		return;
 
	}
 
	
 
@@ -103,7 +103,7 @@ void logger_setup()
 
	{
 
		// opening root directory failed
 
		_delay_ms(10);
 
		error_log(ERROR_SD_FILE);
 
		error_log(ERROR_SD_FILE, true);
 
		return;
 
	}
 
	
 
@@ -122,14 +122,14 @@ void logger_setup()
 
	if(fat_create_file(dd, errorFilename, &errorDirEntry) == 0)
 
	{
 
		serial0_sendString("Error create errorlog\r\n");
 
		error_log(ERROR_SD_FILE);
 
		error_log(ERROR_SD_FILE, true);
 
	}
 
	// Search for file in current directory and open it
 
	fd_errorlog = open_file_in_dir(fs, dd, errorFilename);
 
	if(!fd_errorlog)
 
	{
 
		serial0_sendString("Error open errorlog!\r\n");
 
		error_log(ERROR_SD_FILE);
 
		error_log(ERROR_SD_FILE, true);
 
		return;
 
	}
 
	errorOffset=0;
 
@@ -137,7 +137,7 @@ void logger_setup()
 
	{
 
		// Error seeking to file
 
		serial0_sendString("Error seek errorlog!\r\n");
 
		error_log(ERROR_SD_FILE);
 
		error_log(ERROR_SD_FILE, true);
 
		fat_close_file(fd_errorlog);
 
		return;
 
	}
 
@@ -153,14 +153,14 @@ void logger_setup()
 
	if(fat_create_file(dd, dataFilename, &dataDirEntry) == 0) 
 
	{
 
		serial0_sendString("Error create datalog\r\n");
 
		error_log(ERROR_SD_FILE);
 
		error_log(ERROR_SD_FILE, true);
 
	}
 
	// Search for file in current directory and open it
 
	fd_datalog = open_file_in_dir(fs, dd, dataFilename);
 
	if(!fd_datalog)
 
	{
 
		serial0_sendString("Error open datalog!\r\n");
 
		error_log(ERROR_SD_FILE);
 
		error_log(ERROR_SD_FILE, true);
 
		return;
 
	}
 
	dataOffset=0;
 
@@ -168,7 +168,7 @@ void logger_setup()
 
	{
 
		// Error seeking to file
 
		serial0_sendString("Error seek datalog!\r\n");
 
		error_log(ERROR_SD_FILE);
 
		error_log(ERROR_SD_FILE, true);
 
		fat_close_file(fd_datalog);
 
		return;
 
	}
 
@@ -192,19 +192,23 @@ void logger_log(char *buffer)
 
	}
 
}
 
 
void error_log(uint8_t errNo)
 
void error_log(uint8_t errNo, bool flashLED)
 
{
 
	char labelBuffer[32];
 
	labelBuffer[0] = 0x00;
 
	
 
	if(errNo <= MAX_ERRNO) 
 
	{
 
	strncpy_P(labelBuffer,(char*)pgm_read_word(&(errorMessageLookup[errNo])),32);
 
		strncpy_P(labelBuffer,(char*)pgm_read_word(&(errorMessageLookup[errNo])),32);
 
	}
 
	char errorLine[128];
 
	snprintf(errorLine, 128, "%lu, %u, %s,\r\n", time_millis(), errNo, labelBuffer);
 
	error_log_rawwrite(errorLine);
 
	led_errorcode(errNo);
 
	
 
	if(flashLED) 
 
	{
 
		led_errorcode(errNo);
 
	}	
 
}
 
 
void error_log_rawwrite(char *buffer) 
master/master/lib/logger.h
Show inline comments
 
@@ -14,11 +14,13 @@
 
#ifndef LOGGER_H_
 
#define LOGGER_H_
 
 
#include <stdbool.h>
 
 
void logger_setup();
 
uint8_t logger_writeLine(char* dateLine, uint8_t length);
 
struct fat_file_struct* open_file_in_dir(struct fat_fs_struct* fs, struct fat_dir_struct* dd, const char* name);
 
uint8_t find_file_in_dir(struct fat_fs_struct* fs, struct fat_dir_struct* dd, const char* name, struct fat_dir_entry_struct* dir_entry);
 
void error_log(uint8_t errNo);
 
void error_log(uint8_t errNo, bool flashLED);
 
void error_log_rawwrite(char *buffer);
 
void logger_log(char *buffer);
 
void logger_closeLog();
master/master/lib/slavesensors.c
Show inline comments
 
@@ -490,7 +490,7 @@ void slavesensors_process(uint8_t parseR
 
			// if we're requesting, we have no data, and we're over the timeout, this is bad!
 
			// setParserState(STATE_RESET); - meh, can't do this because it freaking increments the cirbufptr
 
			gotoNextSlaveOrSensor(true);
 
			error_log(ERROR_SLAVETIMEOUT);
 
			error_log(ERROR_SLAVETIMEOUT, false); // log error, don't blink LED
 
		}
 
	}
 
	
0 comments (0 inline, 0 general)