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

20210727

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