* Routeur

Dependencies:   ConfigFile mbed

Committer:
benjaminroy
Date:
Sat Feb 11 23:45:12 2017 +0000
Revision:
0:b399a75f4990
Child:
1:2abb01319ca6
Communication R-C ne foncitonne pas

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