# HG changeset patch # User ethanzonca@CL-ENS241-08.cedarville.edu # Date 2013-01-29 16:41:25 # Node ID 2fee3928a8ffd8cfde4dc16b6f34b7f30fdcd86b # Parent ffed0d7621569e1889ee42c03adda4a1250f23e4 Removed timeouts which somehow were causing destination node switching to break diff --git a/master/master/config.h b/master/master/config.h --- a/master/master/config.h +++ b/master/master/config.h @@ -39,6 +39,9 @@ #define ERROR_CRAP 15 +#define ERROR_ATFAIL 3 +#define ERROR_EXITAT 8 + // -------------------------------------------------------------------------- // Slave Sensors config (slavesensors.c) // -------------------------------------------------------------------------- diff --git a/master/master/lib/slavesensors.c b/master/master/lib/slavesensors.c --- a/master/master/lib/slavesensors.c +++ b/master/master/lib/slavesensors.c @@ -36,7 +36,7 @@ void slavesensors_setup() } //#define DEBUG_NETWORKSCAN -//#define DEBUG_GETSLAVEDATA +#define DEBUG_GETSLAVEDATA char* bufPtr = 0x00; @@ -162,6 +162,7 @@ void slavesensors_network_scan() { } } _delay_ms(100); + slavesensors_selectlogger(); serial0_ion(); @@ -169,6 +170,12 @@ void slavesensors_network_scan() { void slavesensors_selectnode(uint8_t nodeIndex) { + + serial0_ioff(); + serial0_sendString("Switch to node "); + serial0_sendChar(nodeIndex + 0x30); + serial0_sendString("\r\n"); + _delay_ms(30); char tmpBuf[23]; // If we can get into AT mode @@ -192,6 +199,12 @@ void slavesensors_selectnode(uint8_t nod slavesensors_exitAT(); } + _delay_ms(2); + + serial0_sendString("Selected "); + serial0_sendChar(nodeIndex + 0x30); + serial0_sendString("\r\n"); + serial0_ion(); return; } @@ -207,29 +220,43 @@ void slavesensors_exitAT() // Exit AT serial0_sendString("ATCN"); serial0_sendChar(0x0D); - xbeeIsOk(); // wait for OK + _delay_ms(2); + //// Wait until we get "OK" + //int atStart = time_millis(); + //while(!serial0_hasChar()) { + //if(time_millis() - atStart > 500) { + //led_errorcode(ERROR_EXITAT); + //wdt_reset(); + //return 1; + //} + //}; + + xbeeIsOk(); } // Enter AT mode. Leaves "OK" on the buffer. int slavesensors_enterAT() { // Delay guard time - _delay_ms(1); + _delay_ms(2); + + + serial0_ioff(); // interrupts MUST be off // Enter AT mode serial0_sendChar('+'); // Enter AT mode serial0_sendChar('+'); serial0_sendChar('+'); - + _delay_ms(2); // Wait 1ms until we get "OK" - int atStart = time_millis(); - while(!serial0_hasChar()) { - if(time_millis() - atStart > 500) { - led_errorcode(ERROR_XBEETIMEOUT); - wdt_reset(); - return 1; - } - }; + //int atStart = time_millis(); + //while(!serial0_hasChar()) { + //if(time_millis() - atStart > 500) { + //led_errorcode(ERROR_ATFAIL); + //wdt_reset(); + //return 1; + //} + //}; return xbeeIsOk(); @@ -267,7 +294,7 @@ void slavesensors_startprocess() // TODO: inline. static. void slavesensors_request() { - //slavesensors_selectnode(currentSlave); + slavesensors_selectnode(currentSlave); serial_sendCommand("@"); // Request data! }