Test usb connection
Dependencies: BufferedSerial MODSERIAL mbed
You can find more infos in this notebook: HERE
main.cpp@0:6da981eb59da, 2016-08-20 (annotated)
- Committer:
- edodm85
- Date:
- Sat Aug 20 17:33:55 2016 +0000
- Revision:
- 0:6da981eb59da
First commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
edodm85 | 0:6da981eb59da | 1 | #define Modserial |
edodm85 | 0:6da981eb59da | 2 | |
edodm85 | 0:6da981eb59da | 3 | #include "mbed.h" |
edodm85 | 0:6da981eb59da | 4 | |
edodm85 | 0:6da981eb59da | 5 | #ifdef Modserial |
edodm85 | 0:6da981eb59da | 6 | #include "MODSERIAL.h" |
edodm85 | 0:6da981eb59da | 7 | #else |
edodm85 | 0:6da981eb59da | 8 | //#include "BufferedSerial.h" |
edodm85 | 0:6da981eb59da | 9 | #endif |
edodm85 | 0:6da981eb59da | 10 | |
edodm85 | 0:6da981eb59da | 11 | |
edodm85 | 0:6da981eb59da | 12 | DigitalOut led1(LED1); |
edodm85 | 0:6da981eb59da | 13 | DigitalOut led4(LED4); |
edodm85 | 0:6da981eb59da | 14 | |
edodm85 | 0:6da981eb59da | 15 | #ifdef Modserial |
edodm85 | 0:6da981eb59da | 16 | MODSERIAL pc(USBTX,USBRX); |
edodm85 | 0:6da981eb59da | 17 | #else |
edodm85 | 0:6da981eb59da | 18 | RawSerial pc(USBTX,USBRX); |
edodm85 | 0:6da981eb59da | 19 | #endif |
edodm85 | 0:6da981eb59da | 20 | |
edodm85 | 0:6da981eb59da | 21 | |
edodm85 | 0:6da981eb59da | 22 | bool new_send = false; |
edodm85 | 0:6da981eb59da | 23 | void parse_cmd(int sizeCMD); |
edodm85 | 0:6da981eb59da | 24 | char bufferRX[50]; |
edodm85 | 0:6da981eb59da | 25 | int i = 0; |
edodm85 | 0:6da981eb59da | 26 | |
edodm85 | 0:6da981eb59da | 27 | |
edodm85 | 0:6da981eb59da | 28 | // interrupt call |
edodm85 | 0:6da981eb59da | 29 | #ifdef Modserial |
edodm85 | 0:6da981eb59da | 30 | void rxCallback(MODSERIAL_IRQ_INFO *q) |
edodm85 | 0:6da981eb59da | 31 | { |
edodm85 | 0:6da981eb59da | 32 | new_send = true; |
edodm85 | 0:6da981eb59da | 33 | } |
edodm85 | 0:6da981eb59da | 34 | #else |
edodm85 | 0:6da981eb59da | 35 | void rxCallback() |
edodm85 | 0:6da981eb59da | 36 | { |
edodm85 | 0:6da981eb59da | 37 | led1 = 1; |
edodm85 | 0:6da981eb59da | 38 | |
edodm85 | 0:6da981eb59da | 39 | char test = pc.getc(); |
edodm85 | 0:6da981eb59da | 40 | if(test != '\n') |
edodm85 | 0:6da981eb59da | 41 | { |
edodm85 | 0:6da981eb59da | 42 | bufferRX[i] = test; |
edodm85 | 0:6da981eb59da | 43 | i++; |
edodm85 | 0:6da981eb59da | 44 | }else |
edodm85 | 0:6da981eb59da | 45 | { |
edodm85 | 0:6da981eb59da | 46 | new_send = true; |
edodm85 | 0:6da981eb59da | 47 | } |
edodm85 | 0:6da981eb59da | 48 | led1 = 0; |
edodm85 | 0:6da981eb59da | 49 | return; |
edodm85 | 0:6da981eb59da | 50 | } |
edodm85 | 0:6da981eb59da | 51 | #endif |
edodm85 | 0:6da981eb59da | 52 | |
edodm85 | 0:6da981eb59da | 53 | |
edodm85 | 0:6da981eb59da | 54 | |
edodm85 | 0:6da981eb59da | 55 | |
edodm85 | 0:6da981eb59da | 56 | int main() |
edodm85 | 0:6da981eb59da | 57 | { |
edodm85 | 0:6da981eb59da | 58 | pc.baud(9600); |
edodm85 | 0:6da981eb59da | 59 | pc.printf("SystemCoreClock: %dMHz\r\n", SystemCoreClock/1000000); // print the clock frequency |
edodm85 | 0:6da981eb59da | 60 | led4 = 0; |
edodm85 | 0:6da981eb59da | 61 | int n = 0; |
edodm85 | 0:6da981eb59da | 62 | |
edodm85 | 0:6da981eb59da | 63 | |
edodm85 | 0:6da981eb59da | 64 | #ifdef Modserial |
edodm85 | 0:6da981eb59da | 65 | pc.attach(&rxCallback); |
edodm85 | 0:6da981eb59da | 66 | #else |
edodm85 | 0:6da981eb59da | 67 | pc.attach(&rxCallback, Serial::RxIrq); |
edodm85 | 0:6da981eb59da | 68 | #endif |
edodm85 | 0:6da981eb59da | 69 | |
edodm85 | 0:6da981eb59da | 70 | |
edodm85 | 0:6da981eb59da | 71 | while(1) |
edodm85 | 0:6da981eb59da | 72 | { |
edodm85 | 0:6da981eb59da | 73 | #ifdef Modserial |
edodm85 | 0:6da981eb59da | 74 | if(new_send) |
edodm85 | 0:6da981eb59da | 75 | { |
edodm85 | 0:6da981eb59da | 76 | int i = 0; |
edodm85 | 0:6da981eb59da | 77 | led1 = 1; |
edodm85 | 0:6da981eb59da | 78 | |
edodm85 | 0:6da981eb59da | 79 | while(pc.readable()) |
edodm85 | 0:6da981eb59da | 80 | { |
edodm85 | 0:6da981eb59da | 81 | bufferRX[i] = pc.getc(); |
edodm85 | 0:6da981eb59da | 82 | i++; |
edodm85 | 0:6da981eb59da | 83 | } |
edodm85 | 0:6da981eb59da | 84 | parse_cmd(i); |
edodm85 | 0:6da981eb59da | 85 | led1 = 0; |
edodm85 | 0:6da981eb59da | 86 | } |
edodm85 | 0:6da981eb59da | 87 | #else |
edodm85 | 0:6da981eb59da | 88 | if(new_send) |
edodm85 | 0:6da981eb59da | 89 | { |
edodm85 | 0:6da981eb59da | 90 | |
edodm85 | 0:6da981eb59da | 91 | parse_cmd(i); |
edodm85 | 0:6da981eb59da | 92 | |
edodm85 | 0:6da981eb59da | 93 | memset(bufferRX, 0, sizeof(bufferRX)); |
edodm85 | 0:6da981eb59da | 94 | new_send = false; |
edodm85 | 0:6da981eb59da | 95 | i = 0; |
edodm85 | 0:6da981eb59da | 96 | } |
edodm85 | 0:6da981eb59da | 97 | #endif |
edodm85 | 0:6da981eb59da | 98 | wait_ms(50); |
edodm85 | 0:6da981eb59da | 99 | n++; |
edodm85 | 0:6da981eb59da | 100 | if(n == 10) |
edodm85 | 0:6da981eb59da | 101 | { |
edodm85 | 0:6da981eb59da | 102 | led4 = !led4; |
edodm85 | 0:6da981eb59da | 103 | n = 0; |
edodm85 | 0:6da981eb59da | 104 | } |
edodm85 | 0:6da981eb59da | 105 | } |
edodm85 | 0:6da981eb59da | 106 | } |
edodm85 | 0:6da981eb59da | 107 | |
edodm85 | 0:6da981eb59da | 108 | |
edodm85 | 0:6da981eb59da | 109 | |
edodm85 | 0:6da981eb59da | 110 | |
edodm85 | 0:6da981eb59da | 111 | |
edodm85 | 0:6da981eb59da | 112 | void parse_cmd(int sizeCMD) |
edodm85 | 0:6da981eb59da | 113 | { |
edodm85 | 0:6da981eb59da | 114 | new_send = false; |
edodm85 | 0:6da981eb59da | 115 | |
edodm85 | 0:6da981eb59da | 116 | |
edodm85 | 0:6da981eb59da | 117 | pc.printf("bufferRX: %s\r\n", bufferRX); |
edodm85 | 0:6da981eb59da | 118 | |
edodm85 | 0:6da981eb59da | 119 | |
edodm85 | 0:6da981eb59da | 120 | if(strcmp("ciao", bufferRX) == 0) |
edodm85 | 0:6da981eb59da | 121 | { |
edodm85 | 0:6da981eb59da | 122 | pc.printf("Test OK\r\n"); |
edodm85 | 0:6da981eb59da | 123 | } |
edodm85 | 0:6da981eb59da | 124 | |
edodm85 | 0:6da981eb59da | 125 | memset(bufferRX, 0, sizeof(bufferRX)); |
edodm85 | 0:6da981eb59da | 126 | } |