Commit f7abf54d authored by 尹佳钦's avatar 尹佳钦

20210727

parent af5cfaad
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
#define PORT 8092 #define PORT 8092
#define GET_KEY_CMD "/usr/sbin/fw_printenv key -n" #define GET_KEY_CMD "/usr/sbin/fw_printenv key -n"
typedef enum { typedef enum {
RETURN_FAIL = -1, RETURN_FAIL = -1,
RETURN_SUCCESS = 0, RETURN_SUCCESS = 0,
} kk_kcloud_error_code_t; } kk_kcloud_error_code_t;
......
...@@ -67,27 +67,26 @@ static char *s_split_product[] = { ...@@ -67,27 +67,26 @@ static char *s_split_product[] = {
"3024" //肖邦系列三路面板 "3024" //肖邦系列三路面板
}; };
static int kk_utils_memtok(_IN_ char *input, _IN_ int input_len, _IN_ char delimiter, _IN_ int index, _OU_ int *offset) static int kk_utils_memtok(_IN_ char *input, _IN_ int input_len, _IN_ char delimiter, _IN_ int index, _OU_ int *offset)
{ {
int item_index = 0; int item_index = 0;
int count = 0; int count = 0;
if (input == NULL || input_len <= 0 || offset == NULL) { if (input == NULL || input_len <= 0 || offset == NULL) {
return -2; return -2;
} }
for (item_index = 0; item_index < input_len; item_index++) { for (item_index = 0; item_index < input_len; item_index++) {
if (input[item_index] == delimiter && (item_index + 1) < input_len) { if (input[item_index] == delimiter && (item_index + 1) < input_len) {
count++; count++;
if (count == index) { if (count == index) {
*offset = item_index; *offset = item_index;
return 0; return 0;
} }
} }
} }
return -1; return -1;
} }
/************************************************************ /************************************************************
*功能描述:灯控面板需要分开上报属性 *功能描述:灯控面板需要分开上报属性
...@@ -232,7 +231,6 @@ int _kk_sendto_cloud(cJSON *root) ...@@ -232,7 +231,6 @@ int _kk_sendto_cloud(cJSON *root)
free(out); free(out);
free(topic); free(topic);
return RETURN_SUCCESS; return RETURN_SUCCESS;
} }
else if(strstr(msgTypeStr->valuestring,KK_FILTER_TOPO_BATCH_DELETE) != NULL){ else if(strstr(msgTypeStr->valuestring,KK_FILTER_TOPO_BATCH_DELETE) != NULL){
cJSON *params = NULL; cJSON *params = NULL;
...@@ -309,7 +307,7 @@ void KK_Data_FromDev(void* str,int len) ...@@ -309,7 +307,7 @@ void KK_Data_FromDev(void* str,int len)
} }
root=cJSON_Parse((char*)str); root=cJSON_Parse((char*)str);
if(root == NULL){ if(root == NULL){
ERROR_PRINT("[%s][%d] root is null \n",__FUNCTION__,__LINE__); ERROR_PRINT("[%s][%d] root is null \n",__FUNCTION__,__LINE__);
return; return;
} }
cmd = cJSON_GetObjectItem(root, "cmd"); cmd = cJSON_GetObjectItem(root, "cmd");
...@@ -377,16 +375,16 @@ static int _check_invalid_topic(const char* topic) ...@@ -377,16 +375,16 @@ static int _check_invalid_topic(const char* topic)
*************************************************************/ *************************************************************/
static int _kk_topic_parse_msgType(_IN_ char *topic, _IN_ int start_deli,_OU_ char **msgTypeStr) static int _kk_topic_parse_msgType(_IN_ char *topic, _IN_ int start_deli,_OU_ char **msgTypeStr)
{ {
int res = 0, start = 0, len = 0; int res = 0, start = 0, len = 0;
char *msgTypeStr_tmp = NULL; char *msgTypeStr_tmp = NULL;
if (topic == NULL) { if (topic == NULL) {
return RETURN_FAIL; return RETURN_FAIL;
} }
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli, &start); res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli, &start);
if (res != 0) { if (res != 0) {
return RETURN_FAIL; return RETURN_FAIL;
} }
len = strlen(topic) - start + 1; len = strlen(topic) - start + 1;
msgTypeStr_tmp = (char*)malloc(len+1); msgTypeStr_tmp = (char*)malloc(len+1);
if(msgTypeStr_tmp == NULL){ if(msgTypeStr_tmp == NULL){
...@@ -401,7 +399,7 @@ static int _kk_topic_parse_msgType(_IN_ char *topic, _IN_ int start_deli,_OU_ ch ...@@ -401,7 +399,7 @@ static int _kk_topic_parse_msgType(_IN_ char *topic, _IN_ int start_deli,_OU_ ch
/* dm_log_debug("URI Product Key: %.*s, Device Name: %.*s", slice - start - 1, uri + start + 1, end - slice - 1, /* dm_log_debug("URI Product Key: %.*s, Device Name: %.*s", slice - start - 1, uri + start + 1, end - slice - 1,
uri + slice + 1); */ uri + slice + 1); */
return RETURN_SUCCESS; return RETURN_SUCCESS;
} }
/************************************************************ /************************************************************
...@@ -415,31 +413,31 @@ static int _kk_topic_parse_msgType(_IN_ char *topic, _IN_ int start_deli,_OU_ ch ...@@ -415,31 +413,31 @@ static int _kk_topic_parse_msgType(_IN_ char *topic, _IN_ int start_deli,_OU_ ch
*************************************************************/ *************************************************************/
static int _kk_topic_parse_pkdn(_IN_ char *topic, _IN_ int start_deli, static int _kk_topic_parse_pkdn(_IN_ char *topic, _IN_ int start_deli,
_OU_ char productCode[PRODUCT_CODE_LEN],_OU_ char deviceCode[DEVICE_CODE_LEN]) _OU_ char productCode[PRODUCT_CODE_LEN],_OU_ char deviceCode[DEVICE_CODE_LEN])
{ {
int res = 0, start = 0, end = 0, slice = 0; int res = 0, start = 0, end = 0, slice = 0;
if (topic == NULL || deviceCode == NULL) { if (topic == NULL || deviceCode == NULL) {
return RETURN_FAIL; return RETURN_FAIL;
} }
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli, &start); res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli, &start);
if (res != 0) { if (res != 0) {
return RETURN_FAIL; return RETURN_FAIL;
} }
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli + 1, &slice); res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli + 1, &slice);
if (res != 0) { if (res != 0) {
return RETURN_FAIL; return RETURN_FAIL;
} }
res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli + 2, &end); res = kk_utils_memtok(topic, strlen(topic), KK_TOPIC_SERVICE_DELIMITER, start_deli + 2, &end);
if (res != 0) { if (res != 0) {
return RETURN_FAIL; return RETURN_FAIL;
} }
memcpy(productCode, topic + start + 1, slice - start - 1); memcpy(productCode, topic + start + 1, slice - start - 1);
memcpy(deviceCode, topic + slice + 1, end - slice - 1); memcpy(deviceCode, topic + slice + 1, end - slice - 1);
return RETURN_SUCCESS; return RETURN_SUCCESS;
} }
/************************************************************ /************************************************************
...@@ -451,27 +449,27 @@ static int _kk_topic_parse_pkdn(_IN_ char *topic, _IN_ int start_deli, ...@@ -451,27 +449,27 @@ static int _kk_topic_parse_pkdn(_IN_ char *topic, _IN_ int start_deli,
*************************************************************/ *************************************************************/
static int _kk_topo_change_handle(cJSON *payload) static int _kk_topo_change_handle(cJSON *payload)
{ {
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR); cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(paramStr == NULL){ if(paramStr == NULL){
ERROR_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__); ERROR_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__);
return RETURN_FAIL; return RETURN_FAIL;
} }
cJSON *state = cJSON_GetObjectItem(paramStr, MSG_TOPO_CHANGE_TYPE_STR); cJSON *state = cJSON_GetObjectItem(paramStr, MSG_TOPO_CHANGE_TYPE_STR);
if(state != NULL && state->valueint == 1){ if(state != NULL && state->valueint == 1){
cJSON *deviceArray = cJSON_GetObjectItem(paramStr, MSG_TOPO_CHANGE_DEVICES_STR); cJSON *deviceArray = cJSON_GetObjectItem(paramStr, MSG_TOPO_CHANGE_DEVICES_STR);
if(deviceArray == NULL){ if(deviceArray == NULL){
ERROR_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__); ERROR_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__);
return RETURN_FAIL; return RETURN_FAIL;
} }
cJSON * item = deviceArray->child; cJSON * item = deviceArray->child;
while(item != NULL){ while(item != NULL){
char *deviceCode = cJSON_GetObjectItem(item,MSG_DEVICE_CODE_STR)->valuestring; char *deviceCode = cJSON_GetObjectItem(item,MSG_DEVICE_CODE_STR)->valuestring;
char *productCode = cJSON_GetObjectItem(item,MSG_PRODUCT_CODE_STR)->valuestring; char *productCode = cJSON_GetObjectItem(item,MSG_PRODUCT_CODE_STR)->valuestring;
KK_Subdev_UnSubscribe_By_DeviceCode(deviceCode,productCode); KK_Subdev_UnSubscribe_By_DeviceCode(deviceCode,productCode);
item = item->next; item = item->next;
} }
} }
return RETURN_SUCCESS; return RETURN_SUCCESS;
} }
...@@ -490,8 +488,8 @@ static char * _kk_data_create(const char *topic,const char *data) ...@@ -490,8 +488,8 @@ static char * _kk_data_create(const char *topic,const char *data)
char *infoStr = NULL; char *infoStr = NULL;
int infoStr_len = 0; int infoStr_len = 0;
int res = 0; int res = 0;
char productCode[PRODUCT_CODE_LEN] = {0}; char productCode[PRODUCT_CODE_LEN] = {0};
char deviceCode[DEVICE_CODE_LEN] = {0}; char deviceCode[DEVICE_CODE_LEN] = {0};
char * msgStr = NULL; char * msgStr = NULL;
res =_kk_topic_parse_pkdn((char *)topic,2,productCode,deviceCode); res =_kk_topic_parse_pkdn((char *)topic,2,productCode,deviceCode);
...@@ -507,13 +505,12 @@ static char * _kk_data_create(const char *topic,const char *data) ...@@ -507,13 +505,12 @@ static char * _kk_data_create(const char *topic,const char *data)
free(msgStr); free(msgStr);
return NULL; return NULL;
} }
memset(infoStr,0x0,infoStr_len); memset(infoStr,0x0,infoStr_len);
snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,msgStr,productCode,deviceCode); snprintf(infoStr,infoStr_len,DM_MSG_TO_MIDDWARE,msgStr,productCode,deviceCode);
root=cJSON_CreateObject(); root=cJSON_CreateObject();
cJSON* infoObj = cJSON_Parse(infoStr); cJSON* infoObj = cJSON_Parse(infoStr);
cJSON* payloadObj = cJSON_Parse(data); cJSON* payloadObj = cJSON_Parse(data);
#if 1 #if 1
cJSON * params = cJSON_GetObjectItem(payloadObj,"params"); cJSON * params = cJSON_GetObjectItem(payloadObj,"params");
if(params != NULL){ if(params != NULL){
...@@ -530,8 +527,8 @@ static char * _kk_data_create(const char *topic,const char *data) ...@@ -530,8 +527,8 @@ static char * _kk_data_create(const char *topic,const char *data)
} }
} }
#endif #endif
cJSON_AddItemToObject(root, MSG_INFO_STR, infoObj); cJSON_AddItemToObject(root, MSG_INFO_STR, infoObj);
cJSON_AddItemToObject(root, MSG_PAYLOAD_STR,payloadObj); cJSON_AddItemToObject(root, MSG_PAYLOAD_STR,payloadObj);
if(strstr(topic,KK_TOPO_CHANGE_MSG_STR)){ if(strstr(topic,KK_TOPO_CHANGE_MSG_STR)){
_kk_topo_change_handle(payloadObj); _kk_topo_change_handle(payloadObj);
} }
...@@ -583,16 +580,16 @@ int KK_Send_CloudState(int state) ...@@ -583,16 +580,16 @@ int KK_Send_CloudState(int state)
snprintf(payloadStr,payloadStr_len,DM_MSG_CLOUDSTATE,state); snprintf(payloadStr,payloadStr_len,DM_MSG_CLOUDSTATE,state);
root=cJSON_CreateObject(); root=cJSON_CreateObject();
cJSON* infoObj = cJSON_Parse(infoStr); cJSON* infoObj = cJSON_Parse(infoStr);
cJSON* payloadObj = cJSON_Parse(payloadStr); cJSON* payloadObj = cJSON_Parse(payloadStr);
cJSON_AddItemToObject(root, MSG_INFO_STR, infoObj); cJSON_AddItemToObject(root, MSG_INFO_STR, infoObj);
cJSON_AddItemToObject(root, MSG_PAYLOAD_STR,payloadObj); cJSON_AddItemToObject(root, MSG_PAYLOAD_STR,payloadObj);
out=cJSON_Print(root); out=cJSON_Print(root);
kk_ipc_send(IPC_APP2MID, out, strlen(out)+1); kk_ipc_send(IPC_APP2MID, out, strlen(out)+1);
cJSON_Delete(root); cJSON_Delete(root);
free(payloadStr); free(payloadStr);
free(infoStr); free(infoStr);
INFO_PRINT("[%s][%d]%s\n",__FUNCTION__,__LINE__,out); INFO_PRINT("[%s][%d]%s\n",__FUNCTION__,__LINE__,out);
free(out); free(out);
return RETURN_SUCCESS; return RETURN_SUCCESS;
} }
......
...@@ -61,7 +61,6 @@ extern int kk_info_report_start(void); ...@@ -61,7 +61,6 @@ extern int kk_info_report_start(void);
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
int rc = 0; int rc = 0;
open("kcloud",LOG_PID,LOG_USER); open("kcloud",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_FromDev,NULL,NULL); kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromDev,NULL,NULL);
......
This diff is collapsed.
...@@ -34,7 +34,7 @@ int KK_Subdev_Subscribe(const cJSON *root) ...@@ -34,7 +34,7 @@ int KK_Subdev_Subscribe(const cJSON *root)
cJSON *productCode = NULL; cJSON *productCode = NULL;
cJSON *data = NULL; cJSON *data = NULL;
//cJSON *cmd = NULL; //cJSON *cmd = NULL;
int url_len = 0; int url_len = 0;
data = cJSON_GetObjectItem(root, "data"); data = cJSON_GetObjectItem(root, "data");
if(data == NULL){ if(data == NULL){
...@@ -48,59 +48,61 @@ int KK_Subdev_Subscribe(const cJSON *root) ...@@ -48,59 +48,61 @@ int KK_Subdev_Subscribe(const cJSON *root)
if(productCode == NULL){ if(productCode == NULL){
return -1; return -1;
} }
url_len = strlen(KK_URI_SYS_PREFIX) + strlen(productCode->valuestring) + strlen(deviceCode->valuestring) + 1; url_len = strlen(KK_URI_SYS_PREFIX) + strlen(productCode->valuestring) + strlen(deviceCode->valuestring) + 1;
char *url = malloc(url_len); char *url = malloc(url_len);
if (url == NULL) { if (url == NULL) {
return -1; return -1;
} }
memset(url, 0, url_len); memset(url, 0, url_len);
snprintf(url, url_len, KK_URI_OTA_PREFIX, productCode->valuestring, deviceCode->valuestring); snprintf(url, url_len, KK_URI_OTA_PREFIX, productCode->valuestring, deviceCode->valuestring);
INFO_PRINT("ota [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url); INFO_PRINT("ota [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
res = KK_MQTT_SubTopic(url); res = KK_MQTT_SubTopic(url);
memset(url, 0, url_len); memset(url, 0, url_len);
snprintf(url, url_len, KK_URI_SYS_PREFIX, productCode->valuestring, deviceCode->valuestring); snprintf(url, url_len, KK_URI_SYS_PREFIX, productCode->valuestring, deviceCode->valuestring);
INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url); INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
res = KK_MQTT_SubTopic(url); res = KK_MQTT_SubTopic(url);
memset(url, 0, url_len);
snprintf(url, url_len, KK_URI_SYS_PREFIX_SERVICE, productCode->valuestring, deviceCode->valuestring); memset(url, 0, url_len);
INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url); snprintf(url, url_len, KK_URI_SYS_PREFIX_SERVICE, productCode->valuestring, deviceCode->valuestring);
res = KK_MQTT_SubTopic(url); INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
memset(url, 0, url_len); res = KK_MQTT_SubTopic(url);
snprintf(url, url_len, KK_URI_SYS_PREFIX_TOPO_CHANGE, productCode->valuestring, deviceCode->valuestring);
INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url); memset(url, 0, url_len);
res = KK_MQTT_SubTopic(url); snprintf(url, url_len, KK_URI_SYS_PREFIX_TOPO_CHANGE, productCode->valuestring, deviceCode->valuestring);
free(url); INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
res = KK_MQTT_SubTopic(url);
free(url);
return res; return res;
} }
static int _kk_ccu_topic_subscribe(char productCode[PRODUCT_CODE_LEN],char deviceCode[DEVICE_CODE_LEN]) static int _kk_ccu_topic_subscribe(char productCode[PRODUCT_CODE_LEN],char deviceCode[DEVICE_CODE_LEN])
{ {
int res = 0; int res = 0;
int url_len = 0;
url_len = strlen(KK_URI_SYS_PREFIX_SERVICE) + strlen(productCode)+strlen(deviceCode) + 1;
char *url = malloc(url_len);
if (url == NULL) {
return -1;
}
int url_len = 0; //memset(url, 0, url_len);
url_len = strlen(KK_URI_SYS_PREFIX_SERVICE) + strlen(productCode)+strlen(deviceCode) + 1; //snprintf(url, url_len, KK_URI_OTA_PREFIX, productCode,deviceCode);
char *url = malloc(url_len); //INFO_PRINT("ota [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
if (url == NULL) { //res = KK_MQTT_SubTopic(url);
return -1;
}
//memset(url, 0, url_len); memset(url, 0, url_len);
//snprintf(url, url_len, KK_URI_OTA_PREFIX, productCode,deviceCode);
//INFO_PRINT("ota [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
//res = KK_MQTT_SubTopic(url);
memset(url, 0, url_len);
snprintf(url, url_len, KK_URI_SYS_PREFIX_SERVICE, productCode,deviceCode); snprintf(url, url_len, KK_URI_SYS_PREFIX_SERVICE, productCode,deviceCode);
INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url); INFO_PRINT("sys [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
res = KK_MQTT_SubTopic(url); res = KK_MQTT_SubTopic(url);
free(url); free(url);
return res; return res;
} }
static int s_ccu_topic_sub = 0; static int s_ccu_topic_sub = 0;
int KK_CCU_TOPIC_Subscribe(void) int KK_CCU_TOPIC_Subscribe(void)
...@@ -118,70 +120,70 @@ int KK_CCU_TOPIC_Subscribe(void) ...@@ -118,70 +120,70 @@ int KK_CCU_TOPIC_Subscribe(void)
} }
static int _kk_utils_topic(_IN_ const char *name, _IN_ char *product_code, static int _kk_utils_topic(_IN_ const char *name, _IN_ char *product_code,
_IN_ char *device_code, _OU_ char **topic) _IN_ char *device_code, _OU_ char **topic)
{ {
int service_name_len = 0; int service_name_len = 0;
if (name == NULL|| product_code == NULL || device_code == NULL || if (name == NULL|| product_code == NULL || device_code == NULL ||
topic == NULL || *topic != NULL) { topic == NULL || *topic != NULL) {
return -1; return -1;
} }
service_name_len = strlen(KK_URI_SYS_PREFIX_EX) + strlen(product_code) + strlen(device_code) service_name_len = strlen(KK_URI_SYS_PREFIX_EX) + strlen(product_code) + strlen(device_code)
+ strlen(name)+1; + strlen(name)+1;
*topic = malloc(service_name_len); *topic = malloc(service_name_len);
if (*topic == NULL) { if (*topic == NULL) {
return -1; return -1;
} }
memset(*topic, 0, service_name_len); memset(*topic, 0, service_name_len);
snprintf(*topic, service_name_len, KK_URI_SYS_PREFIX_EX, product_code, device_code); snprintf(*topic, service_name_len, KK_URI_SYS_PREFIX_EX, product_code, device_code);
if (name != NULL) { if (name != NULL) {
memcpy(*topic + strlen(*topic), name, strlen(name)); memcpy(*topic + strlen(*topic), name, strlen(name));
} }
return 0; return 0;
} }
static int _kk_utils_topic_ota(_IN_ char* str, _OU_ char **topic) static int _kk_utils_topic_ota(_IN_ char* str, _OU_ char **topic)
{ {
int service_name_len = 0; int service_name_len = 0;
if (str == NULL ||topic == NULL || *topic != NULL) { if (str == NULL ||topic == NULL || *topic != NULL) {
return -1; return -1;
} }
service_name_len = strlen(str)+1; service_name_len = strlen(str)+1;
*topic = malloc(service_name_len); *topic = malloc(service_name_len);
if (*topic == NULL) { if (*topic == NULL) {
return -1; return -1;
} }
memset(*topic, 0, service_name_len); memset(*topic, 0, service_name_len);
memcpy(*topic,str,service_name_len); memcpy(*topic,str,service_name_len);
return 0; return 0;
} }
int KK_Subdev_UnSubscribe_By_DeviceCode(const char *deviceCode,const char *productCode ) int KK_Subdev_UnSubscribe_By_DeviceCode(const char *deviceCode,const char *productCode )
{ {
char *topic = NULL; char *topic = NULL;
int topic_len = 0; int topic_len = 0;
topic_len = strlen(KK_URI_SYS_PREFIX) + strlen(productCode)+strlen(deviceCode) + 1; topic_len = strlen(KK_URI_SYS_PREFIX) + strlen(productCode)+strlen(deviceCode) + 1;
topic = malloc(topic_len); topic = malloc(topic_len);
if (topic == NULL) { if (topic == NULL) {
return -1; return -1;
} }
memset(topic,0,topic_len); memset(topic,0,topic_len);
snprintf(topic, topic_len, KK_URI_SYS_PREFIX, productCode,deviceCode); snprintf(topic, topic_len, KK_URI_SYS_PREFIX, productCode,deviceCode);
INFO_PRINT("[%s][%d] TOPIC:%s\n",__FUNCTION__,__LINE__,topic); INFO_PRINT("[%s][%d] TOPIC:%s\n",__FUNCTION__,__LINE__,topic);
KK_MQTT_UnsubTopic(topic); KK_MQTT_UnsubTopic(topic);
memset(topic,0,topic_len); memset(topic,0,topic_len);
snprintf(topic, topic_len, KK_URI_SYS_PREFIX_SERVICE, productCode,deviceCode); snprintf(topic, topic_len, KK_URI_SYS_PREFIX_SERVICE, productCode,deviceCode);
INFO_PRINT("[%s][%d] TOPIC:%s\n",__FUNCTION__,__LINE__,topic); INFO_PRINT("[%s][%d] TOPIC:%s\n",__FUNCTION__,__LINE__,topic);
KK_MQTT_UnsubTopic(topic); KK_MQTT_UnsubTopic(topic);
snprintf(topic, topic_len, KK_URI_SYS_PREFIX_TOPO_CHANGE, productCode,deviceCode); snprintf(topic, topic_len, KK_URI_SYS_PREFIX_TOPO_CHANGE, productCode,deviceCode);
INFO_PRINT("[%s][%d] TOPIC:%s\n",__FUNCTION__,__LINE__,topic); INFO_PRINT("[%s][%d] TOPIC:%s\n",__FUNCTION__,__LINE__,topic);
KK_MQTT_UnsubTopic(topic); KK_MQTT_UnsubTopic(topic);
free(topic); free(topic);
return 0; return 0;
} }
int KK_Subdev_UnSubscribe(cJSON *payload) int KK_Subdev_UnSubscribe(cJSON *payload)
......
...@@ -146,7 +146,7 @@ static void onOptSuccess(void* context, MQTTAsync_successData* response) ...@@ -146,7 +146,7 @@ static void onOptSuccess(void* context, MQTTAsync_successData* response)
if(strcmp((char *)context,OPT_SEND)==0) if(strcmp((char *)context,OPT_SEND)==0)
{ {
INFO_PRINT("MQTTAsync_sendMessage success,return token:%d,msg length:%d \n", INFO_PRINT("MQTTAsync_sendMessage success,return token:%d,msg length:%d \n",
response->token,response->alt.pub.message.payloadlen); response->token,response->alt.pub.message.payloadlen);
} }
else if(strcmp((char *)context,OPT_SUB)==0) else if(strcmp((char *)context,OPT_SUB)==0)
{ {
...@@ -162,7 +162,7 @@ static void onOptFail(void* context, MQTTAsync_failureData* response) ...@@ -162,7 +162,7 @@ static void onOptFail(void* context, MQTTAsync_failureData* response)
if(strcmp((char *)context,OPT_SEND)==0) if(strcmp((char *)context,OPT_SEND)==0)
{ {
WARNING_PRINT("MQTTAsync_sendMessage fail,token:%d,code:%d,msg:%s \n", WARNING_PRINT("MQTTAsync_sendMessage fail,token:%d,code:%d,msg:%s \n",
response->token,response->code,response->message); response->token,response->code,response->message);
} }
else if(strcmp((char *)context,OPT_SUB)==0) else if(strcmp((char *)context,OPT_SUB)==0)
{ {
...@@ -180,7 +180,6 @@ static void mqtt_set_callbacks(void) ...@@ -180,7 +180,6 @@ static void mqtt_set_callbacks(void)
MQTTAsync_setDeliveryCompleteCallback(s_Client,NULL,onDeliveryComplete); MQTTAsync_setDeliveryCompleteCallback(s_Client,NULL,onDeliveryComplete);
MQTTAsync_setConnected(s_Client,NULL,onConnectBuild); MQTTAsync_setConnected(s_Client,NULL,onConnectBuild);
MQTTAsync_setDisconnected(s_Client,NULL,onDisConnected); MQTTAsync_setDisconnected(s_Client,NULL,onDisConnected);
} }
void KK_Get_MqttClient(MQTTAsync *pClient) void KK_Get_MqttClient(MQTTAsync *pClient)
{ {
...@@ -202,10 +201,10 @@ MQTTAsync KK_MQTT_Connect(void) ...@@ -202,10 +201,10 @@ MQTTAsync KK_MQTT_Connect(void)
char token[512] = {0}; char token[512] = {0};
char usrname[128] = {0}; char usrname[128] = {0};
fp = fopen("/usr/kk/kk_token.txt", "r"); fp = fopen("/usr/kk/kk_token.txt", "r");
if(fp != NULL){ if(fp != NULL){
fread(token,1,sizeof(token),fp); fread(token,1,sizeof(token),fp);
fclose(fp); fclose(fp);
} }
HAL_Get_mac(mac); HAL_Get_mac(mac);
sprintf(usrname, "%s.%s", KK_CCU_ID,KK_CCU_PRODUCTID); sprintf(usrname, "%s.%s", KK_CCU_ID,KK_CCU_PRODUCTID);
printf("cliendid:%s,usrname:%s\n",g_clientId,usrname); printf("cliendid:%s,usrname:%s\n",g_clientId,usrname);
......
...@@ -478,7 +478,7 @@ static int kk_create_scene_to_sdk(cJSON *root) ...@@ -478,7 +478,7 @@ static int kk_create_scene_to_sdk(cJSON *root)
cJSON_AddItemToObject(root, "scenes", scenes); cJSON_AddItemToObject(root, "scenes", scenes);
return 0; return 0;
} }
int kk_create_syncinfo_to_sdk(void) int kk_create_syncinfo_to_sdk(cJSON *payload)
{ {
cJSON *air_box_devices; cJSON *air_box_devices;
cJSON *alarms; cJSON *alarms;
...@@ -529,6 +529,9 @@ int kk_create_syncinfo_to_sdk(void) ...@@ -529,6 +529,9 @@ int kk_create_syncinfo_to_sdk(void)
kk_create_devices_to_sdk(root); kk_create_devices_to_sdk(root);
kk_create_rooms_to_sdk(root);
#if 1 #if 1
...@@ -593,14 +596,17 @@ void KK_Data_FromMid(void* str,int len) ...@@ -593,14 +596,17 @@ void KK_Data_FromMid(void* str,int len)
if(typeJson == NULL) return; if(typeJson == NULL) return;
if (strstr(typeJson->valuestring,SYNC_MSG_TYPE_REPLY) != NULL){ if (strstr(typeJson->valuestring,SYNC_MSG_TYPE_REPLY) != NULL){
kk_parse_syncinfo(payload); kk_parse_syncinfo(payload);
kk_create_syncinfo_to_sdk(); kk_create_syncinfo_to_sdk(payload);
printf("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n"); printf("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n");
}else if((typeJson->valuestring,"/thing/event/property/post")!= NULL){ }else if(strstr(typeJson->valuestring,"/thing/event/property/post")!= NULL){
property_post_deal(deviceCode->valuestring,payload); property_post_deal(deviceCode->valuestring,payload);
}else if(strstr(typeJson->valuestring,"/thing/topo/delete")!= NULL){
device_delete_sync(payload);
}else if(strstr(typeJson->valuestring,"/thing/status/online")!= NULL){
device_add_sync(payload);
} }
} }
...@@ -162,7 +162,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId) ...@@ -162,7 +162,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId)
printf("channel=%d\n",channel); printf("channel=%d\n",channel);
printf("deviceCode=%s\n",deviceCode); printf("deviceCode=%s\n",deviceCode);
printf(",,,,\n"); printf(",,,,\n");
//INFO_PRINT("-------------->deviceCode=%s,channel=%d\n",deviceCode,channel); INFO_PRINT("-------------->deviceCode=%s,channel=%d\n",deviceCode,channel);
printf("aaa-1\n"); printf("aaa-1\n");
if(kk_check_lan_node_exist(deviceCode,channel)){ if(kk_check_lan_node_exist(deviceCode,channel)){
...@@ -187,7 +187,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId) ...@@ -187,7 +187,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId)
sprintf(nodeId,"%d",node); sprintf(nodeId,"%d",node);
printf("aaa-4\n"); printf("aaa-4\n");
//INFO_PRINT("[node]deviceCode=%s,channel=%d,node=%d,nodeId=%s\n",deviceCode,channel,node,nodeId); INFO_PRINT("[node]deviceCode=%s,channel=%d,node=%d,nodeId=%s\n",deviceCode,channel,node,nodeId);
return 0; return 0;
...@@ -280,6 +280,73 @@ int _deviceCode_switchto_mac(char * deviceCode,char *mac) ...@@ -280,6 +280,73 @@ int _deviceCode_switchto_mac(char * deviceCode,char *mac)
} }
typedef struct{
char *floor_id;
char *room_id;
char *room_icon;
char *room_name;
cJSON *room_status;
}ROOM_ITEM;
cJSON *_room_build(ROOM_ITEM *item)
{
cJSON *room = cJSON_CreateObject();
cJSON_AddStringToObject(room, "floor_id", item->floor_id);
cJSON_AddStringToObject(room, "id", item->room_id);
cJSON_AddStringToObject(room, "room_icon", item->room_icon);
cJSON_AddStringToObject(room, "name", item->room_name);
cJSON_AddItemToObject(room, "room_status", item->room_status);
return room;
}
cJSON *_rooms_build(int num,ROOM_ITEM **items)
{
cJSON *rooms = cJSON_CreateArray();
cJSON *room;
int i;
for(int i=0;i<num;i++){
room = _room_build(items[i]);
if(room!=NULL){
cJSON_AddItemToArray(rooms,room);
}
}
return rooms;
}
cJSON *kk_create_rooms_to_sdk(cJSON *payload)
{
cJSON *data_1 = cJSON_GetObjectItem(payload,"data");
cJSON *data_2 = cJSON_GetObjectItem(data_1,"data");
cJSON *rooms = cJSON_GetObjectItem(data_2,"rooms");
cJSON *room;
cJSON *roomId,*name,*devices,*scenes;
int i;
int num = cJSON_GetArraySize(rooms);
ROOM_ITEM* items = (ROOM_ITEM*)malloc(sizeof(ROOM_ITEM)*num);
ROOM_ITEM* item = item;
memset(items,0,(sizeof(ROOM_ITEM)*num));
for(i=0;i<num;i++,item++){
room = cJSON_GetArrayItem(rooms,i);
roomId = cJSON_GetObjectItem(room,"roomId");
name = cJSON_GetObjectItem(room,"name");
devices = cJSON_GetObjectItem(room,"devices");
scenes= cJSON_GetObjectItem(room,"scenes");
memcpy(item->floor_id,"",sizeof(""));
memcpy(item->room_id,roomId->valuestring,sizeof(roomId->valuestring));
memcpy(item->room_icon,"",sizeof(""));
memcpy(item->room_name,name->valuestring,sizeof(name->valuestring));
memcpy(item->room_status,"",sizeof(""));
}
_rooms_build(num,&items);
}
int kk_create_devices_to_sdk(cJSON *root) int kk_create_devices_to_sdk(cJSON *root)
{ {
...@@ -426,6 +493,8 @@ int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node) ...@@ -426,6 +493,8 @@ int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node)
{ {
kk_map_dev_ctx *ctx = _kk_map_dev_ctx(); kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
kk_map_dev_node_t *search_node = NULL; kk_map_dev_node_t *search_node = NULL;
kk_map_dev_node_t *n = NULL;
//list_for_each_entry_safe
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) { list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_map_dev_node_t) {
if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) && if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) &&
......
...@@ -35,11 +35,15 @@ static void sig_handler(int sig) ...@@ -35,11 +35,15 @@ static void sig_handler(int sig)
abort(); abort();
} }
extern void ttttt_test();
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
int rc = 0; int rc = 0;
char *ppp; char *ppp;
open("kk_lan",LOG_PID,LOG_USER); open("kk_lan",LOG_PID,LOG_USER);
ttttt_test();
/*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();
...@@ -59,6 +63,8 @@ int main(int argc, char* argv[]) ...@@ -59,6 +63,8 @@ int main(int argc, char* argv[])
while(1){ while(1){
extern void kk_scene_build_test(void);
kk_scene_build_test();
//count++; //count++;
//if(count == 10){ //if(count == 10){
//kk_ipc_send(IPC_APP2MID, "wooooooooooooooooooooooooooooooooooollllll!", strlen("wooooooooooooooooooooooooooooooooooollllll!")+1); //kk_ipc_send(IPC_APP2MID, "wooooooooooooooooooooooooooooooooooollllll!", strlen("wooooooooooooooooooooooooooooooooooollllll!")+1);
......
...@@ -21,14 +21,14 @@ typedef struct { ...@@ -21,14 +21,14 @@ typedef struct {
}nanomsg_info_t; }nanomsg_info_t;
typedef struct { typedef struct {
nanomsg_info_t ba; nanomsg_info_t ba;
nanomsg_info_t ab; nanomsg_info_t ab;
char subscrStr[20]; char subscrStr[20];
struct ev_io watcher; struct ev_io watcher;
ipc_cb* cb; ipc_cb* cb;
ipc_type type; ipc_type type;
int isconnect; int isconnect;
int sendErrCnt; int sendErrCnt;
}Bloop_ctrl_t; }Bloop_ctrl_t;
...@@ -137,45 +137,44 @@ void __loop_init(Bloop_ctrl_t *loop_ctrl, struct ev_loop* loop) ...@@ -137,45 +137,44 @@ void __loop_init(Bloop_ctrl_t *loop_ctrl, struct ev_loop* loop)
int __nanomsg_init(Bloop_ctrl_t *loop_ctrl, ipc_type type,char* chlMark, char* ip) int __nanomsg_init(Bloop_ctrl_t *loop_ctrl, ipc_type type,char* chlMark, char* ip)
{ {
loop_ctrl->ba.n = -1;
loop_ctrl->ba.n = -1; loop_ctrl->ba.s = -1;
loop_ctrl->ba.s = -1; loop_ctrl->ab.n = -1;
loop_ctrl->ab.n = -1; loop_ctrl->ab.s = -1;
loop_ctrl->ab.s = -1; memset(loop_ctrl->subscrStr, 0, sizeof(loop_ctrl->subscrStr));
memset(loop_ctrl->subscrStr, 0, sizeof(loop_ctrl->subscrStr)); if (chlMark != NULL){
if (chlMark != NULL){ if (strlen(chlMark) > sizeof(loop_ctrl->subscrStr) +1){
if (strlen(chlMark) > sizeof(loop_ctrl->subscrStr) +1){ ERROR_PRINT("__nanomsg_init chlMark is too long, need less than %d \r\n",
ERROR_PRINT("__nanomsg_init chlMark is too long, need less than %d \r\n", sizeof(loop_ctrl->subscrStr));
sizeof(loop_ctrl->subscrStr)); return -1;
return -1; }
} memcpy(loop_ctrl->subscrStr, chlMark, strlen(chlMark));
memcpy(loop_ctrl->subscrStr, chlMark, strlen(chlMark)); }
}
switch (type) { switch (type) {
case IPC_APP2MID:{ case IPC_APP2MID:{
loop_ctrl->ba.n = nn_socket(AF_SP, NN_PUSH); loop_ctrl->ba.n = nn_socket(AF_SP, NN_PUSH);
if (loop_ctrl->ba.n < 0) { if (loop_ctrl->ba.n < 0) {
ERROR_PRINT("__nanomsg_init loop_ctrl->ba.n=%d \r\n",loop_ctrl->ba.n); ERROR_PRINT("__nanomsg_init loop_ctrl->ba.n=%d \r\n",loop_ctrl->ba.n);
return -1; return -1;
} }
loop_ctrl->ab.n = nn_socket(AF_SP, NN_SUB); loop_ctrl->ab.n = nn_socket(AF_SP, NN_SUB);
if (loop_ctrl->ab.n < 0) { if (loop_ctrl->ab.n < 0) {
ERROR_PRINT("loop_ctrl->ab.n =%d \r\n",loop_ctrl->ab.n); ERROR_PRINT("loop_ctrl->ab.n =%d \r\n",loop_ctrl->ab.n);
return -1; return -1;
} }
if (nn_connect(loop_ctrl->ba.n, APP2MID) < 0) { if (nn_connect(loop_ctrl->ba.n, APP2MID) < 0) {
return -1; return -1;
} }
//订阅 //订阅
if (nn_setsockopt(loop_ctrl->ab.n, NN_SUB, NN_SUB_SUBSCRIBE, "", 0) < 0) { if (nn_setsockopt(loop_ctrl->ab.n, NN_SUB, NN_SUB_SUBSCRIBE, "", 0) < 0) {
ERROR_PRINT("nn_setsockopt failed "); ERROR_PRINT("nn_setsockopt failed ");
return -1; return -1;
} }
if (nn_connect(loop_ctrl->ab.n, APP2MID_PUBSUB) < 0) {//sub if (nn_connect(loop_ctrl->ab.n, APP2MID_PUBSUB) < 0) {//sub
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return -1; return -1;
} }
} }
break; break;
case IPC_MID2APP: { case IPC_MID2APP: {
loop_ctrl->ba.n = nn_socket(AF_SP, NN_PULL); loop_ctrl->ba.n = nn_socket(AF_SP, NN_PULL);
...@@ -273,22 +272,22 @@ int __nanomsg_init(Bloop_ctrl_t *loop_ctrl, ipc_type type,char* chlMark, char* i ...@@ -273,22 +272,22 @@ int __nanomsg_init(Bloop_ctrl_t *loop_ctrl, ipc_type type,char* chlMark, char* i
} }
break; break;
} }
size_t size = sizeof(size_t); size_t size = sizeof(size_t);
if (IPC_PLAT2MID == type || IPC_APP2MID == type){ if (IPC_PLAT2MID == type || IPC_APP2MID == type){
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if (nn_getsockopt(loop_ctrl->ab.n, NN_SOL_SOCKET, NN_RCVFD, (char *)&loop_ctrl->ab.s, &size) < 0) { if (nn_getsockopt(loop_ctrl->ab.n, NN_SOL_SOCKET, NN_RCVFD, (char *)&loop_ctrl->ab.s, &size) < 0) {
ERROR_PRINT("nn_getsockopt IPC_PLAT2MID loop_ctrl->ab.s = %d \n", loop_ctrl->ab.s); ERROR_PRINT("nn_getsockopt IPC_PLAT2MID loop_ctrl->ab.s = %d \n", loop_ctrl->ab.s);
return -1; return -1;
} }
}else{ }else{
if (nn_getsockopt(loop_ctrl->ba.n, NN_SOL_SOCKET, NN_RCVFD, (char *)&loop_ctrl->ba.s, &size) < 0) { if (nn_getsockopt(loop_ctrl->ba.n, NN_SOL_SOCKET, NN_RCVFD, (char *)&loop_ctrl->ba.s, &size) < 0) {
ERROR_PRINT("nn_getsockopt IPC_PLAT2MID loop_ctrl->ba.s = %d \n", loop_ctrl->ba.s); ERROR_PRINT("nn_getsockopt IPC_PLAT2MID loop_ctrl->ba.s = %d \n", loop_ctrl->ba.s);
return -1; return -1;
} }
} }
return 0; return 0;
} }
...@@ -314,28 +313,27 @@ void loop_thread(void *arg){ ...@@ -314,28 +313,27 @@ void loop_thread(void *arg){
int kk_ipc_init(ipc_type type, ipc_cb cb, char* chlMark, char* ip) int kk_ipc_init(ipc_type type, ipc_cb cb, char* chlMark, char* ip)
{ {
Bloop_ctrl_t* loop_ctrl; Bloop_ctrl_t* loop_ctrl;
if (IPC_MID2PLAT == type){ if (IPC_MID2PLAT == type){
loop_ctrl = &Mloop_ctrl; loop_ctrl = &Mloop_ctrl;
}else { }else {
loop_ctrl = &Bloop_ctrl; loop_ctrl = &Bloop_ctrl;
} }
if (type == IPC_PLAT2MID && (chlMark == NULL || ip == NULL)){ if (type == IPC_PLAT2MID && (chlMark == NULL || ip == NULL)){
ERROR_PRINT("parameter is error \r\n"); ERROR_PRINT("parameter is error \r\n");
return -1; return -1;
} }
if(loop_ctrl->cb != NULL){ if(loop_ctrl->cb != NULL){
WARNING_PRINT("middleware to platform ipc has been inited!\r\n"); WARNING_PRINT("middleware to platform ipc has been inited!\r\n");
return -1; return -1;
}
}
if (__nanomsg_init(loop_ctrl, type, chlMark, ip) < 0) {
if (__nanomsg_init(loop_ctrl, type, chlMark, ip) < 0) { ERROR_PRINT("nanomsg init failed\r\n");
ERROR_PRINT("nanomsg init failed\r\n"); return -1;
return -1; }
}
if (gloop == NULL){ if (gloop == NULL){
...@@ -355,8 +353,8 @@ int kk_ipc_init(ipc_type type, ipc_cb cb, char* chlMark, char* ip) ...@@ -355,8 +353,8 @@ int kk_ipc_init(ipc_type type, ipc_cb cb, char* chlMark, char* ip)
return -1; return -1;
} }
loop_ctrl->cb = cb; loop_ctrl->cb = cb;
loop_ctrl->type = type; loop_ctrl->type = type;
return 0; return 0;
} }
...@@ -398,15 +396,15 @@ int kk_ipc_deinit(ipc_type type) ...@@ -398,15 +396,15 @@ int kk_ipc_deinit(ipc_type type)
int kk_ipc_send(ipc_type type, void* data, int len) int kk_ipc_send(ipc_type type, void* data, int len)
{ {
char *chalMark = NULL; char *chalMark = NULL;
if (type == IPC_MID2PLAT){ if (type == IPC_MID2PLAT){
ERROR_PRINT(" type=IPC_MID2PLAT, please use kk_ipc_send_ex() api"); ERROR_PRINT(" type=IPC_MID2PLAT, please use kk_ipc_send_ex() api");
return -1; return -1;
}else if(type == IPC_PLAT2MID){ }else if(type == IPC_PLAT2MID){
if (strlen(Bloop_ctrl.subscrStr) > 0){ if (strlen(Bloop_ctrl.subscrStr) > 0){
chalMark = Bloop_ctrl.subscrStr; chalMark = Bloop_ctrl.subscrStr;
} }
} }
return kk_ipc_send_ex(type, data, len, chalMark); return kk_ipc_send_ex(type, data, len, chalMark);
...@@ -415,53 +413,51 @@ int kk_ipc_send(ipc_type type, void* data, int len) ...@@ -415,53 +413,51 @@ int kk_ipc_send(ipc_type type, void* data, int len)
int kk_ipc_send_ex(ipc_type type, void* data, int len, char* chalMark) int kk_ipc_send_ex(ipc_type type, void* data, int len, char* chalMark)
{ {
int ret = 0; int ret = 0;
if (data != NULL){ if (data != NULL){
int filterlen = 0; int filterlen = 0;
void* buf = NULL; void* buf = NULL;
Bloop_ctrl_t* loop_ctrl; Bloop_ctrl_t* loop_ctrl;
if (chalMark != NULL){ if (chalMark != NULL){
filterlen = strlen(chalMark) + strlen(FILTERSTR); filterlen = strlen(chalMark) + strlen(FILTERSTR);
} }
buf = nn_allocmsg(len+filterlen, 0); buf = nn_allocmsg(len+filterlen, 0);
if (buf == NULL){ if (buf == NULL){
ERROR_PRINT("nn_allocmsg failed"); ERROR_PRINT("nn_allocmsg failed");
return -1; return -1;
} }
if (filterlen > 0){ if (filterlen > 0){
memcpy(buf, chalMark, strlen(chalMark)); memcpy(buf, chalMark, strlen(chalMark));
memcpy(buf + strlen(chalMark), FILTERSTR, strlen(FILTERSTR)); memcpy(buf + strlen(chalMark), FILTERSTR, strlen(FILTERSTR));
} }
memcpy(buf + filterlen, data, len); memcpy(buf + filterlen, data, len);
if (type == IPC_MID2PLAT ){ if (type == IPC_MID2PLAT ){
loop_ctrl = &Mloop_ctrl; loop_ctrl = &Mloop_ctrl;
ret =nn_send(Mloop_ctrl.ab.n, &buf, NN_MSG, NN_DONTWAIT);//NN_DONTWAIT ret =nn_send(Mloop_ctrl.ab.n, &buf, NN_MSG, NN_DONTWAIT);//NN_DONTWAIT
}else if(type == IPC_MID2APP){ }else if(type == IPC_MID2APP){
loop_ctrl = &Bloop_ctrl; loop_ctrl = &Bloop_ctrl;
ret = nn_send(Bloop_ctrl.ab.n, &buf, NN_MSG, NN_DONTWAIT); ret = nn_send(Bloop_ctrl.ab.n, &buf, NN_MSG, NN_DONTWAIT);
} }
else{ else{
loop_ctrl = &Bloop_ctrl; loop_ctrl = &Bloop_ctrl;
ret = nn_send(Bloop_ctrl.ba.n, &buf, NN_MSG, NN_DONTWAIT); ret = nn_send(Bloop_ctrl.ba.n, &buf, NN_MSG, NN_DONTWAIT);
} }
if (ret < 0){ if (ret < 0){
ERROR_PRINT("nn_send failed with error code %d, str=%s \n", nn_errno(), nn_strerror(nn_errno())); ERROR_PRINT("nn_send failed with error code %d, str=%s \n", nn_errno(), nn_strerror(nn_errno()));
loop_ctrl->sendErrCnt++; loop_ctrl->sendErrCnt++;
loop_ctrl->isconnect = 0; loop_ctrl->isconnect = 0;
nn_freemsg(buf); nn_freemsg(buf);
}else{ }else{
loop_ctrl->sendErrCnt = 0; loop_ctrl->sendErrCnt = 0;
loop_ctrl->isconnect = 1; loop_ctrl->isconnect = 1;
} }
} }
return 0; return 0;
} }
......
...@@ -22,11 +22,11 @@ extern "C" { ...@@ -22,11 +22,11 @@ extern "C" {
//=====kk====================== //=====kk======================
typedef enum { typedef enum {
IPC_APP2MID = 0, IPC_APP2MID = 0,
IPC_MID2APP, IPC_MID2APP,
IPC_MID2PLAT, IPC_MID2PLAT,
IPC_PLAT2MID, IPC_PLAT2MID,
IPC_UNDEF IPC_UNDEF
} ipc_type; } ipc_type;
#define MSG_COMMON_MSGID "msgId" #define MSG_COMMON_MSGID "msgId"
...@@ -49,6 +49,7 @@ typedef enum { ...@@ -49,6 +49,7 @@ typedef enum {
#define MSG_TOPO_CHANGE_DEVICES_STR "devices" #define MSG_TOPO_CHANGE_DEVICES_STR "devices"
#define MSG_DEVICE_MAC "mac" #define MSG_DEVICE_MAC "mac"
#define MSG_DEVICE_PARENTCODE "parentCode" #define MSG_DEVICE_PARENTCODE "parentCode"
#define MSG_AREA_ADDROOM_DEVICENAME "name"
#define MSG_AREA_ADDROOM_ROOMNAME "roomName" #define MSG_AREA_ADDROOM_ROOMNAME "roomName"
#define MSG_AREA_ROOM_ROOMID "roomId" #define MSG_AREA_ROOM_ROOMID "roomId"
#define MSG_AREA_ROOM_EPNUM "epNum" #define MSG_AREA_ROOM_EPNUM "epNum"
......
This diff is collapsed.
...@@ -90,10 +90,10 @@ void HAL_MutexDestroy(_IN_ void *mutex) ...@@ -90,10 +90,10 @@ void HAL_MutexDestroy(_IN_ void *mutex)
void HAL_MutexLock(_IN_ void *mutex) void HAL_MutexLock(_IN_ 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)", strerror(err_num), err_num); printf("lock mutex failed: - '%s' (%d)", strerror(err_num), err_num);
} }
} }
void HAL_MutexUnlock(_IN_ void *mutex) void HAL_MutexUnlock(_IN_ void *mutex)
...@@ -135,12 +135,12 @@ time_t HAL_GetTime(void) ...@@ -135,12 +135,12 @@ time_t HAL_GetTime(void)
time_t HAL_GetTime_s(char *outStr) time_t HAL_GetTime_s(char *outStr)
{ {
time_t t; time_t t;
t = time(NULL); t = time(NULL);
sprintf(outStr,"%d",t); sprintf(outStr,"%d",t);
return t; return t;
} }
...@@ -189,7 +189,7 @@ int HAL_Get_TimeZone(void) ...@@ -189,7 +189,7 @@ int HAL_Get_TimeZone(void)
void HAL_SleepMs(_IN_ uint32_t ms) void HAL_SleepMs(_IN_ uint32_t ms)
{ {
usleep(1000 * ms); usleep(1000 * ms);
} }
void HAL_Srandom(uint32_t seed) void HAL_Srandom(uint32_t seed)
...@@ -271,22 +271,22 @@ int HAL_SetDevice_Code(_IN_ char *device_code) ...@@ -271,22 +271,22 @@ int HAL_SetDevice_Code(_IN_ char *device_code)
int HAL_GetProduct_Code(_OU_ char *product_code) int HAL_GetProduct_Code(_OU_ char *product_code)
{ {
strncpy(product_code, KK_CCU_PRODUCTID, strlen(KK_CCU_PRODUCTID)); strncpy(product_code, KK_CCU_PRODUCTID, strlen(KK_CCU_PRODUCTID));
product_code[strlen(KK_CCU_PRODUCTID)] = '\0'; product_code[strlen(KK_CCU_PRODUCTID)] = '\0';
return strlen(KK_CCU_PRODUCTID); return strlen(KK_CCU_PRODUCTID);
} }
int HAL_GetDevice_Code(_OU_ char *device_code) int HAL_GetDevice_Code(_OU_ char *device_code)
{ {
strncpy(device_code, KK_CCU_ID, strlen(KK_CCU_ID)); strncpy(device_code, KK_CCU_ID, strlen(KK_CCU_ID));
device_code[strlen(KK_CCU_ID)] = '\0'; device_code[strlen(KK_CCU_ID)] = '\0';
return strlen(KK_CCU_ID); return strlen(KK_CCU_ID);
} }
int HAL_GetVersion(_OU_ char *version) int HAL_GetVersion(_OU_ char *version)
{ {
strncpy(version, KK_CCU_VERSION, strlen(KK_CCU_VERSION)); strncpy(version, KK_CCU_VERSION, strlen(KK_CCU_VERSION));
version[strlen(KK_CCU_VERSION)] = '\0'; version[strlen(KK_CCU_VERSION)] = '\0';
return strlen(KK_CCU_VERSION); return strlen(KK_CCU_VERSION);
} }
...@@ -488,9 +488,9 @@ int HAL_Config_Read(char *buffer, int length) ...@@ -488,9 +488,9 @@ int HAL_Config_Read(char *buffer, int length)
#define REBOOT_CMD "reboot" #define REBOOT_CMD "reboot"
void HAL_Reboot(void) void HAL_Reboot(void)
{ {
if (system(REBOOT_CMD)) { if (system(REBOOT_CMD)) {
perror("HAL_Reboot failed"); perror("HAL_Reboot failed");
} }
} }
#endif #endif
#define ROUTER_INFO_PATH "/proc/net/route" #define ROUTER_INFO_PATH "/proc/net/route"
......
This diff is collapsed.
...@@ -16,14 +16,15 @@ enum{ ...@@ -16,14 +16,15 @@ enum{
enum{ enum{
DB_DEV_IDX = 0, DB_DEV_IDX = 0,
DB_DEV_ROOM_ID, DB_DEV_ROOM_ID,
DB_DEV_DEVICECODE, DB_DEV_ROOM_NAME,
DB_DEV_DEVICECODE,
DB_DEV_EPNUM, DB_DEV_EPNUM,
DB_DEV_DEV_NAME,
}; };
int kk_room_delete(const char *roomId); int kk_room_delete(const char *roomId);
int kk_room_add(const char *name,const char *roomId); int kk_room_add(const char *name,const char *roomId);
int kk_area_init(void); int kk_area_init(void);
int kk_room_dev_add(const char *roomId,const char *deviceCode,const char *epNum); int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCode,const char *epNum,const char *devName);
int kk_room_dev_remove(const char *deviceCode,const char *epNum); int kk_room_dev_remove(const char *deviceCode,const char *epNum);
int kk_room_device_list_add(const char *deviceCode); int kk_room_device_list_add(const char *deviceCode);
kk_dev_list_t* kk_get_room_deviceCode(const char* roomId); kk_dev_list_t* kk_get_room_deviceCode(const char* roomId);
......
...@@ -13,16 +13,16 @@ static dm_fota_ctx_t g_dm_fota_ctx; ...@@ -13,16 +13,16 @@ static dm_fota_ctx_t g_dm_fota_ctx;
static dm_fota_ctx_t *_dm_fota_get_ctx(void) static dm_fota_ctx_t *_dm_fota_get_ctx(void)
{ {
return &g_dm_fota_ctx; return &g_dm_fota_ctx;
} }
int dm_fota_init(void) int dm_fota_init(void)
{ {
dm_fota_ctx_t *ctx = _dm_fota_get_ctx(); dm_fota_ctx_t *ctx = _dm_fota_get_ctx();
memset(ctx, 0, sizeof(dm_fota_ctx_t)); memset(ctx, 0, sizeof(dm_fota_ctx_t));
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int dm_fota_deinit(void) int dm_fota_deinit(void)
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
typedef struct { typedef struct {
int is_report_new_config; int is_report_new_config;
} dm_fota_ctx_t; } dm_fota_ctx_t;
int dm_fota_init(void); int dm_fota_init(void);
......
...@@ -14,37 +14,37 @@ static dm_ota_ctx_t g_dm_ota_ctx; ...@@ -14,37 +14,37 @@ static dm_ota_ctx_t g_dm_ota_ctx;
static dm_ota_ctx_t *_dm_ota_get_ctx(void) static dm_ota_ctx_t *_dm_ota_get_ctx(void)
{ {
return &g_dm_ota_ctx; return &g_dm_ota_ctx;
} }
int dm_ota_init(void) int dm_ota_init(void)
{ {
dm_ota_ctx_t *ctx = _dm_ota_get_ctx(); dm_ota_ctx_t *ctx = _dm_ota_get_ctx();
memset(ctx, 0, sizeof(dm_ota_ctx_t)); memset(ctx, 0, sizeof(dm_ota_ctx_t));
HAL_GetProduct_Code(ctx->deviceCode); HAL_GetProduct_Code(ctx->deviceCode);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int dm_ota_sub(void) int dm_ota_sub(void)
{ {
dm_ota_ctx_t *ctx = _dm_ota_get_ctx(); dm_ota_ctx_t *ctx = _dm_ota_get_ctx();
void *handle = NULL; void *handle = NULL;
/* Init OTA Handle */ /* Init OTA Handle */
handle = IOT_OTA_Init(ctx->productType, ctx->deviceCode, NULL); handle = IOT_OTA_Init(ctx->productType, ctx->deviceCode, NULL);
if (handle == NULL) { if (handle == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
ctx->ota_handle = handle; ctx->ota_handle = handle;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
int ota_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int start_deli, _IN_ int end_deli, int ota_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int start_deli, _IN_ int end_deli,
_OU_ char productType[PRODUCT_TYPE_MAXLEN], _OU_ char deviceCode[DEVICE_CODE_MAXLEN]) _OU_ char productType[PRODUCT_TYPE_MAXLEN], _OU_ char deviceCode[DEVICE_CODE_MAXLEN])
{ {
int start = 0, end = 0, slice = 0; int start = 0, end = 0, slice = 0;
int item_index = 0; int item_index = 0;
...@@ -79,7 +79,7 @@ int ota_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int start_deli, _I ...@@ -79,7 +79,7 @@ int ota_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int start_deli, _I
memcpy(productType, uri + start + 1, slice - start - 1); memcpy(productType, uri + start + 1, slice - start - 1);
memcpy(deviceCode, uri + slice + 1, end - slice - 1); memcpy(deviceCode, uri + slice + 1, end - slice - 1);
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -98,14 +98,14 @@ int dm_ota_setPKN(char productType[PRODUCT_TYPE_MAXLEN],char deviceCode[DEVICE_C ...@@ -98,14 +98,14 @@ int dm_ota_setPKN(char productType[PRODUCT_TYPE_MAXLEN],char deviceCode[DEVICE_C
int dm_ota_deinit(void) int dm_ota_deinit(void)
{ {
dm_ota_ctx_t *ctx = _dm_ota_get_ctx(); dm_ota_ctx_t *ctx = _dm_ota_get_ctx();
if (ctx->ota_handle) { if (ctx->ota_handle) {
IOT_OTA_Deinit(ctx->ota_handle); IOT_OTA_Deinit(ctx->ota_handle);
ctx->ota_handle = NULL; ctx->ota_handle = NULL;
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
#if 0 #if 0
...@@ -154,97 +154,92 @@ int dm_ota_switch_device(int devid) ...@@ -154,97 +154,92 @@ int dm_ota_switch_device(int devid)
int dm_ota_get_ota_handle(void **handle) int dm_ota_get_ota_handle(void **handle)
{ {
dm_ota_ctx_t *ctx = _dm_ota_get_ctx(); dm_ota_ctx_t *ctx = _dm_ota_get_ctx();
if (handle == NULL || *handle != NULL) { if (handle == NULL || *handle != NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
if (ctx->ota_handle == NULL) { if (ctx->ota_handle == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
*handle = ctx->ota_handle; *handle = ctx->ota_handle;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
void dm_ota_handle(void *data){ void dm_ota_handle(void *data){
printf("dm_ota_handle ================== [%s]\n",(char*)data); printf("dm_ota_handle ================== [%s]\n",(char*)data);
cJSON *json,*info_root,*info; cJSON *json,*info_root,*info;
cJSON *typeJson; cJSON *typeJson;
cJSON *payload; cJSON *payload;
cJSON *product_type,*device_code; cJSON *product_type,*device_code;
json=cJSON_Parse(data); json=cJSON_Parse(data);
if (json == NULL) { if (json == NULL) {
printf("Error before: [%s]\n","cJSON_Parse"); printf("Error before: [%s]\n","cJSON_Parse");
return; return;
} }
info_root = cJSON_GetObjectItem(json, MSG_INFO_STR); info_root = cJSON_GetObjectItem(json, MSG_INFO_STR);
info = cJSON_Parse(info_root->valuestring); info = cJSON_Parse(info_root->valuestring);
typeJson = cJSON_GetObjectItem(info, MSG_TYPE_STR); typeJson = cJSON_GetObjectItem(info, MSG_TYPE_STR);
product_type = cJSON_GetObjectItem(info, MSG_PRODUCT_TYPE_STR); product_type = cJSON_GetObjectItem(info, MSG_PRODUCT_TYPE_STR);
device_code = cJSON_GetObjectItem(info, MSG_DEVICE_CODE_STR); device_code = cJSON_GetObjectItem(info, MSG_DEVICE_CODE_STR);
payload = cJSON_GetObjectItem(json, MSG_PAYLOAD_STR); payload = cJSON_GetObjectItem(json, MSG_PAYLOAD_STR);
printf(" payload= %s \n",payload->valuestring ); printf(" payload= %s \n",payload->valuestring );
if (strstr(typeJson->valuestring,KK_THING_OTA_DEVICE_UPGRADE)){ if (strstr(typeJson->valuestring,KK_THING_OTA_DEVICE_UPGRADE)){
char buf[128] = {0}; char buf[128] = {0};
int len = 128; int len = 128;
if (dm_ota_check(payload->valuestring, strlen(payload->valuestring)+1, IOTX_OTA_TOPIC_TYPE_DEVICE_UPGRATE) == 0){ if (dm_ota_check(payload->valuestring, strlen(payload->valuestring)+1, IOTX_OTA_TOPIC_TYPE_DEVICE_UPGRATE) == 0){
dm_ota_setPKN(product_type->valuestring,device_code->valuestring); dm_ota_setPKN(product_type->valuestring,device_code->valuestring);
dm_fota_perform_sync(buf, len); dm_fota_perform_sync(buf, len);
}else{ }else{
printf("parse params error !! \n"); printf("parse params error !! \n");
} }
}else {
printf("invaild ota type: [%d]\n", atoi(typeJson->valuestring));
}else { }
printf("invaild ota type: [%d]\n", atoi(typeJson->valuestring)); cJSON_Delete(json);
}
cJSON_Delete(json);
cJSON_Delete(info); cJSON_Delete(info);
} }
int dm_ota_check(void* payload, int len, iotx_ota_topic_types_t type){ int dm_ota_check(void* payload, int len, iotx_ota_topic_types_t type){
void *ota_handle = NULL; void *ota_handle = NULL;
void* otaHandle = NULL; void* otaHandle = NULL;
dm_ota_get_ota_handle(&otaHandle); dm_ota_get_ota_handle(&otaHandle);
return ota_callback(otaHandle, payload, len,type); return ota_callback(otaHandle, payload, len,type);
} }
int dm_ota_yield(int timeout_ms) int dm_ota_yield(int timeout_ms)
{ {
void *data = NULL; void *data = NULL;
int count = 0; int count = 0;
if (timeout_ms <= 0) {
return INVALID_PARAMETER;
}
while (CONFIG_DISPATCH_QUEUE_MAXLEN == 0 || count++ < CONFIG_DISPATCH_QUEUE_MAXLEN) { if (timeout_ms <= 0) {
return INVALID_PARAMETER;
}
if (dm_queue_msg_next3(&data) == SUCCESS_RETURN) { while (CONFIG_DISPATCH_QUEUE_MAXLEN == 0 || count++ < CONFIG_DISPATCH_QUEUE_MAXLEN) {
//dm_queue_msg_t *msg = (dm_queue_msg_t *)data;
printf("dm_ota_yield call \n");
dm_ota_handle(data);
if (dm_queue_msg_next3(&data) == SUCCESS_RETURN) {
free(data); //dm_queue_msg_t *msg = (dm_queue_msg_t *)data;
data = NULL; printf("dm_ota_yield call \n");
} else { dm_ota_handle(data);
break;
}
}
usleep(timeout_ms*1000);
return SUCCESS_RETURN; free(data);
data = NULL;
} else {
break;
}
}
usleep(timeout_ms*1000);
return SUCCESS_RETURN;
} }
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
typedef struct { typedef struct {
void *ota_handle; void *ota_handle;
char productType[PRODUCT_TYPE_MAXLEN]; char productType[PRODUCT_TYPE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN]; char deviceCode[DEVICE_CODE_MAXLEN];
} dm_ota_ctx_t; } dm_ota_ctx_t;
int dm_ota_init(void); int dm_ota_init(void);
......
This diff is collapsed.
...@@ -12,10 +12,10 @@ ...@@ -12,10 +12,10 @@
typedef struct { typedef struct {
void *mutex; void *mutex;
void *cloud_connectivity; void *cloud_connectivity;
void *local_connectivity; void *local_connectivity;
iotx_dm_event_callback event_callback; iotx_dm_event_callback event_callback;
} dm_api_ctx_t; } dm_api_ctx_t;
#if defined(DEPRECATED_LINKKIT) #if defined(DEPRECATED_LINKKIT)
......
...@@ -25,15 +25,14 @@ ...@@ -25,15 +25,14 @@
*************************************************************/ *************************************************************/
typedef struct { typedef struct {
void *mutex;
void *mutex;
void *hearbeat_thread; void *hearbeat_thread;
int hearbeat_thread_running; int hearbeat_thread_running;
struct list_head gw_status_list; struct list_head gw_status_list;
} kk_heartbeat_ctx_t; } kk_heartbeat_ctx_t;
typedef struct { typedef struct {
int isOnline; int isOnline;
time_t starttime; time_t starttime;
char deviceCode[DEVICE_CODE_MAXLEN]; char deviceCode[DEVICE_CODE_MAXLEN];
struct list_head linked_list; struct list_head linked_list;
...@@ -47,22 +46,22 @@ static kk_heartbeat_ctx_t s_kk_heartbeat_ctx = {0}; ...@@ -47,22 +46,22 @@ static kk_heartbeat_ctx_t s_kk_heartbeat_ctx = {0};
static kk_heartbeat_ctx_t *_kk_heartbeat_get_ctx(void) static kk_heartbeat_ctx_t *_kk_heartbeat_get_ctx(void)
{ {
return &s_kk_heartbeat_ctx; return &s_kk_heartbeat_ctx;
} }
static void _kk_heartbeat_lock(void) static void _kk_heartbeat_lock(void)
{ {
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx(); kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
if (ctx->mutex) { if (ctx->mutex) {
HAL_MutexLock(ctx->mutex); HAL_MutexLock(ctx->mutex);
} }
} }
static void _kk_heartbeat_unlock(void) static void _kk_heartbeat_unlock(void)
{ {
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx(); kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
if (ctx->mutex) { if (ctx->mutex) {
HAL_MutexUnlock(ctx->mutex); HAL_MutexUnlock(ctx->mutex);
} }
} }
/************************************************************ /************************************************************
...@@ -74,31 +73,30 @@ static void _kk_heartbeat_unlock(void) ...@@ -74,31 +73,30 @@ static void _kk_heartbeat_unlock(void)
*************************************************************/ *************************************************************/
void *kk_heartbeat_yield(void *args) void *kk_heartbeat_yield(void *args)
{ {
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx(); kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
time_t current_time = 0; time_t current_time = 0;
time_t sys_time = 0; time_t sys_time = 0;
int res = 0; int res = 0;
dm_mgr_dev_node_t *node = NULL; dm_mgr_dev_node_t *node = NULL;
kk_gw_status_ctx_t *gw = NULL; kk_gw_status_ctx_t *gw = NULL;
while (ctx->hearbeat_thread_running) { while (ctx->hearbeat_thread_running) {
current_time = HAL_GetTime(); current_time = HAL_GetTime();
sys_time = HAL_Uptimes(); sys_time = HAL_Uptimes();
_kk_heartbeat_lock(); _kk_heartbeat_lock();
if (!list_empty(&ctx->gw_status_list)) { if (!list_empty(&ctx->gw_status_list)) {
list_for_each_entry(gw, &ctx->gw_status_list, linked_list, kk_gw_status_ctx_t){ list_for_each_entry(gw, &ctx->gw_status_list, linked_list, kk_gw_status_ctx_t){
if(gw->isOnline == KK_DEV_ONLINE){ if(gw->isOnline == KK_DEV_ONLINE){
list_del(&gw->linked_list); list_del(&gw->linked_list);
//kk_subDev_send_property_get(gw->deviceCode); //kk_subDev_send_property_get(gw->deviceCode);
free(gw); free(gw);
} }
else{ else{
res = dm_mgr_get_device_by_devicecode(gw->deviceCode,&node); res = dm_mgr_get_device_by_devicecode(gw->deviceCode,&node);
if (res != SUCCESS_RETURN) { if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res); ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
} }
if(node->hb_timeout == 0){ if(node->hb_timeout == 0){
node->hb_timeout = DEFAULT_HEARTBEAT_TIMEOUT; node->hb_timeout = DEFAULT_HEARTBEAT_TIMEOUT;
} }
...@@ -109,7 +107,7 @@ void *kk_heartbeat_yield(void *args) ...@@ -109,7 +107,7 @@ void *kk_heartbeat_yield(void *args)
dm_mgr_set_dev_onoffline(node,KK_DEV_OFFLINE); dm_mgr_set_dev_onoffline(node,KK_DEV_OFFLINE);
list_del(&gw->linked_list); list_del(&gw->linked_list);
free(gw); free(gw);
} }
else{ else{
/*先下发网关属性获取,判断网关是否在线*/ /*先下发网关属性获取,判断网关是否在线*/
kk_msg_execute_property_get(node); kk_msg_execute_property_get(node);
...@@ -117,12 +115,12 @@ void *kk_heartbeat_yield(void *args) ...@@ -117,12 +115,12 @@ void *kk_heartbeat_yield(void *args)
} }
} }
} }
_kk_heartbeat_unlock(); _kk_heartbeat_unlock();
dm_mgr_check_heartbeat_timeout(sys_time); dm_mgr_check_heartbeat_timeout(sys_time);
sleep(1); sleep(1);
} }
return NULL; return NULL;
} }
/************************************************************ /************************************************************
*功能描述: 心跳模块初始化 *功能描述: 心跳模块初始化
...@@ -134,15 +132,15 @@ void *kk_heartbeat_yield(void *args) ...@@ -134,15 +132,15 @@ void *kk_heartbeat_yield(void *args)
int kk_heartbeat_init(void) int kk_heartbeat_init(void)
{ {
int res = 0; int res = 0;
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx(); kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
/* Create Mutex */ /* Create Mutex */
ctx->mutex = HAL_MutexCreate(); ctx->mutex = HAL_MutexCreate();
if (ctx->mutex == NULL) { if (ctx->mutex == NULL) {
return FAIL_RETURN; return FAIL_RETURN;
} }
/* Init Device Id*/ /* Init Device Id*/
INIT_LIST_HEAD(&ctx->gw_status_list); INIT_LIST_HEAD(&ctx->gw_status_list);
ctx->hearbeat_thread_running = 1; ctx->hearbeat_thread_running = 1;
s_start_time = HAL_Uptimes(); s_start_time = HAL_Uptimes();
res = pthread_create(&ctx->hearbeat_thread, NULL, kk_heartbeat_yield, NULL); res = pthread_create(&ctx->hearbeat_thread, NULL, kk_heartbeat_yield, NULL);
...@@ -153,9 +151,8 @@ int kk_heartbeat_init(void) ...@@ -153,9 +151,8 @@ int kk_heartbeat_init(void)
} }
return SUCCESS_RETURN; return SUCCESS_RETURN;
/* Init Device List */ /* Init Device List */
// INIT_LIST_HEAD(&ctx->dev_list); // INIT_LIST_HEAD(&ctx->dev_list);
} }
/************************************************************ /************************************************************
*功能描述: 上电把需要查询状态的网关加入队列,load设备的时候调用此函数 *功能描述: 上电把需要查询状态的网关加入队列,load设备的时候调用此函数
...@@ -167,24 +164,24 @@ int kk_heartbeat_init(void) ...@@ -167,24 +164,24 @@ int kk_heartbeat_init(void)
int kk_dm_gw_status_check_push(const char *deviceCode) int kk_dm_gw_status_check_push(const char *deviceCode)
{ {
kk_gw_status_ctx_t *gw = NULL; kk_gw_status_ctx_t *gw = NULL;
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx(); kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
if(deviceCode == NULL){ if(deviceCode == NULL){
ERROR_PRINT("kk_dm_gw_status_check_push Failed\n"); ERROR_PRINT("kk_dm_gw_status_check_push Failed\n");
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
gw = malloc(sizeof(kk_gw_status_ctx_t)); gw = malloc(sizeof(kk_gw_status_ctx_t));
if (gw == NULL) { if (gw == NULL) {
ERROR_PRINT("kk_dm_gw_status_check_push malloc Failed\n"); ERROR_PRINT("kk_dm_gw_status_check_push malloc Failed\n");
return MEMORY_NOT_ENOUGH; return MEMORY_NOT_ENOUGH;
} }
memset(gw, 0, sizeof(kk_gw_status_ctx_t)); memset(gw, 0, sizeof(kk_gw_status_ctx_t));
_kk_heartbeat_lock(); _kk_heartbeat_lock();
memcpy(gw->deviceCode,deviceCode,strlen(deviceCode)); memcpy(gw->deviceCode,deviceCode,strlen(deviceCode));
gw->isOnline = KK_DEV_UNKNOW; gw->isOnline = KK_DEV_UNKNOW;
gw->starttime = HAL_GetTime(); gw->starttime = HAL_GetTime();
INIT_LIST_HEAD(&gw->linked_list); INIT_LIST_HEAD(&gw->linked_list);
list_add_tail(&gw->linked_list, &ctx->gw_status_list); list_add_tail(&gw->linked_list, &ctx->gw_status_list);
_kk_heartbeat_unlock(); _kk_heartbeat_unlock();
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -199,7 +196,7 @@ int kk_dm_gw_status_check_push(const char *deviceCode) ...@@ -199,7 +196,7 @@ int kk_dm_gw_status_check_push(const char *deviceCode)
int kk_dm_gw_status_update_online(const char *deviceCode) int kk_dm_gw_status_update_online(const char *deviceCode)
{ {
kk_gw_status_ctx_t *gw = NULL; kk_gw_status_ctx_t *gw = NULL;
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx(); kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
_kk_heartbeat_lock(); _kk_heartbeat_lock();
list_for_each_entry(gw,&ctx->gw_status_list,linked_list,kk_gw_status_ctx_t){ list_for_each_entry(gw,&ctx->gw_status_list,linked_list,kk_gw_status_ctx_t){
......
This diff is collapsed.
...@@ -20,40 +20,40 @@ ...@@ -20,40 +20,40 @@
#define MSG_MAX_LEN (64) #define MSG_MAX_LEN (64)
typedef struct { typedef struct {
int devid; int devid;
int dev_type; int dev_type;
kk_tsl_t *dev_shadow; kk_tsl_t *dev_shadow;
char mac[DEVICE_MAC_MAXLEN]; char mac[DEVICE_MAC_MAXLEN];
char productCode[PRODUCT_CODE_MAXLEN]; char productCode[PRODUCT_CODE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN]; char deviceCode[DEVICE_CODE_MAXLEN];
char fatherDeviceCode[DEVICE_CODE_MAXLEN]; char fatherDeviceCode[DEVICE_CODE_MAXLEN];
char productType[PRODUCT_TYPE_MAXLEN]; char productType[PRODUCT_TYPE_MAXLEN];
char isOffline; char isOffline;
int hb_timeout; //heartbeat time int hb_timeout; //heartbeat time
time_t timestamp; time_t timestamp;
char dormancyDev; //1,休眠设备;0,不是 char dormancyDev; //1,休眠设备;0,不是
struct list_head linked_list; struct list_head linked_list;
} dm_mgr_dev_node_t; } dm_mgr_dev_node_t;
typedef struct { typedef struct {
void *mutex; void *mutex;
int global_devid; int global_devid;
struct list_head dev_list; struct list_head dev_list;
} dm_mgr_ctx; } dm_mgr_ctx;
typedef struct { typedef struct {
char msgid[MSG_MAX_LEN]; char msgid[MSG_MAX_LEN];
int devid; int devid;
//const char *service_prefix; //const char *service_prefix;
//const char *service_name; //const char *service_name;
char *msgTypeStr; char *msgTypeStr;
char identity[IDENTIFY_MAXLEN]; char identity[IDENTIFY_MAXLEN];
char productCode[PRODUCT_CODE_MAXLEN]; char productCode[PRODUCT_CODE_MAXLEN];
char deviceCode[DEVICE_CODE_MAXLEN]; char deviceCode[DEVICE_CODE_MAXLEN];
char *params; char *params;
int params_len; int params_len;
char *method; char *method;
//iotx_cm_data_handle_cb callback; //iotx_cm_data_handle_cb callback;
} dm_msg_request_t; } dm_msg_request_t;
typedef struct { typedef struct {
char *msgTypeStr; char *msgTypeStr;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -57,8 +57,8 @@ typedef struct kk_scene_timer_list{ ...@@ -57,8 +57,8 @@ typedef struct kk_scene_timer_list{
struct kk_scene_timer_list *next; struct kk_scene_timer_list *next;
} kk_scene_timer_list_t; } kk_scene_timer_list_t;
typedef struct { typedef struct {
void *mutex; void *mutex;
sqlite3 *pDb; sqlite3 *pDb;
void *s_scene_thread; void *s_scene_thread;
} kk_scene_ctx_t; } kk_scene_ctx_t;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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