Bluetooth communication for flocking.

Dependencies:   mbed

Fork of BeautifulMemeProject by James Hilder

Revision:
20:e08376c0b4ea
Parent:
18:5921c1853e8a
Child:
21:e5ab8c56a769
--- a/PsiSwarm/serial.cpp	Tue Jan 12 17:28:12 2016 +0000
+++ b/PsiSwarm/serial.cpp	Fri Jan 15 14:42:42 2016 +0000
@@ -47,10 +47,10 @@
             for(int i = 0; i < length; i++)
             {
                 flocking_headings[i] = message[i];
-                debug("%d, ", message[i]);
+//                debug("%d, ", message[i]);
             }
             
-            debug("\n");
+//            debug("\n");
         }
     }
 }
@@ -63,8 +63,8 @@
         buffer[i]=message[i];
     }
     buffer[length]=0;
-    if(interface) debug("Received BT message:%s [%d chars]\n",buffer,length);
-    else debug("Received USB message:%s [%d chars]\n",buffer,length);
+//    if(interface) debug("Received BT message:%s [%d chars]\n",buffer,length);
+//    else debug("Received USB message:%s [%d chars]\n",buffer,length);
     handle_user_serial_message(message,length,interface);
 }
 
@@ -874,8 +874,41 @@
     }
     if(!pc_command_message_started && count>0) IF_handle_user_serial_message(message_array, count, 0);
 }
+
+Timeout bt_message_timeout;
+static float bt_message_timeout_period = 0.001; // 1 millisecond
+char bt_buffer[255];
+int bt_buffer_index = 0;
+
+void IF_bt_message_timeout()
+{    
+    char buffer[255];
+    
+    sprintf(buffer, bt_buffer, bt_buffer_index);
+    buffer[bt_buffer_index] = 0;
+    
+//    debug("BT message timeout: %s [%d chars]\n", buffer, bt_buffer_index);
+    
+    IF_handle_user_serial_message(bt_buffer, bt_buffer_index, 1);
+    
+    bt_buffer_index = 0;
+}
+
 void IF_bt_rx_callback()
 {
+    while(bt.readable())
+    {
+        char byte = bt.getc();
+        
+        bt_buffer[bt_buffer_index] = byte;
+        bt_buffer_index++;
+    }
+    
+    bt_message_timeout.attach(&IF_bt_message_timeout, bt_message_timeout_period);
+}
+
+//void IF_bt_rx_callback()
+//{
 //    int count = 0;
 //    char message_array[255];
 //    
@@ -919,4 +952,4 @@
 //        }
 //    }
 //    if(!bt_command_message_started && count>0) IF_handle_user_serial_message(message_array, count, 1);
-}
\ No newline at end of file
+//}
\ No newline at end of file