* Routeur

Dependencies:   ConfigFile mbed

Files at this revision

API Documentation at this revision

Comitter:
benjaminroy
Date:
Sun Feb 12 02:26:40 2017 +0000
Parent:
1:2abb01319ca6
Child:
3:0a2a583626de
Commit message:
:-( Pas capable de communiquer

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Sun Feb 12 00:01:06 2017 +0000
+++ b/main.cpp	Sun Feb 12 02:26:40 2017 +0000
@@ -1,3 +1,4 @@
+// ROUTER
 #include "ConfigFile.h"
 #include "mbed.h"
 
@@ -5,64 +6,52 @@
 Serial xbee(p13, p14);  // tx, rx
 Serial pc(USBTX, USBRX); // tx, rx
 
+uint16_t panId = 0;
+char panIdChar[5];
+
+void printBuffer(uint8_t bufferSize, uint8_t* buffer) {
+    for(int k = 0; k < bufferSize; k++) {
+        pc.printf("%X-", buffer[k]);
+    }
+    printf("\n");
+}
+
+/*
+* Read a configuration file from a mbed.
+*/
+void readConfigFile() {
+    LocalFileSystem local("local");
+    ConfigFile cfg;
+    char *panIdStr = "panID";
+    
+    if (!cfg.read("/local/input.cfg")) { 
+        error("Erreur dans la lecture du fichier de configuration.\n");
+    } else {
+        cfg.getValue(panIdStr, &panIdChar[0], sizeof(panIdChar));
+        panId = (uint16_t)strtol(panIdChar, NULL, 10);
+        printf("The PAN ID is %i\n", panId);
+    }
+}
+
 uint8_t calculateChecksum(uint8_t frameSize, uint8_t* buffer) {
-    uint32_t checkSum = 0;
+    uint32_t checksum = 0;
     uint8_t frameTypeIndex = 3;
     
     for (int i = frameTypeIndex; i < frameSize - 1; i++) {
-        checkSum += buffer[i];
+        checksum += buffer[i];
     }
 
-    return (uint8_t)(0xFF - (checkSum & 0xFF));      
-}
-
-uint16_t getFrameSize(uint8_t value1, uint8_t value2) {
-    union {
-        uint16_t u16_value;
-        uint8_t  u8_value[2];
-    } length;
-
-    length.u8_value[1] = value1;
-    length.u8_value[0] = value2;
-
-    return length.u16_value;
+    return (uint8_t)(0xFF - (checksum & 0xFF));      
 }
 
-/*void readFrame(){
-    uint8_t temp[2] = { 0 };
-    uint8_t buffer[104] = { 0 };
-    
-    if (uart.readable() && uart.getc() == 0x7E) {
-         
-        for (int i = 0; i < 2;) {
-            if(uart.readable()) {
-                temp[i] = uart.getc();
-                i++;
-            }
-        }
-        uint16_t frameSize = getFrameSize(temp[0], temp[1]);
-         
-        for(int j = 0; j < frameSize + 1;) {
-            if (uart.readable()) {
-                buffer[j] = uart.getc();
-                j++;
-            }
-        }
-        
-        pc.printf("Frame: %s\n", buffer);
-    }
-}*/
-
 void sendFrame(uint8_t bufferSize, uint8_t* buffer) {
-    if (xbee.writeable()) {
-        xbee.printf("%s", buffer);
-    }  
-    /*for (int i = 0; i < bufferSize;) {
+    for (int i = 0; i < bufferSize;) {
         if (xbee.writeable()) {
             xbee.putc(buffer[i]);
+            wait(0.50);
             i++;
         }   
-    }*/
+    }
 }
 
 void setFrame() {
@@ -92,30 +81,24 @@
     buffer[20] = 0x02; // RF Data...
     buffer[21] = calculateChecksum(bufferSize, buffer); // Checksum
     
-    pc.printf("Frame: %s\n", buffer);
+    printBuffer(bufferSize, buffer);
     sendFrame(bufferSize, buffer);
 }
 
-/* void readConfigFile() {
-    LocalFileSystem local("local");
-    ConfigFile cfg;
-    char *serverAddr = "serverAddr";
-    char *tempPortNo = "portNb";
-    
-    if (!cfg.read("/local/input.cfg")) {
-        error("Erreur dans la lecture du fichier\n");
-    } else {
-        cfg.getValue(serverAddr, &serverAddrvalue[0], sizeof(serverAddrvalue));
-        cfg.getValue(tempPortNo, &portNbValue[0], sizeof(portNbValue));
-        portNo = (uint16_t)strtol(portNbValue, NULL, 10);
-    }
-}*/
+int main() {
+    printf("Starting a router...\n");    
 
-int main() {
     reset = 0;
-    wait(0.4);
+    wait_ms(1);
     reset = 1;
     wait_ms(1);
     
+    readConfigFile();
+    
+    xbee.baud(9600); // Set baud rate
+    xbee.printf("ATID %i\r", panId); // Set the 64-bit PAN ID
+    xbee.printf("ATWR \r");
+    xbee.printf("ATCN \r");
+    
     setFrame();
 }