Ethernet+BLE prototype

Dependencies:   mbed EthernetInterface mbed-rtos

main.cpp

Committer:
teruo
Date:
2014-03-28
Revision:
4:78e96198c879
Parent:
3:d9445b9e7163
Child:
5:9fffeb949e5a

File content as of revision 4:78e96198c879:

#include "mbed.h"
#include "config.h"
#include "log.h"
#include "HttpSend.h"
#include "cmsis_os.h"

Serial bleModule(p9,p10);

osThreadId m_jm1_receive_thread;


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);
                }
            }
        }
    }
    // unreachable INFO_LOG ("jm1_receive_thread end\n");
}


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);
            }
        }
    }
}


//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");

    /*************************/
    // Initialize
    /*************************/
    // EthernetInterface
    EthernetInterface eth;
    eth.init();

    // HttpSend
    m_httpsend.init(&eth);

    // 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);
        }
    }
    // unreachable INFO_LOG ("BLE GW main stop !!!\n"); 
}