Library for Bluetooth Low Energy Module ble 4.0 HM-11

Committer:
igbt6
Date:
Sun Nov 01 21:28:52 2015 +0000
Revision:
0:df4bd867616e
Child:
3:d32bdfd04d82
First version of HM-11 library prepared

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igbt6 0:df4bd867616e 1 #include "hm11.h"
igbt6 0:df4bd867616e 2 #include "string.h"
igbt6 0:df4bd867616e 3
igbt6 0:df4bd867616e 4 HM11::HM11(PinName uartTx , PinName uartRx):mSerial(uartTx,uartRx){
igbt6 0:df4bd867616e 5
igbt6 0:df4bd867616e 6 mSerial.baud(HM11_SERIAL_DEFAULT_BAUD );
igbt6 0:df4bd867616e 7 }
igbt6 0:df4bd867616e 8
igbt6 0:df4bd867616e 9
igbt6 0:df4bd867616e 10
igbt6 0:df4bd867616e 11 bool HM11::sendSetCommand(const char* command, const int param){
igbt6 0:df4bd867616e 12
igbt6 0:df4bd867616e 13 if(!isCorrectCommand(command,HM11_SEND_COMMAND))
igbt6 0:df4bd867616e 14 return false;
igbt6 0:df4bd867616e 15 char dataBuf[12];
igbt6 0:df4bd867616e 16 memset(dataBuf,0,sizeof(dataBuf));
igbt6 0:df4bd867616e 17 snprintf(dataBuf,strlen(command)+4,"%s%s%d",hm11TestCommands[HM11_START_CMD],command,param); //TODO strlen +4 ? not all params are 1 char long
igbt6 0:df4bd867616e 18 sendDataToDevice(dataBuf);
igbt6 0:df4bd867616e 19 return true;
igbt6 0:df4bd867616e 20 }
igbt6 0:df4bd867616e 21
igbt6 0:df4bd867616e 22
igbt6 0:df4bd867616e 23 bool HM11::sendGetCommand(const char* command){
igbt6 0:df4bd867616e 24
igbt6 0:df4bd867616e 25 if(!isCorrectCommand(command,HM11_SEND_COMMAND))
igbt6 0:df4bd867616e 26 return false;
igbt6 0:df4bd867616e 27 char dataBuf[12];
igbt6 0:df4bd867616e 28 memset(dataBuf,0,sizeof(dataBuf));
igbt6 0:df4bd867616e 29 snprintf(dataBuf,strlen(hm11TestCommands[HM11_START_CMD])+strlen(command)+strlen(hm11TestCommands[HM11_QUERY_SIGN]+2),"%s%s%s\0",hm11TestCommands[HM11_START_CMD],command,hm11TestCommands[HM11_QUERY_SIGN]);
igbt6 0:df4bd867616e 30 sendDataToDevice(dataBuf);
igbt6 0:df4bd867616e 31 return true;
igbt6 0:df4bd867616e 32 }
igbt6 0:df4bd867616e 33
igbt6 0:df4bd867616e 34 //@param : cmdType - 0 test cmd
igbt6 0:df4bd867616e 35 bool HM11::isCorrectCommand(const char* command, HM11CommandType cmdType){
igbt6 0:df4bd867616e 36 int i = 0 ;
igbt6 0:df4bd867616e 37 const char**cmdPtr=NULL;
igbt6 0:df4bd867616e 38 if(cmdType>=HM11_NUM_OF_COMMAND_TYPE){
igbt6 0:df4bd867616e 39
igbt6 0:df4bd867616e 40 return false;
igbt6 0:df4bd867616e 41 }
igbt6 0:df4bd867616e 42 if(command==NULL)
igbt6 0:df4bd867616e 43 return false;
igbt6 0:df4bd867616e 44 switch(cmdType){
igbt6 0:df4bd867616e 45 case HM11_TEST_COMMAND:
igbt6 0:df4bd867616e 46 i = HM11_NUM_OF_TEST_COMMANDS ;
igbt6 0:df4bd867616e 47 cmdPtr=hm11TestCommands;
igbt6 0:df4bd867616e 48 break;
igbt6 0:df4bd867616e 49 case HM11_SEND_COMMAND:
igbt6 0:df4bd867616e 50 i = HM11_NUM_OF_COMMANDS;
igbt6 0:df4bd867616e 51 cmdPtr=hm11SendCommands;
igbt6 0:df4bd867616e 52 break;
igbt6 0:df4bd867616e 53 }
igbt6 0:df4bd867616e 54 while(i>0){
igbt6 0:df4bd867616e 55 if(strcmp(command,cmdPtr[i])==0){
igbt6 0:df4bd867616e 56 return true;
igbt6 0:df4bd867616e 57 }
igbt6 0:df4bd867616e 58 i--;
igbt6 0:df4bd867616e 59 }
igbt6 0:df4bd867616e 60 return false;
igbt6 0:df4bd867616e 61 }
igbt6 0:df4bd867616e 62 //comands
igbt6 0:df4bd867616e 63
igbt6 0:df4bd867616e 64 bool HM11::testCommand(){
igbt6 0:df4bd867616e 65 return false;
igbt6 0:df4bd867616e 66 }
igbt6 0:df4bd867616e 67
igbt6 0:df4bd867616e 68
igbt6 0:df4bd867616e 69
igbt6 0:df4bd867616e 70 bool HM11:: waitForData(int timeoutMs){
igbt6 0:df4bd867616e 71 int endtime;
igbt6 0:df4bd867616e 72 Timer timer;
igbt6 0:df4bd867616e 73 timer.start() ;
igbt6 0:df4bd867616e 74 endtime= timer.read_ms()+timeoutMs;
igbt6 0:df4bd867616e 75 while((timer.read_ms())<endtime){
igbt6 0:df4bd867616e 76 if(isRxDataAvailable())
igbt6 0:df4bd867616e 77 return true;
igbt6 0:df4bd867616e 78 }
igbt6 0:df4bd867616e 79 return false;
igbt6 0:df4bd867616e 80 }
igbt6 0:df4bd867616e 81
igbt6 0:df4bd867616e 82
igbt6 0:df4bd867616e 83 int HM11::sendDataToDevice(const char* data){
igbt6 0:df4bd867616e 84
igbt6 0:df4bd867616e 85 return mSerial.printf(data);
igbt6 0:df4bd867616e 86 }
igbt6 0:df4bd867616e 87
igbt6 0:df4bd867616e 88
igbt6 0:df4bd867616e 89 int HM11::isRxDataAvailable(){
igbt6 0:df4bd867616e 90 return mSerial.readable();
igbt6 0:df4bd867616e 91 }
igbt6 0:df4bd867616e 92
igbt6 0:df4bd867616e 93
igbt6 0:df4bd867616e 94
igbt6 0:df4bd867616e 95