Jordan Earls
/
pjon_testing
Testing getting PJON working on mbed https://github.com/gioblu/PJON
main.cpp@1:bd0ee507dd4c, 2016-01-10 (annotated)
- Committer:
- earlz
- Date:
- Sun Jan 10 09:41:00 2016 +0000
- Revision:
- 1:bd0ee507dd4c
- Parent:
- 0:fa2f348efd7e
- Child:
- 2:5648483c5dbc
Use the network analysis example
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
earlz | 0:fa2f348efd7e | 1 | #include "mbed.h" |
earlz | 0:fa2f348efd7e | 2 | #include <pjon.h> |
earlz | 1:bd0ee507dd4c | 3 | /* |
earlz | 0:fa2f348efd7e | 4 | // network(Arduino pin used, selected device id) |
earlz | 0:fa2f348efd7e | 5 | PJON network(p12, 1); |
earlz | 0:fa2f348efd7e | 6 | DigitalOut myled(LED1); |
earlz | 0:fa2f348efd7e | 7 | |
earlz | 0:fa2f348efd7e | 8 | int main() { |
earlz | 0:fa2f348efd7e | 9 | network.send(44, "B", 1, 1000000); |
earlz | 0:fa2f348efd7e | 10 | while(1) { |
earlz | 0:fa2f348efd7e | 11 | network.update(); |
earlz | 0:fa2f348efd7e | 12 | myled = 1; |
earlz | 0:fa2f348efd7e | 13 | wait(0.2); |
earlz | 0:fa2f348efd7e | 14 | myled = 0; |
earlz | 0:fa2f348efd7e | 15 | wait(0.2); |
earlz | 0:fa2f348efd7e | 16 | } |
earlz | 0:fa2f348efd7e | 17 | } |
earlz | 1:bd0ee507dd4c | 18 | */ |
earlz | 1:bd0ee507dd4c | 19 | |
earlz | 1:bd0ee507dd4c | 20 | float test; |
earlz | 1:bd0ee507dd4c | 21 | float mistakes; |
earlz | 1:bd0ee507dd4c | 22 | int busy; |
earlz | 1:bd0ee507dd4c | 23 | int fail; |
earlz | 1:bd0ee507dd4c | 24 | |
earlz | 1:bd0ee507dd4c | 25 | // network(Arduino pin used, selected device id) |
earlz | 1:bd0ee507dd4c | 26 | PJON network(p13, 45); |
earlz | 1:bd0ee507dd4c | 27 | Serial serial(USBTX, USBRX); |
earlz | 1:bd0ee507dd4c | 28 | Timer timer; |
earlz | 1:bd0ee507dd4c | 29 | int packet; |
earlz | 1:bd0ee507dd4c | 30 | char content[] = "01234567890123456789"; |
earlz | 1:bd0ee507dd4c | 31 | |
earlz | 1:bd0ee507dd4c | 32 | void setup() { |
earlz | 1:bd0ee507dd4c | 33 | serial.baud(19200); |
earlz | 1:bd0ee507dd4c | 34 | timer.start(); |
earlz | 1:bd0ee507dd4c | 35 | serial.printf("PJON - Network analysis\n\r"); |
earlz | 1:bd0ee507dd4c | 36 | serial.printf("Starting a 10 seconds communication test..\n\r\n\r"); |
earlz | 1:bd0ee507dd4c | 37 | } |
earlz | 1:bd0ee507dd4c | 38 | |
earlz | 1:bd0ee507dd4c | 39 | void loop() { |
earlz | 1:bd0ee507dd4c | 40 | long time = timer.read_ms(); |
earlz | 1:bd0ee507dd4c | 41 | while(timer.read_ms() - time < 10000) { |
earlz | 1:bd0ee507dd4c | 42 | |
earlz | 1:bd0ee507dd4c | 43 | /* |
earlz | 1:bd0ee507dd4c | 44 | Here send_string low level function is used to |
earlz | 1:bd0ee507dd4c | 45 | be able to catch every single sending result. |
earlz | 1:bd0ee507dd4c | 46 | */ |
earlz | 1:bd0ee507dd4c | 47 | |
earlz | 1:bd0ee507dd4c | 48 | int response = network.send_string(44, content, 20); |
earlz | 1:bd0ee507dd4c | 49 | if(response == ACK) |
earlz | 1:bd0ee507dd4c | 50 | test++; |
earlz | 1:bd0ee507dd4c | 51 | if(response == NAK) |
earlz | 1:bd0ee507dd4c | 52 | mistakes++; |
earlz | 1:bd0ee507dd4c | 53 | if(response == BUSY) |
earlz | 1:bd0ee507dd4c | 54 | busy++; |
earlz | 1:bd0ee507dd4c | 55 | if(response == FAIL) |
earlz | 1:bd0ee507dd4c | 56 | fail++; |
earlz | 1:bd0ee507dd4c | 57 | wait_us(14); |
earlz | 1:bd0ee507dd4c | 58 | } |
earlz | 1:bd0ee507dd4c | 59 | |
earlz | 1:bd0ee507dd4c | 60 | serial.printf("Absolute com speed: "); |
earlz | 1:bd0ee507dd4c | 61 | serial.printf("%i", (test * 24 ) / 10 ); |
earlz | 1:bd0ee507dd4c | 62 | serial.printf("B/s\n\r"); |
earlz | 1:bd0ee507dd4c | 63 | serial.printf("Practical bandwidth: "); |
earlz | 1:bd0ee507dd4c | 64 | serial.printf("%i", (test * 20 ) / 10 ); |
earlz | 1:bd0ee507dd4c | 65 | serial.printf("B/s\n\r"); |
earlz | 1:bd0ee507dd4c | 66 | serial.printf("Packets sent: "); |
earlz | 1:bd0ee507dd4c | 67 | serial.printf("%f\n\r", test); |
earlz | 1:bd0ee507dd4c | 68 | serial.printf("Mistakes (error found with CRC) "); |
earlz | 1:bd0ee507dd4c | 69 | serial.printf("%f\n\r", mistakes); |
earlz | 1:bd0ee507dd4c | 70 | serial.printf("Fail (no answer from receiver) "); |
earlz | 1:bd0ee507dd4c | 71 | serial.printf("%i\n\r", fail); |
earlz | 1:bd0ee507dd4c | 72 | serial.printf("Busy (Channel is busy or affected by interference) "); |
earlz | 1:bd0ee507dd4c | 73 | serial.printf("%i\n\r", busy); |
earlz | 1:bd0ee507dd4c | 74 | serial.printf("Accuracy: "); |
earlz | 1:bd0ee507dd4c | 75 | serial.printf("%i", 100 - (100 / (test / mistakes))); |
earlz | 1:bd0ee507dd4c | 76 | serial.printf(" %\n\r"); |
earlz | 1:bd0ee507dd4c | 77 | serial.printf(" --------------------- \n\r"); |
earlz | 1:bd0ee507dd4c | 78 | |
earlz | 1:bd0ee507dd4c | 79 | test = 0; |
earlz | 1:bd0ee507dd4c | 80 | mistakes = 0; |
earlz | 1:bd0ee507dd4c | 81 | busy = 0; |
earlz | 1:bd0ee507dd4c | 82 | fail = 0; |
earlz | 1:bd0ee507dd4c | 83 | }; |
earlz | 1:bd0ee507dd4c | 84 | |
earlz | 1:bd0ee507dd4c | 85 | int main(){ |
earlz | 1:bd0ee507dd4c | 86 | setup(); |
earlz | 1:bd0ee507dd4c | 87 | while(true){ |
earlz | 1:bd0ee507dd4c | 88 | loop(); |
earlz | 1:bd0ee507dd4c | 89 | } |
earlz | 1:bd0ee507dd4c | 90 | } |