149 lines
5.3 KiB
C
149 lines
5.3 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef IOT_SWC_API_H
|
|
#define IOT_SWC_API_H
|
|
|
|
#include "os_types_api.h"
|
|
#include "iot_swc_msg_api.h"
|
|
#include "iot_pkt_api.h"
|
|
#include "iot_sg_fr.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#if IOT_SWC_ENABLE
|
|
|
|
/**
|
|
* @brief iot_swc_alloc_msdu() - allocate iot packet for msdu data send.
|
|
* be notified through iot_swc_recv_func_t callback.
|
|
* @param msg_type: type of the message. see IOT_SWC_MSG_TYPE_XXX
|
|
* @param dst: final destination mac address
|
|
* @param src: original source mac address
|
|
* @param lid: link identifier.
|
|
* 0 - 3 priority,
|
|
* 4 - 254 business category,
|
|
* 255 invalid. if set to 255, default
|
|
* priority registered will be used.
|
|
* @param len: message length
|
|
* @return the pointer of iot packet
|
|
*/
|
|
iot_pkt_t *iot_swc_alloc_msdu(uint8_t msg_type, uint8_t *dst, uint8_t *src,
|
|
uint8_t lid, uint16_t len);
|
|
|
|
/**
|
|
* @brief: send a packet through the swc. there is no
|
|
* guarantee that the packet will be delivered to the
|
|
* final destination as the swc network is unreliable. the
|
|
* pkt must be allocated through iot_swc_alloc_msdu api.
|
|
* @param pkt: pointer to the packet
|
|
*/
|
|
void iot_swc_send_msdu(iot_pkt_t *pkt);
|
|
|
|
/**
|
|
* @brief: get a swc msdu from a plc msdu.
|
|
* @param msdu: a iot_pkt containing plc msdu
|
|
* @retval: a iot_pkt with a swc msdu in it.
|
|
* Or NULL if failed to allocate an iot_pkt.
|
|
*/
|
|
iot_pkt_t *iot_plc_msdu_2_swc_msdu(iot_pkt_t *msdu);
|
|
|
|
/*
|
|
* @brief: send a packet through the swc. the pkt must be allocated
|
|
through iot_plc_alloc_msdu api. This api consumed the iot_pkt.
|
|
* @param pkt: pointer to the packet containing plc msdu.
|
|
*/
|
|
void iot_swc_send_plc_msdu(iot_pkt_t *pkt);
|
|
|
|
/**
|
|
* @brief iot_swc_query_whitelist() - query whitelist
|
|
* @param start: start index of whitelist entry
|
|
* @param req_id: request id, the request id will be transferred back
|
|
* to app in the report. app can define the mean of
|
|
* each id itself.
|
|
* @param cnt: count of entries to retrieve
|
|
*/
|
|
void iot_swc_query_whitelist(uint8_t req_id, uint16_t start, uint16_t cnt);
|
|
|
|
/**
|
|
* @brief iot_swc_set_whitelist() - set whitelist
|
|
* @param req_id: request id, the request id will be transferred back
|
|
* to app in the report. app can define the mean of
|
|
* each id itself.
|
|
* @param action: action of whitelist operation. available
|
|
* value is IOT_SWC_WL_XXX
|
|
* @param count: number of mac address
|
|
* @param mac_addry_array: array of mac address
|
|
*/
|
|
void iot_swc_set_whitelist(uint8_t req_id, uint8_t action, uint16_t count,
|
|
uint8_t *mac_addr_array);
|
|
|
|
/**
|
|
* @brief iot_swc_set_cfg() - set configuration of local device
|
|
* @param req_id: request id, the request id will be transferred back to
|
|
* app in the report. app can define the mean of each id
|
|
* itself.
|
|
* @param addr: mac address to be set. set NULL if mac address
|
|
* change not required.
|
|
* @param dev_type: device type to be set. set IOT_SWC_DEV_TYPE_INVALID
|
|
* if device type chage not required.
|
|
* @param reset: reset lower layer to apply the cfg immediately.
|
|
*/
|
|
void iot_swc_set_cfg(uint8_t req_id, uint8_t *addr, uint8_t dev_type,
|
|
uint8_t reset);
|
|
|
|
/**
|
|
* @brief iot_swc_start_nw_fmt() - start network formation
|
|
* @param force: flag to mark if force start required. if swc network
|
|
* formation already started, set this flag will restart
|
|
* the whole process from the very beginning.
|
|
*/
|
|
void iot_swc_start_nw_fmt(uint8_t force);
|
|
|
|
/*
|
|
* @brief: init swc library
|
|
* @param cb: callback method to receive data from swc link
|
|
*/
|
|
void iot_swc_init(iot_swc_lib_cb_t cb);
|
|
|
|
#else //IOT_SWC_ENABLE
|
|
|
|
#define iot_swc_alloc_msdu(msg_type, dst, src, lid, len)
|
|
|
|
#define iot_swc_send_msdu(pkt)
|
|
|
|
#define iot_plc_msdu_2_swc_msdu(msdu)
|
|
|
|
#define iot_swc_send_plc_msdu(pkt)
|
|
|
|
#define iot_swc_query_whitelist(req_id, start, cnt)
|
|
|
|
#define iot_swc_set_whitelist(req_id, action, count, mac_addr_array)
|
|
|
|
#define iot_swc_set_cfg(req_id, addr, dev_type, reset)
|
|
|
|
#define iot_swc_start_nw_fmt(force)
|
|
|
|
#define iot_swc_init(cb)
|
|
|
|
#endif /* IOT_SWC_ENABLE */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* IOT_SWC_API_H */
|