166 lines
4.9 KiB
C
166 lines
4.9 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.
|
|
*/
|
|
/**
|
|
* File: lightduer_connagent.h
|
|
* Auth: Su Hao (suhao@baidu.com)
|
|
* Desc: Light duer APIS.
|
|
*/
|
|
|
|
#ifndef BAIDU_DUER_LIGHTDUER_INCLUDE_LIGHTDUER_H
|
|
#define BAIDU_DUER_LIGHTDUER_INCLUDE_LIGHTDUER_H
|
|
|
|
#include "lightduer_types.h"
|
|
#include "lightduer_network_defs.h"
|
|
#include "lightduer_coap_defs.h"
|
|
#include "baidu_json.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum _duer_event_id_enum {
|
|
DUER_EVENT_STARTED,
|
|
DUER_EVENT_STOPPED
|
|
} duer_event_id;
|
|
|
|
typedef struct _duer_event_data_s {
|
|
int _event; //< Event id, see in @{link duer_event_id}
|
|
int _code; //< the return code
|
|
void *_object; //< The return content
|
|
} duer_event_t;
|
|
|
|
/**
|
|
* The action result callback
|
|
*/
|
|
typedef void (*duer_event_callback)(duer_event_t *);
|
|
|
|
/**
|
|
* Initialize the environment.
|
|
*/
|
|
void duer_initialize(void);
|
|
|
|
/**
|
|
* Set all actions event callback
|
|
*
|
|
* @param callback, the event change result callback.
|
|
*/
|
|
void duer_set_event_callback(duer_event_callback callback);
|
|
|
|
/**
|
|
* Start the LightDuer egnine.
|
|
*
|
|
* @param data, the configuration data
|
|
* @param size, the data size
|
|
* @return int, the start result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_start(const void *data, size_t size);
|
|
|
|
/**
|
|
* Add route resources for Server requested, this should be called after CA started.
|
|
*
|
|
* @param msg, const duer_res_t *, the resources list
|
|
* @param length, size_t, the resources length
|
|
* @return int, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_add_resources(const duer_res_t *res, size_t length);
|
|
|
|
/**
|
|
* Call it when data is ready.
|
|
*
|
|
* @return int, the start result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_data_available(void);
|
|
|
|
/**
|
|
* Send data to server.
|
|
*
|
|
* @param data, const baidu_json *, the data point values.
|
|
* @return int, the report data result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_data_report(const baidu_json *data);
|
|
|
|
/**
|
|
* Send data to server.
|
|
*
|
|
* @param data, const baidu_json *, the data point values.
|
|
* @return int, the report data result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_data_report_async(duer_context_t *context, const baidu_json *data);
|
|
|
|
/**
|
|
* Response the request from Origin Server.
|
|
*
|
|
* @param msg, const duer_msg_t *, the request message structure.
|
|
* @param msg_code, int, the message code, see in @{link duer_msg_code_e}.
|
|
* @param data, const void *, the payload data.
|
|
* @param size, size_t, the payload size.
|
|
* @return int, the send response result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
* @Note: if response ACK without response data,
|
|
* set msg_code = DUER_MSG_EMPTY_MESSAGE, and data = NULL, size = 0
|
|
*/
|
|
int duer_response(const duer_msg_t *msg, int msg_code, const void *data, duer_size_t size);
|
|
|
|
/**
|
|
* the seperate response message for an request
|
|
* @param token, const char* , the token got from the corresponding request
|
|
* @param token_len, duer_size_t, the length of the token
|
|
* @param msg_code, int, the message code, see in @{link duer_msg_code_e}
|
|
* @param data, const baidu_json *, the payload of the message
|
|
* @return int, the send response result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_seperate_response(const char *token,
|
|
duer_size_t token_len,
|
|
int msg_code,
|
|
const baidu_json *data);
|
|
|
|
/**
|
|
* Stop the LightDuer engine.
|
|
*
|
|
* @return int, the stop result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_stop(void);
|
|
|
|
/**
|
|
* Stop the LightDuer engine.
|
|
* @param reason, int, the stop code which indicate the stop reason
|
|
* @return int, the stop result, success return DUER_OK, failed return DUER_ERR_FAILED.
|
|
*/
|
|
int duer_stop_with_reason(int reason);
|
|
|
|
/**
|
|
* clear the queue cache data.
|
|
* @param timestamp, clean the message with create_timestamp before timestamp
|
|
*/
|
|
int duer_clear_data(duer_u32_t timestamp);
|
|
|
|
/**
|
|
* the callback to handle coap response message.
|
|
*/
|
|
void duer_coap_response_callback(duer_context ctx,
|
|
duer_msg_t *msg,
|
|
duer_addr_t *addr);
|
|
|
|
/**
|
|
* Finalize the environment.
|
|
*/
|
|
int duer_finalize(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif/*BAIDU_DUER_LIGHTDUER_INCLUDE_LIGHTDUER_H*/
|