Commit 4d9d15b7 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'yjq' into 'master'

【20210831】修复局越网地暖控制上报问题。优化配置表解析。

See merge request chenweican/k-sdk!117
parents 9da143b4 b804d326
...@@ -29,31 +29,31 @@ ...@@ -29,31 +29,31 @@
//#include "kcloud_log.h" //#include "kcloud_log.h"
static char s_ccuid[DEVICE_CODE_LEN] = {0}; static char s_ccuid[DEVICE_CODE_LEN] = {0};
int KK_Get_ccuid(_OU_ char *device_code) int KK_Get_ccuid(_OU_ char *device_code)
{ {
strncpy(device_code, s_ccuid, strlen(s_ccuid)); strncpy(device_code, s_ccuid, strlen(s_ccuid));
printf("HAL_Get_ccuid:%s\n",s_ccuid); printf("HAL_Get_ccuid:%s\n",s_ccuid);
return strlen(s_ccuid); return strlen(s_ccuid);
} }
static int _setDevice_Code(_IN_ char *device_code,int len) static int _setDevice_Code(_IN_ char *device_code,int len)
{ {
memset(s_ccuid, 0x0, DEVICE_CODE_LEN); memset(s_ccuid, 0x0, DEVICE_CODE_LEN);
printf("_setDevice_Code:%s\n",device_code); printf("_setDevice_Code:%s\n",device_code);
strncpy(s_ccuid, device_code, len); strncpy(s_ccuid, device_code, len);
return len; return len;
} }
static void KK_Ccuid_init(void) static void KK_Ccuid_init(void)
{ {
uint8_t ccuid[DEVICE_CODE_LEN] = {0}; uint8_t ccuid[DEVICE_CODE_LEN] = {0};
uint8_t ccuidTmp[DEVICE_CODE_LEN] = {0}; uint8_t ccuidTmp[DEVICE_CODE_LEN] = {0};
int ccuid_len = 0; int ccuid_len = 0;
HAL_Execel_cmd(GET_CCUID_CMD,(char *)ccuid,sizeof(ccuid),&ccuid_len); HAL_Execel_cmd(GET_CCUID_CMD,(char *)ccuid,sizeof(ccuid),&ccuid_len);
printf("GET_CCUID_CMD:%s\n",ccuid); printf("GET_CCUID_CMD:%s\n",ccuid);
if(ccuid_len > 0 && ccuid_len <= DEVICE_CODE_LEN){ if(ccuid_len > 0 && ccuid_len <= DEVICE_CODE_LEN){
sprintf(ccuidTmp,"CCU_%s",ccuid); sprintf(ccuidTmp,"CCU_%s",ccuid);
_setDevice_Code(ccuidTmp,strlen(ccuidTmp)-1);//减一是因为最后有一个换行 _setDevice_Code(ccuidTmp,strlen(ccuidTmp)-1);//减一是因为最后有一个换行
}else{ }else{
_setDevice_Code(KK_CCU_ID,strlen(KK_CCU_ID)); _setDevice_Code(KK_CCU_ID,strlen(KK_CCU_ID));
} }
} }
static int mqtt_start(void) static int mqtt_start(void)
{ {
...@@ -102,7 +102,7 @@ int main(int argc, char* argv[]) ...@@ -102,7 +102,7 @@ int main(int argc, char* argv[])
KK_Ccuid_init(); KK_Ccuid_init();
kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromDev,NULL,NULL); kk_ipc_init(IPC_APP2MID,(ipc_cb*)KK_Data_FromDev,NULL,NULL);
kk_info_report_start(); kk_info_report_start();
again: again:
rc = kk_start_ccu_register(); rc = kk_start_ccu_register();
if(rc == 0){ if(rc == 0){
rc = mqtt_start(); rc = mqtt_start();
......
...@@ -23,146 +23,146 @@ extern int kk_get_gw_status(void); ...@@ -23,146 +23,146 @@ extern int kk_get_gw_status(void);
#define TO_OLED_NANOMSG_SOCKET_ADDR "ipc:///tmp/oled_pair.ipc" #define TO_OLED_NANOMSG_SOCKET_ADDR "ipc:///tmp/oled_pair.ipc"
static int kk_info_nanomsg_init(void) static int kk_info_nanomsg_init(void)
{ {
int socketfd = 0; int socketfd = 0;
socketfd = nn_socket(AF_SP, NN_PAIR); socketfd = nn_socket(AF_SP, NN_PAIR);
if(socketfd < 0){ if(socketfd < 0){
return -1; return -1;
} }
if(nn_connect(socketfd, TO_OLED_NANOMSG_SOCKET_ADDR) < 0){ if(nn_connect(socketfd, TO_OLED_NANOMSG_SOCKET_ADDR) < 0){
WARNING_PRINT("[%s][%d]connect fail!!!\n",__FUNCTION__,__LINE__); WARNING_PRINT("[%s][%d]connect fail!!!\n",__FUNCTION__,__LINE__);
return -1; return -1;
} }
return socketfd; return socketfd;
} }
static int kk_info_get(char *str) static int kk_info_get(char *str)
{ {
int ret = 0; int ret = 0;
char version[VERSION_MAXLEN] = {0}; char version[VERSION_MAXLEN] = {0};
char *str_tmp = NULL; char *str_tmp = NULL;
char ccuid[32] = {0}; char ccuid[32] = {0};
if(str == NULL){ if(str == NULL){
return -1; return -1;
} }
HAL_GetVersion(version); //HAL_GetVersion(version);
KK_Get_ccuid(ccuid);
cJSON *root = cJSON_CreateObject();
if (root)
{
cJSON *args = cJSON_CreateObject();
if (args)
{
cJSON_AddItemToObject(root, "args", args);
cJSON *ccu = cJSON_CreateObject(); KK_Get_ccuid(ccuid);
if (ccu) cJSON *root = cJSON_CreateObject();
{ if (root)
char status[4] = {0}; {
cJSON *args = cJSON_CreateObject();
if (args)
{
cJSON_AddItemToObject(root, "args", args);
cJSON_AddItemToObject(args, "ccu", ccu); cJSON *ccu = cJSON_CreateObject();
cJSON_AddStringToObject(ccu, "id", &ccuid[4]); if (ccu)
cJSON_AddStringToObject(ccu, "version", version); {
cJSON_AddStringToObject(ccu, "name", "kk_new_ccu"); char status[4] = {0};
//INFO_PRINT("---222kk_get_cloud_status():%d\n",kk_get_cloud_status());
//if(kk_get_gw_status() == DEVICE_OFFLINE){
//memcpy(status,"2",strlen("2"));
//}
if(kk_get_cloud_status() == DEVICE_OFFLINE)
{
//cJSON_AddStringToObject(ccu, "status", "1");
//INFO_PRINT("_-----------------------------------------------------------11\n");
memcpy(status,"1",strlen("1"));
}else{
//INFO_PRINT("_-----------------------------------------------------------22\n");
memcpy(status,"0",strlen("0"));
}
//INFO_PRINT("------------------------------------->status :%s\n",status);
cJSON_AddStringToObject(ccu, "status", status); cJSON_AddItemToObject(args, "ccu", ccu);
} cJSON_AddStringToObject(ccu, "id", &ccuid[4]);
cJSON *net = cJSON_CreateObject(); cJSON_AddStringToObject(ccu, "version", version);
if (net) cJSON_AddStringToObject(ccu, "name", "kk_new_ccu");
{ //INFO_PRINT("---222kk_get_cloud_status():%d\n",kk_get_cloud_status());
char s_IP[NETWORK_ADDR_LEN] = {0}; //if(kk_get_gw_status() == DEVICE_OFFLINE){
HAL_Get_IP(s_IP,NULL); //memcpy(status,"2",strlen("2"));
cJSON_AddItemToObject(args, "net", net); //}
cJSON_AddStringToObject(net, "interface", CCU_LAN); if(kk_get_cloud_status() == DEVICE_OFFLINE)
cJSON_AddStringToObject(net, "ip", s_IP); {
} //cJSON_AddStringToObject(ccu, "status", "1");
cJSON *lsc_status = cJSON_CreateObject(); //INFO_PRINT("_-----------------------------------------------------------11\n");
if (lsc_status) memcpy(status,"1",strlen("1"));
{ }else{
cJSON_AddStringToObject(args, "lsc_status", "1"); //INFO_PRINT("_-----------------------------------------------------------22\n");
} memcpy(status,"0",strlen("0"));
}
//INFO_PRINT("------------------------------------->status :%s\n",status);
cJSON *qr_code = cJSON_CreateObject(); cJSON_AddStringToObject(ccu, "status", status);
if (qr_code) }
{ cJSON *net = cJSON_CreateObject();
char qrcodeStr[256] = {0}; if (net)
sprintf(qrcodeStr,"KONKE-CCU:%s:%s:BBE3C5A5FC1FDB6CA1A386AB321D02AB",KK_CCU_PRODUCTID,&ccuid[4]); {
cJSON_AddItemToObject(args, "qr_code", qr_code); char s_IP[NETWORK_ADDR_LEN] = {0};
cJSON_AddStringToObject(qr_code, "string", qrcodeStr); HAL_Get_IP(s_IP,NULL);
cJSON_AddBoolToObject(qr_code, "show", 1); cJSON_AddItemToObject(args, "net", net);
} cJSON_AddStringToObject(net, "interface", CCU_LAN);
cJSON *service = cJSON_CreateObject(); cJSON_AddStringToObject(net, "ip", s_IP);
if (service) }
{ cJSON *lsc_status = cJSON_CreateObject();
cJSON_AddStringToObject(args, "service", "1"); if (lsc_status)
} {
} cJSON_AddStringToObject(args, "lsc_status", "1");
str_tmp = cJSON_PrintUnformatted(root); }
//INFO_PRINT("JSON %s\r\n", str_tmp);
strcpy(str, str_tmp); cJSON *qr_code = cJSON_CreateObject();
free(str_tmp); if (qr_code)
cJSON_Delete(root); {
} char qrcodeStr[256] = {0};
else sprintf(qrcodeStr,"KONKE-CCU:%s:%s:BBE3C5A5FC1FDB6CA1A386AB321D02AB",KK_CCU_PRODUCTID,&ccuid[4]);
{ cJSON_AddItemToObject(args, "qr_code", qr_code);
ret = -1; cJSON_AddStringToObject(qr_code, "string", qrcodeStr);
} cJSON_AddBoolToObject(qr_code, "show", 1);
return ret; }
cJSON *service = cJSON_CreateObject();
if (service)
{
cJSON_AddStringToObject(args, "service", "1");
}
}
str_tmp = cJSON_PrintUnformatted(root);
//INFO_PRINT("JSON %s\r\n", str_tmp);
strcpy(str, str_tmp);
free(str_tmp);
cJSON_Delete(root);
}
else
{
ret = -1;
}
return ret;
} }
//static int //static int
void *kk_info_nanomsg_send(void *data) void *kk_info_nanomsg_send(void *data)
{ {
int ret = 0; int ret = 0;
char str[1024] = {0}; char str[1024] = {0};
int socketfd = kk_info_nanomsg_init(); int socketfd = kk_info_nanomsg_init();
if(socketfd < 0){ if(socketfd < 0){
return NULL; return NULL;
} }
while(1){ while(1){
memset(str,0x0,sizeof(str)); memset(str,0x0,sizeof(str));
ret = kk_info_get(str); ret = kk_info_get(str);
if(ret == 0){ if(ret == 0){
//printf("*********nn_send***********\n"); //printf("*********nn_send***********\n");
ret = nn_send(socketfd, str, strlen(str), 1); ret = nn_send(socketfd, str, strlen(str), 1);
if(ret < 0) { if(ret < 0) {
//WARNING_PRINT("[%s][%d]nn_send fail!!!\n",__FUNCTION__,__LINE__); //WARNING_PRINT("[%s][%d]nn_send fail!!!\n",__FUNCTION__,__LINE__);
} }
} }
sleep(10); sleep(10);
} }
} }
int kk_info_report_start(void) int kk_info_report_start(void)
{ {
int rc; int rc;
pthread_t info_report_thread; pthread_t info_report_thread;
pthread_attr_t info_report_attr; pthread_attr_t info_report_attr;
pthread_mutex_init(&s_data_mutex, NULL); pthread_mutex_init(&s_data_mutex, NULL);
/*创建线程*/ /*创建线程*/
pthread_attr_init(&info_report_attr); pthread_attr_init(&info_report_attr);
size_t s = 1500; size_t s = 1500;
pthread_attr_setstacksize(&info_report_attr, s); pthread_attr_setstacksize(&info_report_attr, s);
pthread_attr_setdetachstate(&info_report_attr, PTHREAD_CREATE_JOINABLE); pthread_attr_setdetachstate(&info_report_attr, PTHREAD_CREATE_JOINABLE);
rc = pthread_create(&info_report_thread, &info_report_attr, kk_info_nanomsg_send, (void *)NULL); //收数据 rc = pthread_create(&info_report_thread, &info_report_attr, kk_info_nanomsg_send, (void *)NULL); //收数据
if (rc) if (rc)
{ {
WARNING_PRINT("Error : unable to create thread udp_recv \r\n"); WARNING_PRINT("Error : unable to create thread udp_recv \r\n");
return -1; return -1;
} }
pthread_attr_destroy(&info_report_attr); pthread_attr_destroy(&info_report_attr);
return 0; return 0;
} }
\ No newline at end of file
...@@ -23,59 +23,58 @@ ...@@ -23,59 +23,58 @@
int kk_execel_cmd(char * cmd,char * buf,int buf_len,int* ret_len) int kk_execel_cmd(char * cmd,char * buf,int buf_len,int* ret_len)
{ {
if(cmd == NULL || buf == NULL || buf_len == 0) if(cmd == NULL || buf == NULL || buf_len == 0)
{ {
INFO_PRINT("arg error\n"); INFO_PRINT("arg error\n");
return -1; return -1;
} }
memset(buf,0,buf_len); memset(buf,0,buf_len);
FILE *fp = NULL; FILE *fp = NULL;
fp = popen(cmd,"r");
fp = popen(cmd,"r"); while(fgets(buf,buf_len,fp)!=NULL){
while(fgets(buf,buf_len,fp)!=NULL){ INFO_PRINT("%s return %s",cmd,buf);
INFO_PRINT("%s return %s",cmd,buf); }
} pclose (fp);
pclose (fp);
*ret_len = strlen(buf);
*ret_len = strlen(buf); return 0;
return 0;
} }
int kk_parse_deviceSecret(char *info){ int kk_parse_deviceSecret(char *info){
FILE *fp; FILE *fp;
if(info == NULL){ if(info == NULL){
return -1; return -1;
} }
cJSON* infoObj = cJSON_Parse(info); cJSON* infoObj = cJSON_Parse(info);
if(infoObj == NULL){ if(infoObj == NULL){
INFO_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__); INFO_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__);
return -1; return -1;
} }
//cJSON *data = cJSON_GetObjectItem(infoObj,"data"); //cJSON *data = cJSON_GetObjectItem(infoObj,"data");
//if(data == NULL) //if(data == NULL)
//{ //{
//return -1; //return -1;
//} //}
cJSON *deviceSecret = cJSON_GetObjectItem(infoObj,"deviceSecret"); cJSON *deviceSecret = cJSON_GetObjectItem(infoObj,"deviceSecret");
if(deviceSecret == NULL) return -1; if(deviceSecret == NULL) return -1;
fp = fopen(KK_DEVICESECRET_PATH, "w+"); fp = fopen(KK_DEVICESECRET_PATH, "w+");
if(fp != NULL){ if(fp != NULL){
fwrite(deviceSecret->valuestring,strlen(deviceSecret->valuestring),1,fp); fwrite(deviceSecret->valuestring,strlen(deviceSecret->valuestring),1,fp);
fclose(fp); fclose(fp);
} }
return 0; return 0;
} }
int kk_parse_token(char *info){ int kk_parse_token(char *info){
FILE *fp; FILE *fp;
if(info == NULL){ if(info == NULL){
INFO_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__); INFO_PRINT("[%s][%d]\n",__FUNCTION__,__LINE__);
return -1; return -1;
} }
cJSON* infoObj = cJSON_Parse(info); cJSON* infoObj = cJSON_Parse(info);
if(infoObj == NULL){ if(infoObj == NULL){
return -1; return -1;
} }
cJSON *data = cJSON_GetObjectItem(infoObj,"data"); cJSON *data = cJSON_GetObjectItem(infoObj,"data");
if(data == NULL) if(data == NULL)
{ {
...@@ -103,11 +102,11 @@ char *kk_dictionary_order(char *deviceCode, char *productCode,char *randomId) ...@@ -103,11 +102,11 @@ char *kk_dictionary_order(char *deviceCode, char *productCode,char *randomId)
char str[3][16]={0}; char str[3][16]={0};
char temp[16]; char temp[16];
int i,l,len; int i,l,len;
char *signSource = NULL; char *signSource = NULL;
memcpy(&str[0],deviceCode,strlen(deviceCode)); memcpy(&str[0],deviceCode,strlen(deviceCode));
memcpy(&str[1],productCode,strlen(productCode)); memcpy(&str[1],productCode,strlen(productCode));
memcpy(&str[2],randomId,strlen(randomId)); memcpy(&str[2],randomId,strlen(randomId));
//for (i=0;i<3;i++) //for (i=0;i<3;i++)
//{ //{
//for (l=0;l<16;l++) //for (l=0;l<16;l++)
//{ //{
...@@ -130,15 +129,15 @@ char *kk_dictionary_order(char *deviceCode, char *productCode,char *randomId) ...@@ -130,15 +129,15 @@ char *kk_dictionary_order(char *deviceCode, char *productCode,char *randomId)
} }
//for(i=0;i<3;i++)//输出 //for(i=0;i<3;i++)//输出
//INFO_PRINT("%s\n",str[i]); //INFO_PRINT("%s\n",str[i]);
len = strlen(deviceCode) + strlen(productCode) + strlen(randomId) + 1; len = strlen(deviceCode) + strlen(productCode) + strlen(randomId) + 1;
signSource = malloc(len); signSource = malloc(len);
if (signSource == NULL) { if (signSource == NULL) {
return NULL; return NULL;
} }
memset(signSource, 0, len); memset(signSource, 0, len);
snprintf(signSource, len, "%s%s%s", str[0],str[1],str[2]); snprintf(signSource, len, "%s%s%s", str[0],str[1],str[2]);
INFO_PRINT("signSource %s\n",signSource); INFO_PRINT("signSource %s\n",signSource);
return signSource; return signSource;
} }
static const char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static const char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
...@@ -208,7 +207,7 @@ static char * kk_create_register_info() ...@@ -208,7 +207,7 @@ static char * kk_create_register_info()
uint8_t productSecret[64] = {0}; uint8_t productSecret[64] = {0};
char ccuid[32] = {0}; char ccuid[32] = {0};
int productSecret_len = 0; int productSecret_len = 0;
char keyTmp[64] = {0}; char keyTmp[64] = {0};
root=cJSON_CreateObject(); root=cJSON_CreateObject();
HAL_Get_mac(mac); HAL_Get_mac(mac);
HAL_GetTime_s(ramdonId); HAL_GetTime_s(ramdonId);
...@@ -220,29 +219,29 @@ static char * kk_create_register_info() ...@@ -220,29 +219,29 @@ static char * kk_create_register_info()
if(productSecret_len == 0){ if(productSecret_len == 0){
utils_hmac_sha256((const uint8_t *)signSource, strlen(signSource), (const uint8_t *)PRODUCTSECRET, strlen(PRODUCTSECRET), sign_hex); utils_hmac_sha256((const uint8_t *)signSource, strlen(signSource), (const uint8_t *)PRODUCTSECRET, strlen(PRODUCTSECRET), sign_hex);
}else{ }else{
memcpy(keyTmp,productSecret,productSecret_len-1); memcpy(keyTmp,productSecret,productSecret_len-1);
utils_hmac_sha256((const uint8_t *)signSource, strlen(signSource), (const uint8_t *)keyTmp, strlen((const char*)keyTmp), sign_hex); utils_hmac_sha256((const uint8_t *)signSource, strlen(signSource), (const uint8_t *)keyTmp, strlen((const char*)keyTmp), sign_hex);
} }
arrayToStr(sign_hex,32,sign_hex_str); arrayToStr(sign_hex,32,sign_hex_str);
base64Out = malloc(128); base64Out = malloc(128);
if (base64Out == NULL) { if (base64Out == NULL) {
return NULL; return NULL;
} }
INFO_PRINT("[%s][%d]sign_hex:%s\n",__FUNCTION__,__LINE__,sign_hex_str); INFO_PRINT("[%s][%d]sign_hex:%s\n",__FUNCTION__,__LINE__,sign_hex_str);
//memset(base64Out, 0, 128); //memset(base64Out, 0, 128);
//base64_encode(sign_hex_str,base64Out,strlen(sign_hex_str)); //base64_encode(sign_hex_str,base64Out,strlen(sign_hex_str));
INFO_PRINT("[%s][%d]base64Out:%s\n",__FUNCTION__,__LINE__,base64Out); INFO_PRINT("[%s][%d]base64Out:%s\n",__FUNCTION__,__LINE__,base64Out);
cJSON_AddStringToObject(root, "sign",sign_hex_str); cJSON_AddStringToObject(root, "sign",sign_hex_str);
cJSON_AddStringToObject(root, "random",KK_CCU_RANDOM); cJSON_AddStringToObject(root, "random",KK_CCU_RANDOM);
free(signSource); free(signSource);
free(base64Out); free(base64Out);
out=cJSON_Print(root); out=cJSON_Print(root);
//cJSON_Minify(out); //cJSON_Minify(out);
cJSON_Delete(root); cJSON_Delete(root);
INFO_PRINT("--------------------->kk_create_register_info:%s\n",out); INFO_PRINT("--------------------->kk_create_register_info:%s\n",out);
return out; return out;
} }
char g_clientId[64] = {0}; char g_clientId[64] = {0};
static char * kk_create_get_jwt_info() static char * kk_create_get_jwt_info()
...@@ -270,134 +269,134 @@ static char * kk_create_get_jwt_info() ...@@ -270,134 +269,134 @@ static char * kk_create_get_jwt_info()
out=cJSON_Print(root); out=cJSON_Print(root);
//cJSON_Minify(out); //cJSON_Minify(out);
cJSON_Delete(root); cJSON_Delete(root);
INFO_PRINT("--------------------->kk_create_get_jwt_info:%s\n",out); INFO_PRINT("--------------------->kk_create_get_jwt_info:%s\n",out);
return out; return out;
} }
static int kk_send_register_info(int sockfd,const char * path,int type) static int kk_send_register_info(int sockfd,const char * path,int type)
{ {
char str1[1024], str2[1024],str[16] = {0}; char str1[1024], str2[1024],str[16] = {0};
char tmp[128] = {0}; char tmp[128] = {0};
int len = 0; int len = 0;
memset(str2, 0, sizeof(str2)); memset(str2, 0, sizeof(str2));
if(type == 0){ if(type == 0){
strcat(str2, kk_create_register_info()); strcat(str2, kk_create_register_info());
}else{ }else{
strcat(str2, kk_create_get_jwt_info()); strcat(str2, kk_create_get_jwt_info());
} }
len = strlen(str2); len = strlen(str2);
sprintf(str, "%d", len); sprintf(str, "%d", len);
memset(str1, 0, sizeof(str1)); memset(str1, 0, sizeof(str1));
memset(tmp, 0, sizeof(tmp)); memset(tmp, 0, sizeof(tmp));
sprintf(tmp, "POST %s HTTP/1.1\n", path); sprintf(tmp, "POST %s HTTP/1.1\n", path);
strcat(str1, tmp); strcat(str1, tmp);
memset(tmp, 0, sizeof(tmp)); memset(tmp, 0, sizeof(tmp));
sprintf(tmp, "Host: %s:%d\n",IPSTR, PORT); sprintf(tmp, "Host: %s:%d\n",IPSTR, PORT);
strcat(str1, tmp); strcat(str1, tmp);
strcat(str1, "Content-Type: application/json\n"); strcat(str1, "Content-Type: application/json\n");
strcat(str1, "Content-Length: "); strcat(str1, "Content-Length: ");
strcat(str1, str); strcat(str1, str);
strcat(str1, "\n\n"); strcat(str1, "\n\n");
//str2的值为post的数据 //str2的值为post的数据
strcat(str1, str2); strcat(str1, str2);
strcat(str1, "\r\n\r\n"); strcat(str1, "\r\n\r\n");
INFO_PRINT("%s\n",str1); INFO_PRINT("%s\n",str1);
return write(sockfd,str1,strlen(str1)); return write(sockfd,str1,strlen(str1));
} }
int kk_start_ccu_register(void) int kk_start_ccu_register(void)
{ {
int sockfd, ret, i, h; int sockfd, ret, i, h;
struct sockaddr_in servaddr; struct sockaddr_in servaddr;
char buf[1024] = {0}, buf2[1024] = {0}; char buf[1024] = {0}, buf2[1024] = {0};
fd_set t_set1; fd_set t_set1;
struct timeval tv; struct timeval tv;
int registerType = 0; int registerType = 0;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) { if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
INFO_PRINT("---socket error!\n"); INFO_PRINT("---socket error!\n");
return -1; return -1;
}; };
bzero(&servaddr, sizeof(servaddr)); bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET; servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT); servaddr.sin_port = htons(PORT);
if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){ if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){
INFO_PRINT("--inet_pton error!\n"); INFO_PRINT("--inet_pton error!\n");
close(sockfd); close(sockfd);
return -1; return -1;
}; };
if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){ if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
INFO_PRINT("connect error!\n"); INFO_PRINT("connect error!\n");
close(sockfd); close(sockfd);
return -1; return -1;
} }
INFO_PRINT("connect successful\n"); INFO_PRINT("connect successful\n");
ret = kk_send_register_info(sockfd,"/deviceRegister/register",0); ret = kk_send_register_info(sockfd,"/deviceRegister/register",0);
if (ret < 0) { if (ret < 0) {
INFO_PRINT("send fail\n"); INFO_PRINT("send fail\n");
close(sockfd); close(sockfd);
return -1; return -1;
}else{ }else{
INFO_PRINT("send success send %d bytes!\n\n", ret); INFO_PRINT("send success send %d bytes!\n\n", ret);
} }
registerType = 1; registerType = 1;
FD_ZERO(&t_set1); FD_ZERO(&t_set1);
FD_SET(sockfd, &t_set1); FD_SET(sockfd, &t_set1);
tv.tv_sec= 1; tv.tv_sec= 1;
tv.tv_usec= 0; tv.tv_usec= 0;
h= 0; h= 0;
while(1){ while(1){
h = select(sockfd +1, &t_set1, NULL, NULL, &tv); h = select(sockfd +1, &t_set1, NULL, NULL, &tv);
//if (h == 0) continue; //if (h == 0) continue;
if (h == -1) { if (h == -1) {
close(sockfd); close(sockfd);
return -1; return -1;
}; };
if ( FD_ISSET(sockfd, &t_set1) ){ if ( FD_ISSET(sockfd, &t_set1) ){
memset(buf, 0, 1024); memset(buf, 0, 1024);
memset(buf2, 0, 1024); memset(buf2, 0, 1024);
i= read(sockfd, buf, 1024); i= read(sockfd, buf, 1024);
if (i==0){ if (i==0){
close(sockfd); close(sockfd);
return -1; return -1;
} }
INFO_PRINT("\n get %s\n",buf); INFO_PRINT("\n get %s\n",buf);
if(registerType == 1){//get deviceSecret if(registerType == 1){//get deviceSecret
char* deviceSecret = strstr(buf,"deviceSecret"); char* deviceSecret = strstr(buf,"deviceSecret");
if(deviceSecret != NULL){ if(deviceSecret != NULL){
char* start = strchr(buf,'{'); char* start = strchr(buf,'{');
char* end = strrchr(buf,'}'); char* end = strrchr(buf,'}');
strncpy(buf2,start,end-start+1); strncpy(buf2,start,end-start+1);
INFO_PRINT("[%s][%d]buf2:%s\n",__FUNCTION__,__LINE__,buf2); INFO_PRINT("[%s][%d]buf2:%s\n",__FUNCTION__,__LINE__,buf2);
ret = kk_parse_deviceSecret(buf2); ret = kk_parse_deviceSecret(buf2);
if(ret == 0){ if(ret == 0){
ret = kk_send_register_info(sockfd,"/auth/generateJwt",1); ret = kk_send_register_info(sockfd,"/auth/generateJwt",1);
if (ret < 0) { if (ret < 0) {
INFO_PRINT("send fail'\n"); INFO_PRINT("send fail'\n");
close(sockfd); close(sockfd);
return -1; return -1;
}else{ }else{
printf("send success send %d bytes!\n\n", ret); printf("send success send %d bytes!\n\n", ret);
} }
registerType = 2; registerType = 2;
} }
} }
}else if(registerType == 2){ }else if(registerType == 2){
char* jwt = strstr(buf,"jwt"); char* jwt = strstr(buf,"jwt");
if(jwt != NULL){ if(jwt != NULL){
char* start = strchr(buf,'{'); char* start = strchr(buf,'{');
char* end = strrchr(buf,'}'); char* end = strrchr(buf,'}');
if(start != NULL && end != NULL){ if(start != NULL && end != NULL){
strncpy(buf2,start,end-start+1); strncpy(buf2,start,end-start+1);
ret = kk_parse_token(buf2); ret = kk_parse_token(buf2);
if(ret == 0){ if(ret == 0){
close(sockfd); close(sockfd);
return 0; return 0;
} }
} }
} }
} }
} }
} }
close(sockfd); close(sockfd);
return -1; return -1;
} }
\ No newline at end of file
...@@ -205,10 +205,10 @@ MQTTAsync KK_MQTT_Connect(void) ...@@ -205,10 +205,10 @@ MQTTAsync KK_MQTT_Connect(void)
char token[512] = {0}; char token[512] = {0};
char usrname[128] = {0}; char usrname[128] = {0};
fp = fopen(KK_TOKEN_PATH, "r"); fp = fopen(KK_TOKEN_PATH, "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);
char ccuid[32] = {0}; char ccuid[32] = {0};
KK_Get_ccuid(ccuid); KK_Get_ccuid(ccuid);
......
...@@ -37,30 +37,42 @@ static cJSON *bool_type_convert(cJSON *n_id,cJSON *n_dataType) ...@@ -37,30 +37,42 @@ static cJSON *bool_type_convert(cJSON *n_id,cJSON *n_dataType)
if(strcmp(n_dataType->valuestring,"dummy")==0) { if(strcmp(n_dataType->valuestring,"dummy")==0) {
return NULL; return NULL;
} }
if((strcmp(n_dataType->valuestring,"int")==0) || if(n_id->type==cJSON_Number){
(strcmp(n_dataType->valuestring,"bool")==0)){ if((strcmp(n_dataType->valuestring,"int")==0) ||
args = cJSON_CreateBool(n_id->valueint); (strcmp(n_dataType->valuestring,"bool")==0)||
}else if(strcmp(n_dataType->valuestring,"double")==0) { (strcmp(n_dataType->valuestring,"string_int")==0)||
bVal = (n_id->valuedouble>0) ? 1 : 0; (strcmp(n_dataType->valuestring,"string_bool")==0)){
args = cJSON_CreateBool(bVal); args = cJSON_CreateBool(n_id->valueint);
}else if(strcmp(n_dataType->valuestring,"string_bool")==0) { }else if(strcmp(n_dataType->valuestring,"double")==0||
if(strcmp(n_id->valuestring,"true")==0 || strcmp(n_dataType->valuestring,"string_double")==0) {
strcmp(n_id->valuestring,"TRUE")==0){ bVal = (n_id->valuedouble>0) ? 1 : 0;
args = cJSON_CreateBool(1); args = cJSON_CreateBool(bVal);
}else if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){
args = cJSON_CreateBool(0);
} }
}else if(strcmp(n_dataType->valuestring,"string_int")==0) { }else if(n_id->type==cJSON_String){
int iVal = atoi(n_id->valuestring); if((strcmp(n_dataType->valuestring,"int")==0) ||
bVal = (iVal>0) ? 1 : 0; (strcmp(n_dataType->valuestring,"bool")==0)||
args = cJSON_CreateBool(bVal); (strcmp(n_dataType->valuestring,"string_int")==0)){
}else if(strcmp(n_dataType->valuestring,"string_double")==0) { args = cJSON_CreateBool(atoi(n_id->valuestring));
double dVal = atof(n_id->valuestring); }else if(strcmp(n_dataType->valuestring,"double")==0||
bVal = (dVal>0) ? 1 : 0; strcmp(n_dataType->valuestring,"string_double")==0) {
args = cJSON_CreateBool(bVal); bVal = (atof(n_id->valuestring)>0) ? 1 : 0;
args = cJSON_CreateBool(bVal);
}else if(strcmp(n_dataType->valuestring,"string_bool")==0) {
if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){
args = cJSON_CreateBool(1);
}else if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){
args = cJSON_CreateBool(0);
}
}
}else if(n_id->type==cJSON_False){
args = cJSON_CreateNumber(0);
}else if(n_id->type==cJSON_True){
args = cJSON_CreateNumber(1);
} }
return args; return args;
} }
...@@ -72,24 +84,46 @@ static cJSON *int_type_convert(cJSON *n_id,cJSON *n_dataType) ...@@ -72,24 +84,46 @@ static cJSON *int_type_convert(cJSON *n_id,cJSON *n_dataType)
return NULL; return NULL;
} }
if((strcmp(n_dataType->valuestring,"int")==0) || if(n_id->type==cJSON_Number){
(strcmp(n_dataType->valuestring,"bool")==0)){ if((strcmp(n_dataType->valuestring,"int")==0) ||
args = cJSON_CreateNumber(n_id->valueint); (strcmp(n_dataType->valuestring,"bool")==0)||
}else if(strcmp(n_dataType->valuestring,"double")==0) { (strcmp(n_dataType->valuestring,"string_int")==0)){
args = cJSON_CreateNumber(n_id->valuedouble); args = cJSON_CreateNumber(n_id->valueint);
}else if(strcmp(n_dataType->valuestring,"string_bool")==0) { }else if(strcmp(n_dataType->valuestring,"double")==0||
if(strcmp(n_id->valuestring,"true")==0 || (strcmp(n_dataType->valuestring,"string_double")==0)) {
strcmp(n_id->valuestring,"TRUE")==0){ args = cJSON_CreateNumber(n_id->valuedouble);
args = cJSON_CreateNumber(1); }else if(strcmp(n_dataType->valuestring,"string_bool")==0) {
}else if(strcmp(n_id->valuestring,"true")==0 || if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){ strcmp(n_id->valuestring,"TRUE")==0){
args = cJSON_CreateNumber(0); args = cJSON_CreateNumber(1);
}else if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){
args = cJSON_CreateNumber(0);
}
}
}else if(n_id->type==cJSON_String){
if((strcmp(n_dataType->valuestring,"int")==0) ||
(strcmp(n_dataType->valuestring,"bool")==0)||
(strcmp(n_dataType->valuestring,"string_int")==0)){
args = cJSON_CreateNumber(atoi(n_id->valuestring));
}else if(strcmp(n_dataType->valuestring,"double")==0||
strcmp(n_dataType->valuestring,"string_double")==0) {
args = cJSON_CreateNumber(atof(n_id->valuestring));
}else if(strcmp(n_dataType->valuestring,"string_bool")==0) {
if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){
args = cJSON_CreateNumber(1);
}else if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){
args = cJSON_CreateNumber(0);
}
} }
}else if(strcmp(n_dataType->valuestring,"string_int")==0) { }else if(n_id->type==cJSON_False){
args = cJSON_CreateNumber(atoi(n_id->valuestring)); args = cJSON_CreateNumber(0);
}else if(strcmp(n_dataType->valuestring,"string_double")==0) { }else if(n_id->type==cJSON_True){
args = cJSON_CreateNumber((int)atof(n_id->valuestring)); args = cJSON_CreateNumber(1);
} }
return args; return args;
} }
...@@ -106,24 +140,37 @@ static cJSON *string_bool_type_convert(cJSON *n_id,cJSON *n_dataType) ...@@ -106,24 +140,37 @@ static cJSON *string_bool_type_convert(cJSON *n_id,cJSON *n_dataType)
if(strcmp(n_dataType->valuestring,"dummy")==0) { if(strcmp(n_dataType->valuestring,"dummy")==0) {
return NULL; return NULL;
} }
if(n_id->type == cJSON_True) {
if((strcmp(n_dataType->valuestring,"int")==0) || flag==1;
(strcmp(n_dataType->valuestring,"bool")==0)){ }else if(n_id->type == cJSON_False){
flag = (n_id->valueint>0) ? 1 : 0; flag==0;
}else if(strcmp(n_dataType->valuestring,"double")==0) { }else if(n_id->type == cJSON_Number){
flag = (n_id->valuedouble>0) ? 1 : 0; if((strcmp(n_dataType->valuestring,"int")==0) ||
}else if(strcmp(n_dataType->valuestring,"string_bool")==0) { (strcmp(n_dataType->valuestring,"bool")==0)||
if(strcmp(n_id->valuestring,"true")==0 || (strcmp(n_dataType->valuestring,"string_int")==0)||
strcmp(n_id->valuestring,"TRUE")==0){ (strcmp(n_dataType->valuestring,"string_bool")==0)){
flag = 1; flag = (n_id->valueint>0) ? 1 : 0;
}else if(strcmp(n_id->valuestring,"false")==0 || }else if(strcmp(n_dataType->valuestring,"double")==0||
strcmp(n_id->valuestring,"FALSE")==0){ strcmp(n_dataType->valuestring,"string_double")==0) {
flag = 0; flag = (n_id->valuedouble>0) ? 1 : 0;
}
}else if(n_id->type == cJSON_String){
if((strcmp(n_dataType->valuestring,"int")==0) ||
(strcmp(n_dataType->valuestring,"bool")==0)||
(strcmp(n_dataType->valuestring,"string_int")==0)){
flag = (atoi(n_id->valuestring)>0) ? 1 : 0;
}else if(strcmp(n_dataType->valuestring,"double")==0||
strcmp(n_dataType->valuestring,"string_double")==0) {
flag = (atof(n_id->valuestring)>0) ? 1 : 0;
}else if(strcmp(n_dataType->valuestring,"string_bool")==0) {
if(strcmp(n_id->valuestring,"true")==0 ||
strcmp(n_id->valuestring,"TRUE")==0){
flag = 1;
}else if(strcmp(n_id->valuestring,"false")==0 ||
strcmp(n_id->valuestring,"FALSE")==0){
flag = 0;
}
} }
}else if(strcmp(n_dataType->valuestring,"string_int")==0) {
flag = (atoi(n_id->valuestring)>0) ? 1 : 0;
}else if(strcmp(n_dataType->valuestring,"string_double")==0) {
flag = ( atof(n_id->valuestring)>0) ? 1 : 0;
} }
if(flag==1) { if(flag==1) {
...@@ -148,48 +195,61 @@ static cJSON *string_val_type_convert(int type,cJSON *n_id,cJSON *n_dataType) ...@@ -148,48 +195,61 @@ static cJSON *string_val_type_convert(int type,cJSON *n_id,cJSON *n_dataType)
if(strcmp(n_dataType->valuestring,"dummy")==0) { if(strcmp(n_dataType->valuestring,"dummy")==0) {
return NULL; return NULL;
} }
if((strcmp(n_dataType->valuestring,"int")==0) || if(n_id->type == cJSON_True) {
(strcmp(n_dataType->valuestring,"bool")==0)){ args = cJSON_CreateTrue();
if(type==1){ }else if(n_id->type == cJSON_False){
val.dVal = (n_id->valueint>0) ? 1 : 0; args = cJSON_CreateFalse();
}else{ }else if(n_id->type==cJSON_Number){
val.iVal = (n_id->valueint>0) ? 1 : 0; if((strcmp(n_dataType->valuestring,"int")==0) ||
} (strcmp(n_dataType->valuestring,"bool")==0)){
}else if(strcmp(n_dataType->valuestring,"double")==0) { if(type==1){
if(type==1){ val.dVal = (n_id->valueint>0) ? 1 : 0;
val.dVal = n_id->valuedouble; }else{
}else{ val.iVal = (n_id->valueint>0) ? 1 : 0;
val.iVal = n_id->valueint; }
}else if(strcmp(n_dataType->valuestring,"double")==0) {
if(type==1){
val.dVal = n_id->valuedouble;
}else{
val.iVal = n_id->valueint;
}
} }
}else if(strcmp(n_dataType->valuestring,"string_bool")==0) { }else if(n_id->type==cJSON_String){
if(strcmp(n_id->valuestring,"true")==0 || if(strcmp(n_dataType->valuestring,"string_int")==0){
strcmp(n_id->valuestring,"TRUE")==0){
if(type==1){ if(type==1){
val.dVal = 1; val.dVal = atoi(n_id->valuestring);
}else{ }else{
val.iVal = 1; val.iVal = atoi(n_id->valuestring);
} }
}else if(strcmp(n_id->valuestring,"false")==0 || }else if(strcmp(n_dataType->valuestring,"string_double")==0){
strcmp(n_id->valuestring,"FALSE")==0)
if(type==1){ if(type==1){
val.dVal = 0; val.dVal = atof(n_id->valuestring);
}else{ }else{
val.iVal = 0; val.iVal = atof(n_id->valuestring);
} }
}else if(strcmp(n_dataType->valuestring,"string_int")==0) {
if(type==1){
val.dVal = atoi(n_id->valuestring);
}else{
val.iVal = atoi(n_id->valuestring);
} }
}else if(strcmp(n_dataType->valuestring,"string_double")==0) { }else if(n_id->type==cJSON_False||n_id->type==cJSON_True){
if(type==1){ if(strcmp(n_dataType->valuestring,"string_bool")==0){
val.dVal = atof(n_id->valuestring);
}else{ if(strcmp(n_id->valuestring,"true")==0 ||
val.iVal = atof(n_id->valuestring); strcmp(n_id->valuestring,"TRUE")==0){
if(type==1){
val.dVal = 1;
}else{
val.iVal = 1;
}
}else if(strcmp(n_id->valuestring,"false")==0 ||
strcmp(n_id->valuestring,"FALSE")==0){
if(type==1){
val.dVal = 0;
}else{
val.iVal = 0;
}
}
} }
} }
if(type==1){ if(type==1){
snprintf(sVal,sizeof(sVal),"%f",val.dVal); snprintf(sVal,sizeof(sVal),"%f",val.dVal);
...@@ -263,13 +323,13 @@ cJSON * msg_convert_value(cJSON *d_type,cJSON *s_type,cJSON *value) ...@@ -263,13 +323,13 @@ cJSON * msg_convert_value(cJSON *d_type,cJSON *s_type,cJSON *value)
if(d_type==NULL||s_type==NULL||value==NULL|| if(d_type==NULL||s_type==NULL||value==NULL||
d_type->type!=cJSON_String||s_type->type!=cJSON_String){ d_type->type!=cJSON_String||s_type->type!=cJSON_String){
debug_log(LOG_DEBUG,"[ERR] para.\n"); debug_log(LOG_DEBUG_LEVEL,"[ERR] para.\n");
return NULL; return NULL;
} }
pVal = cJSON_Print(value); pVal = cJSON_Print(value);
debug_log(LOG_NORMAL,"[convert]type:%s->%s,val=%s.\n",s_type->valuestring,d_type->valuestring,pVal); debug_log(LOG_NORMAL_LEVEL,"[convert]type:%s->%s,val=%s.\n",s_type->valuestring,d_type->valuestring,pVal);
free(pVal); free(pVal);
...@@ -299,11 +359,11 @@ cJSON *map_type_convert(cJSON *s_dataType,cJSON *s_valueRange,cJSON *value,cJSON ...@@ -299,11 +359,11 @@ cJSON *map_type_convert(cJSON *s_dataType,cJSON *s_valueRange,cJSON *value,cJSON
if(s_valueRange==NULL||s_valueRange->type!=cJSON_Array|| if(s_valueRange==NULL||s_valueRange->type!=cJSON_Array||
d_valueRange==NULL||d_valueRange->type!=cJSON_Array){ d_valueRange==NULL||d_valueRange->type!=cJSON_Array){
debug_log(LOG_DEBUG,"[ERR] range.\n"); debug_log(LOG_DEBUG_LEVEL,"[ERR] range.\n");
return NULL; return NULL;
} }
if(s_dataType==NULL||s_dataType->type!=cJSON_String){ if(s_dataType==NULL||s_dataType->type!=cJSON_String){
debug_log(LOG_DEBUG,"[ERR] dataType.\n"); debug_log(LOG_DEBUG_LEVEL,"[ERR] dataType.\n");
return NULL; return NULL;
} }
...@@ -314,9 +374,9 @@ cJSON *map_type_convert(cJSON *s_dataType,cJSON *s_valueRange,cJSON *value,cJSON ...@@ -314,9 +374,9 @@ cJSON *map_type_convert(cJSON *s_dataType,cJSON *s_valueRange,cJSON *value,cJSON
sVrg = cJSON_Print(s_valueRange); sVrg = cJSON_Print(s_valueRange);
dVrg = cJSON_Print(d_valueRange); dVrg = cJSON_Print(d_valueRange);
pVal = cJSON_Print(value); pVal = cJSON_Print(value);
debug_log(LOG_NORMAL,"[convert] s_dataType:%s,val=%s\n",s_dataType->valuestring,pVal); debug_log(LOG_NORMAL_LEVEL,"[convert] s_dataType:%s,val=%s\n",s_dataType->valuestring,pVal);
debug_log(LOG_INFO,"s_valueRange=%s\n",sVrg); debug_log(LOG_INFO_LEVEL,"s_valueRange=%s\n",sVrg);
debug_log(LOG_INFO,"d_valueRange=%s\n",dVrg); debug_log(LOG_INFO_LEVEL,"d_valueRange=%s\n",dVrg);
free(sVrg); free(sVrg);
free(dVrg); free(dVrg);
free(pVal); free(pVal);
...@@ -379,8 +439,11 @@ cJSON *ccu_value_convert(cJSON *s_dType,cJSON *s_range,cJSON *d_dType,cJSON *d_r ...@@ -379,8 +439,11 @@ cJSON *ccu_value_convert(cJSON *s_dType,cJSON *s_range,cJSON *d_dType,cJSON *d_r
{ {
cJSON *val = NULL; cJSON *val = NULL;
if(strcmp(d_dType->valuestring,"map")==0){ if(strcmp(d_dType->valuestring,"map")==0){
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
val = map_type_convert(s_dType,s_range,value,d_range); val = map_type_convert(s_dType,s_range,value,d_range);
}else{ }else{
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...@@ -415,11 +478,11 @@ int kk_lan_get_msg_id_str(char *msgId,int size) ...@@ -415,11 +478,11 @@ int kk_lan_get_msg_id_str(char *msgId,int size)
int kk_lan_add_val_to_obj(cJSON *obj,cJSON *val,const char *id) int kk_lan_add_val_to_obj(cJSON *obj,cJSON *val,const char *id)
{ {
if(id==NULL||obj==NULL||obj->type!=cJSON_Object||val==NULL){ if(id==NULL||obj==NULL||obj->type!=cJSON_Object||val==NULL){
debug_log(LOG_DEBUG,"[err] para.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] para.\n");
return -1; return -1;
} }
debug_log(LOG_NORMAL,"[add] id(%s),type(%d).\n",id,val->type); debug_log(LOG_NORMAL_LEVEL,"[add] id(%s),type(%d).\n",id,val->type);
if(val->type==cJSON_False){ if(val->type==cJSON_False){
cJSON_AddFalseToObject(obj,id); cJSON_AddFalseToObject(obj,id);
...@@ -432,7 +495,7 @@ int kk_lan_add_val_to_obj(cJSON *obj,cJSON *val,const char *id) ...@@ -432,7 +495,7 @@ int kk_lan_add_val_to_obj(cJSON *obj,cJSON *val,const char *id)
}else if(val->type==cJSON_String){ }else if(val->type==cJSON_String){
cJSON_AddStringToObject(obj,id,val->valuestring); cJSON_AddStringToObject(obj,id,val->valuestring);
}else{ }else{
debug_log(LOG_DEBUG,"[err] nonsupport type(%s).\n",val->type); debug_log(LOG_DEBUG_LEVEL,"[err] nonsupport type(%s).\n",val->type);
return -1; return -1;
} }
return 0; return 0;
...@@ -443,12 +506,12 @@ int kk_lan_replace_val_to_obj(cJSON *obj,cJSON *val,const char *id) ...@@ -443,12 +506,12 @@ int kk_lan_replace_val_to_obj(cJSON *obj,cJSON *val,const char *id)
{ {
char *pVal = NULL; char *pVal = NULL;
if(id==NULL||obj==NULL||obj->type!=cJSON_Object||val==NULL){ if(id==NULL||obj==NULL||obj->type!=cJSON_Object||val==NULL){
debug_log(LOG_DEBUG,"[err] para.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] para.\n");
return -1; return -1;
} }
pVal = cJSON_Print(val); pVal = cJSON_Print(val);
debug_log(LOG_NORMAL,"[replace] id=%s,type=%d,val=%s.\n",id,val->type,pVal); debug_log(LOG_NORMAL_LEVEL,"[replace] id=%s,type=%d,val=%s.\n",id,val->type,pVal);
free(pVal); free(pVal);
if(val->type==cJSON_False){ if(val->type==cJSON_False){
...@@ -462,7 +525,7 @@ int kk_lan_replace_val_to_obj(cJSON *obj,cJSON *val,const char *id) ...@@ -462,7 +525,7 @@ int kk_lan_replace_val_to_obj(cJSON *obj,cJSON *val,const char *id)
}else if(val->type==cJSON_String){ }else if(val->type==cJSON_String){
cJSON_ReplaceItemInObject(obj, id, cJSON_CreateString(val->valuestring)); cJSON_ReplaceItemInObject(obj, id, cJSON_CreateString(val->valuestring));
}else{ }else{
debug_log(LOG_DEBUG,"[err] nonsupport type(%s).\n",val->type); debug_log(LOG_DEBUG_LEVEL,"[err] nonsupport type(%s).\n",val->type);
return -1; return -1;
} }
return 0; return 0;
......
...@@ -114,7 +114,7 @@ void kk_handle_sync_info(void) ...@@ -114,7 +114,7 @@ void kk_handle_sync_info(void)
return; return;
} }
debug_log(LOG_INFO,"[sync] send.\n"); debug_log(LOG_INFO_LEVEL,"[sync] send.\n");
kk_ipc_send(IPC_APP2MID, send_data, strlen(send_data)+1); kk_ipc_send(IPC_APP2MID, send_data, strlen(send_data)+1);
free(send_data); free(send_data);
...@@ -354,7 +354,6 @@ int kk_data_handle(cJSON *json,int sockfd) ...@@ -354,7 +354,6 @@ int kk_data_handle(cJSON *json,int sockfd)
cJSON *opcode = NULL; cJSON *opcode = NULL;
cJSON *arg = NULL; cJSON *arg = NULL;
opcode = cJSON_GetObjectItem(json, OPCODE_STRING); opcode = cJSON_GetObjectItem(json, OPCODE_STRING);
if(opcode != NULL){ if(opcode != NULL){
if(strcmp(opcode->valuestring,LOGIN_OPCODE) == 0){ if(strcmp(opcode->valuestring,LOGIN_OPCODE) == 0){
...@@ -712,18 +711,18 @@ static int kk_lan_scene_handle(cJSON *payload,int isAdd) ...@@ -712,18 +711,18 @@ static int kk_lan_scene_handle(cJSON *payload,int isAdd)
cJSON *sceneId = NULL; cJSON *sceneId = NULL;
if(payload == NULL){ if(payload == NULL){
debug_log(LOG_DEBUG,"[err] payload.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] payload.\n");
return -1; return -1;
} }
if((params = cJSON_GetObjectItem(payload, MSG_PARAMS_STR))==NULL|| if((params = cJSON_GetObjectItem(payload, MSG_PARAMS_STR))==NULL||
params->type!=cJSON_Object){ params->type!=cJSON_Object){
debug_log(LOG_DEBUG,"[err] params err.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] params err.\n");
return -1; return -1;
} }
if((sceneId = cJSON_GetObjectItem(params, MSG_SCENE_SCENEID))==NULL || if((sceneId = cJSON_GetObjectItem(params, MSG_SCENE_SCENEID))==NULL ||
sceneId->type!=cJSON_String){ sceneId->type!=cJSON_String){
debug_log(LOG_DEBUG,"[err] sceneId err.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] sceneId err.\n");
return -1; return -1;
} }
...@@ -745,7 +744,7 @@ void KK_Data_FromMid(void* str,int len) ...@@ -745,7 +744,7 @@ void KK_Data_FromMid(void* str,int len)
cJSON *info = NULL,*payload = NULL; cJSON *info = NULL,*payload = NULL;
cJSON *msgtype = NULL,*deviceCode = NULL,*productCode = NULL; cJSON *msgtype = NULL,*deviceCode = NULL,*productCode = NULL;
debug_log(LOG_FOCUS,"[midware->lan] len=%d,data=%s\n",len,str); debug_log(LOG_FOCUS_LEVEL,"[midware->lan] len=%d,data=%s\n",len,str);
if((json= cJSON_Parse(str)) == NULL) { if((json= cJSON_Parse(str)) == NULL) {
return; return;
......
...@@ -69,34 +69,34 @@ cJSON * kk_control_protocol_convert(kk_map_dev_node_t *devNode,int nodeId,cJSON ...@@ -69,34 +69,34 @@ cJSON * kk_control_protocol_convert(kk_map_dev_node_t *devNode,int nodeId,cJSON
pos = match_opcode_pos(devNode->oldccu,opcode->valuestring,channel); pos = match_opcode_pos(devNode->oldccu,opcode->valuestring,channel);
if(pos==-1){ if(pos==-1){
debug_log(LOG_FOCUS,"not find\n"); debug_log(LOG_FOCUS_LEVEL,"not find\n");
return NULL; return NULL;
} }
debug_log(LOG_FOCUS,"1\n"); debug_log(LOG_FOCUS_LEVEL,"1\n");
newccuItem = cJSON_GetArrayItem(devNode->newccu,pos); newccuItem = cJSON_GetArrayItem(devNode->newccu,pos);
oldccuItem = cJSON_GetArrayItem(devNode->oldccu,pos); oldccuItem = cJSON_GetArrayItem(devNode->oldccu,pos);
debug_log(LOG_FOCUS,"2\n"); debug_log(LOG_FOCUS_LEVEL,"2\n");
o_dataType = cJSON_GetObjectItem(oldccuItem,"dataType"); o_dataType = cJSON_GetObjectItem(oldccuItem,"dataType");
o_valueRange = cJSON_GetObjectItem(oldccuItem,"valueRange"); o_valueRange = cJSON_GetObjectItem(oldccuItem,"valueRange");
debug_log(LOG_FOCUS,"3\n"); debug_log(LOG_FOCUS_LEVEL,"3\n");
n_dataType = cJSON_GetObjectItem(newccuItem,"dataType"); n_dataType = cJSON_GetObjectItem(newccuItem,"dataType");
n_valueRange = cJSON_GetObjectItem(newccuItem,"valueRange"); n_valueRange = cJSON_GetObjectItem(newccuItem,"valueRange");
n_identifier = cJSON_GetObjectItem(newccuItem,"identifier"); n_identifier = cJSON_GetObjectItem(newccuItem,"identifier");
epNum = cJSON_GetObjectItem(newccuItem,"channel"); epNum = cJSON_GetObjectItem(newccuItem,"channel");
debug_log(LOG_FOCUS,"4\n"); debug_log(LOG_FOCUS_LEVEL,"4\n");
if(strcmp(o_dataType->valuestring,"map")==0){ if(strcmp(o_dataType->valuestring,"map")==0){
debug_log(LOG_FOCUS,"5\n"); debug_log(LOG_FOCUS_LEVEL,"5\n");
val = map_type_convert(o_dataType,o_valueRange,arg,n_valueRange); val = map_type_convert(o_dataType,o_valueRange,arg,n_valueRange);
}else{ }else{
debug_log(LOG_FOCUS,"6\n"); debug_log(LOG_FOCUS_LEVEL,"6\n");
val = msg_convert_value(o_dataType,n_dataType,arg); val = msg_convert_value(n_dataType,o_dataType,arg);
} }
debug_log(LOG_FOCUS,"7\n"); debug_log(LOG_FOCUS_LEVEL,"7\n");
cJSON_AddStringToObject(params,"epNum",epNum->valuestring); cJSON_AddStringToObject(params,"epNum",epNum->valuestring);
debug_log(LOG_FOCUS,"8\n"); debug_log(LOG_FOCUS_LEVEL,"8\n");
if(val->type==cJSON_False){ if(val->type==cJSON_False){
cJSON_AddFalseToObject(params,n_identifier->valuestring); cJSON_AddFalseToObject(params,n_identifier->valuestring);
...@@ -111,7 +111,7 @@ cJSON * kk_control_protocol_convert(kk_map_dev_node_t *devNode,int nodeId,cJSON ...@@ -111,7 +111,7 @@ cJSON * kk_control_protocol_convert(kk_map_dev_node_t *devNode,int nodeId,cJSON
}else if(val->type==cJSON_Array){ }else if(val->type==cJSON_Array){
printf("......................\n"); printf("......................\n");
} }
debug_log(LOG_FOCUS,"9\n"); debug_log(LOG_FOCUS_LEVEL,"9\n");
return params; return params;
} }
......
...@@ -4,13 +4,15 @@ ...@@ -4,13 +4,15 @@
#include <stdio.h> #include <stdio.h>
#include <time.h> #include <time.h>
#define LOG_NORMAL 1 //亮白色
#define LOG_DEBUG 2 //绿色
#define LOG_INFO 3 //蓝色 #define LOG_NORMAL_LEVEL 1 //亮白色
#define LOG_FOCUS 4 //黄色 #define LOG_DEBUG_LEVEL 2 //绿色
#define LOG_WARNING 5 //蓝绿色 #define LOG_INFO_LEVEL 3 //蓝色
#define LOG_ERROR 6 //紫色 #define LOG_FOCUS_LEVEL 4 //黄色
#define LOG_CRITICAL 7 //红色 #define LOG_WARNING_LEVEL 5 //蓝绿色
#define LOG_ERROR_LEVEL 6 //紫色
#define LOG_CRITICAL_LEVEL 7 //红色
#define LOG_NORMAL_ACT "\033[0;1;37m" #define LOG_NORMAL_ACT "\033[0;1;37m"
#define LOG_DEBUG_ACT "\033[0;1;32m" #define LOG_DEBUG_ACT "\033[0;1;32m"
...@@ -23,7 +25,7 @@ ...@@ -23,7 +25,7 @@
#define syslog_en 1 #define syslog_en 1
#define LOG_LEVEL LOG_NORMAL #define LOG_LEVEL LOG_NORMAL_LEVEL
#define LOG_LEVEL_1 LOG_NORMAL_ACT #define LOG_LEVEL_1 LOG_NORMAL_ACT
...@@ -48,7 +50,7 @@ ...@@ -48,7 +50,7 @@
#if (syslog_en) #if (syslog_en)
#define debug_log(level,format,...) do { \ #define debug_log(level,format,...) do { \
if( level >= LOG_LEVEL && level <= LOG_CRITICAL) { \ if( level >= LOG_LEVEL && level <= LOG_CRITICAL_LEVEL) { \
char buff[64] = {0};\ char buff[64] = {0};\
time_t curTime = time(NULL); \ time_t curTime = time(NULL); \
struct tm *c = gmtime(&curTime);\ struct tm *c = gmtime(&curTime);\
......
...@@ -66,15 +66,55 @@ static void kk_lan_ccuid_init(void) ...@@ -66,15 +66,55 @@ static void kk_lan_ccuid_init(void)
} }
} }
int prg_run_singleton(const char *prg)
{
int fd;
int ret;
char pid_file[256] = {0};
char pid_data[32] = {0};
struct flock fl;
if(prg==NULL){
return -1;
}
memset(pid_file,0,sizeof(pid_file));
snprintf(pid_file, sizeof(pid_file), "/var/run/%s.pid",prg);
fd = open(pid_file, O_CREAT|O_WRONLY|O_TRUNC, 0644);
if(fd<0){
return -1;
}
fl.l_type = F_WRLCK;
fl.l_start = 0;
fl.l_whence = SEEK_SET;
fl.l_len = 0;
ret = fcntl(fd,F_SETLK,&fl);
if(ret < 0){
return -1;
}
memset(pid_data,0,sizeof(pid_data));
snprintf(pid_data, sizeof(pid_data), "%d",getpid());
return write(fd,pid_data,strlen(pid_data));
}
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
int rc = 0; int ret = 0;
char *ppp;
open("kk_lan",LOG_PID,LOG_USER); open("kk_lan",LOG_PID,LOG_USER);
if(prg_run_singleton(argv[0])<0){
debug_log(LOG_CRITICAL_LEVEL,"[%s]run singleton fail!\n",argv[0]);
return -1;
}
kk_lan_ccuid_init(); kk_lan_ccuid_init();
/*set the callback to get the device date to cloud*/ /*set the callback to get the device date to cloud*/
...@@ -82,7 +122,7 @@ int main(int argc, char* argv[]) ...@@ -82,7 +122,7 @@ int main(int argc, char* argv[])
kk_findccu_handle_init(); kk_findccu_handle_init();
kk_map_dev_init(); kk_map_dev_init();
kk_login_init(); kk_login_init();
kk_voice_panel_init(argc,argv); //kk_voice_panel_init(argc,argv);
//lan_queue_init(); //lan_queue_init();
kk_lan_db_node_init(); kk_lan_db_node_init();
...@@ -91,6 +131,6 @@ int main(int argc, char* argv[]) ...@@ -91,6 +131,6 @@ int main(int argc, char* argv[])
while(1){ while(1){
sleep(1); sleep(1);
} }
return rc; return 0;
} }
...@@ -428,7 +428,7 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data) ...@@ -428,7 +428,7 @@ int kk_sync_devices_to_sdk(cJSON *root,cJSON *data)
// //
cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node) cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
{ {
int i,num = 0; int i,num=0,n_num = 0,o_num = 0;
cJSON *newccu,*oldccu; cJSON *newccu,*oldccu;
cJSON *arg = cJSON_CreateObject(); cJSON *arg = cJSON_CreateObject();
...@@ -445,12 +445,15 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node) ...@@ -445,12 +445,15 @@ cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node)
return arg; return arg;
} }
n_num = cJSON_GetArraySize(newccu);
o_num = cJSON_GetArraySize(oldccu);
num = (n_num>o_num)?n_num:o_num;
num = cJSON_GetArraySize(newccu);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
cJSON * newccuItem = cJSON_GetArrayItem(newccu,i); cJSON * newccuItem = cJSON_GetArrayItem(newccu,i);
cJSON * oldccuItem = cJSON_GetArrayItem(oldccu,i); cJSON * oldccuItem = cJSON_GetArrayItem(oldccu,i);
cJSON *val = NULL; cJSON *val = NULL;
cJSON *synType = cJSON_GetObjectItem(oldccuItem,"synType"); cJSON *synType = cJSON_GetObjectItem(oldccuItem,"synType");
......
...@@ -315,7 +315,7 @@ void *kk_vp_manage_thread(void *arg) ...@@ -315,7 +315,7 @@ void *kk_vp_manage_thread(void *arg)
break; break;
case UPDATING_8009_CONFIG_FILE_INFO: case UPDATING_8009_CONFIG_FILE_INFO:
debug_log(LOG_INFO,"updating...\n"); debug_log(LOG_INFO_LEVEL,"updating...\n");
sleep(1); sleep(1);
//todo :超时取消 //todo :超时取消
break; break;
...@@ -357,7 +357,7 @@ void kk_voice_panel_uart_dev_chose(int argc, char* argv[]) ...@@ -357,7 +357,7 @@ void kk_voice_panel_uart_dev_chose(int argc, char* argv[])
{NULL, 0, NULL, 0}, {NULL, 0, NULL, 0},
}; };
debug_log(LOG_FOCUS,"kk_voice_panel_uart_dev_chose\n"); debug_log(LOG_FOCUS_LEVEL,"kk_voice_panel_uart_dev_chose\n");
while((opt =getopt_long_only(argc,argv,string,long_options,&option_index))!= -1) while((opt =getopt_long_only(argc,argv,string,long_options,&option_index))!= -1)
{ {
if(opt==0xAA5555AA){ if(opt==0xAA5555AA){
...@@ -372,7 +372,7 @@ void kk_voice_panel_uart_dev_chose(int argc, char* argv[]) ...@@ -372,7 +372,7 @@ void kk_voice_panel_uart_dev_chose(int argc, char* argv[])
snprintf(serialDev,sizeof(serialDev),"%s",SERIAL_NAME); snprintf(serialDev,sizeof(serialDev),"%s",SERIAL_NAME);
} }
debug_log(LOG_FOCUS,"serialDev=%s\n",serialDev); debug_log(LOG_FOCUS_LEVEL,"serialDev=%s\n",serialDev);
} }
int kk_voice_panel_init(int argc, char* argv[]) int kk_voice_panel_init(int argc, char* argv[])
......
...@@ -46,16 +46,18 @@ static KK_VP_CTRL vp_ctrl_table[]={ ...@@ -46,16 +46,18 @@ static KK_VP_CTRL vp_ctrl_table[]={
{is_outlet_dev,outlet_dev_handle} {is_outlet_dev,outlet_dev_handle}
}; };
static int light_dev_pid[]={ static int light_dev_pid[]={
3023,3024 3001,3002,3003,3022,3023,3024
}; };
static int curtain_dev_pid[]={ static int curtain_dev_pid[]={
3067 3005,3006,3007,3008,3009,3010,3011,3026,3027,3067
}; };
static int outlet_dev_pid[]={ static int outlet_dev_pid[]={
3020 3019,3020,3037,3038
}; };
......
...@@ -67,7 +67,7 @@ int send_msg_to_module(cJSON *root) ...@@ -67,7 +67,7 @@ int send_msg_to_module(cJSON *root)
} }
if((msg = cJSON_Print(root))!=NULL){ if((msg = cJSON_Print(root))!=NULL){
debug_log(LOG_INFO,"[lan->module]\n%s\n",msg); debug_log(LOG_INFO_LEVEL,"[lan->module]\n%s\n",msg);
cJSON_Minify(msg); cJSON_Minify(msg);
kk_send_data_to_sdk(msg); kk_send_data_to_sdk(msg);
free(msg); free(msg);
...@@ -90,13 +90,14 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type) ...@@ -90,13 +90,14 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type)
if(newccuItem==NULL||newccuItem->type!=cJSON_Object|| if(newccuItem==NULL||newccuItem->type!=cJSON_Object||
oldccuItem==NULL||oldccuItem->type!=cJSON_Object){ oldccuItem==NULL||oldccuItem->type!=cJSON_Object){
debug_log(LOG_DEBUG,"[err] para.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] para.\n");
return NULL; return NULL;
} }
o_valueRange = cJSON_GetObjectItem(oldccuItem,"valueRange"); o_valueRange = cJSON_GetObjectItem(oldccuItem,"valueRange");
n_valueRange = cJSON_GetObjectItem(newccuItem,"valueRange"); n_valueRange = cJSON_GetObjectItem(newccuItem,"valueRange");
n_dataType = cJSON_GetObjectItem(newccuItem,DATATYPE_STRING); n_dataType = cJSON_GetObjectItem(newccuItem,DATATYPE_STRING);
n_value = cJSON_GetObjectItem(newccuItem,"value"); n_value = cJSON_GetObjectItem(newccuItem,"value");
...@@ -105,6 +106,7 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type) ...@@ -105,6 +106,7 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type)
}else{ }else{
o_dataType = cJSON_GetObjectItem(oldccuItem,DATATYPE_STRING); o_dataType = cJSON_GetObjectItem(oldccuItem,DATATYPE_STRING);
} }
return ccu_value_convert(n_dataType,n_valueRange,o_dataType,o_valueRange,n_value); return ccu_value_convert(n_dataType,n_valueRange,o_dataType,o_valueRange,n_value);
} }
...@@ -113,18 +115,38 @@ static int _kk_lan_update_device_status(int nodeId,cJSON *opcode,cJSON *arg) ...@@ -113,18 +115,38 @@ static int _kk_lan_update_device_status(int nodeId,cJSON *opcode,cJSON *arg)
{ {
cJSON *msg = NULL; cJSON *msg = NULL;
char nodeBuff[33] = {0}; char nodeBuff[33] = {0};
char valBuff[33] = {0};
if(opcode==NULL||opcode->type!=cJSON_String|| if(opcode==NULL||opcode->type!=cJSON_String||
arg==NULL||arg->type!=cJSON_String){ arg==NULL){
debug_log(LOG_DEBUG,"[err] para.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] para.\n");
return -1; return -1;
} }
debug_log(LOG_FOCUS,"nodeId=%d,opcode=%s,arg=%s\n",nodeId,opcode->valuestring,arg->valuestring);
memset(nodeBuff,0,sizeof(nodeBuff)); memset(nodeBuff,0,sizeof(nodeBuff));
snprintf(nodeBuff,32,"%d",nodeId); snprintf(nodeBuff,32,"%d",nodeId);
memset(nodeBuff,0,sizeof(nodeBuff));
memset(valBuff,0,sizeof(valBuff));
if(arg->type==cJSON_String){
debug_log(LOG_FOCUS_LEVEL,"nodeId=%d,opcode=%s,arg=%s\n",nodeId,opcode->valuestring,arg->valuestring);
snprintf(valBuff,sizeof(valBuff),"%s",arg->valuestring);
}else if(arg->type==cJSON_Number){
if(((int)(arg->valuedouble*10))%10==0){
debug_log(LOG_FOCUS_LEVEL,"nodeId=%d,opcode=%s,arg=%d\n",nodeId,opcode->valuestring,arg->valueint);
snprintf(valBuff,sizeof(valBuff),"%d",arg->valueint);
}else{
debug_log(LOG_FOCUS_LEVEL,"nodeId=%d,opcode=%s,arg=%f\n",nodeId,opcode->valuestring,arg->valuedouble);
snprintf(valBuff,sizeof(valBuff),"%f",arg->valuedouble);
}
}else if(arg->type==cJSON_True){
snprintf(valBuff,sizeof(valBuff),"%s","true");
}else if(arg->type==cJSON_True){
snprintf(valBuff,sizeof(valBuff),"%s","false");
}
msg = old_ccu_msg_build(nodeBuff,opcode->valuestring,"success",arg->valuestring); msg = old_ccu_msg_build(nodeBuff,opcode->valuestring,"success",arg->valuestring);
send_msg_to_module(msg); send_msg_to_module(msg);
cJSON_Delete(msg); cJSON_Delete(msg);
...@@ -139,7 +161,7 @@ static int _kk_lan_check_channel(cJSON *channelObj,cJSON *epNumObj) ...@@ -139,7 +161,7 @@ static int _kk_lan_check_channel(cJSON *channelObj,cJSON *epNumObj)
if(channelObj!=NULL && epNumObj!=NULL){ if(channelObj!=NULL && epNumObj!=NULL){
if(epNumObj->type!=cJSON_String){ if(epNumObj->type!=cJSON_String){
debug_log(LOG_INFO,"[err] epNumObj.\n"); debug_log(LOG_INFO_LEVEL,"[err] epNumObj.\n");
return -1; return -1;
} }
if(strlen(channelObj->valuestring)!=strlen(epNumObj->valuestring) || if(strlen(channelObj->valuestring)!=strlen(epNumObj->valuestring) ||
...@@ -151,13 +173,13 @@ static int _kk_lan_check_channel(cJSON *channelObj,cJSON *epNumObj) ...@@ -151,13 +173,13 @@ static int _kk_lan_check_channel(cJSON *channelObj,cJSON *epNumObj)
}else{ }else{
if(channelObj==NULL){ if(channelObj==NULL){
if(epNumObj->type!=cJSON_String){ if(epNumObj->type!=cJSON_String){
debug_log(LOG_INFO,"[err] epNumObj.\n"); debug_log(LOG_INFO_LEVEL,"[err] epNumObj.\n");
return -1; return -1;
} }
channel = atoi(epNumObj->valuestring); channel = atoi(epNumObj->valuestring);
}else if(epNumObj==NULL){ }else if(epNumObj==NULL){
if(channelObj->type!=cJSON_String){ if(channelObj->type!=cJSON_String){
debug_log(LOG_INFO,"[err] channelObj.\n"); debug_log(LOG_INFO_LEVEL,"[err] channelObj.\n");
return -1; return -1;
} }
channel = atoi(channelObj->valuestring); channel = atoi(channelObj->valuestring);
...@@ -183,15 +205,15 @@ static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t * ...@@ -183,15 +205,15 @@ static int _kk_lan_sync_device_status(const char *deviceCode,kk_map_dev_node_t *
} }
if((arg =_kk_sync_devicestatus_arg_build(devNode))==NULL){ if((arg =_kk_sync_devicestatus_arg_build(devNode))==NULL){
debug_log(LOG_DEBUG,"[err] arg.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] arg.\n");
return -1; return -1;
} }
if((nodeId = kk_lan_db_node_get(deviceCode,1))==-1){ if((nodeId = kk_lan_db_node_get(deviceCode,1))==-1){
debug_log(LOG_DEBUG,"[err] nodeId.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] nodeId.\n");
return -1; return -1;
} }
debug_log(LOG_FOCUS,"[sync] device status.\n"); debug_log(LOG_FOCUS_LEVEL,"[sync] device status.\n");
memset(nodeBuff,0,sizeof(nodeBuff)); memset(nodeBuff,0,sizeof(nodeBuff));
snprintf(nodeBuff,sizeof(nodeBuff),"%d",nodeId); snprintf(nodeBuff,sizeof(nodeBuff),"%d",nodeId);
...@@ -221,7 +243,8 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev ...@@ -221,7 +243,8 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
cJSON *n_id = NULL; cJSON *n_id = NULL;
cJSON *item_size = NULL; int o_item_size=0,n_item_size=0;
int item_size = 0;
cJSON *epsAry = NULL,*epAryItem = NULL,*epAryEpNumObj = NULL; cJSON *epsAry = NULL,*epAryItem = NULL,*epAryEpNumObj = NULL;
...@@ -231,27 +254,33 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev ...@@ -231,27 +254,33 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
if(deviceCode==NULL||devNode==NULL|| if(deviceCode==NULL||devNode==NULL||
params==NULL||params->type!=cJSON_Object){ params==NULL||params->type!=cJSON_Object){
debug_log(LOG_DEBUG,"[err] para.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] para.\n");
return -1; return -1;
} }
oldccu = devNode->oldccu; oldccu = devNode->oldccu;
newccu = devNode->newccu; newccu = devNode->newccu;
item_size = cJSON_GetArraySize(newccu); o_item_size = cJSON_GetArraySize(oldccu);
n_item_size = cJSON_GetArraySize(newccu);
item_size = (n_item_size>o_item_size)?n_item_size:o_item_size;
for(i=0;i<item_size;i++){ for(i=0;i<item_size;i++){
n_item = cJSON_GetArrayItem(newccu,i); n_item = cJSON_GetArrayItem(newccu,i);
if((o_item = cJSON_GetArrayItem(oldccu,i))==NULL|| if((o_item = cJSON_GetArrayItem(oldccu,i))==NULL||
o_item->type!=cJSON_Object){ o_item->type!=cJSON_Object){
debug_log(LOG_INFO,"[err] para.\n"); debug_log(LOG_INFO_LEVEL,"[err] para.i=%d\n",i);
continue ; continue ;
} }
if((n_id = cJSON_GetObjectItem(n_item,"identifier"))==NULL|| if((n_id = cJSON_GetObjectItem(n_item,"identifier"))==NULL||
n_id->type!=cJSON_String){ n_id->type!=cJSON_String){
debug_log(LOG_DEBUG,"[err] cfg file.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] cfg file.\n");
continue; continue;
} }
...@@ -263,16 +292,18 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev ...@@ -263,16 +292,18 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
o_dataType = cJSON_GetObjectItem(o_item,"dataType"); o_dataType = cJSON_GetObjectItem(o_item,"dataType");
o_valueRange = cJSON_GetObjectItem(o_item,"valueRange"); o_valueRange = cJSON_GetObjectItem(o_item,"valueRange");
if(n_dataType==NULL||n_dataType->type!=cJSON_String|| if(n_dataType==NULL||n_dataType->type!=cJSON_String||
o_dataType==NULL||o_dataType->type!=cJSON_String){ o_dataType==NULL||o_dataType->type!=cJSON_String){
debug_log(LOG_DEBUG,"[err] dataType.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] dataType.\n");
continue; continue;
} }
channelObj = cJSON_GetObjectItem(o_item,"channel"); channelObj = cJSON_GetObjectItem(o_item,"channel");
epNumObj = cJSON_GetObjectItem(params,"epNum"); epNumObj = cJSON_GetObjectItem(params,"epNum");
if((channel = _kk_lan_check_channel(channelObj,epNumObj))==-1){ if((channel = _kk_lan_check_channel(channelObj,epNumObj))==-1){
debug_log(LOG_DEBUG,"[channel] %d.\n",channel); debug_log(LOG_DEBUG_LEVEL,"[channel] %d.\n",channel);
continue; continue;
} }
...@@ -283,12 +314,12 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev ...@@ -283,12 +314,12 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
epAryEpNumObj = cJSON_GetObjectItem(epAryItem,"epNum"); epAryEpNumObj = cJSON_GetObjectItem(epAryItem,"epNum");
if(epAryEpNumObj==NULL||epAryEpNumObj->type!=cJSON_String ||channel!=atoi(epAryEpNumObj->valuestring)){ if(epAryEpNumObj==NULL||epAryEpNumObj->type!=cJSON_String ||channel!=atoi(epAryEpNumObj->valuestring)){
debug_log(LOG_NORMAL,"[epsAry match] next.\n"); debug_log(LOG_NORMAL_LEVEL,"[epsAry match] next.\n");
continue ; continue ;
} }
if((valObj=cJSON_GetObjectItem(epAryItem,n_id->valuestring))==NULL){ if((valObj=cJSON_GetObjectItem(epAryItem,n_id->valuestring))==NULL){
debug_log(LOG_NORMAL,"[epsAry match] next.\n"); debug_log(LOG_NORMAL_LEVEL,"[epsAry match] next.\n");
continue ; continue ;
}else{ }else{
mFlag = 1; mFlag = 1;
...@@ -300,35 +331,40 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev ...@@ -300,35 +331,40 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
} }
}else{ }else{
if((valObj=cJSON_GetObjectItem(params,n_id->valuestring))==NULL){ if((valObj=cJSON_GetObjectItem(params,n_id->valuestring))==NULL){
debug_log(LOG_NORMAL,"[match] next.\n"); debug_log(LOG_NORMAL_LEVEL,"[match] next.\n");
continue ; continue ;
} }
} }
if((nodeId = kk_lan_db_node_get(deviceCode,channel))==-1){ if((nodeId = kk_lan_db_node_get(deviceCode,channel))==-1){
debug_log(LOG_DEBUG,"[err] not find node.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] not find node.\n");
continue; continue;
} }
if((opcode = cJSON_GetObjectItem(n_item,"opcodemap"))==NULL|| if((opcode = cJSON_GetObjectItem(n_item,"opcodemap"))==NULL||
opcode->type!=cJSON_String){ opcode->type!=cJSON_String){
debug_log(LOG_DEBUG,"[err] cfg file.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] cfg file.\n");
continue; continue;
} }
kk_lan_replace_val_to_obj(n_item,valObj,"value"); kk_lan_replace_val_to_obj(n_item,valObj,"value");
if((args = ccu_value_convert(n_dataType,n_valueRange,o_dataType,o_valueRange,valObj))!=NULL){ if((args = ccu_value_convert(n_dataType,n_valueRange,o_dataType,o_valueRange,valObj))!=NULL){
_kk_lan_update_device_status(nodeId,opcode,args); _kk_lan_update_device_status(nodeId,opcode,args);
//todo : //todo :
//cJSON_Delete(args); //cJSON_Delete(args);
} }
} }
_kk_lan_sync_device_status(deviceCode,devNode); _kk_lan_sync_device_status(deviceCode,devNode);
...@@ -363,7 +399,7 @@ int kk_lan_property_post_deal(const char *deviceCode,cJSON *payload) ...@@ -363,7 +399,7 @@ int kk_lan_property_post_deal(const char *deviceCode,cJSON *payload)
cJSON *params = NULL; cJSON *params = NULL;
kk_map_dev_node_t *dev = NULL; kk_map_dev_node_t *dev = NULL;
debug_log(LOG_FOCUS,"[property post] deviceCode(%s).\n",deviceCode); debug_log(LOG_FOCUS_LEVEL,"[property post] deviceCode(%s).\n",deviceCode);
if(kk_map_dev_search_by_deviceCode(deviceCode, &dev)==0){ if(kk_map_dev_search_by_deviceCode(deviceCode, &dev)==0){
params = cJSON_GetObjectItem(payload,"params"); params = cJSON_GetObjectItem(payload,"params");
...@@ -374,7 +410,7 @@ int kk_lan_property_post_deal(const char *deviceCode,cJSON *payload) ...@@ -374,7 +410,7 @@ int kk_lan_property_post_deal(const char *deviceCode,cJSON *payload)
return kk_lan_property_convert(deviceCode,dev,params); return kk_lan_property_convert(deviceCode,dev,params);
} }
}else{ }else{
debug_log(LOG_DEBUG,"[err] not find deviceCode(%s).\n",deviceCode); debug_log(LOG_DEBUG_LEVEL,"[err] not find deviceCode(%s).\n",deviceCode);
return -1; return -1;
} }
return 0; return 0;
...@@ -386,12 +422,12 @@ int kk_lan_property_syn_deal(const char *deviceCode,cJSON *properties) ...@@ -386,12 +422,12 @@ int kk_lan_property_syn_deal(const char *deviceCode,cJSON *properties)
cJSON *params = NULL; cJSON *params = NULL;
kk_map_dev_node_t *dev = NULL; kk_map_dev_node_t *dev = NULL;
debug_log(LOG_FOCUS,"[property syn] deviceCode(%s).\n",deviceCode); debug_log(LOG_FOCUS_LEVEL,"[property syn] deviceCode(%s).\n",deviceCode);
if(kk_map_dev_search_by_deviceCode(deviceCode, &dev)==0){ if(kk_map_dev_search_by_deviceCode(deviceCode, &dev)==0){
return kk_lan_property_convert(deviceCode,dev,properties); return kk_lan_property_convert(deviceCode,dev,properties);
}else{ }else{
debug_log(LOG_DEBUG,"[err] not find deviceCode(%s).\n",deviceCode); debug_log(LOG_DEBUG_LEVEL,"[err] not find deviceCode(%s).\n",deviceCode);
return -1; return -1;
} }
return 0; return 0;
...@@ -400,7 +436,7 @@ int kk_lan_property_syn_deal(const char *deviceCode,cJSON *properties) ...@@ -400,7 +436,7 @@ int kk_lan_property_syn_deal(const char *deviceCode,cJSON *properties)
//添加场景通知 //添加场景通知
void kk_lan_add_scene_notify(const char* scene_id) void kk_lan_add_scene_notify(const char* scene_id)
{ {
debug_log(LOG_FOCUS,"[notify] add scene(%s).\n",scene_id); debug_log(LOG_FOCUS_LEVEL,"[notify] add scene(%s).\n",scene_id);
kk_handle_sync_info(); kk_handle_sync_info();
} }
...@@ -408,7 +444,7 @@ void kk_lan_add_scene_notify(const char* scene_id) ...@@ -408,7 +444,7 @@ void kk_lan_add_scene_notify(const char* scene_id)
//删除场景通知 //删除场景通知
void kk_lan_delete_scene_notify(const char* scene_id) void kk_lan_delete_scene_notify(const char* scene_id)
{ {
debug_log(LOG_FOCUS,"[notify] delete scene(%s).\n",scene_id); debug_log(LOG_FOCUS_LEVEL,"[notify] delete scene(%s).\n",scene_id);
cJSON *msg = old_ccu_msg_build(scene_id,"DELETE_SCENE",SUCCESS_STR,WILDCARD_CHARACTER_STR); cJSON *msg = old_ccu_msg_build(scene_id,"DELETE_SCENE",SUCCESS_STR,WILDCARD_CHARACTER_STR);
send_msg_to_module(msg); send_msg_to_module(msg);
...@@ -422,7 +458,7 @@ int kk_lan_arming_status_notify(int type) ...@@ -422,7 +458,7 @@ int kk_lan_arming_status_notify(int type)
{ {
cJSON *msg = NULL; cJSON *msg = NULL;
debug_log(LOG_FOCUS,"[notify] arming status(%d).\n",type); debug_log(LOG_FOCUS_LEVEL,"[notify] arming status(%d).\n",type);
if(type==0){ if(type==0){
msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,GUARD_STATUS_ARMING_LEAVE_HOME,SUCCESS_STR,WILDCARD_CHARACTER_STR); msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,GUARD_STATUS_ARMING_LEAVE_HOME,SUCCESS_STR,WILDCARD_CHARACTER_STR);
...@@ -433,7 +469,7 @@ int kk_lan_arming_status_notify(int type) ...@@ -433,7 +469,7 @@ int kk_lan_arming_status_notify(int type)
}else if(type==3){ }else if(type==3){
msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,ARMING_STATUS_GUARD_ZONE,SUCCESS_STR,WILDCARD_CHARACTER_STR); msg = old_ccu_msg_build(WILDCARD_CHARACTER_STR,ARMING_STATUS_GUARD_ZONE,SUCCESS_STR,WILDCARD_CHARACTER_STR);
}else{ }else{
debug_log(LOG_DEBUG,"[err] unknow type(%d).\n",type); debug_log(LOG_DEBUG_LEVEL,"[err] unknow type(%d).\n",type);
return -1; return -1;
} }
...@@ -451,11 +487,11 @@ static int _kk_lan_delete_node(const char *deviceCode,const char *nodeid) ...@@ -451,11 +487,11 @@ static int _kk_lan_delete_node(const char *deviceCode,const char *nodeid)
kk_map_dev_node_t *dev; kk_map_dev_node_t *dev;
if(deviceCode==NULL||nodeid==NULL){ if(deviceCode==NULL||nodeid==NULL){
debug_log(LOG_DEBUG,"[err] params.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] params.\n");
return -1; return -1;
} }
debug_log(LOG_FOCUS,"[del dev node] id(%s).\n",nodeid); debug_log(LOG_FOCUS_LEVEL,"[del dev node] id(%s).\n",nodeid);
arg = cJSON_CreateObject(); arg = cJSON_CreateObject();
_deviceCode_switchto_mac(deviceCode,mac); _deviceCode_switchto_mac(deviceCode,mac);
...@@ -476,7 +512,7 @@ static int _kk_lan_delete_device(const char *deviceCode) ...@@ -476,7 +512,7 @@ static int _kk_lan_delete_device(const char *deviceCode)
num = kk_lan_db_node_get_all(deviceCode,list); num = kk_lan_db_node_get_all(deviceCode,list);
debug_log(LOG_FOCUS,"[del dev] deviceCode(%s)/node num(%d).\n",deviceCode,num); debug_log(LOG_FOCUS_LEVEL,"[del dev] deviceCode(%s)/node num(%d).\n",deviceCode,num);
for(i=0;i<num;i++){ for(i=0;i<num;i++){
memset(nodeId,0,sizeof(nodeId)); memset(nodeId,0,sizeof(nodeId));
...@@ -500,13 +536,13 @@ int kk_lan_device_delete_notify(cJSON *payload) ...@@ -500,13 +536,13 @@ int kk_lan_device_delete_notify(cJSON *payload)
if((params = cJSON_GetObjectItem(payload,"params"))==NULL|| if((params = cJSON_GetObjectItem(payload,"params"))==NULL||
params->type!=cJSON_Object){ params->type!=cJSON_Object){
debug_log(LOG_DEBUG,"[err] params.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] params.\n");
return -1; return -1;
} }
if((deviceCode = cJSON_GetObjectItem(params, "deviceCode"))==NULL|| if((deviceCode = cJSON_GetObjectItem(params, "deviceCode"))==NULL||
params->type!=cJSON_String){ deviceCode->type!=cJSON_String){
debug_log(LOG_DEBUG,"[err] deviceCode.\n"); debug_log(LOG_DEBUG_LEVEL,"[err] deviceCode.\n");
return -1; return -1;
} }
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
#include "kk_voice_panel_cfg.h" #include "kk_voice_panel_cfg.h"
#define VP_CONFIG_FILE_MD5 "voice_data.MD5"
#define VP_CONFIG_FILE "/etc/smarthome/voice_data.json" #define VP_CONFIG_FILE "/etc/smarthome/voice_data.json"
#define VP_CONFIG_FILE_TAR_GZ "voice_data.tar.gz" #define VP_CONFIG_FILE_MD5 "/data/kk/voice_data.MD5"
#define VP_CONFIG_FILE_TAR_GZ "/data/kk/voice_data.tar.gz"
#define OPCODE_8009_SNAPSHOOT 0x1000 #define OPCODE_8009_SNAPSHOOT 0x1000
......
{ {
"productCode":"3024", "productCode":"3024",
"operateType":"3", "operateType":"3",
"channel":3, "channel":3,
"newccu":[ "newccu":[
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"1", "channel":"1",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
}, },
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"2", "channel":"2",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
}, },
{ {
"identifier":"PowerSwitch", "identifier":"PowerSwitch",
"opcodemap":"SWITCH", "opcodemap":"SWITCH",
"dataType":"int", "dataType":"int",
"channel":"3", "channel":"3",
"valueRange":[0,1], "valueRange":[0,1],
"value": 0 "value": 0
} }
], ],
"oldccu":[ "oldccu":[
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"1", "channel":"1",
"valueRange":["OFF","ON"] "valueRange":["OFF","ON"]
}, },
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"2", "channel":"2",
"valueRange":["OFF","ON"] "valueRange":["OFF","ON"]
}, },
{ {
"opcode":"SWITCH", "opcode":"SWITCH",
"identifiermap":"PowerSwitch", "identifiermap":"PowerSwitch",
"dataType":"map", "dataType":"map",
"channel":"3", "channel":"3",
"valueRange":["OFF","ON"] "valueRange":["OFF","ON"]
} }
] ]
} }
\ No newline at end of file
...@@ -47,13 +47,6 @@ ...@@ -47,13 +47,6 @@
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"value": 22 "value": 22
},{
"identifier":"time_off",
"opcodemap":"FLOOR_HEATING_DEV_STATUS",
"dataType":"dummy",
"channel":"1",
"valueRange":[],
"value": 0
} }
], ],
"oldccu":[ "oldccu":[
...@@ -76,7 +69,7 @@ ...@@ -76,7 +69,7 @@
},{ },{
"opcode":"SET_WORK_TEMPERATURE", "opcode":"SET_WORK_TEMPERATURE",
"identifiermap":"Temperature", "identifiermap":"Temperature",
"dataType":"double", "dataType":"string_double",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"work_temperature", "syn":"work_temperature",
...@@ -84,7 +77,7 @@ ...@@ -84,7 +77,7 @@
},{ },{
"opcode":"FLOOR_HEATING_SET_TIME_OFF", "opcode":"FLOOR_HEATING_SET_TIME_OFF",
"identifiermap":"TimingOffTime", "identifiermap":"TimingOffTime",
"dataType":"double", "dataType":"fit",
"channel":"1", "channel":"1",
"valueRange":[], "valueRange":[],
"syn":"time_off", "syn":"time_off",
......
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