271 lines
7.8 KiB
C
271 lines
7.8 KiB
C
/**
|
|
* Copyright (2017) Baidu Inc. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
// Author: Su Hao (suhao@baidu.com)
|
|
//
|
|
// Desc: Provide the API for external applications.
|
|
|
|
#ifndef BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_INCLUDE_BAIDU_CA_H
|
|
#define BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_INCLUDE_BAIDU_CA_H
|
|
|
|
#include "lightduer_types.h"
|
|
#include "lightduer_coap.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* Acquire the handler
|
|
*
|
|
* @Param soc_ctx, in socket context
|
|
* @Return duer_handler, the global context handler
|
|
*/
|
|
DUER_EXT duer_handler baidu_ca_acquire(duer_transevt_func soc_ctx);
|
|
|
|
/*
|
|
* Acquire the resources for response
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param list_res, in, resource list
|
|
* @Param list_res_size, in resource list length
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_add_resources(duer_handler hdlr,
|
|
const duer_res_t list_res[],
|
|
duer_size_t list_res_size);
|
|
/*
|
|
* Load the configuration infomation
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param data, in, the configuration data
|
|
* @Param size, in, the data size
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_load_configuration(duer_handler hdlr, const void *data, duer_size_t size);
|
|
|
|
DUER_EXT duer_status_t baidu_ca_unload_configuration(duer_handler hdlr);
|
|
|
|
/*
|
|
* Start run the Baidu CA, prepare the environment.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_start(duer_handler hdlr);
|
|
|
|
/*
|
|
*
|
|
* Determine the CA is started.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return duer_bool, DUER_TRUE if started, else return DUER_FALSE.
|
|
*/
|
|
DUER_EXT duer_bool baidu_ca_is_started(duer_handler hdlr);
|
|
|
|
/*
|
|
*
|
|
* Determine the CA is stopped.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return duer_bool, DUER_TRUE if stopped, else return DUER_FALSE.
|
|
*/
|
|
DUER_EXT duer_bool baidu_ca_is_stopped(duer_handler hdlr);
|
|
|
|
/*
|
|
* Set the Reporter report response callback.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param f_response, in, the callback for notify user the report data response
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_report_set_response_callback(duer_handler hdlr,
|
|
duer_notify_f f_response,
|
|
duer_context context);
|
|
|
|
/*
|
|
* Set the transmit data callback.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param f_transmit, in, the callback for transmit encoded data.
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_report_set_data_tx_callback(duer_handler hdlr, duer_transmit_f f_transmit);
|
|
|
|
/*
|
|
* Build the message body that will be reported.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param data, in, the message report data
|
|
* @Param size, in, the data size
|
|
* @Param confirmable, in, the report data QoS
|
|
* @Return duer_msg_t *, in, the generated message body,
|
|
* it SHOULD be released by ${link baidu_ca_release_message}
|
|
*/
|
|
DUER_EXT duer_msg_t *baidu_ca_build_report_message(duer_handler hdlr,
|
|
duer_bool confirmable);
|
|
|
|
/*
|
|
* Build the message body that will be responsed to remote.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param msg, in, the message that remote requested
|
|
* @Param msg_code, out, the response message code
|
|
* @Return duer_msg_t *, in, the generated message body,
|
|
* it SHOULD be released by ${link baidu_ca_release_message}
|
|
*/
|
|
DUER_EXT duer_msg_t *baidu_ca_build_response_message(duer_handler hdlr,
|
|
const duer_msg_t *msg,
|
|
duer_u8_t msg_code);
|
|
|
|
/*
|
|
* Build the seperate response to the request with the token.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param ptoken, in, the token used in the message
|
|
* @Param token_len, in, the length of the token
|
|
* @Param msg_code, in, the response message code
|
|
* @Param confirmable, in,
|
|
* @Return duer_msg_t *, out, the generated message body,
|
|
* it SHOULD be released by ${link baidu_ca_release_message}
|
|
*/
|
|
DUER_EXT duer_msg_t *baidu_ca_build_seperate_response_message(duer_handler hdlr,
|
|
const char *ptoken,
|
|
duer_size_t token_len,
|
|
int msg_code,
|
|
duer_bool confirmable);
|
|
|
|
/*
|
|
* Release the message that generated by baidu_ca_build_XXXX_message.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param msg, in, the message that remote requested
|
|
*/
|
|
DUER_EXT void baidu_ca_release_message(duer_handler hdlr, duer_msg_t *msg);
|
|
|
|
/*
|
|
* Send the message
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param msg, in, the msg will be sent
|
|
* @Param addr, in, the remote addr
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_send_data(duer_handler hdlr,
|
|
const duer_msg_t *msg,
|
|
const duer_addr_t *addr);
|
|
|
|
/*
|
|
* Send the user data
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param data, in, the user data
|
|
* @Param size, in, the data size
|
|
* @Param addr, in, the remote addr
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_send_data_directly(duer_handler hdlr,
|
|
const void *data,
|
|
duer_size_t szie,
|
|
const duer_addr_t *addr);
|
|
|
|
/*
|
|
* When the message data has ready to be received
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Param addr, in, the remote addr
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_data_available(duer_handler hdlr,
|
|
const duer_addr_t *addr);
|
|
|
|
/*
|
|
* Execute the cached CoAP data, such as blockwise, resending...
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_exec(duer_handler hdlr);
|
|
|
|
/*
|
|
* Stop the Baidu CA.
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_stop(duer_handler hdlr);
|
|
|
|
/*
|
|
* Release the handler
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return duer_status_t, in, the operation result
|
|
*/
|
|
DUER_EXT duer_status_t baidu_ca_release(duer_handler hdlr);
|
|
|
|
/*
|
|
* Obtain the uuid
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return const char *, The UUID string
|
|
*/
|
|
DUER_EXT const char *baidu_ca_get_uuid(duer_handler hdlr);
|
|
|
|
/*
|
|
* Obtain the client_id
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return const char *, The client id string
|
|
*/
|
|
DUER_EXT const char *baidu_ca_get_client_id(duer_handler hdlr);
|
|
|
|
/*
|
|
* Obtain the bduss
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return const char *, The bduss string
|
|
*/
|
|
DUER_EXT const char *baidu_ca_get_bduss(duer_handler hdlr);
|
|
|
|
/*
|
|
* Obtain the user_agent
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return const char *, The urser agent string
|
|
*/
|
|
DUER_EXT const char *baidu_ca_get_user_agent(duer_handler hdlr);
|
|
|
|
/*
|
|
* Obtain the rsa cacrt
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return const char *, The RSA CACRT string
|
|
*/
|
|
DUER_EXT const char *baidu_ca_get_rsa_cacrt(duer_handler hdlr);
|
|
|
|
/*
|
|
* Obtain the bindToken
|
|
*
|
|
* @Param hdlr, in, the handler will be operated
|
|
* @Return const char *, The bindToken string
|
|
*/
|
|
DUER_EXT const char *baidu_ca_get_bind_token(duer_handler hdlr);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // BAIDU_IOT_TINYDU_IOT_OS_SRC_IOT_BAIDU_CA_INCLUDE_BAIDU_CA_H
|