
* Routeur
Revision 2:aebf0ae12644, committed 2017-02-12
- 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(); }