This program send an AT command to the HC05 module and shows the response into a terminal.

Dependencies:   mbed-src MODSERIAL

Notebook page HERE

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?

UserRevisionLine numberNew 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 }