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: mbed
Revision 1:9de46f7e559e, committed 2015-11-10
- Comitter:
- mfrede
- Date:
- Tue Nov 10 20:42:23 2015 +0000
- Parent:
- 0:6830fa3899e3
- Child:
- 2:5d88c51f53dc
- Commit message:
- name change
Changed in this revision
gateway.cpp | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gateway.cpp Tue Nov 10 20:42:23 2015 +0000 @@ -0,0 +1,109 @@ +#include "mbed.h" +#include "MRF24J40.h" +#include <string> + + +// RF tranceiver to link with handheld. +MRF24J40 mrf(p11, p12, p13, p14, p21); + +DigitalOut myled(LED1); + +// Serial port for showing RX data. +Serial pc(USBTX, USBRX); + +// Used for sending and receiving +char txBuffer[128]; +char rxBuffer[128]; +int rxLen; + +//***************** Do not change these methods (please) *****************// + +/** +* Receive data from the MRF24J40. +* +* @param data A pointer to a char array to hold the data +* @param maxLength The max amount of data to read. +*/ +int rf_receive(char *data, uint8_t maxLength) +{ + uint8_t len = mrf.Receive((uint8_t *)data, maxLength); + uint8_t header[8]= {1, 8, 0, 0xA1, 0xB2, 0xC3, 0xD4, 0x00}; + + if(len > 10) { + //Remove the header and footer of the message + for(uint8_t i = 0; i < len-2; i++) { + if(i<8) { + //Make sure our header is valid first + if(data[i] != header[i]) + return 0; + } else { + data[i-8] = data[i]; + } + } + + //pc.printf("Received: %s length:%d\r\n", data, ((int)len)-10); + } + return ((int)len)-10; +} + +/** +* Send data to another MRF24J40. +* +* @param data The string to send +* @param maxLength The length of the data to send. +* If you are sending a null-terminated string you can pass strlen(data)+1 +*/ +void rf_send(char *data, uint8_t len) +{ + //We need to prepend the message with a valid ZigBee header + uint8_t header[8]= {1, 8, 0, 0xA1, 0xB2, 0xC3, 0xD4, 0x00}; + uint8_t *send_buf = (uint8_t *) malloc( sizeof(uint8_t) * (len+8) ); + + for(uint8_t i = 0; i < len+8; i++) { + //prepend the 8-byte header + send_buf[i] = (i<8) ? header[i] : data[i-8]; + } + //pc.printf("Sent: %s\r\n", send_buf+8); + + mrf.Send(send_buf, len+8); + free(send_buf); +} + +int main() { + int nodes = 6; + char buffer[128]; + while(1) { + pc.printf("Select operation: \r\n"); + pc.printf("1) get node list\r\n"); + pc.printf("2) Update data rates\r\n"); + pc.gets(buffer,1); + switch (buffer[0]) { + case '1': + + for(int i=0;i<nodes;i++) + { + pc.printf("Node %d Neighbors:\r\n"); + for (int j=0;j<neighbors[i][0];j++) + { + pc.printf("Node %d: %d cycles\r\n",neighbors[i][j],cycles[i][j]); + } + } + break; + case '2': + pc.printf("How many seconds between updates? "); + pc.gets(buffer,2); + int secs = atoi(buffer); + //build data packet + + //broadcast type + + //send data packet + + break; + default: + pc.printf("unknown command\r\n"); + break; + } + + } +}
--- a/main.cpp Sun Nov 08 22:07:10 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -#include "mbed.h" -#include "MRF24J40.h" -#include <string> - - -// RF tranceiver to link with handheld. -MRF24J40 mrf(p11, p12, p13, p14, p21); - -DigitalOut myled(LED1); - -// Serial port for showing RX data. -Serial pc(USBTX, USBRX); - -// Used for sending and receiving -char txBuffer[128]; -char rxBuffer[128]; -int rxLen; - -//***************** Do not change these methods (please) *****************// - -/** -* Receive data from the MRF24J40. -* -* @param data A pointer to a char array to hold the data -* @param maxLength The max amount of data to read. -*/ -int rf_receive(char *data, uint8_t maxLength) -{ - uint8_t len = mrf.Receive((uint8_t *)data, maxLength); - uint8_t header[8]= {1, 8, 0, 0xA1, 0xB2, 0xC3, 0xD4, 0x00}; - - if(len > 10) { - //Remove the header and footer of the message - for(uint8_t i = 0; i < len-2; i++) { - if(i<8) { - //Make sure our header is valid first - if(data[i] != header[i]) - return 0; - } else { - data[i-8] = data[i]; - } - } - - //pc.printf("Received: %s length:%d\r\n", data, ((int)len)-10); - } - return ((int)len)-10; -} - -/** -* Send data to another MRF24J40. -* -* @param data The string to send -* @param maxLength The length of the data to send. -* If you are sending a null-terminated string you can pass strlen(data)+1 -*/ -void rf_send(char *data, uint8_t len) -{ - //We need to prepend the message with a valid ZigBee header - uint8_t header[8]= {1, 8, 0, 0xA1, 0xB2, 0xC3, 0xD4, 0x00}; - uint8_t *send_buf = (uint8_t *) malloc( sizeof(uint8_t) * (len+8) ); - - for(uint8_t i = 0; i < len+8; i++) { - //prepend the 8-byte header - send_buf[i] = (i<8) ? header[i] : data[i-8]; - } - //pc.printf("Sent: %s\r\n", send_buf+8); - - mrf.Send(send_buf, len+8); - free(send_buf); -} - -int main() { - int nodes = 6; - char buffer[128]; - while(1) { - pc.printf("Select operation: \r\n"); - pc.printf("1) get node list\r\n"); - pc.printf("2) Update data rates\r\n"); - pc.gets(buffer,1); - switch (buffer[0]) { - case '1': - - for(int i=0;i<nodes;i++) - { - pc.printf("Node %d Neighbors:\r\n"); - for (int j=0;j<neighbors[i][0];j++) - { - pc.printf("Node %d: %d cycles\r\n",neighbors[i][j],cycles[i][j]); - } - } - break; - case '2': - pc.printf("How many seconds between updates? "); - pc.gets(buffer,2); - atoi(buffer[0]) + atoi(buffer[1]); - //build data packet - - //broadcast type - - //send data packet - - break; - default: - pc.printf("unknown command\r\n"); - break; - } - - } -}