Code APP3

Dependencies:   mbed EthernetInterface WebSocketClient mbed-rtos BufferedSerial

Fork of APP3_Lab by Jean-Philippe Fournier

Files at this revision

API Documentation at this revision

Comitter:
Cheroukee
Date:
Wed Sep 27 19:58:38 2017 +0000
Parent:
0:f468a460723d
Child:
2:a9bb12eefc08
Commit message:
Fixed Router code to send transmit request

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
xbee.cpp Show annotated file Show diff for this revision Revisions of this file
xbee.h Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Tue Sep 26 15:55:56 2017 +0000
+++ b/main.cpp	Wed Sep 27 19:58:38 2017 +0000
@@ -1,19 +1,32 @@
 #include "mbed.h"
-
+    
+#include "xbee.h"
+    
+#define PAN_ID 0xC0FFEE
+    
+    
 Serial pc(USBTX, USBRX); // tx, rx
-Serial xbee(p13, p14); // tx, rx
-DigitalOut led(p8);
 
 int main() {
     
-    led = 0;
+    xbee_init();
+    
+    char c;
     
-    wait_ms(400);
+    char hello_world[12] = "Hello world";
     
-    led = 1;
+    transmit_request(hello_world, 11);
     
     while(1) {
-           pc.putc(xbee.getc() + 1);
-           xbee.putc(pc.getc() + 1);
+        if (pc.readable())
+        {     
+            c = pc.getc();
+            xbee.putc(c);      
+            //pc.putc(c);         
+        }
+        if (xbee.readable())
+        {
+            pc.putc(xbee.getc());            
+        }       
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xbee.cpp	Wed Sep 27 19:58:38 2017 +0000
@@ -0,0 +1,101 @@
+
+/***
+*   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;   
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xbee.h	Wed Sep 27 19:58:38 2017 +0000
@@ -0,0 +1,37 @@
+/***
+*   xbee.h - en-tete de lib xbee - fouj1807 - mcgj2701
+*/
+
+#pragma once
+
+#include "mbed.h"
+
+extern Serial xbee;
+
+typedef enum {
+    TransmitRequest = 0x10,
+    ATCommand = 0x08    
+} frame_type_t;
+
+typedef struct {
+    unsigned short length;
+    frame_type_t frame_type;
+    char frame_id;
+    
+} frame_t;
+
+extern char TransmitBuffer[2048];
+extern char ReceiveBuffer[2048];
+
+void xbee_init();
+
+bool set_pan_id(long pan_id);
+long get_pan_id();
+
+bool transmit_request(char* buffer, int length);
+int receive_buffer(char* buffer, int max_length);
+
+//bool set(char command, char* buffer, int length);
+
+
+