Ethernet+BLE prototype

Dependencies:   mbed EthernetInterface mbed-rtos

Revision:
5:9fffeb949e5a
Parent:
4:78e96198c879
--- a/main.cpp	Fri Mar 28 01:10:32 2014 +0000
+++ b/main.cpp	Mon Mar 31 03:25:14 2014 +0000
@@ -2,57 +2,54 @@
 #include "config.h"
 #include "log.h"
 #include "HttpSend.h"
-#include "cmsis_os.h"
 
 Serial bleModule(p9,p10);
 
-osThreadId m_jm1_receive_thread;
-
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
 
 HttpSend m_httpsend;
 
-void jm1_receive_thread (void const *argument) {
-    INFO_LOG ("jm1_receive_thread start\n");
-    while (true) {
-        if(bleModule.readable()){
-            message_t *message = m_httpsend.getMessageBuffer();
-            memset(message->data,0,SENDBUFFER_SIZE);
-//            INFO_LOG("(message=0x%08X)\n",message);
-            if(NULL!=bleModule.gets(message->data, SENDBUFFER_SIZE)){
-                message->size = strlen(message->data);
-                if(message->size!=0){
-//                    INFO_LOG("(size=%d):%s",message->size,message->data);
-                    m_httpsend.send(message);
-                }
-            }
-        }
+message_t *m_message;
+unsigned char serialBufferLoc = 0;
+
+void rxInterrupt() {
+    if( serialBufferLoc==0 ){
+        led1=true;
+        m_message = m_httpsend.getMessageBuffer();
     }
-    // unreachable INFO_LOG ("jm1_receive_thread end\n");
-}
-
+    led2=!led2;
+    m_message->data[serialBufferLoc] = LPC_UART3->RBR;
+//    LPC_UART0->RBR = m_message->data[serialBufferLoc];
+    if( m_message->data[serialBufferLoc] == '\n' ){
+        if(// "004C " or "004c "
+           m_message->data[0]=='0' && 
+           m_message->data[1]=='0' && 
+           m_message->data[2]=='4' && 
+           (m_message->data[3]=='C'||m_message->data[3]=='c') &&  
+           m_message->data[4]==' ' &&
+           // "1502 "
+           m_message->data[5]=='1' && 
+           m_message->data[6]=='5' && 
+           m_message->data[7]=='0' && 
+           m_message->data[8]=='2' &&  
+           m_message->data[9]==' ') 
+        {
+            m_message->data[serialBufferLoc+1]=NULL;
+            m_message->size = serialBufferLoc+1;
+            m_httpsend.send(m_message);
+        }
 
-void callback() {
-    INFO_LOG ("callback\n");
-    if(bleModule.readable()){
-        message_t *message = m_httpsend.getMessageBuffer();
-        memset(message->data,0,SENDBUFFER_SIZE);
-//        INFO_LOG("(message=0x%08X)\n",message);
-        if(NULL!=bleModule.gets(message->data, SENDBUFFER_SIZE)){
-            message->size = strlen(message->data);
-            if(message->size!=0){
-//                INFO_LOG("(size=%d):%s",message->size,message->data);
-                m_httpsend.send(message);
-            }
-        }
+        led2=false;
+        led1=false;
+        serialBufferLoc=0;
+    }else{
+        serialBufferLoc++;
     }
 }
 
-
-//osThreadDef(jm1_receive_thread,  osPriorityRealtime, DEFAULT_STACK_SIZE);
-osThreadDef(jm1_receive_thread,  osPriorityNormal, DEFAULT_STACK_SIZE);
-
 int main() {
-    INFO_LOG ("BLE GW main start !!!\n");
+    INFO_LOG ("UD1_LanGateway start !!!\n");
 
     /*************************/
     // Initialize
@@ -66,24 +63,10 @@
 
     // Serial
     bleModule.baud(115200);
-    
-    if(true){
-        m_jm1_receive_thread = osThreadCreate(osThread(jm1_receive_thread), NULL);
-    //    Thread::wait(3000);
-        INFO_LOG ("init end\n");
-        while(true) {
-            osDelay(osWaitForever);
-            INFO_LOG ("WaitForever stop \n");
-            wait(0.5);
-        }
-    }else{
-        DigitalOut led1(LED1);
 
-        bleModule.attach(&callback);
-        while(true) {
-            led1 = !led1;
-            wait(0.5);
-        }
+    bleModule.attach(&rxInterrupt);
+    while(true) {
+        wait(0.5);
     }
-    // unreachable INFO_LOG ("BLE GW main stop !!!\n"); 
+    // unreachable INFO_LOG ("UD1_LanGateway stop !!!\n"); 
 }