doubao_chat/lib/net/libduer-device/modules/connagent/lightduer_ca.h

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