Commit c8ddb8c4 authored by whmaizmy's avatar whmaizmy

【修改内容】增加dm_msg_response接口

【提交人】陈伟灿
parent 4a369d9b
#include "kk_dm_msg.h" #include "kk_dm_msg.h"
#include "kk_dm_mng.h" #include "kk_dm_mng.h"
#include "kk_tsl_api.h"
#include "lite-cjson.h" #include "lite-cjson.h"
const char DM_URI_SYS_PREFIX[] DM_READ_ONLY = "/sys/%s/%s/"; const char DM_URI_SYS_PREFIX[] DM_READ_ONLY = "/sys/%s/%s/";
const char DM_URI_THING_EVENT_PROPERTY_POST[] DM_READ_ONLY = "thing/event/property/post"; const char DM_URI_THING_EVENT_PROPERTY_POST[] DM_READ_ONLY = "thing/event/property/post";
const char DM_URI_THING_SERVICE_PROPERTY_SET_REPLY[] DM_READ_ONLY = "thing/service/property/set_reply"; const char DM_URI_THING_SERVICE_PROPERTY_SET_REPLY[] DM_READ_ONLY = "thing/service/property/set_reply";
...@@ -56,3 +59,52 @@ int dm_msg_request (_IN_ dm_msg_request_t *request) ...@@ -56,3 +59,52 @@ int dm_msg_request (_IN_ dm_msg_request_t *request)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
const char DM_MSG_RESPONSE_WITH_DATA[] DM_READ_ONLY = "{\"id\":\"%.*s\",\"code\":%d,\"data\":%.*s}";
int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response_t *response,
_IN_ char *data, _IN_ int data_len, _IN_ void *user_data)
{
int res = 0, payload_len = 0;
char *uri = NULL, *payload = NULL;
lite_cjson_t lite;
if (request == NULL || response == NULL || data == NULL || data_len <= 0) {
return INVALID_PARAMETER;
}
/* Response URI */
res = kk_utils_service_name(response->service_prefix, response->service_name,
response->product_key, response->device_name, &uri);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
/* Response Payload */
payload_len = strlen(DM_MSG_RESPONSE_WITH_DATA) + request->id.value_length + DM_UTILS_UINT32_STRLEN + data_len + 1;
payload = malloc(payload_len);
if (payload == NULL) {
free(uri);
return MEMORY_NOT_ENOUGH;
}
memset(payload, 0, payload_len);
snprintf(payload, payload_len, DM_MSG_RESPONSE_WITH_DATA,
request->id.value_length, request->id.value, response->code, data_len, data);
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(payload, payload_len, &lite);
if (res < SUCCESS_RETURN) {
printf("Wrong JSON Format, URI: %s, Payload: %s", uri, payload);
free(uri);
free(payload);
return FAIL_RETURN;
}
printf("Send URI: %s, Payload: %s", uri, payload);
//dm_client_publish(uri, (unsigned char *)payload, strlen(payload), NULL);
free(uri);
free(payload);
return SUCCESS_RETURN;
}
...@@ -88,6 +88,7 @@ int main(const int argc, const char **argv) ...@@ -88,6 +88,7 @@ int main(const int argc, const char **argv)
kk_ipc_init(IPC_MID2APP, mid_cb); kk_ipc_init(IPC_MID2APP, mid_cb);
kk_ipc_init(IPC_MID2PLAT, mid2p_cb); kk_ipc_init(IPC_MID2PLAT, mid2p_cb);
dm_mgr_init();
//DB_Init(); //DB_Init();
//test_tcp(); //test_tcp();
char buf[100] = {0}; char buf[100] = {0};
......
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