Commit 8fcfbe3a authored by 陈伟灿's avatar 陈伟灿

Merge branch 'yjq' into 'master'

20210713:问题

See merge request chenweican/k-sdk!88
parents 3533b5b2 8fd421e1
......@@ -8,8 +8,11 @@ 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/sqlite
LDFLAGS += -lkk_tsl
LDFLAGS += -lapi_com
LDFLAGS += -lsqlite -ldl
ifeq ($(CONFIG_MODEL),x86)
LDFLAGS += -L$(TOP_DIR)/common/nanomsg -lnanomsg_ubuntu
LDFLAGS += -L$(TOP_DIR)/common/ev -lev_ubuntu
......
This diff is collapsed.
This diff is collapsed.
......@@ -8,22 +8,32 @@
#include "com_api.h"
#include "kk_opcode.h"
typedef struct {
cJSON *newccu;
cJSON *oldccu;
int channelNum;
char gwDeviceCode[DEVICE_CODE_LEN];
char productCode[PRODUCT_CODE_LEN];
char deviceCode[DEVICE_CODE_LEN];
char opearteType[8];
struct list_head linked_list;
cJSON *json;
cJSON *newccu;
cJSON *oldccu;
unsigned char online_status;
int channelNum;
int syn_type;
char *syn_opcode;
char gwDeviceCode[DEVICE_CODE_LEN];
char productCode[PRODUCT_CODE_LEN];
char deviceCode[DEVICE_CODE_LEN];
char opearteType[8];
struct list_head linked_list;
} kk_map_dev_node_t;
typedef struct {
void *mutex;
struct list_head dev_list;
void *mutex;
struct list_head dev_list;
} kk_map_dev_ctx;
kk_map_dev_node_t *kk_map_dev_add(char *deviceCode,char *productCode,char *gwdeviceCode);
kk_map_dev_node_t *kk_map_dev_add(char *deviceCode,char *productCode,char *gwdeviceCode,char *onlineStatus);
int kk_create_devicestatus_to_sdk(cJSON *root);
int kk_create_devices_to_sdk(cJSON *root);
int _deviceCode_switchto_mac(char * deviceCode,char *mac);
int mac_switchto_deviceCode(char *mac,char * deviceCode);
kk_map_dev_ctx *_kk_map_dev_ctx(void);
#endif
\ No newline at end of file
......@@ -18,46 +18,46 @@
#include "cJSON.h"
static int kk_findccu_ack(int sockfd,struct sockaddr_in *addr){
cJSON *json = NULL,*args = NULL;
cJSON *ccu = NULL;
char *out = NULL;
char *tmpBuf = NULL;
char s_IP[NETWORK_ADDR_LEN] = {0};
if(addr == NULL || sockfd < 0){
return -1;
}
json=cJSON_CreateObject();
if(json){
args = cJSON_CreateObject();
if(args){
cJSON_AddItemToObject(json, "arg", args);
cJSON_AddStringToObject(args, "zkid", KK_CCU_ID);
cJSON_AddStringToObject(args, "zk", KK_CCU_NAME);
HAL_Get_IP(s_IP,NULL);
cJSON_AddStringToObject(args, "ip", s_IP);
cJSON_AddBoolToObject(args, "ssl", FALSE);
}
cJSON_AddStringToObject(json, "nodeid", "*");
cJSON_AddStringToObject(json, "opcode", FINDCCU_OPCODE);
cJSON_AddStringToObject(json, "status", "success");
out=cJSON_Print(json);
cJSON_Minify((char*)out);
tmpBuf = calloc(strlen(out) + 4,1);
if(tmpBuf == NULL){
cJSON_Delete(json);
free(out);
return -1;
}
strcat(tmpBuf,"!");
strcat(tmpBuf,out);
strcat(tmpBuf,"$");
printf("tmpBuf:%s\n",tmpBuf);
sendto(sockfd, tmpBuf, strlen(tmpBuf), 0, (struct sockaddr*)addr, sizeof(struct sockaddr_in));
cJSON_Delete(json);
free(out);
free(tmpBuf);
}
return 0;
cJSON *json = NULL,*args = NULL;
cJSON *ccu = NULL;
char *out = NULL;
char *tmpBuf = NULL;
char s_IP[NETWORK_ADDR_LEN] = {0};
if(addr == NULL || sockfd < 0){
return -1;
}
json=cJSON_CreateObject();
if(json){
args = cJSON_CreateObject();
if(args){
cJSON_AddItemToObject(json, "arg", args);
cJSON_AddStringToObject(args, "zkid", KK_CCU_ID);
cJSON_AddStringToObject(args, "zk", KK_CCU_NAME);
HAL_Get_IP(s_IP,NULL);
cJSON_AddStringToObject(args, "ip", s_IP);
cJSON_AddBoolToObject(args, "ssl", FALSE);
}
cJSON_AddStringToObject(json, "nodeid", "*");
cJSON_AddStringToObject(json, "opcode", FINDCCU_OPCODE);
cJSON_AddStringToObject(json, "status", "success");
out=cJSON_Print(json);
cJSON_Minify((char*)out);
tmpBuf = calloc(strlen(out) + 4,1);
if(tmpBuf == NULL){
cJSON_Delete(json);
free(out);
return -1;
}
strcat(tmpBuf,"!");
strcat(tmpBuf,out);
strcat(tmpBuf,"$");
printf("tmpBuf:%s\n",tmpBuf);
sendto(sockfd, tmpBuf, strlen(tmpBuf), 0, (struct sockaddr*)addr, sizeof(struct sockaddr_in));
cJSON_Delete(json);
free(out);
free(tmpBuf);
}
return 0;
}
void *kk_findccu_handle(void *data)
{
......@@ -65,73 +65,73 @@ void *kk_findccu_handle(void *data)
struct sockaddr_in saddr;
int r;
char recvline[1025] = {0};
char recvline_tmp[1025] = {0};
char recvline_tmp[1025] = {0};
struct sockaddr_in presaddr;
socklen_t len;
cJSON *json;
cJSON *opcode;
char *pStart = NULL,*pEnd = NULL;
cJSON *json;
cJSON *opcode;
char *pStart = NULL,*pEnd = NULL;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero(&saddr, sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_addr.s_addr = htonl(INADDR_ANY);
saddr.sin_port = htons(FINDCCU_LOCAL_PORT);
if(bind(sockfd, (struct sockaddr*)&saddr, sizeof(saddr)) == -1)
{
ERROR_PRINT("bind error...\n");
}
if(bind(sockfd, (struct sockaddr*)&saddr, sizeof(saddr)) == -1)
{
ERROR_PRINT("bind error...\n");
}
while (1)
{
r = recvfrom(sockfd, recvline, sizeof(recvline), 0 , (struct sockaddr*)&presaddr, &len);
if (r <= 0){
WARNING_PRINT("read error....\n");
WARNING_PRINT("read error....\n");
}else{
DEBUG_PRINT("findccu recmsg: %s\n", recvline);
pStart = strstr(recvline, "!");
pEnd = strstr(recvline, "$");
if(pStart != NULL && pEnd != NULL){
memset(recvline_tmp,0x0,sizeof(recvline_tmp));
memcpy(recvline_tmp,pStart+1,(pEnd - pStart - 1));
json=cJSON_Parse(recvline_tmp);
if (!json) {
WARNING_PRINT("Error before: [%s]\n","cJSON_Parse");
}else{
opcode = cJSON_GetObjectItem(json, OPCODE_STRING);
if(opcode != NULL){
if(strcmp(opcode->valuestring,FINDCCU_OPCODE) == 0){
kk_findccu_ack(sockfd,&presaddr);
}
}
cJSON_Delete(json);
}
}else{
WARNING_PRINT("data error....\n");
}
}
DEBUG_PRINT("findccu recmsg: %s\n", recvline);
pStart = strstr(recvline, "!");
pEnd = strstr(recvline, "$");
if(pStart != NULL && pEnd != NULL){
memset(recvline_tmp,0x0,sizeof(recvline_tmp));
memcpy(recvline_tmp,pStart+1,(pEnd - pStart - 1));
json=cJSON_Parse(recvline_tmp);
if (!json) {
WARNING_PRINT("Error before: [%s]\n","cJSON_Parse");
}else{
opcode = cJSON_GetObjectItem(json, OPCODE_STRING);
if(opcode != NULL){
if(strcmp(opcode->valuestring,FINDCCU_OPCODE) == 0){
kk_findccu_ack(sockfd,&presaddr);
}
}
cJSON_Delete(json);
}
}else{
WARNING_PRINT("data error....\n");
}
}
}
return NULL;
return NULL;
}
int kk_findccu_handle_init(void)
{
int rc = 0;
size_t s = 1500;
pthread_t findccu_thread_handle;
pthread_attr_t findccu_thread_attr;
//pthread_mutex_init(&s_data_mutex, NULL);
/*创建线程*/
pthread_attr_init(&findccu_thread_attr);
pthread_attr_setstacksize(&findccu_thread_attr, s);
pthread_attr_setdetachstate(&findccu_thread_attr, PTHREAD_CREATE_DETACHED);
rc = pthread_create(&findccu_thread_handle, &findccu_thread_attr, kk_findccu_handle, (void *)NULL); //收数据
if (rc)
{
WARNING_PRINT("Error : unable to create thread udp_recv \r\n");
return -1;
}
pthread_attr_destroy(&findccu_thread_attr);
return 0;
int rc = 0;
size_t s = 1500;
pthread_t findccu_thread_handle;
pthread_attr_t findccu_thread_attr;
//pthread_mutex_init(&s_data_mutex, NULL);
/*创建线程*/
pthread_attr_init(&findccu_thread_attr);
pthread_attr_setstacksize(&findccu_thread_attr, s);
pthread_attr_setdetachstate(&findccu_thread_attr, PTHREAD_CREATE_DETACHED);
rc = pthread_create(&findccu_thread_handle, &findccu_thread_attr, kk_findccu_handle, (void *)NULL); //收数据
if (rc)
{
WARNING_PRINT("Error : unable to create thread udp_recv \r\n");
return -1;
}
pthread_attr_destroy(&findccu_thread_attr);
return 0;
}
\ No newline at end of file
......@@ -24,18 +24,40 @@
#include "kk_findccu_handle.h"
#include "kk_login_handle.h"
#include "kk_data_handle.h"
//#include "kcloud_log.h"
//#include "kk_lan_queue.h"
#include "kk_lan_node_db.h"
static void sig_handler(int sig)
{
printf("Received signal: %d\n", sig);
abort();
}
int main(int argc, char* argv[])
{
int rc = 0;
char *ppp;
open("kk_lan",LOG_PID,LOG_USER);
/*set the callback to get the device date to cloud*/
kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromMid,NULL,NULL);
kk_findccu_handle_init();
kk_map_dev_init();
kk_login_init();
struct sigaction sig = {0};
sig.sa_handler = sig_handler;
sig.sa_flags = 0;
for(int i=0;i<31;i++){
//sigaction(i, &sig, NULL);
}
//lan_queue_init();
kk_lan_db_node_init();
kk_handle_sync_info();
while(1){
//count++;
//if(count == 10){
......
This diff is collapsed.
......@@ -16,10 +16,21 @@
#define OPEARTETYPE_STRING "operateType"
#define NEWCCU_STRING "newccu"
#define OLDCCU_STRING "oldccu"
#define FINDCCU_OPCODE "FIND_CCU"
#define LOGIN_OPCODE "LOGIN"
#define HEARTBEAT_OPCODE "CCU_HB"
#define SYNC_OPCODE "SYNC_INFO"
#define GET_ZB_DEVS_HW_INFO_OPCODE "GET_ZIGBEE_DEVS_HW_INFO"
#define SWITCH_OPCODE "SWITCH"
#define VALUERANGE_STRING "valueRange"
#define DEVICE_FIELD_STRING "device_field"
#define DEVICE_FIELD_IDNDEX_STRING "device_field_index"
......@@ -31,4 +42,4 @@
#define OPERATE_TYPE_STRING "operate_type"
#define ROOM_ID_STRING "room_id"
#define DEVICE_STATUS_STRING "device_status"
#endif
\ No newline at end of file
#endif
......@@ -6,8 +6,11 @@
#define APP2MID "ipc:///tmp/app2mid.ipc"
#define APP2MID_PUBSUB "ipc:///tmp/app2mid_pubsub.ipc"
#define PLAT2MID "ipc:///tmp/plat2mid.ipc"
//#define GW2CCU_PIPE "tcp://%s:5555"
//#define GW2CCU_PUBSUB "tcp://%s:5557"
#define GW2CCU_PIPE "tcp://%s:35567"
#define GW2CCU_PUBSUB "tcp://%s:35568"
#define MAGIC "magic12"
#define MAGIC_ACK "magic12ack"
#define FILTERSTR "|"
......
......@@ -38,6 +38,11 @@ typedef enum {
#define MSG_PAYLOAD_STR "payload"
#define MSG_INFO_STR "info"
#define MSG_INDENTIFIER_STR "identifier"
#define MSG_DATA_TYPE_STR "dataType"
#define MSG_PARAMS_STR "params"
#define MSG_IOTClOUDSTATE_STR "IOTCloudState"
#define MSG_TOPO_CHANGE_TYPE_STR "changeType"
......@@ -64,6 +69,8 @@ typedef enum {
#define MSG_TIMER_SETCOUNTDOWN_GETCOUNTDOWN "getCountDown"
#define MSG_PROPERTY_STR "property"
#define MSG_PROPERTIES_STR "properties"
#define MSG_ONLINE_STATUS_STR "onlineStatus"
/************************LOCK KEY*************************/
#define MSG_KEYDELETE_NOTIFICATION_KEYID "KeyDeletedNotification.KeyID"
#define MSG_KEYDELETE_NOTIFICATION_KEYTYPE "KeyDeletedNotification.KeyType"
......
......@@ -31,7 +31,7 @@
#define PRODUCT_TPYE "kk"
#define CCU_LAN "eth1"
#define KK_CCU_ID "CCU_77777"
#define KK_CCU_ID "CCU_77771"
#define KK_CCU_PRODUCTID "ccu_n12"
#define KK_GW_PRODUCTID "gateway_2"
#define KK_CCU_RANDOM "0000000000"
......
......@@ -13,7 +13,7 @@ COMP_LIB_COMPONENTS := \
#SUBDIRS += application/kcloud
$(call Append_Conditional, SUBDIRS, application/kcloud, KCLOUD_PLATFORM_SUPPORT)
$(call Append_Conditional, SUBDIRS, application/kk_luoma, LUOMA_PLATFORM_SUPPORT)
SUBDIRS += application/oled
#SUBDIRS += application/oled
SUBDIRS += application/klansdk
SUBDIRS += midware/midware
SUBDIRS += common/mqtt
......
......@@ -154,6 +154,8 @@ static int kk_get_properties_info(char *deviceCode,cJSON *obj)
valueType == KK_TSL_DATA_TYPE_ENUM||
valueType == KK_TSL_DATA_TYPE_BOOL){
cJSON_AddNumberToObject(propertyItem, propertyStr, atoi(valueStr));
}else if(valueType == KK_TSL_DATA_TYPE_DOUBLE){
cJSON_AddNumberToObject(propertyItem, propertyStr, atof(valueStr));
}
}
cJSON_AddItemToObject(obj, KK_SYNC_PROPERTY_STR, propertyItem);
......
......@@ -139,29 +139,29 @@ int kk_utils_itoa(_IN_ int input, _OU_ char **output)
}
void *kk_MutexCreate(void)
{
int err_num;
pthread_mutex_t *mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t));
if (NULL == mutex)
int err_num;
pthread_mutex_t *mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t));
if (NULL == mutex)
{
return NULL;
}
return NULL;
}
if (0 != (err_num = pthread_mutex_init(mutex, NULL)))
if (0 != (err_num = pthread_mutex_init(mutex, NULL)))
{
printf("create mutex failed\n");
free(mutex);
return NULL;
}
printf("create mutex failed\n");
free(mutex);
return NULL;
}
return mutex;
return mutex;
}
void kk_MutexLock(void *mutex)
{
int err_num;
if (0 != (err_num = pthread_mutex_lock((pthread_mutex_t *)mutex)))
int err_num;
if (0 != (err_num = pthread_mutex_lock((pthread_mutex_t *)mutex)))
{
printf("lock mutex failed: - '%s' (%d)\n", strerror(err_num), err_num);
}
printf("lock mutex failed: - '%s' (%d)\n", strerror(err_num), err_num);
}
}
void kk_MutexUnLock(void *mutex)
......
......@@ -80,8 +80,8 @@ static inline void dlist_init(dlist_t *node)
static inline void INIT_AOS_DLIST_HEAD(dlist_t *list)
{
list->next = list;
list->prev = list;
list->next = list;
list->prev = list;
}
static inline int dlist_empty(const dlist_t *head)
......
......@@ -24,14 +24,14 @@
{
"opcode":"SWITCH",
"identifiermap":"PowerSwitch_1",
"dataType":"string",
"dataType":"map",
"channel":"1",
"valueRange":["OFF","ON"]
},
{
"opcode":"SWITCH",
"identifiermap":"PowerSwitch_2",
"dataType":"string",
"dataType":"map",
"channel":"2",
"valueRange":["OFF","ON"]
}
......
This diff is collapsed.
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