Commit 3939e5cc authored by 黄振令's avatar 黄振令
parents 7abf671f 38d0be21
LIBA_TARGET := libsqlite.a
LDFLAGS += -ldl
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -17,7 +17,7 @@ SUBDIRS += common/json
SUBDIRS += common/api
SUBDIRS += common/nanomsg
SUBDIRS += common/ev
SUBDIRS += common/sqlite
$(call Append_Conditional, SUBDIRS)
include $(RULE_DIR)/rules.mk
......
......@@ -6,9 +6,15 @@ $(call Append_Conditional, LIB_SRCS_EXCLUDE, kcloud_main.c)
$(call Append_Conditional, SRCS_kcloud, kcloud_main.c)
$(call Append_Conditional, TARGET, kcloud)
CFLAGS += -I$(TOP_DIR)/common/api
CFLAGS += -I$(TOP_DIR)/common/json
CFLAGS += -I$(TOP_DIR)/common/nanomsg/include
CFLAGS += -I$(TOP_DIR)/common/ev/include
CFLAGS += -I$(TOP_DIR)/common/json
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -static -lnanomsg
LDFLAGS += -L$(TOP_DIR)/common/ev -static -lev
LDFLAGS += -liot_cjson -liot_mqtt -ldl -lm -lanl -liot_sdk
\ No newline at end of file
CFLAGS += -I$(TOP_DIR)/common/sqlite
LDFLAGS += -lapi_com
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -static -lnanomsg
LDFLAGS += -L$(TOP_DIR)/common/ev -static -lev
LDFLAGS += -L$(TOP_DIR)/output/release/lib -static -lapi_com
LDFLAGS += -liot_cjson -liot_mqtt -lsqlite -ldl -lm -lanl
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pair.h"
#include "nn.h"
#include "ev.h"
#include "mqtt_api.h"
typedef struct
{
int n;
int s;
}kk_nanomsg_t;
typedef struct
{
kk_nanomsg_t handle;
}kk_nanomsg_handle_t;
static kk_nanomsg_handle_t s_msgHdl;
#define NANOMSG_ADDR "ipc://b2a_loop"
int KK_Sendto_DevData(const char *data, int len)
{
kk_nanomsg_handle_t *msgHdl = &s_msgHdl;
if(len <= 0||data == NULL)
{
return -1;
}
int length = len + 1;
unsigned char *udata = nn_allocmsg(length, 0);
if (NULL != udata)
{
memcpy(udata, data, length);
nn_send(msgHdl->handle.n, &udata, NN_MSG, NN_DONTWAIT);
INFO_PRINT("KK_data_send:%s \r\n\r\n", udata);
}
}
int KK_Sendto_CloudData(const char *data, int len)
{
if(len <= 0||data == NULL)
{
return -1;
}
return KK_MQTT_SendMsg(TOPIC,data,len);
}
static void kk_data_cb (struct ev_loop *loop ,struct ev_io *w, int revents)
{
unsigned char *dat = NULL;
void *user_data = ev_userdata(loop);
kk_nanomsg_handle_t *msgHdl = (kk_nanomsg_handle_t *)user_data;
unsigned int bytes = nn_recv(msgHdl->handle.n, &dat, NN_MSG, NN_DONTWAIT);
if (bytes <= 0)
{
return;
}
KK_Sendto_CloudData(dat,bytes);
INFO_PRINT("kk_data_cb:%s \r\n", (char *)dat);
nn_freemsg(dat);
}
static int kk_nanomsg_init(kk_nanomsg_handle_t *nanoMsgHdl)
void KK_Sendto_CloudData(void *data)
{
if(nanoMsgHdl == NULL)
{
return -1;
}
nanoMsgHdl->handle.n = nn_socket(AF_SP, NN_PAIR);
if (nanoMsgHdl->handle.n < 0)
{
return -1;
}
if (nn_connect(nanoMsgHdl->handle.n,NANOMSG_ADDR) < 0)
{
return -1;
}
size_t size = sizeof(size_t);
if (nn_getsockopt(nanoMsgHdl->handle.n, NN_SOL_SOCKET, NN_RCVFD, (char *)&nanoMsgHdl->handle.s, &size) < 0)
{
return -1;
}
return 0;
KK_MQTT_SendMsg(TOPIC,(const char*)data,QOS);
}
struct ev_loop* kk_loop_init(kk_nanomsg_handle_t *nanoMsgHdl)
void KK_Sendto_DevData(char *data)
{
static struct ev_io watcher_b;
struct ev_loop *loop = ev_loop_new(EVBACKEND_EPOLL);
if (NULL == loop)
{
ERROR_PRINT("create loop failed\r\n");
return NULL;
}
ev_io_init (&watcher_b, kk_data_cb, nanoMsgHdl->handle.s, EV_READ);
ev_io_start (loop, &watcher_b);
return loop;
}
void KK_Data_Handle(void)
{
int rc = 0;
rc = kk_nanomsg_init(&s_msgHdl);
struct ev_loop* kloop = kk_loop_init(&s_msgHdl);
if (NULL == kloop)
{
ERROR_PRINT("Bloop init failed\r\n");
return ;
}
ev_set_userdata(kloop, &s_msgHdl);
ev_run (kloop, 0);
return ;
kk_ipc_send(data);
}
\ No newline at end of file
......@@ -20,8 +20,11 @@
#include <pthread.h>
#include "MQTTAsync.h"
#include "mqtt_api.h"
#include "com_api.h"
#define THREAD_NUM 10
static int mqtt_start(void)
{
int count = 0;
......@@ -45,8 +48,8 @@ static int mqtt_start(void)
if(count>50)
{
count = 0;
INFO_PRINT("i am send now\n");
KK_MQTT_SendMsg(TOPIC,"hello my world",2);
//INFO_PRINT("i am send now\n");
//KK_MQTT_SendMsg(TOPIC,"hello my world",2);
}
}
......@@ -58,15 +61,11 @@ static int mqtt_start(void)
int main(int argc, char* argv[])
{
int thread_count = 0;
pthread_t thread_num[THREAD_NUM];
memset(thread_num,0,sizeof(thread_num));
int rc = 0;
if(pthread_create(&thread_num[thread_count++],NULL,(void*)&KK_Data_Handle,NULL)!=0)
{
printf("pthread_create %d error!!!",(int)thread_num[thread_count-1]);
}
/*set the callback to get the device date to cloud*/
kk_ipc_init(IPC_APP2MID,KK_Sendto_CloudData);
rc = mqtt_start();
return rc;
......
......@@ -269,7 +269,7 @@ int KK_MQTT_RecvMsg(MQTTAsync handle,const char *topicName,const char *payload)
ERROR_PRINT("PARAM ERROR\n");
return -1;
}
KK_Sendto_DevData(payload,strlen(payload));
KK_Sendto_DevData(payload);
return 0;
}
......
......@@ -4,7 +4,7 @@
#include "kcloud_log.h"
#include "kcloud_config.h"
extern void KK_Data_Handle(void);
extern void KK_Sendto_CloudData(void *data);
extern int KK_MQTT_SubTopic(MQTTAsync handle,char *topicName,int qos,int waitTimeout);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment