ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
TMBOY
Date:
Tue Jul 18 16:54:45 2017 +0800
Revision:
47:9e361da97763
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TMBOY 47:9e361da97763 1 // Copyright 2017 Baidu Inc. All Rights Reserved.
TMBOY 47:9e361da97763 2 // Author: Su Hao (suhao@baidu.com)
TMBOY 47:9e361da97763 3 //
TMBOY 47:9e361da97763 4 // Desc: Provide the API for external applications.
TMBOY 47:9e361da97763 5
TMBOY 47:9e361da97763 6 #ifndef BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_INCLUDE_BAIDU_CA_H
TMBOY 47:9e361da97763 7 #define BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_INCLUDE_BAIDU_CA_H
TMBOY 47:9e361da97763 8
TMBOY 47:9e361da97763 9 #include "baidu_ca_types.h"
TMBOY 47:9e361da97763 10
TMBOY 47:9e361da97763 11 #ifdef __cplusplus
TMBOY 47:9e361da97763 12 extern "C" {
TMBOY 47:9e361da97763 13 #endif
TMBOY 47:9e361da97763 14
TMBOY 47:9e361da97763 15 /*
TMBOY 47:9e361da97763 16 * The message codes.
TMBOY 47:9e361da97763 17 */
TMBOY 47:9e361da97763 18 typedef enum {
TMBOY 47:9e361da97763 19
TMBOY 47:9e361da97763 20 // Request message code
TMBOY 47:9e361da97763 21 BCA_MSG_REQ_GET = 1,
TMBOY 47:9e361da97763 22 BCA_MSG_REQ_POST = 2,
TMBOY 47:9e361da97763 23 BCA_MSG_REQ_PUT = 3,
TMBOY 47:9e361da97763 24 BCA_MSG_REQ_DELETE = 4,
TMBOY 47:9e361da97763 25
TMBOY 47:9e361da97763 26 // Response message code
TMBOY 47:9e361da97763 27 BCA_MSG_RSP_CREATED = 65, // 2.01
TMBOY 47:9e361da97763 28 BCA_MSG_RSP_DELETED = 66, // 2.02
TMBOY 47:9e361da97763 29 BCA_MSG_RSP_VALID = 67, // 2.03
TMBOY 47:9e361da97763 30 BCA_MSG_RSP_CHANGED = 68, // 2.04
TMBOY 47:9e361da97763 31 BCA_MSG_RSP_CONTENT = 69, // 2.05
TMBOY 47:9e361da97763 32 BCA_MSG_RSP_CONTINUE = 95, // 2.31
TMBOY 47:9e361da97763 33 BCA_MSG_RSP_BAD_REQUEST = 128, // 4.00
TMBOY 47:9e361da97763 34 BCA_MSG_RSP_UNAUTHORIZED = 129, // 4.01
TMBOY 47:9e361da97763 35 BCA_MSG_RSP_BAD_OPTION = 130, // 4.02
TMBOY 47:9e361da97763 36 BCA_MSG_RSP_FORBIDDEN = 131, // 4.03
TMBOY 47:9e361da97763 37 BCA_MSG_RSP_NOT_FOUND = 132, // 4.04
TMBOY 47:9e361da97763 38 BCA_MSG_RSP_METHOD_NOT_ALLOWED = 133, // 4.05
TMBOY 47:9e361da97763 39 BCA_MSG_RSP_NOT_ACCEPTABLE = 134, // 4.06
TMBOY 47:9e361da97763 40 BCA_MSG_RSP_REQUEST_ENTITY_INCOMPLETE = 136, // 4.08
TMBOY 47:9e361da97763 41 BCA_MSG_RSP_PRECONDITION_FAILED = 140, // 4.12
TMBOY 47:9e361da97763 42 BCA_MSG_RSP_REQUEST_ENTITY_TOO_LARGE = 141, // 4.13
TMBOY 47:9e361da97763 43 BCA_MSG_RSP_UNSUPPORTED_CONTENT_FORMAT = 143, // 4.15
TMBOY 47:9e361da97763 44 BCA_MSG_RSP_INTERNAL_SERVER_ERROR = 160, // 5.00
TMBOY 47:9e361da97763 45 BCA_MSG_RSP_NOT_IMPLEMENTED = 161, // 5.01
TMBOY 47:9e361da97763 46 BCA_MSG_RSP_BAD_GATEWAY = 162, // 5.02
TMBOY 47:9e361da97763 47 BCA_MSG_RSP_SERVICE_UNAVAILABLE = 163, // 5.03
TMBOY 47:9e361da97763 48 BCA_MSG_RSP_GATEWAY_TIMEOUT = 164, // 5.04
TMBOY 47:9e361da97763 49 BCA_MSG_RSP_PROXYING_NOT_SUPPORTED = 165, // 5.05
TMBOY 47:9e361da97763 50
TMBOY 47:9e361da97763 51 } bca_msg_code_e;
TMBOY 47:9e361da97763 52
TMBOY 47:9e361da97763 53 /**
TMBOY 47:9e361da97763 54 * CoAP Message type, used in CoAP Header
TMBOY 47:9e361da97763 55 */
TMBOY 47:9e361da97763 56 typedef enum {
TMBOY 47:9e361da97763 57 BCA_MSG_TYPE_CONFIRMABLE = 0x00, // Reliable Request messages
TMBOY 47:9e361da97763 58 BCA_MSG_TYPE_NON_CONFIRMABLE = 0x10, // Non-reliable Request and Response messages
TMBOY 47:9e361da97763 59 BCA_MSG_TYPE_ACKNOWLEDGEMENT = 0x20, // Response to a Confirmable Request
TMBOY 47:9e361da97763 60 BCA_MSG_TYPE_RESET = 0x30 // Answer a Bad Request
TMBOY 47:9e361da97763 61 } bca_msg_type_e;
TMBOY 47:9e361da97763 62
TMBOY 47:9e361da97763 63 /*
TMBOY 47:9e361da97763 64 * The resource operation permission
TMBOY 47:9e361da97763 65 */
TMBOY 47:9e361da97763 66 typedef enum {
TMBOY 47:9e361da97763 67 BCA_RES_OP_GET = 0x01, // Get operation allowed
TMBOY 47:9e361da97763 68 BCA_RES_OP_PUT = 0x02, // Put operation allowed
TMBOY 47:9e361da97763 69 BCA_RES_OP_POST = 0x04, // Post operation allowed
TMBOY 47:9e361da97763 70 BCA_RES_OP_DELETE = 0x08 // Delete operation allowed
TMBOY 47:9e361da97763 71 } bca_resource_operation_e;
TMBOY 47:9e361da97763 72
TMBOY 47:9e361da97763 73 /*
TMBOY 47:9e361da97763 74 * The resource mode
TMBOY 47:9e361da97763 75 */
TMBOY 47:9e361da97763 76 typedef enum {
TMBOY 47:9e361da97763 77 BCA_RES_MODE_STATIC, // Static resources have some value that doesn't change
TMBOY 47:9e361da97763 78 BCA_RES_MODE_DYNAMIC, // Dynamic resources are handled in application
TMBOY 47:9e361da97763 79 } bca_resource_mode_e;
TMBOY 47:9e361da97763 80
TMBOY 47:9e361da97763 81 enum _baidu_ca_protocol_enum {
TMBOY 47:9e361da97763 82 BCA_PROTO_TCP,
TMBOY 47:9e361da97763 83 BCA_PROTO_UDP
TMBOY 47:9e361da97763 84 };
TMBOY 47:9e361da97763 85
TMBOY 47:9e361da97763 86 /*
TMBOY 47:9e361da97763 87 * The message definition
TMBOY 47:9e361da97763 88 */
TMBOY 47:9e361da97763 89 typedef struct _bca_message_s {
TMBOY 47:9e361da97763 90 bca_u16_t token_len;
TMBOY 47:9e361da97763 91
TMBOY 47:9e361da97763 92 bca_u8_t msg_type;
TMBOY 47:9e361da97763 93 bca_u8_t msg_code;
TMBOY 47:9e361da97763 94 bca_u16_t msg_id;
TMBOY 47:9e361da97763 95
TMBOY 47:9e361da97763 96 bca_u16_t path_len;
TMBOY 47:9e361da97763 97 bca_u16_t query_len;
TMBOY 47:9e361da97763 98 bca_u16_t payload_len;
TMBOY 47:9e361da97763 99
TMBOY 47:9e361da97763 100 bca_u8_t* token;
TMBOY 47:9e361da97763 101 bca_u8_t* path;
TMBOY 47:9e361da97763 102 bca_u8_t* query;
TMBOY 47:9e361da97763 103 bca_u8_t* payload;
TMBOY 47:9e361da97763 104 } bca_msg_t;
TMBOY 47:9e361da97763 105
TMBOY 47:9e361da97763 106 /*
TMBOY 47:9e361da97763 107 * Adapt the memory management functions.
TMBOY 47:9e361da97763 108 */
TMBOY 47:9e361da97763 109 typedef void* (*bca_malloc_f)(bca_context context, bca_size_t size);
TMBOY 47:9e361da97763 110
TMBOY 47:9e361da97763 111 typedef void* (*bca_realloc_f)(bca_context context, void*, bca_size_t size);
TMBOY 47:9e361da97763 112
TMBOY 47:9e361da97763 113 typedef void (*bca_free_f)(bca_context context, void* p);
TMBOY 47:9e361da97763 114
TMBOY 47:9e361da97763 115 /*
TMBOY 47:9e361da97763 116 * The network address structure
TMBOY 47:9e361da97763 117 */
TMBOY 47:9e361da97763 118 typedef struct _bca_address_s {
TMBOY 47:9e361da97763 119 bca_u8_t type; // the socket type
TMBOY 47:9e361da97763 120 bca_u16_t port; // the host port
TMBOY 47:9e361da97763 121 void* host; // the host address
TMBOY 47:9e361da97763 122 bca_size_t host_size; // the host address length
TMBOY 47:9e361da97763 123 } bca_addr_t;
TMBOY 47:9e361da97763 124
TMBOY 47:9e361da97763 125 /*
TMBOY 47:9e361da97763 126 * The network transfer data callbacks.
TMBOY 47:9e361da97763 127 * See the detail in @{link baidu_ca_transport_init}
TMBOY 47:9e361da97763 128 */
TMBOY 47:9e361da97763 129 typedef void* bca_socket_t;
TMBOY 47:9e361da97763 130
TMBOY 47:9e361da97763 131 typedef bca_socket_t (*bca_soc_create_f)(bca_context ctx);
TMBOY 47:9e361da97763 132
TMBOY 47:9e361da97763 133 typedef bca_status_t (*bca_soc_connect_f)(bca_socket_t sock,
TMBOY 47:9e361da97763 134 const bca_addr_t* addr);
TMBOY 47:9e361da97763 135
TMBOY 47:9e361da97763 136 typedef bca_status_t (*bca_soc_send_f)(bca_socket_t sock,
TMBOY 47:9e361da97763 137 const void* data,
TMBOY 47:9e361da97763 138 bca_size_t size,
TMBOY 47:9e361da97763 139 const bca_addr_t* addr);
TMBOY 47:9e361da97763 140
TMBOY 47:9e361da97763 141 typedef bca_status_t (*bca_soc_recv_f)(bca_socket_t sock,
TMBOY 47:9e361da97763 142 void* data,
TMBOY 47:9e361da97763 143 bca_size_t size,
TMBOY 47:9e361da97763 144 bca_addr_t* addr);
TMBOY 47:9e361da97763 145
TMBOY 47:9e361da97763 146 typedef bca_status_t (*bca_soc_recv_timeout_f)(bca_socket_t sock,
TMBOY 47:9e361da97763 147 void* data,
TMBOY 47:9e361da97763 148 bca_size_t size,
TMBOY 47:9e361da97763 149 bca_u32_t timeout,
TMBOY 47:9e361da97763 150 bca_addr_t* addr);
TMBOY 47:9e361da97763 151
TMBOY 47:9e361da97763 152 typedef bca_status_t (*bca_soc_close_f)(bca_socket_t sock);
TMBOY 47:9e361da97763 153
TMBOY 47:9e361da97763 154 typedef bca_status_t (*bca_soc_destroy_f)(bca_socket_t sock);
TMBOY 47:9e361da97763 155
TMBOY 47:9e361da97763 156 /*
TMBOY 47:9e361da97763 157 * The mutex callbacks
TMBOY 47:9e361da97763 158 */
TMBOY 47:9e361da97763 159
TMBOY 47:9e361da97763 160 typedef void* bca_mutex_t;
TMBOY 47:9e361da97763 161 typedef bca_mutex_t (*bca_mutex_create_f)();
TMBOY 47:9e361da97763 162 typedef bca_status_t (*bca_mutex_lock_f)(bca_mutex_t mtx);
TMBOY 47:9e361da97763 163 typedef bca_status_t (*bca_mutex_unlock_f)(bca_mutex_t mtx);
TMBOY 47:9e361da97763 164 typedef bca_status_t (*bca_mutex_destroy_f)(bca_mutex_t mtx);
TMBOY 47:9e361da97763 165
TMBOY 47:9e361da97763 166 /*
TMBOY 47:9e361da97763 167 * The timestamp callbacks
TMBOY 47:9e361da97763 168 */
TMBOY 47:9e361da97763 169
TMBOY 47:9e361da97763 170 // Return the timestamp by milliseconds
TMBOY 47:9e361da97763 171 typedef bca_u32_t (*bca_timestamp_f)();
TMBOY 47:9e361da97763 172
TMBOY 47:9e361da97763 173 /*
TMBOY 47:9e361da97763 174 * The random callbacks
TMBOY 47:9e361da97763 175 */
TMBOY 47:9e361da97763 176
TMBOY 47:9e361da97763 177 // Return the random number
TMBOY 47:9e361da97763 178 typedef bca_s32_t (*bca_random_f)();
TMBOY 47:9e361da97763 179
TMBOY 47:9e361da97763 180 /*
TMBOY 47:9e361da97763 181 * The handler
TMBOY 47:9e361da97763 182 */
TMBOY 47:9e361da97763 183 typedef void* bca_handler;
TMBOY 47:9e361da97763 184
TMBOY 47:9e361da97763 185 /*
TMBOY 47:9e361da97763 186 * The status notification to user.
TMBOY 47:9e361da97763 187 */
TMBOY 47:9e361da97763 188
TMBOY 47:9e361da97763 189 typedef bca_status_t (*bca_notify_f)(bca_context ctx,
TMBOY 47:9e361da97763 190 bca_msg_t* msg,
TMBOY 47:9e361da97763 191 bca_addr_t* addr);
TMBOY 47:9e361da97763 192
TMBOY 47:9e361da97763 193 /*
TMBOY 47:9e361da97763 194 * The debug output
TMBOY 47:9e361da97763 195 */
TMBOY 47:9e361da97763 196 typedef void (*bca_debug_f)(bca_context ctx,
TMBOY 47:9e361da97763 197 bca_u32_t level,
TMBOY 47:9e361da97763 198 const char* file,
TMBOY 47:9e361da97763 199 bca_u32_t line,
TMBOY 47:9e361da97763 200 const char* fmt);
TMBOY 47:9e361da97763 201
TMBOY 47:9e361da97763 202 /*
TMBOY 47:9e361da97763 203 * The resource for user
TMBOY 47:9e361da97763 204 */
TMBOY 47:9e361da97763 205 typedef struct _bca_resource_s {
TMBOY 47:9e361da97763 206 bca_u8_t mode: 2; // the resource mode, SEE in ${link bca_resource_mode_e}
TMBOY 47:9e361da97763 207 bca_u8_t allowed: 6; // operation permission, SEE in ${link bca_resource_operation_e}
TMBOY 47:9e361da97763 208 char* path; // the resource path identify
TMBOY 47:9e361da97763 209
TMBOY 47:9e361da97763 210 union {
TMBOY 47:9e361da97763 211 bca_notify_f f_res; // dynamic resource handle function, NULL if static
TMBOY 47:9e361da97763 212 struct {
TMBOY 47:9e361da97763 213 void* data; // static resource value data, NULL if dynamic
TMBOY 47:9e361da97763 214 bca_size_t size; // static resource size
TMBOY 47:9e361da97763 215 } s_res;
TMBOY 47:9e361da97763 216 } res;
TMBOY 47:9e361da97763 217 } bca_res_t;
TMBOY 47:9e361da97763 218
TMBOY 47:9e361da97763 219 /*
TMBOY 47:9e361da97763 220 * Set the debug output
TMBOY 47:9e361da97763 221 *
TMBOY 47:9e361da97763 222 * @Param ctx, bca_context, the debug context for user
TMBOY 47:9e361da97763 223 * @Param f_debug, bca_debug_f, the debug output function
TMBOY 47:9e361da97763 224 */
TMBOY 47:9e361da97763 225 BCA_EXT void baidu_ca_debug_init(bca_context ctx, bca_debug_f f_debug);
TMBOY 47:9e361da97763 226
TMBOY 47:9e361da97763 227 /*
TMBOY 47:9e361da97763 228 * Set the memory management functions.
TMBOY 47:9e361da97763 229 *
TMBOY 47:9e361da97763 230 * @Param ctx, bca_context, in, the memory context for user
TMBOY 47:9e361da97763 231 * @Param f_malloc, bca_malloc_f, the memory alloc function for user
TMBOY 47:9e361da97763 232 * @Param f_realloc, bca_realloc_f, the memory realloc function for user,
TMBOY 47:9e361da97763 233 * @Param f_free, bca_free_f, the memory free function for user
TMBOY 47:9e361da97763 234 *
TMBOY 47:9e361da97763 235 * If f_malloc or f_free set to NULL, we will use default libc instead all of it;
TMBOY 47:9e361da97763 236 * If only f_realloc set to NULL, we will realized it by f_malloc and f_free.
TMBOY 47:9e361da97763 237 */
TMBOY 47:9e361da97763 238 BCA_EXT void baidu_ca_memory_init(bca_context context,
TMBOY 47:9e361da97763 239 bca_malloc_f f_malloc,
TMBOY 47:9e361da97763 240 bca_realloc_f f_realloc,
TMBOY 47:9e361da97763 241 bca_free_f f_free);
TMBOY 47:9e361da97763 242
TMBOY 47:9e361da97763 243 /*
TMBOY 47:9e361da97763 244 * Set network input/ouput function
TMBOY 47:9e361da97763 245 *
TMBOY 47:9e361da97763 246 * @Param f_create, in, the function create socket context
TMBOY 47:9e361da97763 247 * @Param f_conn, in, the function connect socket to host
TMBOY 47:9e361da97763 248 * @Param f_send, in, the function send message
TMBOY 47:9e361da97763 249 * @Param f_recv, in, the function receive message
TMBOY 47:9e361da97763 250 * @Param f_recv_timeout, in, the function receive message with timeout
TMBOY 47:9e361da97763 251 * @Param f_close, in, the function close the socket
TMBOY 47:9e361da97763 252 * @Param f_destroy, in, the function destroy the socket context
TMBOY 47:9e361da97763 253 */
TMBOY 47:9e361da97763 254 BCA_EXT void baidu_ca_transport_init(bca_soc_create_f f_create,
TMBOY 47:9e361da97763 255 bca_soc_connect_f f_conn,
TMBOY 47:9e361da97763 256 bca_soc_send_f f_send,
TMBOY 47:9e361da97763 257 bca_soc_recv_f f_recv,
TMBOY 47:9e361da97763 258 bca_soc_recv_timeout_f f_recv_timeout,
TMBOY 47:9e361da97763 259 bca_soc_close_f f_close,
TMBOY 47:9e361da97763 260 bca_soc_destroy_f f_destroy);
TMBOY 47:9e361da97763 261
TMBOY 47:9e361da97763 262 /*
TMBOY 47:9e361da97763 263 * Initial the mutex callbacks for Baidu CA
TMBOY 47:9e361da97763 264 *
TMBOY 47:9e361da97763 265 * @Param f_create, in, the function create mutex context
TMBOY 47:9e361da97763 266 * @Param f_lock, in, the function mutex lock
TMBOY 47:9e361da97763 267 * @Param f_unlock, in, the function mutex unlock
TMBOY 47:9e361da97763 268 * @Param f_destroy, in, the function destroy mutex context
TMBOY 47:9e361da97763 269 */
TMBOY 47:9e361da97763 270 BCA_EXT void baidu_ca_mutex_init(bca_mutex_create_f f_create,
TMBOY 47:9e361da97763 271 bca_mutex_lock_f f_lock,
TMBOY 47:9e361da97763 272 bca_mutex_unlock_f f_unlock,
TMBOY 47:9e361da97763 273 bca_mutex_destroy_f f_destroy);
TMBOY 47:9e361da97763 274
TMBOY 47:9e361da97763 275 /*
TMBOY 47:9e361da97763 276 * Initial the timestamp callbacks for Baidu CA
TMBOY 47:9e361da97763 277 *
TMBOY 47:9e361da97763 278 * @Param f_timestamp, in, the function obtain the timestamp
TMBOY 47:9e361da97763 279 */
TMBOY 47:9e361da97763 280 BCA_EXT void baidu_ca_timestamp_init(bca_timestamp_f f_timestamp);
TMBOY 47:9e361da97763 281
TMBOY 47:9e361da97763 282 /*
TMBOY 47:9e361da97763 283 * Initial the random callbacks for Baidu CA
TMBOY 47:9e361da97763 284 *
TMBOY 47:9e361da97763 285 * @Param bca_random_f, in, the function random generator function
TMBOY 47:9e361da97763 286 */
TMBOY 47:9e361da97763 287 BCA_EXT void baidu_ca_random_init(bca_random_f f_random);
TMBOY 47:9e361da97763 288
TMBOY 47:9e361da97763 289 /*
TMBOY 47:9e361da97763 290 * Acquire the handler
TMBOY 47:9e361da97763 291 *
TMBOY 47:9e361da97763 292 * @Param data, in, the configuration data
TMBOY 47:9e361da97763 293 * @Param size, in, the data size
TMBOY 47:9e361da97763 294 * @Param soc_ctx, in socket context
TMBOY 47:9e361da97763 295 * @Return bca_handler, the global context handler
TMBOY 47:9e361da97763 296 */
TMBOY 47:9e361da97763 297 BCA_EXT bca_handler baidu_ca_acquire(const void* data,
TMBOY 47:9e361da97763 298 bca_size_t size,
TMBOY 47:9e361da97763 299 bca_context soc_ctx);
TMBOY 47:9e361da97763 300
TMBOY 47:9e361da97763 301 /*
TMBOY 47:9e361da97763 302 * Acquire the resources for response
TMBOY 47:9e361da97763 303 *
TMBOY 47:9e361da97763 304 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 305 * @Param list_res, in, resource list
TMBOY 47:9e361da97763 306 * @Param list_res_size, in resource list length
TMBOY 47:9e361da97763 307 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 308 */
TMBOY 47:9e361da97763 309 BCA_EXT bca_status_t baidu_ca_add_resources(bca_handler hdlr,
TMBOY 47:9e361da97763 310 const bca_res_t list_res[],
TMBOY 47:9e361da97763 311 bca_size_t list_res_size);
TMBOY 47:9e361da97763 312
TMBOY 47:9e361da97763 313 /*
TMBOY 47:9e361da97763 314 * Start run the Baidu CA, prepare the environment.
TMBOY 47:9e361da97763 315 *
TMBOY 47:9e361da97763 316 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 317 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 318 */
TMBOY 47:9e361da97763 319 BCA_EXT bca_status_t baidu_ca_start(bca_handler hdlr);
TMBOY 47:9e361da97763 320
TMBOY 47:9e361da97763 321 /*
TMBOY 47:9e361da97763 322 * Set the Reporter report response callback.
TMBOY 47:9e361da97763 323 *
TMBOY 47:9e361da97763 324 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 325 * @Param f_response, in, the callback for notify user the report data response
TMBOY 47:9e361da97763 326 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 327 */
TMBOY 47:9e361da97763 328 BCA_EXT bca_status_t baidu_ca_report_set_response_callback(bca_handler hdlr,
TMBOY 47:9e361da97763 329 bca_notify_f f_response,
TMBOY 47:9e361da97763 330 bca_context context);
TMBOY 47:9e361da97763 331
TMBOY 47:9e361da97763 332 /*
TMBOY 47:9e361da97763 333 * Build the message body that will be reported.
TMBOY 47:9e361da97763 334 *
TMBOY 47:9e361da97763 335 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 336 * @Param data, in, the message report data
TMBOY 47:9e361da97763 337 * @Param size, in, the data size
TMBOY 47:9e361da97763 338 * @Param confirmable, in, the report data QoS
TMBOY 47:9e361da97763 339 * @Return bca_msg_t *, in, the generated message body,
TMBOY 47:9e361da97763 340 * it SHOULD be released by ${link baidu_ca_release_message}
TMBOY 47:9e361da97763 341 */
TMBOY 47:9e361da97763 342 BCA_EXT bca_msg_t* baidu_ca_build_report_message(bca_handler hdlr,
TMBOY 47:9e361da97763 343 bca_bool confirmable);
TMBOY 47:9e361da97763 344
TMBOY 47:9e361da97763 345 /*
TMBOY 47:9e361da97763 346 * Build the message body that will be responsed to remote.
TMBOY 47:9e361da97763 347 *
TMBOY 47:9e361da97763 348 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 349 * @Param msg, in, the message that remote requested
TMBOY 47:9e361da97763 350 * @Param msg_code, out, the response message code
TMBOY 47:9e361da97763 351 * @Return bca_msg_t *, in, the generated message body,
TMBOY 47:9e361da97763 352 * it SHOULD be released by ${link baidu_ca_release_message}
TMBOY 47:9e361da97763 353 */
TMBOY 47:9e361da97763 354 BCA_EXT bca_msg_t* baidu_ca_build_response_message(bca_handler hdlr,
TMBOY 47:9e361da97763 355 const bca_msg_t* msg,
TMBOY 47:9e361da97763 356 bca_u8_t msg_code);
TMBOY 47:9e361da97763 357
TMBOY 47:9e361da97763 358 /*
TMBOY 47:9e361da97763 359 * Release the message that generated by baidu_ca_build_XXXX_message.
TMBOY 47:9e361da97763 360 *
TMBOY 47:9e361da97763 361 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 362 * @Param msg, in, the message that remote requested
TMBOY 47:9e361da97763 363 */
TMBOY 47:9e361da97763 364 BCA_EXT void baidu_ca_release_message(bca_handler hdlr, bca_msg_t* msg);
TMBOY 47:9e361da97763 365
TMBOY 47:9e361da97763 366 /*
TMBOY 47:9e361da97763 367 * Send the message
TMBOY 47:9e361da97763 368 *
TMBOY 47:9e361da97763 369 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 370 * @Param msg, in, the msg will be sent
TMBOY 47:9e361da97763 371 * @Param addr, in, the remote addr
TMBOY 47:9e361da97763 372 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 373 */
TMBOY 47:9e361da97763 374 BCA_EXT bca_status_t baidu_ca_send_data(bca_handler hdlr,
TMBOY 47:9e361da97763 375 const bca_msg_t* msg,
TMBOY 47:9e361da97763 376 const bca_addr_t* addr);
TMBOY 47:9e361da97763 377
TMBOY 47:9e361da97763 378 /*
TMBOY 47:9e361da97763 379 * When the message data has ready to be received
TMBOY 47:9e361da97763 380 *
TMBOY 47:9e361da97763 381 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 382 * @Param addr, in, the remote addr
TMBOY 47:9e361da97763 383 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 384 */
TMBOY 47:9e361da97763 385 BCA_EXT bca_status_t baidu_ca_data_available(bca_handler hdlr,
TMBOY 47:9e361da97763 386 const bca_addr_t* addr);
TMBOY 47:9e361da97763 387
TMBOY 47:9e361da97763 388 /*
TMBOY 47:9e361da97763 389 * Execute the cached CoAP data, such as blockwise, resending...
TMBOY 47:9e361da97763 390 *
TMBOY 47:9e361da97763 391 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 392 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 393 */
TMBOY 47:9e361da97763 394 BCA_EXT bca_status_t baidu_ca_exec(bca_handler hdlr);
TMBOY 47:9e361da97763 395
TMBOY 47:9e361da97763 396 /*
TMBOY 47:9e361da97763 397 * Stop the Baidu CA.
TMBOY 47:9e361da97763 398 *
TMBOY 47:9e361da97763 399 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 400 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 401 */
TMBOY 47:9e361da97763 402 BCA_EXT bca_status_t baidu_ca_stop(bca_handler hdlr);
TMBOY 47:9e361da97763 403
TMBOY 47:9e361da97763 404 /*
TMBOY 47:9e361da97763 405 * Release the handler
TMBOY 47:9e361da97763 406 *
TMBOY 47:9e361da97763 407 * @Param hdlr, in, the handler will be operated
TMBOY 47:9e361da97763 408 * @Return bca_status_t, in, the operation result
TMBOY 47:9e361da97763 409 */
TMBOY 47:9e361da97763 410 BCA_EXT bca_status_t baidu_ca_release(bca_handler hdlr);
TMBOY 47:9e361da97763 411
TMBOY 47:9e361da97763 412 #ifdef __cplusplus
TMBOY 47:9e361da97763 413 }
TMBOY 47:9e361da97763 414 #endif
TMBOY 47:9e361da97763 415
TMBOY 47:9e361da97763 416 #endif // BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_INCLUDE_BAIDU_CA_H