Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 2:aebf0ae12644
- Parent:
- 1:2abb01319ca6
- Child:
- 3:0a2a583626de
diff -r 2abb01319ca6 -r aebf0ae12644 main.cpp
--- 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();
}