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.
Dependencies: ConfigFile EthernetInterface mbed-rtos mbed
Fork of S05APP3 by
Diff: main.cpp
- Revision:
- 9:f6f79f136101
- Parent:
- 8:9c34eb3cb3ef
- Child:
- 10:488877f7f56c
--- a/main.cpp Sun Feb 12 19:38:26 2017 +0000 +++ b/main.cpp Mon Feb 13 02:20:15 2017 +0000 @@ -1,18 +1,24 @@ -// COORDINATOR +// ===================== COORDINATOR ===================== +// ======================================================= #include "EthernetInterface.h" #include "ConfigFile.h" #include "mbed.h" +#include "rtos.h" DigitalOut reset(p8); +EthernetInterface eth; Serial xbee(p13, p14); // tx, rx Serial pc(USBTX, USBRX); // tx, rx +TCPSocketConnection sock; +Thread *t1; +Thread *t2; uint16_t portNumber = 0; uint16_t panId = 0; char serverAddress[32]; char panIdChar[5]; -char portNbr[4]; +char portNbr[5]; bool boolLED = false; uint64_t routerAddr; @@ -83,22 +89,25 @@ boolLED = !boolLED; } -void initSocket() { - //int repSize; - //while (true) { - - //sprintf (buffer, (const char *)xbee.getc()); - //sock.send_all(buffer, sizeof(buffer)-1); +void initSocket(uint16_t data) { + /*int responseSize; + char buffer[50]; + sprintf(buffer, "Data: %i\n", data); - //repSize = sock.receive(buffer, sizeof(buffer)-1); - // if (repSize <= 0) { - // printf("Error"); - // sock.close(); - // break; - // } - //buffer[repSize] = '\0'; - //printf("Received %d chars from server:\n%s\n", repSize, buffer); - //} + if (sock.connect(serverAddress, portNumber) != 0) { + pc.printf("Erreur dans la connextion au socket.\n"); + } else { + sock.send_all(buffer, sizeof(buffer)-1); + responseSize = sock.receive(buffer, sizeof(buffer)-1); + + if (responseSize <= 0) { + pc.printf("Error"); + //sock.close(); + } + + buffer[responseSize] = '\0'; + pc.printf("Received %d chars from server:\n%s\n", responseSize, buffer); + }*/ } void checkForError(uint8_t* buffer) { @@ -139,12 +148,11 @@ routerAddr = addr.u64_value; } -void readFrame(){ - +void readDateFromRouter(){ uint8_t bufferSize = 0; uint8_t sizeBytes[2] = { 0 }; uint8_t buffer[104] = { 0 }; - uint8_t data[3] = {0}; + uint16_t data[3] = {0}; if (xbee.readable() && xbee.getc() == 0x7E) { for (uint8_t i = 0; i < 2;) { @@ -164,36 +172,26 @@ printBuffer(bufferSize, buffer); readRouterAddress(buffer); - pc.printf("12: %X\n", buffer[12]); - pc.printf("13: %X\n", buffer[13]); - - pc.printf("14: %X\n", buffer[14]); - pc.printf("15: %X\n", buffer[15]); - - pc.printf("16: %X\n", buffer[16]); - pc.printf("17: %X\n", buffer[17]); - - if(buffer[0] == 0x90 && bufferSize == 18) { - uint8_t j = 0; + if (buffer[0] == 0x90 && bufferSize == 18) { for(uint8_t i = 12; i < bufferSize; i += 2) { - data[j++] = convert8bitsTo16bits(buffer[i], buffer[i + 1]); + data[(i/2)-6] = (buffer[i+1] << 8 ) | (buffer[i] & 0xff); } - pc.printf("Data 1: %d\n", data[0]); - pc.printf("Data 2: %d\n", data[1]); - pc.printf("Data 3: %d\n", data[2]); - } - else if(buffer[0] == 0x90 && bufferSize == 13) { - data[0] = buffer[12]; + // pc.printf("Acceleration X: %d\n", data[0]); + // pc.printf("Acceleration Y: %d\n", data[1]); + // pc.printf("Acceleration Z: %d\n", data[2]); + + initSocket(data[0]); + + } else if (buffer[0] == 0x90 && bufferSize == 13) { + //data[0] = buffer[12]; } } } int main() { pc.printf("Starting a coordinator... \n"); - - EthernetInterface eth; - TCPSocketConnection sock; - + pc.printf("IP: %s\n", eth.getIPAddress()); + reset = 0; wait_ms(1); reset = 1; @@ -212,21 +210,9 @@ if (eth.connect() != 0) { pc.printf("Erreur de connection du RJ45\n"); } - if (sock.connect(serverAddress, portNumber) != 0) { - pc.printf("Erreur de socket.\n"); - } - //sock.send_all(buffer, sizeof(buffer)-1); - //initSocket(); - - //Set ticker to blink LED at each 1 sec - //Ticker blinkLED; - // blinkLED.attach(&toogleLED, 1); - while(1) { - readFrame(); - //wait_ms(1000); - //toogleLED(); + readDateFromRouter(); } }