Minor change.

Dependents:   nanoNucleo_Serial-Bluetooth_test

Fork of HC-05 by Jesper Jakobsen

Committer:
Kio_Liex
Date:
Sat Feb 13 21:38:00 2016 +0000
Revision:
2:10334c0d9835
Parent:
1:703352bac629
Child:
3:18a71e6ed851
Work version with the "BT Bot Control" app for Android. ; Running on a NuCleo-F303K8 and a HC-05 bluetooth module.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kio_Liex 0:e0c6e95761d2 1 #include "mbed.h"
Kio_Liex 0:e0c6e95761d2 2 #include "HC05.h"
Kio_Liex 0:e0c6e95761d2 3
Kio_Liex 0:e0c6e95761d2 4 HC05::HC05(PinName tx, PinName rx): myBT(tx, rx)
Kio_Liex 0:e0c6e95761d2 5 {
Kio_Liex 1:703352bac629 6 myBT.baud(9600);
Kio_Liex 1:703352bac629 7
Kio_Liex 1:703352bac629 8 index = 0;
Kio_Liex 1:703352bac629 9
Kio_Liex 1:703352bac629 10 started = false;
Kio_Liex 1:703352bac629 11 ended = false;
Kio_Liex 0:e0c6e95761d2 12 }
Kio_Liex 0:e0c6e95761d2 13
Kio_Liex 1:703352bac629 14 bool HC05::getValue(int16_t* x, int16_t* y, int16_t* c)
Kio_Liex 1:703352bac629 15 {
Kio_Liex 0:e0c6e95761d2 16 while(myBT.readable())
Kio_Liex 0:e0c6e95761d2 17 {
Kio_Liex 0:e0c6e95761d2 18 btChar = myBT.getc();
Kio_Liex 0:e0c6e95761d2 19
Kio_Liex 0:e0c6e95761d2 20 if(btChar == SOP)
Kio_Liex 0:e0c6e95761d2 21 {
Kio_Liex 0:e0c6e95761d2 22 index = 0;
Kio_Liex 0:e0c6e95761d2 23 btData[index] = '\0';
Kio_Liex 0:e0c6e95761d2 24 started = true;
Kio_Liex 0:e0c6e95761d2 25 ended = false;
Kio_Liex 0:e0c6e95761d2 26 }
Kio_Liex 0:e0c6e95761d2 27 else if(btChar == EOP)
Kio_Liex 0:e0c6e95761d2 28 {
Kio_Liex 0:e0c6e95761d2 29 ended = true;
Kio_Liex 0:e0c6e95761d2 30 break;
Kio_Liex 0:e0c6e95761d2 31 }
Kio_Liex 0:e0c6e95761d2 32 else
Kio_Liex 0:e0c6e95761d2 33 {
Kio_Liex 0:e0c6e95761d2 34 if(index < 19)
Kio_Liex 0:e0c6e95761d2 35 {
Kio_Liex 0:e0c6e95761d2 36 btData[index] = btChar;
Kio_Liex 0:e0c6e95761d2 37 index++;
Kio_Liex 0:e0c6e95761d2 38 btData[index] = '\0';
Kio_Liex 0:e0c6e95761d2 39 }
Kio_Liex 0:e0c6e95761d2 40 }
Kio_Liex 0:e0c6e95761d2 41 }
Kio_Liex 2:10334c0d9835 42
Kio_Liex 1:703352bac629 43 *x=0;
Kio_Liex 1:703352bac629 44 *y=0;
Kio_Liex 1:703352bac629 45 *c=0;
Kio_Liex 0:e0c6e95761d2 46
Kio_Liex 0:e0c6e95761d2 47 if(started && ended)
Kio_Liex 0:e0c6e95761d2 48 {
Kio_Liex 0:e0c6e95761d2 49 char *name = strtok(btData, "=");
Kio_Liex 0:e0c6e95761d2 50
Kio_Liex 0:e0c6e95761d2 51 while(name)
Kio_Liex 0:e0c6e95761d2 52 {
Kio_Liex 0:e0c6e95761d2 53 char *valToken = strtok(NULL, ",");
Kio_Liex 0:e0c6e95761d2 54 if(valToken)
Kio_Liex 0:e0c6e95761d2 55 {
Kio_Liex 0:e0c6e95761d2 56 int val = atoi(valToken);
Kio_Liex 0:e0c6e95761d2 57
Kio_Liex 0:e0c6e95761d2 58 if(strcmp(name, "X") == 0)
Kio_Liex 0:e0c6e95761d2 59 {
Kio_Liex 0:e0c6e95761d2 60 *x = val;
Kio_Liex 0:e0c6e95761d2 61 }
Kio_Liex 0:e0c6e95761d2 62 else if(strcmp(name, "Y") == 0)
Kio_Liex 0:e0c6e95761d2 63 {
Kio_Liex 0:e0c6e95761d2 64 *y = val;
Kio_Liex 0:e0c6e95761d2 65 }
Kio_Liex 0:e0c6e95761d2 66 else if(strcmp(name, "C") == 0)
Kio_Liex 0:e0c6e95761d2 67 {
Kio_Liex 0:e0c6e95761d2 68 *c = val;
Kio_Liex 0:e0c6e95761d2 69 }
Kio_Liex 0:e0c6e95761d2 70 }
Kio_Liex 0:e0c6e95761d2 71 name = strtok(NULL, "=");
Kio_Liex 0:e0c6e95761d2 72 }
Kio_Liex 0:e0c6e95761d2 73
Kio_Liex 0:e0c6e95761d2 74 // Reset for the next packet
Kio_Liex 0:e0c6e95761d2 75 started = false;
Kio_Liex 0:e0c6e95761d2 76 ended = false;
Kio_Liex 0:e0c6e95761d2 77 index = 0;
Kio_Liex 1:703352bac629 78 btData[index] = '\0';
Kio_Liex 1:703352bac629 79
Kio_Liex 1:703352bac629 80 return true;
Kio_Liex 0:e0c6e95761d2 81 }
Kio_Liex 1:703352bac629 82 return false;
Kio_Liex 0:e0c6e95761d2 83 }