UDPversion

Dependencies:   XBee mbed NetServicesMin

Files at this revision

API Documentation at this revision

Comitter:
recotana
Date:
Sun Apr 15 10:49:08 2012 +0000
Parent:
0:84a3b029656e
Commit message:

Changed in this revision

common/data_models.cpp Show annotated file Show diff for this revision Revisions of this file
common/data_models.h Show annotated file Show diff for this revision Revisions of this file
common/disp_led/leds.cpp Show annotated file Show diff for this revision Revisions of this file
config.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
tcpip/net_routing.cpp Show annotated file Show diff for this revision Revisions of this file
tcpip/tcp_client.cpp Show annotated file Show diff for this revision Revisions of this file
tcpip/tcp_server.cpp Show annotated file Show diff for this revision Revisions of this file
xbee/xbee_lib.cpp Show annotated file Show diff for this revision Revisions of this file
xbee/xbee_rec_route.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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;
     }