Commit 8fd421e1 authored by 尹佳钦's avatar 尹佳钦

20210713:问题

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