136 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			136 lines
		
	
	
		
			4.4 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_PLC_LIB_H
 | ||
|  | #define IOT_PLC_LIB_H
 | ||
|  | 
 | ||
|  | #include "os_types.h"
 | ||
|  | #include "iot_config.h"
 | ||
|  | #include "iot_plc_api.h"
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /* pack for the structures in the whole file */ | ||
|  | #pragma pack(push)  // save the pack status
 | ||
|  | #pragma pack(1)     // 1 byte align
 | ||
|  | 
 | ||
|  | /* common PLC message id definitions shared between CCO and STA device */ | ||
|  | #define IOT_PLC_MSG_HW_TSFM_PA_SEND         0XE0
 | ||
|  | #define IOT_PLC_MSG_PM_SAVE_CFG_SET         0xE1
 | ||
|  | 
 | ||
|  | /** IOT_PLC_MSG_HW_TSFM_PA_SEND format */ | ||
|  | typedef struct _iot_plc_hw_tsfm_pa_send { | ||
|  |     /* send count */ | ||
|  |     uint8_t     send_cnt; | ||
|  |     /* length of the data */ | ||
|  |     uint8_t     len; | ||
|  |     /* tx encode frequency tone num, each tone is 75MHz/(1 << 14) */ | ||
|  |     uint32_t    freq_tone_num; | ||
|  |     /* data */ | ||
|  |     uint8_t     data[4]; | ||
|  | } iot_plc_hw_tsfm_pa_send_t; | ||
|  | 
 | ||
|  | /** IOT_PLC_MSG_PM_SAVE_CFG_SET format */ | ||
|  | typedef struct _iot_plc_set_pm_save_cfg { | ||
|  |     /* power save function cfg */ | ||
|  |     uint32_t allow_sleep : 1, | ||
|  |     /* reserved for future */ | ||
|  |              rsv         : 31; | ||
|  | } iot_plc_set_pm_save_cfg_t; | ||
|  | 
 | ||
|  | #pragma pack(pop)    /* restore the pack status */
 | ||
|  | 
 | ||
|  | #if PLC_SUPPORT_CCO_ROLE
 | ||
|  | 
 | ||
|  | /* define short buffer size and count for plc lib message */ | ||
|  | #define PLC_LIB_MSG_SHORT_BUF_SIZE          128
 | ||
|  | #if RUN_IN_PSRAM
 | ||
|  | #define PLC_LIB_MSG_SHORT_BUF_CNT           128
 | ||
|  | #else /* RUN_IN_PSRAM */
 | ||
|  | #define PLC_LIB_MSG_SHORT_BUF_CNT           32
 | ||
|  | #endif /* RUN_IN_PSRAM */
 | ||
|  | 
 | ||
|  | /* define long buffer size and count for plc lib message */ | ||
|  | #define PLC_LIB_MSG_LONG_BUF_SIZE           1024
 | ||
|  | #define PLC_LIB_MSG_LONG_BUF_CNT            16
 | ||
|  | 
 | ||
|  | #else /* PLC_SUPPORT_CCO_ROLE */
 | ||
|  | 
 | ||
|  | /* define short buffer size and count for plc lib message */ | ||
|  | #define PLC_LIB_MSG_SHORT_BUF_SIZE          32
 | ||
|  | #define PLC_LIB_MSG_SHORT_BUF_CNT           32
 | ||
|  | 
 | ||
|  | /* define long buffer size and count for plc lib message */ | ||
|  | #define PLC_LIB_MSG_LONG_BUF_SIZE           1024
 | ||
|  | #define PLC_LIB_MSG_LONG_BUF_CNT            1
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_plc_lid_alloc_req() - request to allocate bandwidth for the | ||
|  |  *                          specified lid. the result will be notified through | ||
|  |  *                          iot_plc_recv_func_t callback. | ||
|  |  * @param handle:           plc application handler | ||
|  |  * @param lid:              the specified lid | ||
|  |  */ | ||
|  | void iot_plc_lid_alloc_req(iot_plc_app_h handle, uint8_t lid); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_plc_lid_rel_req() - request to release bandwidth for the | ||
|  |  *                          specified lid. | ||
|  |  * @param handle:           plc application handler | ||
|  |  * @param lid:              the specified lid | ||
|  |  */ | ||
|  | void iot_plc_lid_rel_req(iot_plc_app_h handle, uint8_t lid); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_plc_hw_tsfm_pa_send() - send hw tsfm pa data | ||
|  |  * @param data:             data | ||
|  |  * @param len:              length of the data | ||
|  |  * @param send_cnt:         send count | ||
|  |  * @param freq_tone_num:    encode frequncy tone num. each tone num is | ||
|  |  *                          75MHz/(1 << 14) | ||
|  |  * @return                  error code. see iot_errno_api.h | ||
|  |  */ | ||
|  | uint32_t iot_plc_hw_tsfm_pa_send(uint8_t *data, uint8_t len, uint8_t send_cnt, | ||
|  |     uint32_t freq_tone_num); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   iot_plc_lib_init() - init plc lib module | ||
|  |  * @param   proto: device running mode, see PLC_PROTO_TYPE_XXX. | ||
|  |  * | ||
|  |  * @retval:   0  --  for success case | ||
|  |  * @retval:  otherwise  --  error code | ||
|  |  */ | ||
|  | uint32_t iot_plc_lib_init(uint8_t proto); | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * iot_ipc_lib_deinit() - deinit plc lib module | ||
|  |  */ | ||
|  | void iot_plc_lib_deinit(); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_plc_set_pm_save_cfg() - set pm save cfg | ||
|  |  * @param allow_sleep:         allow sleep or not | ||
|  |  */ | ||
|  | void iot_plc_set_pm_save_cfg(uint8_t allow_sleep); | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif /* IOT_PLC_LIB_H */
 |