server/client

Dependencies:   mbed NetServicesMin

xbee_rec_route.cpp

Committer:
recotana
Date:
2012-02-23
Revision:
1:6e61ee662fd3

File content as of revision 1:6e61ee662fd3:

#include "xbee_rec_route.h"
#include "config.h"
#include "XBee.h"

#include "types.h"

#include "xbee_lib.h"
#include "tcp_client.h"
#include "leds.h"

extern XBee xbee;
extern ZBRxResponse zbRx;


void xbeeRecieveRouting(void)
{

     xbeeReadPacket();
    
   
        if (isXbeeAvaiable()) {
            
            
    
            DBGF("xbee aviable!\r\n");
        
            if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) {
                
                ledXBee();
                
                xbee.getResponse().getZBRxResponse(zbRx);
                
                Payload payload;

                uint16_t length = (unsigned char)zbRx.getData()[0];
                length =(length<<8) + (unsigned char)zbRx.getData()[1];
                
                DBGV("length=%04X\r\n",length);
                
                memcpy(&payload, (unsigned char *)zbRx.getData(), length);

                networkToPayload(&payload);
               
                routing(&payload);
                /*
                printf("xbee recieve!! size:%d\r\n",length);
                
                printf("---------dump end\r\n");
                */
                
                
           
            }
        //    printf("\r\n");
        }
    
    
}

void routing(Payload *_payload)
{
//     dumpPayload(_payload);
    switch(_payload->message.command)
    {
        case SEND:
        {
            _payload->message.command=ACK;
        //    xbeeSend(0x4086B0D5,_payload);
            DBGF("*******  send!  *******\r\n");
        }
        break;
        
         case RECIEVE:
        {
            DBGF("******  recieve!  *******\r\n");
        }
        break;
        
         case PING:
        {   
            _payload->message.command=ACK;
       //     xbeeSend(0x4086B0D5,_payload);
            tcpSendPayload(_payload);
            DBGF("*******  ping!  **************\r\n");
        }
        break;
        
         case ACK:
        {   
            tcpSendPayload(_payload);
            DBGF("*******  ACK!  **************\r\n");
        }
        break;
    }

}