This program send an AT command to the HC05 module and shows the response into a terminal.
Dependencies: MODSERIAL
Fork of HC05_AT_mode by
main.cpp@3:2f5485de3328, 2013-10-19 (annotated)
- Committer:
- edodm85
- Date:
- Sat Oct 19 12:02:30 2013 +0000
- Revision:
- 3:2f5485de3328
- Parent:
- 2:08505f23f37a
- Child:
- 5:73ac83c240ec
Added clear buffer
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
edodm85 | 0:7bb229e58814 | 1 | /* |
edodm85 | 0:7bb229e58814 | 2 | * Author: Edoardo De Marchi |
edodm85 | 2:08505f23f37a | 3 | * Date: 02-07-13 |
edodm85 | 2:08505f23f37a | 4 | * Notes: HC05 AT command |
edodm85 | 0:7bb229e58814 | 5 | */ |
edodm85 | 0:7bb229e58814 | 6 | |
edodm85 | 0:7bb229e58814 | 7 | #include "mbed.h" |
edodm85 | 0:7bb229e58814 | 8 | #include "MODSERIAL.h" |
edodm85 | 0:7bb229e58814 | 9 | |
edodm85 | 0:7bb229e58814 | 10 | |
edodm85 | 2:08505f23f37a | 11 | #define SERIAL_1 |
edodm85 | 2:08505f23f37a | 12 | |
edodm85 | 2:08505f23f37a | 13 | #ifdef SERIAL_1 |
edodm85 | 0:7bb229e58814 | 14 | MODSERIAL blue(p9,p10); // HC05 |
edodm85 | 2:08505f23f37a | 15 | #endif |
edodm85 | 2:08505f23f37a | 16 | #ifdef SERIAL_2 |
edodm85 | 2:08505f23f37a | 17 | MODSERIAL blue(p13,p14); // HC05 |
edodm85 | 2:08505f23f37a | 18 | #endif |
edodm85 | 2:08505f23f37a | 19 | MODSERIAL pc(USBTX, USBRX); |
edodm85 | 0:7bb229e58814 | 20 | DigitalOut led1(LED1); |
edodm85 | 0:7bb229e58814 | 21 | DigitalOut led4(LED4); |
edodm85 | 0:7bb229e58814 | 22 | |
edodm85 | 0:7bb229e58814 | 23 | |
edodm85 | 2:08505f23f37a | 24 | bool new_send = false; |
edodm85 | 2:08505f23f37a | 25 | bool new_response = false; |
edodm85 | 2:08505f23f37a | 26 | char ATCmd[80]; |
edodm85 | 2:08505f23f37a | 27 | char blueChar[80]; |
edodm85 | 2:08505f23f37a | 28 | |
edodm85 | 2:08505f23f37a | 29 | |
edodm85 | 2:08505f23f37a | 30 | void commandAT(char *v) // Send the AT command |
edodm85 | 2:08505f23f37a | 31 | { |
edodm85 | 0:7bb229e58814 | 32 | |
edodm85 | 0:7bb229e58814 | 33 | int i=0; |
edodm85 | 0:7bb229e58814 | 34 | |
edodm85 | 2:08505f23f37a | 35 | while(v[i] != NULL) |
edodm85 | 2:08505f23f37a | 36 | { |
edodm85 | 0:7bb229e58814 | 37 | blue.putc(v[i]); |
edodm85 | 0:7bb229e58814 | 38 | i++; |
edodm85 | 2:08505f23f37a | 39 | } |
edodm85 | 0:7bb229e58814 | 40 | blue.printf("\r\n"); |
edodm85 | 0:7bb229e58814 | 41 | } |
edodm85 | 0:7bb229e58814 | 42 | |
edodm85 | 0:7bb229e58814 | 43 | |
edodm85 | 0:7bb229e58814 | 44 | // This function is called when a character goes into the RX buffer. |
edodm85 | 2:08505f23f37a | 45 | void rxBlueCallback(MODSERIAL_IRQ_INFO *q) |
edodm85 | 2:08505f23f37a | 46 | { |
edodm85 | 2:08505f23f37a | 47 | new_response = true; |
edodm85 | 2:08505f23f37a | 48 | } |
edodm85 | 2:08505f23f37a | 49 | |
edodm85 | 2:08505f23f37a | 50 | // This function is called when a character goes into the RX buffer. |
edodm85 | 2:08505f23f37a | 51 | void rxPcCallback(MODSERIAL_IRQ_INFO *q) |
edodm85 | 2:08505f23f37a | 52 | { |
edodm85 | 2:08505f23f37a | 53 | new_send = true; |
edodm85 | 0:7bb229e58814 | 54 | } |
edodm85 | 0:7bb229e58814 | 55 | |
edodm85 | 0:7bb229e58814 | 56 | |
edodm85 | 2:08505f23f37a | 57 | int main() |
edodm85 | 2:08505f23f37a | 58 | { |
edodm85 | 0:7bb229e58814 | 59 | blue.baud(38400); |
edodm85 | 2:08505f23f37a | 60 | pc.baud(9600); |
edodm85 | 2:08505f23f37a | 61 | |
edodm85 | 2:08505f23f37a | 62 | blue.attach(&rxBlueCallback, MODSERIAL::RxIrq); |
edodm85 | 2:08505f23f37a | 63 | pc.attach(&rxPcCallback, MODSERIAL::RxIrq); |
edodm85 | 2:08505f23f37a | 64 | |
edodm85 | 2:08505f23f37a | 65 | pc.printf("AT Mode Start\r\n"); |
edodm85 | 0:7bb229e58814 | 66 | |
edodm85 | 2:08505f23f37a | 67 | while(1) |
edodm85 | 2:08505f23f37a | 68 | { |
edodm85 | 2:08505f23f37a | 69 | if(new_send) |
edodm85 | 2:08505f23f37a | 70 | { |
edodm85 | 2:08505f23f37a | 71 | int i = 0; |
edodm85 | 0:7bb229e58814 | 72 | |
edodm85 | 2:08505f23f37a | 73 | while(pc.readable()) |
edodm85 | 2:08505f23f37a | 74 | { |
edodm85 | 2:08505f23f37a | 75 | ATCmd[i] = pc.getc(); |
edodm85 | 2:08505f23f37a | 76 | i++; |
edodm85 | 2:08505f23f37a | 77 | } |
edodm85 | 2:08505f23f37a | 78 | commandAT(ATCmd); |
edodm85 | 3:2f5485de3328 | 79 | memset(ATCmd, 0, sizeof(ATCmd)); |
edodm85 | 2:08505f23f37a | 80 | new_send = false; |
edodm85 | 2:08505f23f37a | 81 | }else |
edodm85 | 2:08505f23f37a | 82 | if(new_response) |
edodm85 | 2:08505f23f37a | 83 | { |
edodm85 | 2:08505f23f37a | 84 | int i = 0; |
edodm85 | 2:08505f23f37a | 85 | while(blue.readable()) |
edodm85 | 2:08505f23f37a | 86 | { |
edodm85 | 2:08505f23f37a | 87 | blueChar[i] = blue.getc(); |
edodm85 | 2:08505f23f37a | 88 | i++; |
edodm85 | 2:08505f23f37a | 89 | } |
edodm85 | 3:2f5485de3328 | 90 | printf("Response: %s", blueChar); |
edodm85 | 3:2f5485de3328 | 91 | memset(blueChar, 0, sizeof(blueChar)); |
edodm85 | 2:08505f23f37a | 92 | new_response = false; |
edodm85 | 2:08505f23f37a | 93 | } |
edodm85 | 2:08505f23f37a | 94 | wait_ms(100); |
edodm85 | 0:7bb229e58814 | 95 | } |
edodm85 | 0:7bb229e58814 | 96 | } |