e

Dependencies:   NeoStrip USBDevice mbed

Revision:
0:5b9f87a086ce
diff -r 000000000000 -r 5b9f87a086ce bluetoothComm.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothComm.cpp	Tue Sep 22 21:49:44 2015 +0000
@@ -0,0 +1,93 @@
+#include "bluetoothComm.h"
+
+//USBSerial console1; // tx, rx
+Serial bt(p9,p10); // tx, rx
+bool bluetoothConnected;
+bool validBluetoothData;
+char bluetoothData[50]={0};
+int getIndex=0;
+// Read data from the bluetooth
+// Stores data in the bluetoothData array
+// Messages must end in the null termination character ('\0')
+// Will return true if a complete bluetooth message has been received (and thus if the data in bluetoothData is valid)
+// This method DOES NOT BLOCK
+//   it will read as long as data is available and then stop, whether or not the message is complete
+//   at the next call, it will continue reading and adding to the array until '\0' is received
+//  Thus, this method is meant to be called once per loop
+bool getBluetoothData()
+{
+  if(validBluetoothData) // reset array
+  {
+    getIndex = 0;
+    validBluetoothData = false;
+  }
+
+  if(!bt.readable())
+    return false;
+
+  while(bt.readable() && !validBluetoothData)
+  {
+    bluetoothData[getIndex] = getBluetoothChar();
+    validBluetoothData = (bluetoothData[getIndex] == '\0');
+    getIndex++;
+  }
+  return validBluetoothData;
+}
+
+// Returns the value of bluetoothConnected
+// This variable must be set somewhere, probably in processBluetoothData
+bool isBluetoothConnected()
+{
+  return bluetoothConnected;
+}
+
+void setBluetoothConnected(bool btCon){
+    bluetoothConnected = btCon;
+}
+
+// Read bluetooth data and then process it
+void processBluetoothData()
+{
+  if(!getBluetoothData())
+    return;
+  // DO SOMETHING WITH bluetoothData HERE
+  // If it is a valid message, set bluetoothConnected = true
+  bluetoothConnected = true;
+}
+
+char* returnBluetoothData(){
+  return bluetoothData;
+}
+
+bool isBluetoothDataValid()
+{
+  return validBluetoothData;
+}
+
+void robotLoop()
+{
+  //robotPrintlnDebug();
+  processBluetoothData();
+}
+
+void robotSetup(int baud_rate)
+{
+  bt.baud(baud_rate);
+  bluetoothConnected = false;
+  validBluetoothData = false;
+  bluetoothData[0] = '\0';
+}
+
+void sendBluetoothData(const char* data)
+{
+  //robotPrintDebug("Sending BT data <"); robotPrintDebug(data); robotPrintlnDebug(">");
+  int index = 0;
+  for(; index < length(data); index++)
+    {
+      sendBluetoothChar(data[index]);
+      wait_ms(5);
+    }
+  if(data[index-1] != '\0')
+    sendBluetoothChar('\0');
+  //robotPrintDebug("Sent BT data <"); robotPrintDebug(data); robotPrintlnDebug(">");
+}
\ No newline at end of file