Code APP3

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

xbee.cpp

Committer:
Cheroukee
Date:
2017-09-27
Revision:
1:ea1b52d0a8a3
Child:
2:a9bb12eefc08

File content as of revision 1:ea1b52d0a8a3:


/***
*   xbee.cpp - en-tete de lib xbee - fouj1807 - mcgj2701
*/

#include "xbee.h"


#define ZIGBEE_DELIMITER 0x7E

DigitalOut xbee_led(LED1);
DigitalOut xbee_reset(p8);

Serial xbee(p13, p14); // tx, rx

char TransmitBuffer[2048] = {0};
char ReceiveBuffer[2048] = {0};

void xbee_init()
{
    xbee_reset = 0;
    
    wait_ms(400);
    
    xbee_reset = 1;
    
    wait_ms(5000);    
    
    xbee_led = 1;    
}


bool set_pan_id(long pan_id)
{
    return false;
}

long get_pan_id()
{
    return 0L;
}

bool transmit_request(char* buffer, int length)
{
    // Delimiter
    TransmitBuffer[0] = ZIGBEE_DELIMITER;
    
    char checksum = 0xFF;
    
    // Frame Length
    int frame_length = length + 14;    
    TransmitBuffer[1] = frame_length >> 8;
    TransmitBuffer[2] = frame_length & 0xFF;
    
    // Frame Type
    TransmitBuffer[3] = 0x10;
    
    // Frame ID
    TransmitBuffer[4] = 0x01;
    
    // Should set address if different from coordinator
    //TransmitBuffer[5] = 
    
    // 16-bit address, broadcast address
    TransmitBuffer[13] = 0xFF;
    TransmitBuffer[14] = 0xFE;
    
    // Max hops, 0 = max
    TransmitBuffer[15] = 0x00;
    
    // Transmit options
    TransmitBuffer[16] = 0x00;
    
    // Insert buffer data
    for (int i = 0; i < length; i++)
    {
        TransmitBuffer[17 + i] = buffer[i];
    }   
    
    // Calculate checksum
    for (int i = 3; i < 17 + length; i++)
    {
        checksum -= TransmitBuffer[i];
    }
    
    // Insert checksum into buffer
    TransmitBuffer[17 + length] = checksum;
    
    for (int i = 0; i < 17 + length + 1; i++)
    {
        xbee.putc(TransmitBuffer[i]);
    }
    
    xbee_led = !xbee_led;
    return false;
}

int receive_buffer(char* buffer, int max_length)
{
    return 0;   
}