UDPversion
Dependencies: XBee mbed NetServicesMin
Revision 1:3a46d2725374, committed 2012-04-15
- Comitter:
- recotana
- Date:
- Sun Apr 15 10:49:08 2012 +0000
- Parent:
- 0:84a3b029656e
- Commit message:
Changed in this revision
--- a/common/data_models.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/common/data_models.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -3,6 +3,8 @@ #include "EthernetNetIf.h" extern Serial pc; + + void initPayload(Payload *_payload) { _payload->size=sizeof(Payload); @@ -175,4 +177,35 @@ } pc.printf("\r\n"); +} + +void dumpPrefSender(PrefSender *prf) +{ + pc.printf("current frame number:%d\n",prf->currentFrameNumber); + pc.printf("gainData gain:%d\n",prf->gainData.gain); + pc.printf("gainData middleLevel:%d\n",prf->gainData.middleLevel); + pc.printf("lightsw:%d\n",prf->lightsw); + pc.printf("continueusMode:%d\n",prf->continueusMode); + pc.printf("isSend:%d\n",prf->isSend); + pc.printf("xbeeAdress:%X\n",prf->xbeeAdress); + +} +void dumpPrefReciever(PrefReciever *prf) +{ + + pc.printf("xbeeAdress:%X\n",prf->xbeeAdress); + +} +void dumpPrefServer(PrefServer *prf) +{ + pc.printf("xbeeAdress:%X\n",prf->xbeeAdress); + pc.printf("server ip:%d.%d.%d.%d\n",prf->serverAddress[0],prf->serverAddress[1],prf->serverAddress[2],prf->serverAddress[3]); + pc.printf("subnet ip:%d.%d.%d.%d\n",prf->subnetMask[0],prf->subnetMask[1],prf->subnetMask[2],prf->subnetMask[3]); + pc.printf("router ip:%d.%d.%d.%d\n",prf->routerAddress[0],prf->routerAddress[1],prf->routerAddress[2],prf->routerAddress[3]); + + pc.printf("Server Port:%d\n",prf->serverPort); + + pc.printf("Destination ip:%d.%d.%d.%d\n",prf->destinationAddress[0],prf->destinationAddress[1],prf->destinationAddress[2],prf->destinationAddress[3]); + pc.printf("Destination Port:%d\n",prf->destinationPort); + } \ No newline at end of file
--- a/common/data_models.h Sat Apr 14 03:53:45 2012 +0000 +++ b/common/data_models.h Sun Apr 15 10:49:08 2012 +0000 @@ -109,5 +109,8 @@ uint16_t culcSum(Payload *_payload); void dumpPayload(Payload *_payload); +void dumpPrefSender(PrefSender *prf); +void dumpPrefReciever(PrefReciever *prf); +void dumpPrefServer(PrefServer *prf); #endif \ No newline at end of file
--- a/common/disp_led/leds.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/common/disp_led/leds.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" #include "leds.h" +#include "config.h" #define kLedOnTime 0.05 @@ -15,12 +16,18 @@ Timeout led_xbee_snd; Timeout led_xbee_rec; +#ifndef _SERVER_TEST_MODE_ DigitalOut ledTcpCon(kTcpConnect); DigitalOut ledTcpRec(kTcpRx); DigitalOut ledTcpSend(kTcpTx); DigitalOut ledXBeeRec(kXBeeRx); DigitalOut ledXBeeSend(kXBeeTx); +#else +DigitalOut ledTcpCon(LED1); +DigitalOut ledTcpRec(LED2); +DigitalOut ledTcpSend(LED3); +#endif void offTcpRx(void){ @@ -30,10 +37,14 @@ ledTcpSend=0; } void offXBeeRx(void){ +#ifndef _SERVER_TEST_MODE_ ledXBeeRec=0; +#endif } void offXBeeTx(void){ +#ifndef _SERVER_TEST_MODE_ ledXBeeSend=0; +#endif } void ledTcpRx(void) @@ -50,15 +61,19 @@ } void ledXBeeRx(void) { +#ifndef _SERVER_TEST_MODE_ if(ledXBeeRec == 1) return; ledXBeeRec=1; led_xbee_rec.attach(&offXBeeRx,kLedOnTime); +#endif } void ledXBeeTx(void) { +#ifndef _SERVER_TEST_MODE_ if(ledXBeeSend == 1) return; ledXBeeSend=1; led_xbee_snd.attach(&offXBeeTx,kLedOnTime); +#endif } @@ -81,7 +96,7 @@ ledTcpSend=1; wait(0.2); ledTcpSend=0; - +#ifndef _SERVER_TEST_MODE_ ledXBeeRec=1; wait(0.2); ledXBeeRec=0; @@ -89,7 +104,7 @@ ledXBeeSend=1; wait(0.2); ledXBeeSend=0; - +#endif wait(0.4); @@ -98,15 +113,19 @@ ledTcpCon=1; ledTcpRec=1; ledTcpSend=1; +#ifndef _SERVER_TEST_MODE_ ledXBeeRec=1; ledXBeeSend=1; +#endif wait(0.05); ledTcpCon=0; ledTcpRec=0; ledTcpSend=0; +#ifndef _SERVER_TEST_MODE_ ledXBeeRec=0; ledXBeeSend=0; +#endif wait(0.1); }
--- a/config.h Sat Apr 14 03:53:45 2012 +0000 +++ b/config.h Sun Apr 15 10:49:08 2012 +0000 @@ -2,7 +2,9 @@ #define _CONFIG_ #include "mbed.h" -//comentout -> nomal(do not debug printf) + +//#define _SERVER_TEST_MODE_ + //#define DEBUG
--- a/main.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/main.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -1,4 +1,7 @@ #include "mbed.h" + +Serial pc(USBTX, USBRX); + #include "xbee_lib.h" #include "EthernetNetIf.h" #include "config.h" @@ -8,18 +11,16 @@ #include "leds.h" -Serial pc(USBTX, USBRX); +#include "data_models.h" volatile PrefServer pref; +volatile PrefSender spref; +volatile PrefReciever rpref; EthernetNetIf eth ; Ticker connectCheck; -//#ifdef _SERVER_TEST_MODE_ - -#include "data_models.h" - DigitalIn recSw(p20); Timeout chatter; bool isPressed; @@ -66,7 +67,7 @@ } -//#endif + @@ -76,10 +77,7 @@ pc.baud(115200); -// #ifdef _SERVER_TEST_MODE_ - testModeInit(); -// #endif - + uint8_t tmpip[4]={kSserverIp}; uint8_t tmpsubnet[4]={kSubnetMask}; uint8_t tmprt[4]={kRouterIp}; @@ -90,6 +88,12 @@ IpAddr(kRouterIp), // Default Gateway IpAddr(kRouterIp) // DNS Server ) ; + + #ifdef _SERVER_TEST_MODE_ + pc.printf("*.*.*.*.*.*.*. T E S T M O D E *.*.*.*.*.*.*.*.*.*.\n"); + testModeInit(); + #endif + if( eth.setup() != ETH_OK ) { @@ -127,14 +131,14 @@ Net::poll(); - // #ifdef _SERVER_TEST_MODE_ + #ifdef _SERVER_TEST_MODE_ if(!recSw){ testSendRecieveData(); wait(0.5); } - // #else + #else xbeeRecieveRouting(); - // #endif + #endif if(healthiPad) ledTcpConnect(false); else ledTcpConnect(true);
--- a/tcpip/net_routing.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/tcpip/net_routing.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -6,51 +6,138 @@ extern PrefServer pref; +extern PrefSender spref; +extern PrefReciever rpref; + extern Serial pc; void netRouting(Payload *_payload) { - - - #ifdef _SERVER_TEST_MODE_ - tcpSendPayload(_payload); + +// dumpPayload(_payload); - #else - - dumpPayload(_payload); - - uint32_t xbeeAdr=0; switch(_payload->frame.message.device) { case LED_SENDER: { - xbeeAdr = kLedSender; - xbeeSend(xbeeAdr,_payload); + #ifndef _SERVER_TEST_MODE_ + + xbeeSend(kLedSender,_payload); + #else + + switch(_payload->frame.message.command) + { + case PING: + { + dumpPrefSender(&spref); + memcpy(_payload->frame.message.data,&spref,sizeof(PrefSender)); + _payload->frame.message.device=LED_SENDER; + DBGF("******* [TEST MODE] sender ping! **************\r\n"); + } + break; + case SEND_SINGLE: + { + spref.continueusMode=0; + spref.currentFrameNumber=_payload->frame.message.frameNumber; + dumpPrefSender(&spref); + + memcpy(_payload->frame.message.data,&spref,sizeof(PrefSender)); + _payload->frame.message.device=LED_SENDER; + DBGF("******* [TEST MODE] sender single send! **************\r\n"); + + } + break; + case SEND_CONTINUEOUS: + { + spref.continueusMode=1; + spref.currentFrameNumber=_payload->frame.message.frameNumber; + dumpPrefSender(&spref); + + memcpy(_payload->frame.message.data,&spref,sizeof(PrefSender)); + _payload->frame.message.device=LED_SENDER; + DBGF("******* [TEST MODE] sender continues send! **************\r\n"); + + } + break; + case SEND_CONT_STOP: + { + spref.continueusMode=0; + spref.currentFrameNumber=_payload->frame.message.frameNumber; + dumpPrefSender(&spref); + + memcpy(_payload->frame.message.data,&spref,sizeof(PrefSender)); + _payload->frame.message.device=LED_SENDER; + DBGF("******* [TEST MODE] sender continues stop! **************\r\n"); + + } + break; + + case SET_TX_GAIN: + { + spref.gainData.gain=_payload->frame.message.data[0]; + spref.gainData.middleLevel=_payload->frame.message.data[1]; + + dumpPrefSender(&spref); + + memcpy(_payload->frame.message.data,&spref,sizeof(PrefSender)); + _payload->frame.message.device=LED_SENDER; + DBGF("******* [TEST MODE] sender tx lebel set! **************\r\n"); + } + break; + case SET_LIGHT_CONTROL: + { + spref.lightsw=_payload->frame.message.data[0]; + + dumpPrefSender(&spref); + + memcpy(_payload->frame.message.data,&spref,sizeof(PrefSender)); + _payload->frame.message.device=LED_SENDER; + DBGF("******* [TEST MODE] sender light on set! **************\r\n"); + + } + break; + } + dumpPayload(_payload); + udpSendPayload(_payload); + #endif break; } case LED_RECIEVER: { - xbeeAdr = kLedReciever; - xbeeSend(xbeeAdr,_payload); + #ifndef _SERVER_TEST_MODE_ + + xbeeSend(kLedReciever,_payload); + #else + if(_payload->frame.message.command==PING){ + dumpPrefReciever(&rpref); + memcpy(_payload->frame.message.data,&rpref,sizeof(PrefReciever)); + _payload->frame.message.device=LED_RECIEVER; + dumpPayload(_payload); + udpSendPayload(_payload); + DBGF("******* [TEST MODE] reciever ping! **************\r\n"); + + } + + #endif break; } case SERVER: { if(_payload->frame.message.command==PING){ - memcpy(_payload->frame.message.data,&pref,sizeof(pref)); + #ifdef _SERVER_TEST_MODE_ + dumpPrefServer(&pref); + #endif + memcpy(_payload->frame.message.data,&pref,sizeof(PrefServer)); _payload->frame.message.device=SERVER; udpSendPayload(_payload); - pc.printf("******* ping! **************\r\n"); + DBGF("******* server ping! **************\r\n"); } break; } } - - #endif - } \ No newline at end of file
--- a/tcpip/tcp_client.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/tcpip/tcp_client.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -58,9 +58,9 @@ } void checkConnect(void){ +#ifdef DEBUG static uint16_t checkSendCount=0; -// if(iPadServerStatus != close) return; - +#endif char d = kHealthCheckmbed; udpSend( &d , 1 );
--- a/tcpip/tcp_server.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/tcpip/tcp_server.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -17,6 +17,8 @@ extern PrefServer pref; +extern PrefSender spref; +extern PrefReciever rpref; extern bool isHostConnected; @@ -40,15 +42,23 @@ return -1; } pc.printf("server setting OK\n"); - + + spref.currentFrameNumber = 0; + spref.gainData.gain=10; + spref.gainData.middleLevel=5; + spref.lightsw=1; + spref.continueusMode=0; + spref.isSend=0; return 0; } void onUDPSocketEvent(UDPSocketEvent e) { +#ifdef DEBUG static uint16_t checkMbedSendCount=0; static uint16_t checkiPadRecCount=0; +#endif char buff[256]; @@ -91,9 +101,7 @@ Payload pl; memcpy( &pl , buff , sizeof(Payload) ); -// initPayload(&pl); - -// dumpPayload(&pl); +// dumpPayload(&pl); networkToPayload(&pl);
--- a/xbee/xbee_lib.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/xbee/xbee_lib.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -11,19 +11,36 @@ ZBRxResponse zbRx = ZBRxResponse(); extern PrefServer pref; +extern PrefSender spref; +extern PrefReciever rpref; void xbeeInit(void) { + + pref.xbeeAdress = kMyXBeeAddress; + spref.xbeeAdress = kLedSender; + rpref.xbeeAdress = kLedReciever; + +#ifdef _SERVER_TEST_MODE_ +return; +#else + LPC_UART1->MCR |= (1<<7); // CTSEN LPC_PINCON->PINSEL1 &= ~(3 << 2); LPC_PINCON->PINSEL1 |= (1 << 2); // UART CTS xbee.begin(kXBeeBoudRate); - pref.xbeeAdress = kMyXBeeAddress; + + + pc.printf("XBee setup OK! XBee serial boudrate:%d address:%04X\r\n",kXBeeBoudRate,pref.xbeeAdress); +#endif } void xbeeSend(uint32_t addr , Payload *_payload) { +#ifdef _SERVER_TEST_MODE_ +return; +#else ledXBeeTx(); XBeeAddress64 deviceAdr = XBeeAddress64(0x0013a200, addr); @@ -38,16 +55,22 @@ ZBTxRequest zbTx = ZBTxRequest(deviceAdr , tmp , length ); xbee.send(zbTx); - DBGF("+++++ xbee send!!\r\n"); - - + DBGF("+++++ xbee send!!\r\n"); +#endif } void xbeeReadPacket(void) { +#ifndef _SERVER_TEST_MODE_ xbee.readPacket(); +#endif + } bool isXbeeAvaiable(void) { +#ifdef _SERVER_TEST_MODE_ +return false; +#else return xbee.getResponse().isAvailable(); +#endif } \ No newline at end of file
--- a/xbee/xbee_rec_route.cpp Sat Apr 14 03:53:45 2012 +0000 +++ b/xbee/xbee_rec_route.cpp Sun Apr 15 10:49:08 2012 +0000 @@ -8,13 +8,17 @@ #include "tcp_client.h" #include "leds.h" +extern Serial pc; + extern XBee xbee; extern ZBRxResponse zbRx; void xbeeRecieveRouting(void) { - +#ifdef _SERVER_TEST_MODE_ +return; +#else xbeeReadPacket(); @@ -56,7 +60,7 @@ // pc.printf("\r\n"); } - +#endif } void routing(Payload *_payload) @@ -68,14 +72,14 @@ { // _payload->frame.message.command=ACK; // xbeeSend(0x4086B0D5,_payload); - DBGF("******* send! *******\r\n"); + DBGF("*******[XBeeRec] send! *******\r\n"); } break; case RECIEVE: { udpSendPayload(_payload); - DBGF("****** recieve! *******\r\n"); + DBGF("******[XBeeRec] recieve! *******\r\n"); } break; @@ -83,20 +87,26 @@ { udpSendPayload(_payload); - DBGF("******* ping! **************\r\n"); + DBGF("*******[XBeeRec] ping! **************\r\n"); } break; case ACK: { udpSendPayload(_payload); - DBGF("******* ACK! **************\r\n"); + DBGF("*******[XBeeRec] ACK! **************\r\n"); } case SET_TX_GAIN: + { + udpSendPayload(_payload); + DBGF("*******[XBeeRec] SET_TX_GAIN! **************\r\n"); + } + break; case SET_LIGHT_CONTROL: { udpSendPayload(_payload); + DBGF("*******[XBeeRec] SET_LIGHT_CONTROL! **************\r\n"); } break; }