# HG changeset patch # User kripperger@CL-SEC241-09.cedarville.edu # Date 2013-01-24 16:43:44 # Node ID 2c432ac682ed975d0f412eb2a0ccf7b939759284 # Parent e61ea2af14d501037428d37cef289320a7051282 More work on Slave-Master comms diff --git a/slave/slave/lib/masterComm.c b/slave/slave/lib/masterComm.c --- a/slave/slave/lib/masterComm.c +++ b/slave/slave/lib/masterComm.c @@ -17,6 +17,19 @@ uint8_t dataTypes; char buff2[64]; + +char masterComm_checksum(const char* stringPtr) +{ + char sum = 0; + while(*stringPtr != 0x00) + { + sum += *stringPtr; + stringPtr++; + } + return sum; +} + + void masterComm_types() { switch(io_getModuleId()) @@ -50,6 +63,14 @@ void masterComm_types() void masterComm_modules() { + // Send BoardTemperature (Common for all modules) + serial0_sendString("["); + snprintf(buff2,64,"1%u",sensors_getBoardTemp()); + serial0_sendString(buff2); + serial0_sendString("]"); + serial0_sendString(masterComm_checksum(buff2)); + + // Send module specific sensor readings switch(io_getModuleId()) { case 0: @@ -60,11 +81,55 @@ void masterComm_modules() case 1: // Sensors + // Send SPI Temperature (Air) + serial0_sendString("["); + snprintf(buff2,64,"2%u",sensors_getSpiTemp()); + serial0_sendString(buff2); + serial0_sendString("]"); + serial0_sendString(masterComm_checksum(buff2)); + + // Send Ambient Light (Needs to be formatted) + serial0_sendString("["); + snprintf(buff2,64,"3%u",geiger_getCpm()); //FIX + serial0_sendString(buff2); + serial0_sendString("]"); + serial0_sendString(masterComm_checksum(buff2)); + +/* + // Send CPM (radiation) + serial0_sendString("["); + snprintf(buff2,64,"7%u",geiger_getCpm()); + serial0_sendString(buff2); + serial0_sendString("]"); + serial0_sendString(masterComm_checksum(buff2)); + + // Send CPM (radiation) + serial0_sendString("["); + snprintf(buff2,64,"7%u",geiger_getCpm()); + serial0_sendString(buff2); + serial0_sendString("]"); + serial0_sendString(masterComm_checksum(buff2)); + + // Send CPM (radiation) + serial0_sendString("["); + snprintf(buff2,64,"7%u",geiger_getCpm()); + serial0_sendString(buff2); + serial0_sendString("]"); + serial0_sendString(masterComm_checksum(buff2)); +*/ + break; - + case 2: // Geiger + // Send CPM (radiation) + serial0_sendString("["); + snprintf(buff2,64,"7%u",geiger_getCpm()); + serial0_sendString(buff2); + serial0_sendString("]"); + serial0_sendString(masterComm_checksum(buff2)); + break; case 3: @@ -81,20 +146,23 @@ void masterComm_modules() void masterComm_send() { - masterComm_types(); - serial0_sendString("[@"); - snprintf(buff2,64,"%u]%u",dataTypes,('@'+dataTypes)); + masterComm_types(); // Calculates how many data types to send + + // Return resquest with number of data types to be sent + serial0_sendString("["); // Send opening bracket + snprintf(buff2,64,"@%u",dataTypes); // Send package (@ reply and number of data types) serial0_sendString(buff2); + serial0_sendString("]"); // Send closing bracket + serial0_sendString(masterComm_checksum(buff2)); // Calculate and send checksum - masterComm_modules(); - + masterComm_modules(); // Send sensor data serial0_sendString("got request\r\n"); //DEBUG } -void masterComm_check() +void masterComm_checkParser() { if (serparser_parse() == PARSERESULT_PARSEOK) { diff --git a/slave/slave/lib/masterComm.h b/slave/slave/lib/masterComm.h --- a/slave/slave/lib/masterComm.h +++ b/slave/slave/lib/masterComm.h @@ -8,11 +8,12 @@ #ifndef MASTERCOMM_H_ #define MASTERCOMM_H_ +char masterComm_checksum(const char* stringPtr); void masterComm_types(); // Calculates the number of types the module has void masterComm_modules(); // Sends sensor data depending on module -void masterComm_check(); // Runs parser and checks for data request +void masterComm_checkParser(); // Runs parser and checks for data request void masterComm_send(); // Sends data after being requested