Commit 890c7106 authored by chen.weican's avatar chen.weican

【修改内容】1,修改主机重启后属性上报采用异步模式;2,sqlite数据库源码更新(之前的源码太大)

【提交人】陈伟灿
parent 363145b7
LIBA_TARGET := libiot_kcloud.a
SRCS_kcloud := kcloud_main.c
$(call Append_Conditional, LIB_SRCS_EXCLUDE, kcloud_main.c)
$(call Append_Conditional, SRCS_kcloud, kcloud_main.c)
$(call Append_Conditional, TARGET, kcloud)
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -502,7 +502,7 @@ int iotx_report_id(void)
return g_report_id++;
}
int dm_mgr_upstream_thing_property_post(_IN_ int devid, _IN_ char *payload, _IN_ int payload_len)
int dm_mgr_upstream_thing_property_post(_IN_ int devid, _IN_ char *payload, _IN_ int payload_len,_IN_ int isAsync)
{
int res = 0;
dm_msg_request_t request;
......@@ -522,7 +522,7 @@ int dm_mgr_upstream_thing_property_post(_IN_ int devid, _IN_ char *payload, _IN_
//request.callback = dm_client_thing_event_post_reply;
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,isAsync);
free(request.msgTypeStr);
free(request.params);
return res;
......@@ -549,7 +549,7 @@ int dm_mgr_upstream_thing_event_post(_IN_ int devid, _IN_ char *identifier, _IN_
//request.callback = dm_client_thing_event_post_reply;
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
free(request.msgTypeStr);
free(request.params);
return res;
......@@ -669,7 +669,7 @@ int dm_mgr_upstream_thing_sub_register(_IN_ int devid)
//request.callback = dm_client_thing_sub_register_reply;
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
}
......@@ -723,7 +723,7 @@ int dm_mgr_upstream_thing_sub_unregister(_IN_ int devid)
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -781,7 +781,7 @@ int dm_mgr_upstream_thing_topo_add(_IN_ int devid)
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -838,7 +838,7 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -882,7 +882,7 @@ int dm_mgr_upstream_thing_topo_get(void)
//request.callback = dm_client_thing_topo_get_reply;
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
}
......@@ -935,7 +935,7 @@ int dm_mgr_upstream_thing_list_found(_IN_ int devid)
//request.callback = dm_client_thing_list_found_reply;
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
}
......@@ -986,7 +986,7 @@ int dm_mgr_ccu_status_cloud(_IN_ int devid)
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -1049,7 +1049,7 @@ int dm_mgr_upstream_status_online(_IN_ int devid)
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -1109,7 +1109,7 @@ int dm_mgr_upstream_status_offline(_IN_ int devid)
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -1165,7 +1165,7 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -1220,7 +1220,7 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
/* Send Message To Cloud */
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -1273,7 +1273,7 @@ int dm_mgr_ota_report_version(_IN_ int devid, char *version)
/* Send Message To Cloud */
/* Send Message To Cloud */
res = dm_msg_request(&request);
res = dm_msg_request(&request,0);
if (res == SUCCESS_RETURN) {
res = request.msgid;
......@@ -1304,7 +1304,13 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
dm_mgr_dev_node_t *node = NULL;
INFO_PRINT("dm_mgr_subdev_delete deviceCode:%s\n",deviceCode);
res = kk_subDev_delete_by_dcode(deviceCode);//delete db data
res = kk_subDev_delete_by_dcode(deviceCode);//delete sub db data
if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
return FAIL_RETURN;
}
res = kk_property_delete_by_dcode(deviceCode);//delete properties db data
if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
return FAIL_RETURN;
......
......@@ -11,15 +11,20 @@
const char DM_MSG_REQUEST[] DM_READ_ONLY = "{\"msgId\":\"%d\",\"version\":\"%s\",\"params\":%s,\"time\":\"%lu\",\"method\":\"%s\"}";
const char DM_MSG_INFO[] DM_READ_ONLY = "{\"msgtype\":\"%s\",\"productCode\":\"%s\",\"deviceCode\":\"%s\"}";
void kk_sendData2app(void *info, void *payload){
void kk_sendData2app(void *info, void *payload,int isAsync){
cJSON *root=cJSON_CreateObject();
cJSON* infoObj = cJSON_Parse(info);
cJSON* payloadObj = cJSON_Parse(payload);
cJSON_AddItemToObject(root, "info", infoObj);
cJSON_AddItemToObject(root, "payload",payloadObj);
void *buf = cJSON_Print(root);
if(isAsync){
dm_queue_msg_insert4(buf);
}else{
kk_ipc_send(IPC_MID2APP, buf, strlen(buf) + 1);
free(buf);
}
cJSON_Delete(root);
}
......@@ -525,7 +530,7 @@ int dm_msg_combine_logout(_IN_ char deviceCode[DEVICE_CODE_MAXLEN],_OU_ dm_msg_r
}
int dm_msg_request (_IN_ dm_msg_request_t *request)
int dm_msg_request (_IN_ dm_msg_request_t *request,_IN_ int isAsync)
{
int res = 0, payload_len = 0,req_info_len = 0;
char *payload = NULL;
......@@ -572,8 +577,8 @@ int dm_msg_request (_IN_ dm_msg_request_t *request)
}
//if (type & DM_MSG_DEST_CLOUD) {
// dm_client_publish(uri, (unsigned char *)payload, strlen(payload), request->callback);
kk_sendData2app(req_info, payload);
//}
kk_sendData2app(req_info, payload,isAsync);
free(req_info);
free(payload);
return SUCCESS_RETURN;
......@@ -635,7 +640,7 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response
}
//dm_client_publish(uri, (unsigned char *)payload, strlen(payload), NULL);
kk_sendData2app(res_info, payload);
kk_sendData2app(res_info, payload,0);
free(res_info);
free(payload);
......@@ -733,5 +738,53 @@ int dm_msg_thing_property_set_reply(char deviceCode[DEVICE_CODE_MAXLEN],char *pa
dm_msg_response(&request, &response, "{}", strlen("{}"), NULL);
return SUCCESS_RETURN;
}
int dm_msg_thing_property_post_all(char *deviceCode)
{
int res = 0;
int nums = 0;
int idx = 0;
dm_mgr_dev_node_t *node = NULL;
if(deviceCode == NULL){
return FAIL_RETURN;
}
res = dm_mgr_get_device_by_devicecode(deviceCode, &node);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
kk_tsl_post_property(node->devid,NULL,1);//here need async post
return SUCCESS_RETURN;
}
int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
{
int res = 0;
int nums = 0;
int idx = 0;
dm_mgr_dev_node_t *node = NULL;
kk_tsl_data_t *property = NULL;
cJSON *propertyItem = NULL;
if(params == NULL || deviceCode == NULL){
return FAIL_RETURN;
}
res = dm_mgr_get_device_by_devicecode(deviceCode, &node);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
nums = node->dev_shadow->property_number;
for(idx = 0; idx < nums; idx++){
property = (kk_tsl_data_t *)(node->dev_shadow->properties + idx);
if(property == NULL){
continue;
}
propertyItem = cJSON_GetObjectItem(params, property->identifier);
if(propertyItem != NULL){
kk_tsl_post_property(node->devid,property->identifier,0);
}
}
return SUCCESS_RETURN;
}
......@@ -319,7 +319,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
if(s_CloudStatus){
iotx_dm_dev_online(0);//first online,report the online status
usleep(200000);
kk_tsl_post_property(0,NULL);
kk_tsl_post_property(0,NULL,0);
}
}else if (strstr(typeJson->valuestring,KK_THING_OTA_DEVICE_UPGRADE)){
INFO_PRINT("ota upgrade... \n");
......
......@@ -379,6 +379,29 @@ int kk_property_sync_values(const char *deviceCode)
return SUCCESS_RETURN;
}
int kk_property_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN])
{
const char *deleteCmd = "delete from PropertiesInfo where deviceCode = '%s';";
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_property_db_ctx_t *ctx = _kk_property_db_get_ctx();
_kk_property_db_lock();
sqlCmd = sqlite3_mprintf(deleteCmd,deviceCode);
INFO_PRINT("Table delete data sqlCmd:%s\n",sqlCmd);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
INFO_PRINT("Table delete data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_property_db_unlock();
return SUCCESS_RETURN;
}
......
......@@ -115,15 +115,16 @@ static int _kk_load_subDevice(void)
ctx->subDevNum++;
}
usleep(100000);
//如果为认证,需要认证
//再上线
// send the topc info
iotx_dm_subscribe(devId);
if(sqlite3_column_int(stmt, DB_DEVTYPE) == KK_DM_DEVICE_SUBDEV){
//sync the data from property db
kk_property_sync_values(sqlite3_column_text(stmt, DB_DEVICECODE));
}
kk_dm_ota_report_version(devId,sqlite3_column_text(stmt, DB_VERSION));//version
usleep(100000);
//post the property to cloud
dm_msg_thing_property_post_all(sqlite3_column_text(stmt, DB_DEVICECODE));
//kk_dm_ota_report_version(devId,sqlite3_column_text(stmt, DB_VERSION));//post version
//usleep(100000);
}
sqlite3_finalize(stmt);
......
......@@ -222,6 +222,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
INFO_PRINT("save property and send to cloud \n");
char* outstr = cJSON_Print(payload);
kk_tsl_property_set_by_devicecode(info_dcode->valuestring, outstr, strlen(outstr)+1);
dm_msg_thing_property_post_by_identify(info_dcode->valuestring,jsonPay);
kk_property_db_update(info_dcode->valuestring);
free(outstr);
......@@ -602,7 +603,7 @@ void *ccu_property_monitor(void *args)
}
if(needReport&&(kk_get_cloudstatus() == 1)){
needReport = 0;
kk_tsl_post_property(0,NULL);
kk_tsl_post_property(0,NULL,0);
}
sleep(time_second);
}
......
......@@ -1260,7 +1260,7 @@ int kk_tsl_property_set_by_devicecode(const char deviceCode[DEVICE_CODE_MAXLEN],
res = _kk_msg_property_set(devid, &request);
/* Response */
kk_tsl_post_property(devid,NULL);
//kk_tsl_post_property(devid,NULL);
#if 0
#define EVENT_ERROR_IDENTIFIER "Error"
......@@ -1317,7 +1317,7 @@ int kk_tsl_service_property_set(const char *topic, const char *payload, unsigned
res = _kk_msg_property_set(devid, &request);
/* Response */
kk_tsl_post_property(devid,NULL);
kk_tsl_post_property(devid,NULL,0);
#if 0
#define EVENT_ERROR_IDENTIFIER "Error"
......@@ -1468,7 +1468,7 @@ int kk_tsl_post_property_add(_IN_ void *handle, _IN_ char *identifier, _IN_ int
}
return ret;
}
static int kk_tsl_post_property_end(_IN_ void *handle)
static int kk_tsl_post_property_end(_IN_ void *handle,_IN_ int isAsync)
{
int res = 0;
char *payload = NULL;
......@@ -1485,7 +1485,7 @@ static int kk_tsl_post_property_end(_IN_ void *handle)
return MEMORY_NOT_ENOUGH;
}
INFO_PRINT("Post Payload, Length: %d, Payload: %s\n", strlen(payload), payload);
res = dm_mgr_upstream_thing_property_post(dapi_property->devid, payload, strlen(payload));
res = dm_mgr_upstream_thing_property_post(dapi_property->devid, payload, strlen(payload),isAsync);
lite_cjson_delete(dapi_property->lite);
free(dapi_property);
free(payload);
......@@ -1493,7 +1493,7 @@ static int kk_tsl_post_property_end(_IN_ void *handle)
return res;
}
int kk_tsl_post_property(int devId, const char *property_identifier)
int kk_tsl_post_property(int devId, const char *property_identifier,int isAsync)
{
int res = 0, msgid = 0, property_identifier_len = 0, post_property_reply = 0;
void *property_handle = NULL;
......@@ -1508,11 +1508,11 @@ int kk_tsl_post_property(int devId, const char *property_identifier)
property_identifier_len = (property_identifier) ? (strlen((char *)property_identifier)) : (0);
res = kk_tsl_post_property_add(property_handle, (char *)property_identifier, property_identifier_len);
if (res != SUCCESS_RETURN) {
kk_tsl_post_property_end(property_handle);
kk_tsl_post_property_end(property_handle,isAsync);
_kk_tsl_api_unlock();
return FAIL_RETURN;
}
res = kk_tsl_post_property_end(property_handle);
res = kk_tsl_post_property_end(property_handle,isAsync);
if (res < SUCCESS_RETURN) {
_kk_tsl_api_unlock();
return FAIL_RETURN;
......
......@@ -81,7 +81,7 @@ extern int kk_msg_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int star
_OU_ char productType[PRODUCT_TYPE_MAXLEN], _OU_ char deviceCode[DEVICE_CODE_MAXLEN]);
extern int kk_tsl_service_property_set(const char *topic, const char *payload, unsigned int payload_len,
void *context);
extern int kk_tsl_post_property(int devId, const char *property_identifier);
extern int kk_tsl_post_property(int devId, const char *property_identifier,int isAsync);
extern int kk_tsl_post_event(int devId, const char *event_identifier);
extern int kk_tsl_post_service(int devId, const char *service_identifier, int response_id,int code);
#endif
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