Files
kunlun/export/inc/swc_lib/iot_swc_api.h
2024-09-28 14:24:04 +08:00

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 */