167 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.6 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 _MAC_RAWDATA_HW_H_
 | |
| #define _MAC_RAWDATA_HW_H_
 | |
| #include "iot_config.h"
 | |
| 
 | |
| #include "os_utils.h"
 | |
| #include "tx_mpdu_start.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #define RAW_FC_LEN_DW     4
 | |
| 
 | |
| #define RAW_REG_TYPE_MAC  1
 | |
| #define RAW_REG_TYPE_PHY  2
 | |
| 
 | |
| /* sack fc tx int mask */
 | |
| #define MAC_TX_SACK_FC_MASK             0x2 // bit 1
 | |
| /* tx start int mask */
 | |
| #define MAC_TX_START_MASK               0x1 // bit 0
 | |
| 
 | |
| /* sack int status */
 | |
| #define MAC_TX_SACK_INT_STATUS          (0x1 << 1)
 | |
| /* tx start int status */
 | |
| #define MAC_TX_START_INT_STATUS         (0x1 << 0)
 | |
| 
 | |
| /*
 | |
| *  store high accurency hw tick timer, used for profiling timing
 | |
| */
 | |
| typedef struct _fc_profile{
 | |
|     uint32_t rawdata_interrupt_trigger_ticks;
 | |
|     uint32_t rawdata_get_fc_ticks;
 | |
|     uint32_t rawdata_translate_fc_ticks;
 | |
|     uint32_t rawdata_set_translate_fc_ticks;
 | |
|     uint32_t rawdata_interrupt_release_ticks;
 | |
|     uint32_t irq_type;
 | |
| }fc_profile;
 | |
| 
 | |
| /*
 | |
| *  translate message include src dest and timing
 | |
| */
 | |
| typedef struct _fc_trans_msg{
 | |
|     uint32_t  org_fc[RAW_FC_LEN_DW];
 | |
|     uint32_t  trans_fc[RAW_FC_LEN_DW];
 | |
|     fc_profile profile;
 | |
| }fc_trans_msg;
 | |
| 
 | |
| /**
 | |
| * @brief iot_raw_write_reg() - write mac rawdata register.
 | |
| *
 | |
| * @param type:  register type. RAW_REG_TYPE_MAC or RAW_REG_TYPE_PHY.
 | |
| * @param addr:  write target register address.
 | |
| * @param val:   write target register value.
 | |
| *
 | |
| * @return       none
 | |
| */
 | |
| void iot_raw_write_reg(uint32_t type, uint32_t addr, uint32_t val);
 | |
| 
 | |
| /*
 | |
|  * iot_rawdata_hw_enable() - rawdata enable .
 | |
|  */
 | |
| uint32_t iot_rawdata_hw_enable(uint8_t rawdata_enbale);
 | |
| 
 | |
| /*
 | |
|  * iot_rawdata_get_tx_fc_bytes() - rawdata get fc from reg .
 | |
|  */
 | |
| uint32_t iot_rawdata_get_tx_fc_bytes(fc_trans_msg *rawfc);
 | |
| 
 | |
| /*
 | |
|  * iot_rawdata_translate_tx_fc() - rawdata translate fc .
 | |
|  */
 | |
| uint32_t iot_rawdata_translate_tx_fc(fc_trans_msg *rawfc, \
 | |
|     uint32_t src_prot, uint32_t trans_prot);
 | |
| 
 | |
| /*
 | |
|  * iot_rawdata_set_translate_tx_fc() - rawdata tx fc .
 | |
|  */
 | |
| uint32_t iot_rawdata_set_translate_tx_fc(fc_trans_msg *rawfc);
 | |
| 
 | |
| /**
 | |
|  * @brief mac_rawdata_sack_isr_cfg() - rawdata sack isr config.
 | |
|  * @param src_prot:    protocol
 | |
|  */
 | |
| void mac_rawdata_sack_isr_cfg(uint32_t src_prot);
 | |
| 
 | |
| /**
 | |
|  * @brief mac_rawdata_sack_tx_isr_disable() - disable rawdata sack isr.
 | |
|  */
 | |
| void mac_rawdata_sack_tx_isr_disable();
 | |
| 
 | |
| /**
 | |
|  * @brief mac_rawdata_sack_tx_isr_enable() - enable rawdata sack isr.
 | |
|  */
 | |
| void mac_rawdata_sack_tx_isr_enable();
 | |
| 
 | |
| 
 | |
| /**
 | |
| * @brief mac_rawdata_mode_set()
 | |
| *        set mac's rawdata mode's protocol support
 | |
| * @param src_prot:    [protocol, PLC_PROTO_SG|PLC_PROTO_PSG|PLC_PROTO_GP]
 | |
| * @return [none]
 | |
| */
 | |
| void mac_rawdata_proto_set(uint32_t src_prot);
 | |
| 
 | |
| /**
 | |
| * @brief mac_rawdata_mode_enable()
 | |
| *        set mac's rawdata mode's enablement
 | |
| * @param enable:    [1:enable;0:disable]
 | |
| * @return [none]
 | |
| */
 | |
| void mac_rawdata_mode_enable(uint32_t enable);
 | |
| 
 | |
| /**
 | |
| * @brief iot_raw_read_reg()
 | |
| *        read reg
 | |
| * @param type:    [RAW_REG_TYPE_MAC:MAC RAW;RAW_REG_TYPE_PHY:PHY RAW]
 | |
| * @param addr:    [register offset address]
 | |
| * @return [register value]
 | |
| */
 | |
| uint32_t iot_raw_read_reg(uint32_t type,  uint32_t addr);
 | |
| 
 | |
| /**
 | |
|  * @brief mac_rawdata_tx_war_isr_cfg() - rawdata war tx start isr config.
 | |
|  */
 | |
| void mac_rawdata_tx_war_isr_cfg(void);
 | |
| 
 | |
| /**
 | |
| * @brief mac_rawdata_tx_start_isr_clr() - clean rawdata tx start intrrupt status
 | |
| *
 | |
| * @param        none
 | |
| *
 | |
| * @return       none
 | |
| */
 | |
| void mac_rawdata_tx_start_isr_clr(void);
 | |
| 
 | |
| /**
 | |
| * @brief mac_rawdata_send_cert_mpdu() - mac rawdata send cert mpdu
 | |
| * @param mpdu:                        - [tx mpdu start]
 | |
| * @param fc:                          - [fc]
 | |
| * @param tmi:                         - [tmi]
 | |
| * @param ext_tmi:                     - [ext tmi]
 | |
| * @return void                        void
 | |
| */
 | |
| void mac_rawdata_send_cert_mpdu(uint32_t hwqid, tx_mpdu_start *mpdu,
 | |
|     fc_trans_msg *p_msg, void *fc, uint32_t tmi, uint32_t ext_tmi);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 |