1 /*
2  * Copyright (C) 2015-2018 Alibaba Group Holding Limited
3  */
4 
5 #ifndef _DM_MSG_PROCESS_H_
6 #define _DM_MSG_PROCESS_H_
7 
8 #define DM_URI_SERVICE_DELIMITER '/'
9 
10 extern const char DM_URI_SYS_PREFIX[] DM_READ_ONLY;
11 extern const char DM_URI_EXT_SESSION_PREFIX[] DM_READ_ONLY;
12 extern const char DM_URI_EXT_NTP_PREFIX[] DM_READ_ONLY;
13 extern const char DM_URI_EXT_ERROR_PREFIX[] DM_READ_ONLY;
14 extern const char DM_URI_REPLY_SUFFIX[] DM_READ_ONLY;
15 extern const char DM_URI_OTA_DEVICE_INFORM[] DM_READ_ONLY;
16 extern const char DM_URI_THING_PROPERTY_DESIRED_GET[] DM_READ_ONLY;
17 extern const char DM_URI_THING_PROPERTY_DESIRED_DELETE[] DM_READ_ONLY;
18 extern const char DM_URI_THING_PROPERTY_DESIRED_GET_REPLY[] DM_READ_ONLY;
19 extern const char DM_URI_THING_PROPERTY_DESIRED_DELETE_REPLY[] DM_READ_ONLY;
20 extern const char DM_URI_THING_EVENT_NOTIFY[] DM_READ_ONLY;
21 extern const char DM_URI_THING_EVENT_NOTIFY_REPLY[] DM_READ_ONLY;
22 /* From Cloud To Local Request And Response*/
23 extern const char DM_URI_THING_MODEL_DOWN_RAW[] DM_READ_ONLY;
24 extern const char DM_URI_THING_MODEL_DOWN_RAW_REPLY[] DM_READ_ONLY;
25 
26 /* From Local To Cloud Request And Response*/
27 extern const char DM_URI_THING_MODEL_UP_RAW[] DM_READ_ONLY;
28 extern const char DM_URI_THING_MODEL_UP_RAW_REPLY[] DM_READ_ONLY;
29 
30 #if !defined(DEVICE_MODEL_RAWDATA_SOLO)
31 extern const char DM_URI_RRPC_REQUEST_WILDCARD[] DM_READ_ONLY;
32 /* From Cloud To Local Request And Response*/
33 extern const char DM_URI_THING_SERVICE_PROPERTY_SET[] DM_READ_ONLY;
34 extern const char DM_URI_THING_SERVICE_PROPERTY_SET_REPLY[] DM_READ_ONLY;
35 extern const char DM_URI_THING_SERVICE_PROPERTY_GET[] DM_READ_ONLY;
36 extern const char DM_URI_THING_SERVICE_PROPERTY_GET_REPLY[] DM_READ_ONLY;
37 extern const char DM_URI_THING_SERVICE_REQUEST_WILDCARD[] DM_READ_ONLY;
38 extern const char DM_URI_THING_SERVICE_REQUEST_WILDCARD2[] DM_READ_ONLY;
39 extern const char DM_URI_THING_SERVICE_REQUEST[] DM_READ_ONLY;
40 extern const char DM_URI_THING_SERVICE_RESPONSE[] DM_READ_ONLY;
41 
42 /* From Local To Cloud Request And Response*/
43 extern const char DM_URI_THING_EVENT_PROPERTY_POST[] DM_READ_ONLY;
44 extern const char DM_URI_THING_EVENT_PROPERTY_POST_REPLY[] DM_READ_ONLY;
45 #ifdef LOG_REPORT_TO_CLOUD
46 extern const char DM_URI_THING_LOG_POST[] DM_READ_ONLY;
47 #endif
48 extern const char DM_URI_THING_EVENT_POST[] DM_READ_ONLY;
49 extern const char DM_URI_THING_EVENT_POST_REPLY[] DM_READ_ONLY;
50 extern const char DM_URI_THING_EVENT_POST_REPLY_WILDCARD[] DM_READ_ONLY;
51 extern const char DM_URI_THING_DEVICEINFO_UPDATE[] DM_READ_ONLY;
52 extern const char DM_URI_THING_DEVICEINFO_UPDATE_REPLY[] DM_READ_ONLY;
53 extern const char DM_URI_THING_DEVICEINFO_DELETE[] DM_READ_ONLY;
54 extern const char DM_URI_THING_DEVICEINFO_DELETE_REPLY[] DM_READ_ONLY;
55 extern const char DM_URI_THING_DSLTEMPLATE_GET[] DM_READ_ONLY;
56 extern const char DM_URI_THING_DSLTEMPLATE_GET_REPLY[] DM_READ_ONLY;
57 extern const char DM_URI_THING_DYNAMICTSL_GET[] DM_READ_ONLY;
58 extern const char DM_URI_THING_DYNAMICTSL_GET_REPLY[] DM_READ_ONLY;
59 extern const char DM_URI_NTP_REQUEST[] DM_READ_ONLY;
60 extern const char DM_URI_NTP_RESPONSE[] DM_READ_ONLY;
61 #endif
62 
63 extern const char DM_URI_DEV_CORE_SERVICE_DEV[] DM_READ_ONLY;
64 
65 #ifdef DEVICE_MODEL_GATEWAY
66 /* From Cloud To Local Request And Response*/
67 extern const char DM_URI_THING_TOPO_ADD_NOTIFY[] DM_READ_ONLY;
68 extern const char DM_URI_THING_TOPO_ADD_NOTIFY_REPLY[] DM_READ_ONLY;
69 extern const char DM_URI_THING_DISABLE[] DM_READ_ONLY;
70 extern const char DM_URI_THING_DISABLE_REPLY[] DM_READ_ONLY;
71 extern const char DM_URI_THING_ENABLE[] DM_READ_ONLY;
72 extern const char DM_URI_THING_ENABLE_REPLY[] DM_READ_ONLY;
73 extern const char DM_URI_THING_DELETE[] DM_READ_ONLY;
74 extern const char DM_URI_THING_DELETE_REPLY[] DM_READ_ONLY;
75 extern const char DM_URI_THING_GATEWAY_PERMIT[] DM_READ_ONLY;
76 extern const char DM_URI_THING_GATEWAY_PERMIT_REPLY[] DM_READ_ONLY;
77 
78 /* From Local To Cloud Request And Response*/
79 extern const char DM_URI_THING_SUB_REGISTER[] DM_READ_ONLY;
80 extern const char DM_URI_THING_SUB_REGISTER_REPLY[] DM_READ_ONLY;
81 extern const char DM_URI_THING_PROXY_PRODUCT_REGISTER[] DM_READ_ONLY;
82 extern const char DM_URI_THING_PROXY_PRODUCT_REGISTER_REPLY[] DM_READ_ONLY;
83 extern const char DM_URI_THING_SUB_REGISTER_REPLY[] DM_READ_ONLY;
84 extern const char DM_URI_THING_SUB_UNREGISTER[] DM_READ_ONLY;
85 extern const char DM_URI_THING_SUB_UNREGISTER_REPLY[] DM_READ_ONLY;
86 extern const char DM_URI_THING_TOPO_ADD[] DM_READ_ONLY;
87 extern const char DM_URI_THING_TOPO_ADD_REPLY[] DM_READ_ONLY;
88 extern const char DM_URI_THING_TOPO_DELETE[] DM_READ_ONLY;
89 extern const char DM_URI_THING_TOPO_DELETE_REPLY[] DM_READ_ONLY;
90 extern const char DM_URI_THING_TOPO_GET[] DM_READ_ONLY;
91 extern const char DM_URI_THING_TOPO_GET_REPLY[] DM_READ_ONLY;
92 extern const char DM_URI_THING_LIST_FOUND[] DM_READ_ONLY;
93 extern const char DM_URI_THING_LIST_FOUND_REPLY[] DM_READ_ONLY;
94 extern const char DM_URI_COMBINE_LOGIN[] DM_READ_ONLY;
95 extern const char DM_URI_COMBINE_LOGIN_REPLY[] DM_READ_ONLY;
96 extern const char DM_URI_COMBINE_LOGOUT[] DM_READ_ONLY;
97 extern const char DM_URI_COMBINE_LOGOUT_REPLY[] DM_READ_ONLY;
98 #endif
99 
100 int dm_disp_uri_prefix_split(_IN_ const char *prefix, _IN_ char *uri,
101                              _IN_ int uri_len, _OU_ int *start, _OU_ int *end);
102 int dm_disp_uri_pkdn_split(_IN_ char *uri, _IN_ int uri_len, _OU_ int *start,
103                            _OU_ int *end);
104 int dm_disp_uri_service_specific_split(_IN_ char *uri, _IN_ int uri_len,
105                                        _OU_ int *start, _OU_ int *end);
106 int dm_disp_uri_rrpc_request_split(_IN_ char *uri, _IN_ int uri_len,
107                                    _OU_ int *start, _OU_ int *end);
108 int dm_disp_uri_event_specific_split(_IN_ char *uri, _IN_ int uri_len,
109                                      _OU_ int *start, _OU_ int *end);
110 
111 int dm_msg_proc_thing_model_down_raw(_IN_ dm_msg_source_t *source);
112 int dm_msg_proc_thing_model_up_raw_reply(_IN_ dm_msg_source_t *source);
113 
114 #if !defined(DEVICE_MODEL_RAWDATA_SOLO)
115 int dm_msg_proc_thing_event_notify(_IN_ dm_msg_source_t *source,
116                                    _IN_ dm_msg_dest_t *dest,
117                                    _OU_ dm_msg_request_payload_t *request,
118                                    _OU_ dm_msg_response_t *response);
119 int dm_msg_proc_thing_service_property_set(
120     _IN_ dm_msg_source_t *source, _IN_ dm_msg_dest_t *dest,
121     _OU_ dm_msg_request_payload_t *request, _OU_ dm_msg_response_t *response);
122 int dm_msg_proc_thing_service_property_get(
123     _IN_ dm_msg_source_t *source, _IN_ dm_msg_dest_t *dest,
124     _OU_ dm_msg_request_payload_t *request, _OU_ dm_msg_response_t *response,
125     _OU_ unsigned char **data, int *data_len);
126 int dm_msg_proc_thing_property_desired_get_reply(_IN_ dm_msg_source_t *source);
127 int dm_msg_proc_thing_property_desired_delete_reply(
128     _IN_ dm_msg_source_t *source);
129 int dm_msg_proc_thing_service_property_post(
130     _IN_ dm_msg_source_t *source, _IN_ dm_msg_dest_t *dest,
131     _OU_ dm_msg_request_payload_t *request, _OU_ dm_msg_response_t *response);
132 int dm_msg_proc_thing_service_request(_IN_ dm_msg_source_t *source);
133 int dm_msg_proc_thing_event_post_reply(_IN_ dm_msg_source_t *source);
134 int dm_msg_proc_thing_deviceinfo_update_reply(_IN_ dm_msg_source_t *source);
135 int dm_msg_proc_thing_deviceinfo_delete_reply(_IN_ dm_msg_source_t *source);
136 int dm_msg_proc_thing_dynamictsl_get_reply(_IN_ dm_msg_source_t *source);
137 int dm_msg_proc_rrpc_request(_IN_ dm_msg_source_t *source);
138 int dm_disp_ntp_response(_IN_ dm_msg_source_t *source);
139 int dm_disp_ext_error_response(_IN_ dm_msg_source_t *source);
140 #endif
141 
142 #ifdef DEVICE_MODEL_GATEWAY
143 int dm_msg_proc_thing_topo_add_notify(_IN_ dm_msg_source_t *source,
144                                       _IN_ dm_msg_dest_t *dest,
145                                       _OU_ dm_msg_request_payload_t *request,
146                                       _OU_ dm_msg_response_t *response);
147 int dm_msg_proc_thing_disable(_IN_ dm_msg_source_t *source,
148                               _IN_ dm_msg_dest_t *dest,
149                               _OU_ dm_msg_request_payload_t *request,
150                               _OU_ dm_msg_response_t *response);
151 int dm_msg_proc_thing_enable(_IN_ dm_msg_source_t *source,
152                              _IN_ dm_msg_dest_t *dest,
153                              _OU_ dm_msg_request_payload_t *request,
154                              _OU_ dm_msg_response_t *response);
155 int dm_msg_proc_thing_delete(_IN_ dm_msg_source_t *source,
156                              _IN_ dm_msg_dest_t *dest,
157                              _OU_ dm_msg_request_payload_t *request,
158                              _OU_ dm_msg_response_t *response);
159 int dm_msg_proc_thing_gateway_permit(_IN_ dm_msg_source_t *source,
160                                      _IN_ dm_msg_dest_t *dest,
161                                      _OU_ dm_msg_request_payload_t *request,
162                                      _OU_ dm_msg_response_t *response);
163 int dm_msg_proc_thing_sub_register_reply(_IN_ dm_msg_source_t *source);
164 int dm_msg_proc_thing_proxy_product_register_reply(
165     _IN_ dm_msg_source_t *source);
166 int dm_msg_proc_thing_sub_unregister_reply(_IN_ dm_msg_source_t *source);
167 int dm_msg_proc_thing_topo_add_reply(_IN_ dm_msg_source_t *source);
168 int dm_msg_proc_thing_topo_delete_reply(_IN_ dm_msg_source_t *source);
169 int dm_msg_proc_thing_topo_get_reply(_IN_ dm_msg_source_t *source);
170 int dm_msg_proc_thing_list_found_reply(_IN_ dm_msg_source_t *source);
171 int dm_msg_proc_combine_login_reply(_IN_ dm_msg_source_t *source);
172 int dm_msg_proc_combine_logout_reply(_IN_ dm_msg_source_t *source);
173 #endif
174 
175 #ifdef ALCS_ENABLED
176 int dm_msg_proc_thing_dev_core_service_dev(
177     _IN_ dm_msg_source_t *source, _IN_ dm_msg_dest_t *dest,
178     _OU_ dm_msg_request_payload_t *request, _OU_ dm_msg_response_t *response,
179     _OU_ unsigned char **data, int *data_len);
180 #endif
181 
182 int dm_msg_proc_thing_model_user_sub(_IN_ dm_msg_source_t *source);
183 
184 #endif
185