* Routeur

Dependencies:   ConfigFile mbed

Committer:
benjaminroy
Date:
Sun Feb 12 00:01:06 2017 +0000
Revision:
1:2abb01319ca6
Parent:
0:b399a75f4990
Child:
2:aebf0ae12644
...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benjaminroy 0:b399a75f4990 1 #include "ConfigFile.h"
benjaminroy 0:b399a75f4990 2 #include "mbed.h"
benjaminroy 0:b399a75f4990 3
benjaminroy 0:b399a75f4990 4 DigitalOut reset(p8);
benjaminroy 1:2abb01319ca6 5 Serial xbee(p13, p14); // tx, rx
benjaminroy 0:b399a75f4990 6 Serial pc(USBTX, USBRX); // tx, rx
benjaminroy 0:b399a75f4990 7
benjaminroy 0:b399a75f4990 8 uint8_t calculateChecksum(uint8_t frameSize, uint8_t* buffer) {
benjaminroy 0:b399a75f4990 9 uint32_t checkSum = 0;
benjaminroy 0:b399a75f4990 10 uint8_t frameTypeIndex = 3;
benjaminroy 0:b399a75f4990 11
benjaminroy 0:b399a75f4990 12 for (int i = frameTypeIndex; i < frameSize - 1; i++) {
benjaminroy 0:b399a75f4990 13 checkSum += buffer[i];
benjaminroy 0:b399a75f4990 14 }
benjaminroy 0:b399a75f4990 15
benjaminroy 0:b399a75f4990 16 return (uint8_t)(0xFF - (checkSum & 0xFF));
benjaminroy 0:b399a75f4990 17 }
benjaminroy 0:b399a75f4990 18
benjaminroy 0:b399a75f4990 19 uint16_t getFrameSize(uint8_t value1, uint8_t value2) {
benjaminroy 0:b399a75f4990 20 union {
benjaminroy 0:b399a75f4990 21 uint16_t u16_value;
benjaminroy 0:b399a75f4990 22 uint8_t u8_value[2];
benjaminroy 0:b399a75f4990 23 } length;
benjaminroy 0:b399a75f4990 24
benjaminroy 0:b399a75f4990 25 length.u8_value[1] = value1;
benjaminroy 0:b399a75f4990 26 length.u8_value[0] = value2;
benjaminroy 0:b399a75f4990 27
benjaminroy 0:b399a75f4990 28 return length.u16_value;
benjaminroy 0:b399a75f4990 29 }
benjaminroy 0:b399a75f4990 30
benjaminroy 0:b399a75f4990 31 /*void readFrame(){
benjaminroy 0:b399a75f4990 32 uint8_t temp[2] = { 0 };
benjaminroy 0:b399a75f4990 33 uint8_t buffer[104] = { 0 };
benjaminroy 0:b399a75f4990 34
benjaminroy 0:b399a75f4990 35 if (uart.readable() && uart.getc() == 0x7E) {
benjaminroy 0:b399a75f4990 36
benjaminroy 0:b399a75f4990 37 for (int i = 0; i < 2;) {
benjaminroy 0:b399a75f4990 38 if(uart.readable()) {
benjaminroy 0:b399a75f4990 39 temp[i] = uart.getc();
benjaminroy 0:b399a75f4990 40 i++;
benjaminroy 0:b399a75f4990 41 }
benjaminroy 0:b399a75f4990 42 }
benjaminroy 0:b399a75f4990 43 uint16_t frameSize = getFrameSize(temp[0], temp[1]);
benjaminroy 0:b399a75f4990 44
benjaminroy 0:b399a75f4990 45 for(int j = 0; j < frameSize + 1;) {
benjaminroy 0:b399a75f4990 46 if (uart.readable()) {
benjaminroy 0:b399a75f4990 47 buffer[j] = uart.getc();
benjaminroy 0:b399a75f4990 48 j++;
benjaminroy 0:b399a75f4990 49 }
benjaminroy 0:b399a75f4990 50 }
benjaminroy 0:b399a75f4990 51
benjaminroy 0:b399a75f4990 52 pc.printf("Frame: %s\n", buffer);
benjaminroy 0:b399a75f4990 53 }
benjaminroy 0:b399a75f4990 54 }*/
benjaminroy 0:b399a75f4990 55
benjaminroy 0:b399a75f4990 56 void sendFrame(uint8_t bufferSize, uint8_t* buffer) {
benjaminroy 1:2abb01319ca6 57 if (xbee.writeable()) {
benjaminroy 1:2abb01319ca6 58 xbee.printf("%s", buffer);
benjaminroy 0:b399a75f4990 59 }
benjaminroy 0:b399a75f4990 60 /*for (int i = 0; i < bufferSize;) {
benjaminroy 1:2abb01319ca6 61 if (xbee.writeable()) {
benjaminroy 1:2abb01319ca6 62 xbee.putc(buffer[i]);
benjaminroy 0:b399a75f4990 63 i++;
benjaminroy 0:b399a75f4990 64 }
benjaminroy 0:b399a75f4990 65 }*/
benjaminroy 0:b399a75f4990 66 }
benjaminroy 0:b399a75f4990 67
benjaminroy 0:b399a75f4990 68 void setFrame() {
benjaminroy 0:b399a75f4990 69 const uint8_t bufferSize = 22;
benjaminroy 0:b399a75f4990 70 uint8_t buffer[bufferSize] = { 0 };
benjaminroy 0:b399a75f4990 71
benjaminroy 0:b399a75f4990 72 buffer[0] = 0x7E; // Start Delimiter
benjaminroy 0:b399a75f4990 73 buffer[1] = 0x00; // Length
benjaminroy 0:b399a75f4990 74 buffer[2] = 0x12; // Length
benjaminroy 0:b399a75f4990 75 buffer[3] = 0x10; // Frame Type
benjaminroy 0:b399a75f4990 76 buffer[4] = 0x01; // Frame ID
benjaminroy 0:b399a75f4990 77 buffer[5] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 78 buffer[6] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 79 buffer[7] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 80 buffer[8] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 81 buffer[9] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 82 buffer[10] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 83 buffer[11] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 84 buffer[12] = 0x00; // 64 bit adress
benjaminroy 0:b399a75f4990 85 buffer[13] = 0xFF; // 16 bit adress
benjaminroy 0:b399a75f4990 86 buffer[14] = 0xFE; // 16 bit adress
benjaminroy 0:b399a75f4990 87 buffer[15] = 0x00; // Broadcast radius
benjaminroy 0:b399a75f4990 88 buffer[16] = 0x00; // Options
benjaminroy 0:b399a75f4990 89 buffer[17] = 0x02; // RF Data...
benjaminroy 0:b399a75f4990 90 buffer[18] = 0x02; // RF Data...
benjaminroy 0:b399a75f4990 91 buffer[19] = 0x02; // RF Data...
benjaminroy 0:b399a75f4990 92 buffer[20] = 0x02; // RF Data...
benjaminroy 0:b399a75f4990 93 buffer[21] = calculateChecksum(bufferSize, buffer); // Checksum
benjaminroy 0:b399a75f4990 94
benjaminroy 0:b399a75f4990 95 pc.printf("Frame: %s\n", buffer);
benjaminroy 0:b399a75f4990 96 sendFrame(bufferSize, buffer);
benjaminroy 0:b399a75f4990 97 }
benjaminroy 0:b399a75f4990 98
benjaminroy 0:b399a75f4990 99 /* void readConfigFile() {
benjaminroy 0:b399a75f4990 100 LocalFileSystem local("local");
benjaminroy 0:b399a75f4990 101 ConfigFile cfg;
benjaminroy 0:b399a75f4990 102 char *serverAddr = "serverAddr";
benjaminroy 0:b399a75f4990 103 char *tempPortNo = "portNb";
benjaminroy 0:b399a75f4990 104
benjaminroy 0:b399a75f4990 105 if (!cfg.read("/local/input.cfg")) {
benjaminroy 0:b399a75f4990 106 error("Erreur dans la lecture du fichier\n");
benjaminroy 0:b399a75f4990 107 } else {
benjaminroy 0:b399a75f4990 108 cfg.getValue(serverAddr, &serverAddrvalue[0], sizeof(serverAddrvalue));
benjaminroy 0:b399a75f4990 109 cfg.getValue(tempPortNo, &portNbValue[0], sizeof(portNbValue));
benjaminroy 0:b399a75f4990 110 portNo = (uint16_t)strtol(portNbValue, NULL, 10);
benjaminroy 0:b399a75f4990 111 }
benjaminroy 0:b399a75f4990 112 }*/
benjaminroy 0:b399a75f4990 113
benjaminroy 0:b399a75f4990 114 int main() {
benjaminroy 0:b399a75f4990 115 reset = 0;
benjaminroy 0:b399a75f4990 116 wait(0.4);
benjaminroy 0:b399a75f4990 117 reset = 1;
benjaminroy 0:b399a75f4990 118 wait_ms(1);
benjaminroy 0:b399a75f4990 119
benjaminroy 0:b399a75f4990 120 setFrame();
benjaminroy 0:b399a75f4990 121 }