doubao_chat/lib/net/aliyun/dev_model/dm_client.c

742 lines
24 KiB
C

#include "iotx_dm_internal.h"
#ifdef DEV_BIND_ENABLED
#include "dev_bind_api.h"
#endif
#ifdef LOG_REPORT_TO_CLOUD
#include "iotx_log_report.h"
#endif
static dm_client_uri_map_t g_dm_client_uri_map[] = {
#if !defined(DEVICE_MODEL_RAWDATA_SOLO)
{DM_URI_THING_EVENT_POST_REPLY_WILDCARD, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_event_post_reply },
#ifdef DEVICE_MODEL_SHADOW
{DM_URI_THING_PROPERTY_DESIRED_DELETE_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_property_desired_delete_reply},
{DM_URI_THING_PROPERTY_DESIRED_GET_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_property_desired_get_reply },
{DM_URI_THING_SERVICE_PROPERTY_GET, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_service_property_get },
#endif
{DM_URI_THING_SERVICE_PROPERTY_SET, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_service_property_set },
{DM_URI_THING_SERVICE_REQUEST_WILDCARD, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_service_request },
{DM_URI_THING_DEVICEINFO_UPDATE_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_deviceinfo_update_reply },
{DM_URI_THING_DEVICEINFO_DELETE_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_deviceinfo_delete_reply },
{DM_URI_THING_DYNAMICTSL_GET_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_dynamictsl_get_reply },
{DM_URI_RRPC_REQUEST_WILDCARD, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_rrpc_request_wildcard },
{DM_URI_NTP_RESPONSE, DM_URI_EXT_NTP_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_ntp_response },
{NULL, DM_URI_EXT_ERROR_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_ext_error },
#endif
{DM_URI_THING_MODEL_DOWN_RAW, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_model_down_raw },
{DM_URI_THING_MODEL_UP_RAW_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_ALL, (void *)dm_client_thing_model_up_raw_reply },
#ifdef DEVICE_MODEL_GATEWAY
{DM_URI_THING_TOPO_ADD_NOTIFY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_topo_add_notify },
{DM_URI_THING_GATEWAY_PERMIT, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_gateway_permit },
{DM_URI_THING_SUB_REGISTER_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_sub_register_reply },
{DM_URI_THING_SUB_UNREGISTER_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_sub_unregister_reply },
{DM_URI_THING_TOPO_ADD_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_topo_add_reply },
{DM_URI_THING_TOPO_DELETE_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_topo_delete_reply },
{DM_URI_THING_TOPO_GET_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_topo_get_reply },
{DM_URI_THING_LIST_FOUND_REPLY, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_list_found_reply },
{DM_URI_COMBINE_LOGIN_REPLY, DM_URI_EXT_SESSION_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_combine_login_reply },
{DM_URI_COMBINE_LOGOUT_REPLY, DM_URI_EXT_SESSION_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_combine_logout_reply },
{DM_URI_THING_DISABLE, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_disable },
{DM_URI_THING_ENABLE, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_enable },
{DM_URI_THING_DELETE, DM_URI_SYS_PREFIX, IOTX_DM_DEVICE_GATEWAY, (void *)dm_client_thing_delete },
#endif
};
static int _dm_client_subscribe_filter(char *uri, char *uri_name, char product_key[IOTX_PRODUCT_KEY_LEN + 1],
char device_name[IOTX_DEVICE_NAME_LEN + 1])
{
#if !defined(DEVICE_MODEL_RAWDATA_SOLO)
int res = 0;
#endif
if (uri_name == NULL) {
return SUCCESS_RETURN;
}
#if !defined(DEVICE_MODEL_RAWDATA_SOLO)
if (strlen(uri_name) == strlen(DM_URI_THING_EVENT_POST_REPLY_WILDCARD) &&
memcmp(uri_name, DM_URI_THING_EVENT_POST_REPLY_WILDCARD, strlen(uri_name)) == 0) {
int event_post_reply_opt = 0;
res = dm_opt_get(DM_OPT_DOWNSTREAM_EVENT_POST_REPLY, &event_post_reply_opt);
if (res == SUCCESS_RETURN && event_post_reply_opt == 0) {
dm_client_unsubscribe(uri);
return FAIL_RETURN;
}
}
#endif
return SUCCESS_RETURN;
}
int dm_client_subscribe_all(char product_key[IOTX_PRODUCT_KEY_LEN + 1], char device_name[IOTX_DEVICE_NAME_LEN + 1],
int dev_type)
{
int res = 0, index = 0, fail_count = 0;
int number = sizeof(g_dm_client_uri_map) / sizeof(dm_client_uri_map_t);
char *uri = NULL;
uint8_t local_sub = 0;
#ifdef SUB_PERSISTENCE_ENABLED
char device_key[IOTX_PRODUCT_KEY_LEN + IOTX_DEVICE_NAME_LEN + 4] = {0};
#endif
#if !defined(DEVICE_MODEL_RAWDATA_SOLO)
index = 1;
for (fail_count = 0; fail_count < IOTX_DM_CLIENT_SUB_RETRY_MAX_COUNTS; fail_count++) {
res = dm_utils_service_name((char *)g_dm_client_uri_map[0].uri_prefix, (char *)g_dm_client_uri_map[0].uri_name,
product_key, device_name, &uri);
if (res < SUCCESS_RETURN) {
continue;
}
res = _dm_client_subscribe_filter(uri, (char *)g_dm_client_uri_map[0].uri_name, product_key, device_name);
if (res < SUCCESS_RETURN) {
DM_free(uri);
continue;
}
res = dm_client_subscribe(uri, (iotx_cm_data_handle_cb)g_dm_client_uri_map[0].callback, 0);
if (res < SUCCESS_RETURN) {
DM_free(uri);
continue;
}
DM_free(uri);
break;
}
#else
index = 0;
#endif
fail_count = 0;
#ifdef SUB_PERSISTENCE_ENABLED
{
int len = 1;
HAL_Snprintf(device_key, IOTX_PRODUCT_KEY_LEN + IOTX_DEVICE_NAME_LEN, "qub_%s%s", product_key, device_name);
HAL_Kv_Get(device_key, &local_sub, &len);
}
#endif
for (; index < number; index++) {
if ((g_dm_client_uri_map[index].dev_type & dev_type) == 0) {
continue;
}
dm_log_info("index: %d", index);
if (fail_count >= IOTX_DM_CLIENT_SUB_RETRY_MAX_COUNTS) {
fail_count = 0;
continue;
}
res = dm_utils_service_name((char *)g_dm_client_uri_map[index].uri_prefix, (char *)g_dm_client_uri_map[index].uri_name,
product_key, device_name, &uri);
if (res < SUCCESS_RETURN) {
index--;
continue;
}
res = _dm_client_subscribe_filter(uri, (char *)g_dm_client_uri_map[index].uri_name, product_key, device_name);
if (res < SUCCESS_RETURN) {
DM_free(uri);
continue;
}
res = dm_client_subscribe(uri, (iotx_cm_data_handle_cb)g_dm_client_uri_map[index].callback, &local_sub);
if (res < SUCCESS_RETURN) {
index--;
fail_count++;
DM_free(uri);
continue;
}
fail_count = 0;
DM_free(uri);
}
#ifdef SUB_PERSISTENCE_ENABLED
local_sub = 1;
HAL_Kv_Set(device_key, &local_sub, 1, 1);
#endif
return SUCCESS_RETURN;
}
static void _dm_client_event_cloud_connected_handle(void)
{
#ifdef DEV_BIND_ENABLED
static int awss_reported = 0;
if (awss_reported == 0) {
awss_reported = 1;
awss_report_cloud();
}
#endif
dm_log_info("IOTX_CM_EVENT_CLOUD_CONNECTED");
dm_msg_cloud_connected();
}
static void _dm_client_event_cloud_disconnect_handle(void)
{
dm_log_info("IOTX_CM_EVENT_CLOUD_DISCONNECT");
dm_msg_cloud_disconnect();
}
void dm_client_event_handle(int fd, iotx_cm_event_msg_t *event, void *context)
{
switch (event->type) {
case IOTX_CM_EVENT_CLOUD_CONNECTED: {
_dm_client_event_cloud_connected_handle();
}
break;
case IOTX_CM_EVENT_CLOUD_CONNECT_FAILED: {
}
break;
case IOTX_CM_EVENT_CLOUD_DISCONNECT: {
_dm_client_event_cloud_disconnect_handle();
}
break;
default:
break;
}
}
void dm_client_thing_model_down_raw(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_model_down_raw(&source);
}
void dm_client_thing_model_up_raw_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_model_up_raw_reply(&source);
}
#if !defined(DEVICE_MODEL_RAWDATA_SOLO)
void dm_client_thing_service_property_set(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
int res = 0;
dm_msg_source_t source;
dm_msg_dest_t dest;
dm_msg_request_payload_t request;
dm_msg_response_t response;
int prop_set_reply_opt = 0;
memset(&source, 0, sizeof(dm_msg_source_t));
memset(&dest, 0, sizeof(dm_msg_dest_t));
memset(&request, 0, sizeof(dm_msg_request_payload_t));
memset(&response, 0, sizeof(dm_msg_response_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dest.uri_name = DM_URI_THING_SERVICE_PROPERTY_SET_REPLY;
res = dm_msg_proc_thing_service_property_set(&source, &dest, &request, &response);
if (res < SUCCESS_RETURN) {
return;
}
prop_set_reply_opt = 0;
res = dm_opt_get(DM_OPT_UPSTREAM_PROPERTY_SET_REPLY, &prop_set_reply_opt);
if (res == SUCCESS_RETURN) {
if (prop_set_reply_opt) {
dm_msg_response(DM_MSG_DEST_CLOUD, &request, &response, "{}", strlen("{}"), NULL);
#ifdef LOG_REPORT_TO_CLOUD
if (SUCCESS_RETURN == check_target_msg(request.id.value, request.id.value_length)) {
send_permance_info(request.id.value, request.id.value_length, "2", 1);
}
#endif
}
}
}
#ifdef DEVICE_MODEL_SHADOW
void dm_client_thing_service_property_get(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
int res = 0;
dm_msg_source_t source;
dm_msg_dest_t dest;
dm_msg_request_payload_t request;
dm_msg_response_t response;
unsigned char *data = NULL;
int data_len = 0;
memset(&source, 0, sizeof(dm_msg_source_t));
memset(&dest, 0, sizeof(dm_msg_dest_t));
memset(&request, 0, sizeof(dm_msg_request_payload_t));
memset(&response, 0, sizeof(dm_msg_response_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dest.uri_name = DM_URI_THING_SERVICE_PROPERTY_GET_REPLY;
res = dm_msg_proc_thing_service_property_get(&source, &dest, &request, &response, &data, &data_len);
if (res < SUCCESS_RETURN) {
return;
}
}
#endif
void dm_client_thing_service_request(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_service_request(&source);
}
void dm_client_thing_event_post_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_event_post_reply(&source);
}
#ifdef DEVICE_MODEL_SHADOW
void dm_client_thing_property_desired_get_reply(int fd, const char *topic, const char *payload,
unsigned int payload_len, void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_property_desired_get_reply(&source);
}
void dm_client_thing_property_desired_delete_reply(int fd, const char *topic, const char *payload,
unsigned int payload_len, void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_property_desired_delete_reply(&source);
}
#endif
void dm_client_thing_deviceinfo_update_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_deviceinfo_update_reply(&source);
}
void dm_client_thing_deviceinfo_delete_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_deviceinfo_delete_reply(&source);
}
void dm_client_thing_dynamictsl_get_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_dynamictsl_get_reply(&source);
}
void dm_client_rrpc_request_wildcard(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_rrpc_request(&source);
}
void dm_client_ntp_response(int fd, const char *topic, const char *payload, unsigned int payload_len, void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_disp_ntp_response(&source);
}
void dm_client_ext_error(int fd, const char *topic, const char *payload, unsigned int payload_len, void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_disp_ext_error_response(&source);
}
#endif
#ifdef DEVICE_MODEL_GATEWAY
int dm_client_subdev_unsubscribe(char product_key[IOTX_PRODUCT_KEY_LEN + 1], char device_name[IOTX_DEVICE_NAME_LEN + 1])
{
int res = 0, index = 0;
int number = sizeof(g_dm_client_uri_map) / sizeof(dm_client_uri_map_t);
char *uri = NULL;
for (index = 0; index < number; index++) {
if ((g_dm_client_uri_map[index].dev_type & IOTX_DM_DEVICE_SUBDEV) == 0) {
continue;
}
res = dm_utils_service_name((char *)g_dm_client_uri_map[index].uri_prefix, (char *)g_dm_client_uri_map[index].uri_name,
product_key, device_name, &uri);
if (res < SUCCESS_RETURN) {
index--;
continue;
}
dm_client_unsubscribe(uri);
DM_free(uri);
}
return SUCCESS_RETURN;
}
void dm_client_thing_topo_add_notify(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
int res = 0;
dm_msg_source_t source;
dm_msg_dest_t dest;
dm_msg_request_payload_t request;
dm_msg_response_t response;
memset(&source, 0, sizeof(dm_msg_source_t));
memset(&dest, 0, sizeof(dm_msg_dest_t));
memset(&request, 0, sizeof(dm_msg_request_payload_t));
memset(&response, 0, sizeof(dm_msg_response_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dest.uri_name = DM_URI_THING_TOPO_ADD_NOTIFY_REPLY;
res = dm_msg_proc_thing_topo_add_notify(&source, &dest, &request, &response);
if (res < SUCCESS_RETURN) {
return;
}
dm_msg_response(DM_MSG_DEST_CLOUD, &request, &response, "{}", strlen("{}"), NULL);
}
void dm_client_thing_disable(int fd, const char *topic, const char *payload, unsigned int payload_len, void *context)
{
int res = 0;
dm_msg_source_t source;
dm_msg_dest_t dest;
dm_msg_request_payload_t request;
dm_msg_response_t response;
memset(&source, 0, sizeof(dm_msg_source_t));
memset(&dest, 0, sizeof(dm_msg_dest_t));
memset(&request, 0, sizeof(dm_msg_request_payload_t));
memset(&response, 0, sizeof(dm_msg_response_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dest.uri_name = DM_URI_THING_DISABLE_REPLY;
res = dm_msg_proc_thing_disable(&source, &dest, &request, &response);
if (res < SUCCESS_RETURN) {
return;
}
dm_msg_response(DM_MSG_DEST_CLOUD, &request, &response, "{}", strlen("{}"), NULL);
}
void dm_client_thing_enable(int fd, const char *topic, const char *payload, unsigned int payload_len, void *context)
{
int res = 0;
dm_msg_source_t source;
dm_msg_dest_t dest;
dm_msg_request_payload_t request;
dm_msg_response_t response;
memset(&source, 0, sizeof(dm_msg_source_t));
memset(&dest, 0, sizeof(dm_msg_dest_t));
memset(&request, 0, sizeof(dm_msg_request_payload_t));
memset(&response, 0, sizeof(dm_msg_response_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dest.uri_name = DM_URI_THING_ENABLE_REPLY;
res = dm_msg_proc_thing_enable(&source, &dest, &request, &response);
if (res < SUCCESS_RETURN) {
return;
}
dm_msg_response(DM_MSG_DEST_CLOUD, &request, &response, "{}", strlen("{}"), NULL);
}
void dm_client_thing_delete(int fd, const char *topic, const char *payload, unsigned int payload_len, void *context)
{
int res = 0;
dm_msg_source_t source;
dm_msg_dest_t dest;
dm_msg_request_payload_t request;
dm_msg_response_t response;
memset(&source, 0, sizeof(dm_msg_source_t));
memset(&dest, 0, sizeof(dm_msg_dest_t));
memset(&request, 0, sizeof(dm_msg_request_payload_t));
memset(&response, 0, sizeof(dm_msg_response_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dest.uri_name = DM_URI_THING_DELETE_REPLY;
res = dm_msg_proc_thing_delete(&source, &dest, &request, &response);
if (res < SUCCESS_RETURN) {
return;
}
dm_msg_response(DM_MSG_DEST_CLOUD, &request, &response, "{}", strlen("{}"), NULL);
}
void dm_client_thing_gateway_permit(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
int res = 0;
dm_msg_source_t source;
dm_msg_dest_t dest;
dm_msg_request_payload_t request;
dm_msg_response_t response;
memset(&source, 0, sizeof(dm_msg_source_t));
memset(&dest, 0, sizeof(dm_msg_dest_t));
memset(&request, 0, sizeof(dm_msg_request_payload_t));
memset(&response, 0, sizeof(dm_msg_response_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dest.uri_name = DM_URI_THING_GATEWAY_PERMIT_REPLY;
res = dm_msg_proc_thing_gateway_permit(&source, &dest, &request, &response);
if (res < SUCCESS_RETURN) {
return;
}
dm_msg_response(DM_MSG_DEST_CLOUD, &request, &response, "{}", strlen("{}"), NULL);
}
void dm_client_thing_sub_register_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_sub_register_reply(&source);
}
void dm_client_thing_sub_unregister_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_sub_unregister_reply(&source);
}
void dm_client_thing_topo_add_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_topo_add_reply(&source);
}
void dm_client_thing_topo_delete_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_topo_delete_reply(&source);
}
void dm_client_thing_topo_get_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_topo_get_reply(&source);
}
void dm_client_thing_list_found_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_thing_list_found_reply(&source);
}
void dm_client_combine_login_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_combine_login_reply(&source);
}
void dm_client_combine_logout_reply(int fd, const char *topic, const char *payload, unsigned int payload_len,
void *context)
{
dm_msg_source_t source;
memset(&source, 0, sizeof(dm_msg_source_t));
source.uri = topic;
source.payload = (unsigned char *)payload;
source.payload_len = payload_len;
source.context = NULL;
dm_msg_proc_combine_logout_reply(&source);
}
#endif