Commit 0580adb7 authored by whmaizmy's avatar whmaizmy

【修改内容】增加物模型event事件上报功能

【提交人】陈伟灿
parent 96e4d3ac
......@@ -165,7 +165,8 @@ int dm_mgr_init(void)
char device_secret[DEVICE_SECRET_MAXLEN]= {0};
int devId = 0;
memset(ctx, 0, sizeof(dm_mgr_ctx));
//kk_tsl_api_init();
/* Create Mutex */
ctx->mutex = kk_MutexCreate();
if (ctx->mutex == NULL) {
......@@ -253,4 +254,40 @@ int dm_mgr_upstream_thing_property_post(_IN_ int devid, _IN_ char *payload, _IN_
res = dm_msg_request(&request);
return res;
}
int dm_mgr_upstream_thing_event_post(_IN_ int devid, _IN_ char *identifier, _IN_ int identifier_len, _IN_ char *method,
_IN_ char *payload, _IN_ int payload_len)
{
int res = 0, service_name_len = 0;
char *service_name = NULL;
dm_msg_request_t request;
if (devid < 0 || identifier == NULL || identifier_len <= 0 ||
method == NULL || payload == NULL || payload_len <= 0) {
return INVALID_PARAMETER;
}
service_name_len = strlen(DM_URI_THING_EVENT_POST) + identifier_len + 1;
service_name = malloc(service_name_len);
if (service_name == NULL) {
return MEMORY_NOT_ENOUGH;
}
memset(service_name, 0, service_name_len);
snprintf(service_name, service_name_len, DM_URI_THING_EVENT_POST, identifier_len, identifier);
memset(&request, 0, sizeof(dm_msg_request_t));
res = _dm_mgr_upstream_request_assemble(iotx_report_id(), devid, DM_URI_SYS_PREFIX, service_name,
payload, payload_len, method, &request);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
/* Callback */
//request.callback = dm_client_thing_event_post_reply;
/* Send Message To Cloud */
res = dm_msg_request(&request);
free(service_name);
return res;
}
......@@ -10,6 +10,7 @@
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_SERVICE_PROPERTY_SET_REPLY[] DM_READ_ONLY = "thing/service/property/set_reply";
const char DM_URI_THING_EVENT_POST[] DM_READ_ONLY = "thing/event/%.*s/post";
......
......@@ -57,6 +57,7 @@ typedef enum {
extern const char DM_URI_SYS_PREFIX[] DM_READ_ONLY;
extern const char DM_URI_THING_EVENT_PROPERTY_POST[] DM_READ_ONLY;
const char DM_URI_THING_SERVICE_PROPERTY_SET_REPLY[] DM_READ_ONLY;
const char DM_URI_THING_EVENT_POST[] DM_READ_ONLY;
#endif
This diff is collapsed.
......@@ -748,13 +748,14 @@ int dm_tsl_get_event_output_data(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ int
if (shadow == NULL || key == NULL || key_len <= 0) {
return INVALID_PARAMETER;
}
res = kk_utils_memtok(key, key_len, KK_MSG_KEY_DELIMITER, 1, &offset);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
printf("Key: %.*s", key_len, key);
printf("Key: %.*s\n", key_len, key);
res = _kk_tsl_event_search(shadow, key, offset, &event);
if (res != SUCCESS_RETURN) {
......
......@@ -1366,7 +1366,6 @@ static int _kk_tsl_data_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cjs
{
int res = 0;
lite_cjson_item_t *data_object = NULL;
printf("--------------------------->[%s][%d]data->i:%s\n",__FUNCTION__,__LINE__,data->identifier,data->data_value);
if (data == NULL || lite == NULL) {
return INVALID_PARAMETER;
}
......@@ -1378,7 +1377,6 @@ static int _kk_tsl_data_insert_json_item(_IN_ kk_tsl_data_t *data, _IN_ lite_cjs
}
}
printf("--------------------------->[%s][%d]data->type:%d\n",__FUNCTION__,__LINE__,data->data_value.type);
switch (data->data_value.type) {
case KK_TSL_DATA_TYPE_INT:
case KK_TSL_DATA_TYPE_BOOL:
......@@ -1488,7 +1486,7 @@ int kk_tsl_assemble_property(_IN_ kk_tsl_t *shadow, _IN_ char *identifier, _IN_
}
if (index == shadow->property_number) {
printf("Property Not Found: %.*s", identifier_len, identifier);
printf("Property Not Found: %.*s\n", identifier_len, identifier);
return FAIL_RETURN;
}
......@@ -1499,6 +1497,43 @@ int kk_tsl_assemble_property(_IN_ kk_tsl_t *shadow, _IN_ char *identifier, _IN_
return SUCCESS_RETURN;
}
int kk_tsl_assemble_event_output(_IN_ kk_tsl_t *shadow, _IN_ char *identifier, _IN_ int identifier_len,
_IN_ lite_cjson_item_t *lite)
{
int res = 0, index = 0;
kk_tsl_data_t *event_outputdata = NULL;
kk_tsl_event_t *event = NULL;
if (shadow == NULL || identifier == NULL || identifier_len <= 0 || lite == NULL || lite->type != cJSON_Object) {
return INVALID_PARAMETER;
}
for (index = 0; index < shadow->event_number; index++) {
event = shadow->events + index;
if ((strlen(event->identifier) == identifier_len) &&
(memcmp(event->identifier, identifier, identifier_len) == 0)) {
/* dm_log_debug("Event Found: %.*s",identifier_len,identifier); */
break;
}
}
if (index == shadow->event_number) {
printf("Event Not Found: %.*s\n", identifier_len, identifier);
return FAIL_RETURN;
}
for (index = 0; index < event->output_data_number; index++) {
event_outputdata = event->output_datas + index;
res = _kk_tsl_data_insert_json_item(event_outputdata, lite);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
}
return SUCCESS_RETURN;
}
#if 0
int main(int argc, char* argv[])
......
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