Ethernet+BLE prototype
Dependencies: mbed EthernetInterface mbed-rtos
Diff: main.cpp
- 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"); }