Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed EthernetInterface mbed-rtos
Revision 5:9fffeb949e5a, committed 2014-03-31
- Comitter:
- teruo
- Date:
- Mon Mar 31 03:25:14 2014 +0000
- Parent:
- 4:78e96198c879
- Commit message:
- Serial.attach????
Changed in this revision
diff -r 78e96198c879 -r 9fffeb949e5a HttpSend.cpp
--- a/HttpSend.cpp Fri Mar 28 01:10:32 2014 +0000
+++ b/HttpSend.cpp Mon Mar 31 03:25:14 2014 +0000
@@ -3,42 +3,47 @@
#include "HttpSend.h"
#include "mbed.h"
+#define BUFFER_NUM 64
-MemoryPool<message_t, 64> m_mpool;
-Queue<message_t, 64> m_queue;
+Queue<message_t, BUFFER_NUM> m_queue;
+message_t m_mpool[BUFFER_NUM]={0};
+int m_queueCnt=0;
+EthernetInterface* m_ethernet;
+osThreadId m_send_thread;
+TCPSocketConnection m_sock;
-int m_mpCnt=0;
+message_t* getBuffer(){
+ for(int i=0 ; i < BUFFER_NUM ; i++){
+ if( m_mpool[i].used == false ){
+ m_mpool[i].used = true;
+ return &m_mpool[i];
+ }
+ }
+ return NULL;
+}
-EthernetInterface* m_ethernet;
-
-osThreadId m_send_thread;
+void releaseBuffer(message_t* buf){
+ memset(buf->data,0,sizeof(buf->data));
+ buf->used=false;
+}
void sendData(char* data, size_t length){
+ char http_cmd[256];
- char http_cmd[256];
- TCPSocketConnection sock;
- int ret = sock.connect(SERVER_HOST, SERVER_HOST_PORT);
-
- //DEBUG_LOG("sock.connect ret=%d\n",ret);
-
- // header
sprintf(http_cmd,"POST /whiteserver/PostData HTTP/1.1\r\n");
sprintf(http_cmd,"%sUser-Agent: sample-app\r\n",http_cmd);
sprintf(http_cmd,"%sHost: %s\r\n",http_cmd,SERVER_HOST);
sprintf(http_cmd,"%sContent-Length: %d\r\n",http_cmd,length);
sprintf(http_cmd,"%sContent-Type: application/x-www-form-urlencoded\r\n",http_cmd);
-
- // data
sprintf(http_cmd,"%s\r\n%s",http_cmd,data);
-
- DEBUG_LOG("------------- DATA ---------------\n%s\n",http_cmd);
-
- ret = sock.send_all(http_cmd, strlen(http_cmd));
+
+// DEBUG_LOG("------------- DATA ---------------\n%s\n",http_cmd);
+// DEBUG_LOG("(size=%d:%s",length,data);
+ m_sock.send_all(http_cmd, strlen(http_cmd));
/* 結果は受けない。POSTするのみにしておく
DEBUG_LOG("sock.send_all ret=%d \n",ret);
-
char buffer[300];
while (true) {
ret = sock.receive(buffer, sizeof(buffer)-1);
@@ -50,11 +55,10 @@
INFO_LOG(" Received ret=%d \n chars from server :\n%s\n", ret, buffer);
}
*/
- sock.close();
+ //sock.close();
}
-// Thread::wait(3000);
void send_thread (void const *argument) {
INFO_LOG ("send_thread start\n");
@@ -62,15 +66,18 @@
osEvent evt = m_queue.get();
if (evt.status == osEventMessage) {
message_t *message = (message_t*)evt.value.p;
- if(message!=NULL){
- DEBUG_LOG("(size=%d)(m_mpCnt=%d):%s",message->size,m_mpCnt,message->data);
-// m_ethernet->connect();
+ if(message!=NULL && message->size!=0 ){
+// DEBUG_LOG("(size=%d)(m_queueCnt=%d):%s",message->size,m_queueCnt,message->data);
+ DEBUG_LOG("(size=%d)(m_queueCnt=%d)\n",message->size,m_queueCnt);
// INFO_LOG ("IP Address is %s \n", m_ethernet->getIPAddress());
-// sendData(message->data, message->size);
+ sendData(message->data, message->size);
// m_ethernet->disconnect();
- m_mpool.free(message);
- m_mpCnt--;
+ //m_mpool.free(message);
+ releaseBuffer(message);
+ m_queueCnt--;
// DEBUG_LOG ("*message=0x%08X free \n",message);
+ }else{
+ DEBUG_LOG("message ??? \n");
}
}
Thread::wait(100);
@@ -79,21 +86,24 @@
// unreachable INFO_LOG ("send_thread end\n");
}
+
osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE);
void HttpSend::init(EthernetInterface* eth){
INFO_LOG ("HttpSend::init start\n");
m_ethernet = eth;
+ m_ethernet->connect();
+ int ret = m_sock.connect(SERVER_HOST, SERVER_HOST_PORT);
m_send_thread = osThreadCreate(osThread(send_thread), NULL);
INFO_LOG ("HttpSend::init end\n");
}
message_t* HttpSend::getMessageBuffer(){
- m_mpCnt++;
- return m_mpool.alloc();
+ return getBuffer();
}
void HttpSend::send(message_t* message){
+ m_queueCnt++;
m_queue.put(message);
}
diff -r 78e96198c879 -r 9fffeb949e5a HttpSend.h
--- a/HttpSend.h Fri Mar 28 01:10:32 2014 +0000
+++ b/HttpSend.h Mon Mar 31 03:25:14 2014 +0000
@@ -5,7 +5,9 @@
#include "EthernetInterface.h"
#define SENDBUFFER_SIZE 128
+
typedef struct {
+ bool used;
char data[SENDBUFFER_SIZE];
size_t size;
} message_t;
diff -r 78e96198c879 -r 9fffeb949e5a main.cpp
--- 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");
}