Files
kunlun/bb_cpu/inc/bb_cpu_hw_ring.h
2024-09-28 14:24:04 +08:00

118 lines
3.7 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 _BB_CPU_HW_RING_H_
#define _BB_CPU_HW_RING_H_
/* os shim includes */
#include "os_types.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief base on phr select ring,
* and return payload rx buffer
* @param phr_info: rx phr info
* @retval: payload rx buffer address.
* for packet with no payload, return NULL.
*/
uint8_t *bb_cpu_hw_ring_select(void *phr_info);
/**
* @brief all or packet data rx compelet, then fill ring desc
* @retval: error code. see ERR_XXX.
*/
uint32_t bb_cpu_hw_ring_rx_complete_cfg_desc(void);
/**
* @brief trigger ring buffer rx done flow.
* update ring buffer write index, and set rx done
* isr to plc cpu。
* @retval: error code. see ERR_XXX.
*/
uint32_t bb_cpu_hw_ring_rx_done_set(void);
/**
* @brief set snr to ring buffer
* @param snr: snr value
* @retval: none.
*/
void bb_cpu_hw_ring_snr_set(int8_t snr);
/**
* @brief set raw snr to ring buffer
* @param snr: raw snr value
* @retval: none.
*/
void bb_cpu_hw_ring_raw_snr_set(uint16_t snr);
/**
* @brief set rssi to ring buffer
* @param rssi: rssi value
* @retval: none.
*/
void bb_cpu_hw_ring_rssi_set(int8_t rssi);
/**
* @brief set rx gain to ring buffer
* @param rx_gain: rx gain value
* @retval: none.
*/
void bb_cpu_hw_ring_rx_gain_set(uint8_t rx_gain);
/**
* @brief set rx ppmhz to ring buffer
* @param rx_ppm: rx ppm hz value
* @retval: none.
*/
void bb_cpu_hw_ring_rx_ppmhz_set(int32_t rx_ppm_hz);
/**
* @brief set raw snr/rssi reigster to ring buffer
* @param raw_snr_rssi_reg1: raw snr/rssi register1 value
* @param raw_snr_rssi_reg2: raw snr/rssi register2 value
* @param raw_snr_rssi_reg3: raw snr/rssi register3 value
* @retval: void.
*/
void bb_cpu_hw_ring_raw_snr_rssi_set(uint32_t raw_snr_rssi_reg1,
uint32_t raw_snr_rssi_reg2, uint32_t raw_snr_rssi_reg3);
/**
* @brief init hw ring buffer context
* @retval: none.
*/
void bb_cpu_hw_ring_init(void);
/**
* @brief set ring status
* @param rx_status: rx status
* @retval: error code. see ERR_XXX.
*/
uint32_t bb_cpu_hw_ring_set_rx_status(uint32_t rx_status);
/**
* @brief set ring tx sack status
* @param tx_sack_status: tx sack status
* @retval: error code. see ERR_XXX.
*/
uint32_t bb_cpu_hw_ring_set_tx_sack_status(uint32_t tx_sack_status);
#ifdef __cplusplus
}
#endif
#endif // _BB_CPU_HW_RING_H_