UDPversion

Dependencies:   XBee mbed NetServicesMin

tcpip/net_routing.cpp

Committer:
recotana
Date:
2012-04-15
Revision:
1:3a46d2725374
Parent:
0:84a3b029656e

File content as of revision 1:3a46d2725374:

#include "net_routing.h"
#include "types.h"
#include "config.h"
#include "xbee_lib.h"
#include "tcp_client.h"


extern PrefServer pref;
extern PrefSender spref;
extern PrefReciever rpref;

extern Serial pc;

void netRouting(Payload *_payload)
{
       
//    dumpPayload(_payload);

    
    switch(_payload->frame.message.device)
    {
        case LED_SENDER:
        {
            #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:
        {
            #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){
                #ifdef _SERVER_TEST_MODE_
                    dumpPrefServer(&pref); 
                #endif
                memcpy(_payload->frame.message.data,&pref,sizeof(PrefServer));
                _payload->frame.message.device=SERVER;
                udpSendPayload(_payload);
                DBGF("*******  server ping!  **************\r\n");
            }
            break;
        }
    
    }

    
}