Code APP3

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

Committer:
Cheroukee
Date:
Wed Sep 27 19:58:38 2017 +0000
Revision:
1:ea1b52d0a8a3
Child:
2:a9bb12eefc08
Fixed Router code to send transmit request

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Cheroukee 1:ea1b52d0a8a3 1
Cheroukee 1:ea1b52d0a8a3 2 /***
Cheroukee 1:ea1b52d0a8a3 3 * xbee.cpp - en-tete de lib xbee - fouj1807 - mcgj2701
Cheroukee 1:ea1b52d0a8a3 4 */
Cheroukee 1:ea1b52d0a8a3 5
Cheroukee 1:ea1b52d0a8a3 6 #include "xbee.h"
Cheroukee 1:ea1b52d0a8a3 7
Cheroukee 1:ea1b52d0a8a3 8
Cheroukee 1:ea1b52d0a8a3 9 #define ZIGBEE_DELIMITER 0x7E
Cheroukee 1:ea1b52d0a8a3 10
Cheroukee 1:ea1b52d0a8a3 11 DigitalOut xbee_led(LED1);
Cheroukee 1:ea1b52d0a8a3 12 DigitalOut xbee_reset(p8);
Cheroukee 1:ea1b52d0a8a3 13
Cheroukee 1:ea1b52d0a8a3 14 Serial xbee(p13, p14); // tx, rx
Cheroukee 1:ea1b52d0a8a3 15
Cheroukee 1:ea1b52d0a8a3 16 char TransmitBuffer[2048] = {0};
Cheroukee 1:ea1b52d0a8a3 17 char ReceiveBuffer[2048] = {0};
Cheroukee 1:ea1b52d0a8a3 18
Cheroukee 1:ea1b52d0a8a3 19 void xbee_init()
Cheroukee 1:ea1b52d0a8a3 20 {
Cheroukee 1:ea1b52d0a8a3 21 xbee_reset = 0;
Cheroukee 1:ea1b52d0a8a3 22
Cheroukee 1:ea1b52d0a8a3 23 wait_ms(400);
Cheroukee 1:ea1b52d0a8a3 24
Cheroukee 1:ea1b52d0a8a3 25 xbee_reset = 1;
Cheroukee 1:ea1b52d0a8a3 26
Cheroukee 1:ea1b52d0a8a3 27 wait_ms(5000);
Cheroukee 1:ea1b52d0a8a3 28
Cheroukee 1:ea1b52d0a8a3 29 xbee_led = 1;
Cheroukee 1:ea1b52d0a8a3 30 }
Cheroukee 1:ea1b52d0a8a3 31
Cheroukee 1:ea1b52d0a8a3 32
Cheroukee 1:ea1b52d0a8a3 33 bool set_pan_id(long pan_id)
Cheroukee 1:ea1b52d0a8a3 34 {
Cheroukee 1:ea1b52d0a8a3 35 return false;
Cheroukee 1:ea1b52d0a8a3 36 }
Cheroukee 1:ea1b52d0a8a3 37
Cheroukee 1:ea1b52d0a8a3 38 long get_pan_id()
Cheroukee 1:ea1b52d0a8a3 39 {
Cheroukee 1:ea1b52d0a8a3 40 return 0L;
Cheroukee 1:ea1b52d0a8a3 41 }
Cheroukee 1:ea1b52d0a8a3 42
Cheroukee 1:ea1b52d0a8a3 43 bool transmit_request(char* buffer, int length)
Cheroukee 1:ea1b52d0a8a3 44 {
Cheroukee 1:ea1b52d0a8a3 45 // Delimiter
Cheroukee 1:ea1b52d0a8a3 46 TransmitBuffer[0] = ZIGBEE_DELIMITER;
Cheroukee 1:ea1b52d0a8a3 47
Cheroukee 1:ea1b52d0a8a3 48 char checksum = 0xFF;
Cheroukee 1:ea1b52d0a8a3 49
Cheroukee 1:ea1b52d0a8a3 50 // Frame Length
Cheroukee 1:ea1b52d0a8a3 51 int frame_length = length + 14;
Cheroukee 1:ea1b52d0a8a3 52 TransmitBuffer[1] = frame_length >> 8;
Cheroukee 1:ea1b52d0a8a3 53 TransmitBuffer[2] = frame_length & 0xFF;
Cheroukee 1:ea1b52d0a8a3 54
Cheroukee 1:ea1b52d0a8a3 55 // Frame Type
Cheroukee 1:ea1b52d0a8a3 56 TransmitBuffer[3] = 0x10;
Cheroukee 1:ea1b52d0a8a3 57
Cheroukee 1:ea1b52d0a8a3 58 // Frame ID
Cheroukee 1:ea1b52d0a8a3 59 TransmitBuffer[4] = 0x01;
Cheroukee 1:ea1b52d0a8a3 60
Cheroukee 1:ea1b52d0a8a3 61 // Should set address if different from coordinator
Cheroukee 1:ea1b52d0a8a3 62 //TransmitBuffer[5] =
Cheroukee 1:ea1b52d0a8a3 63
Cheroukee 1:ea1b52d0a8a3 64 // 16-bit address, broadcast address
Cheroukee 1:ea1b52d0a8a3 65 TransmitBuffer[13] = 0xFF;
Cheroukee 1:ea1b52d0a8a3 66 TransmitBuffer[14] = 0xFE;
Cheroukee 1:ea1b52d0a8a3 67
Cheroukee 1:ea1b52d0a8a3 68 // Max hops, 0 = max
Cheroukee 1:ea1b52d0a8a3 69 TransmitBuffer[15] = 0x00;
Cheroukee 1:ea1b52d0a8a3 70
Cheroukee 1:ea1b52d0a8a3 71 // Transmit options
Cheroukee 1:ea1b52d0a8a3 72 TransmitBuffer[16] = 0x00;
Cheroukee 1:ea1b52d0a8a3 73
Cheroukee 1:ea1b52d0a8a3 74 // Insert buffer data
Cheroukee 1:ea1b52d0a8a3 75 for (int i = 0; i < length; i++)
Cheroukee 1:ea1b52d0a8a3 76 {
Cheroukee 1:ea1b52d0a8a3 77 TransmitBuffer[17 + i] = buffer[i];
Cheroukee 1:ea1b52d0a8a3 78 }
Cheroukee 1:ea1b52d0a8a3 79
Cheroukee 1:ea1b52d0a8a3 80 // Calculate checksum
Cheroukee 1:ea1b52d0a8a3 81 for (int i = 3; i < 17 + length; i++)
Cheroukee 1:ea1b52d0a8a3 82 {
Cheroukee 1:ea1b52d0a8a3 83 checksum -= TransmitBuffer[i];
Cheroukee 1:ea1b52d0a8a3 84 }
Cheroukee 1:ea1b52d0a8a3 85
Cheroukee 1:ea1b52d0a8a3 86 // Insert checksum into buffer
Cheroukee 1:ea1b52d0a8a3 87 TransmitBuffer[17 + length] = checksum;
Cheroukee 1:ea1b52d0a8a3 88
Cheroukee 1:ea1b52d0a8a3 89 for (int i = 0; i < 17 + length + 1; i++)
Cheroukee 1:ea1b52d0a8a3 90 {
Cheroukee 1:ea1b52d0a8a3 91 xbee.putc(TransmitBuffer[i]);
Cheroukee 1:ea1b52d0a8a3 92 }
Cheroukee 1:ea1b52d0a8a3 93
Cheroukee 1:ea1b52d0a8a3 94 xbee_led = !xbee_led;
Cheroukee 1:ea1b52d0a8a3 95 return false;
Cheroukee 1:ea1b52d0a8a3 96 }
Cheroukee 1:ea1b52d0a8a3 97
Cheroukee 1:ea1b52d0a8a3 98 int receive_buffer(char* buffer, int max_length)
Cheroukee 1:ea1b52d0a8a3 99 {
Cheroukee 1:ea1b52d0a8a3 100 return 0;
Cheroukee 1:ea1b52d0a8a3 101 }