Files
kunlun/plc/halmac/hw/inc/mac_rawdata_hw.h

167 lines
4.6 KiB
C
Raw Permalink Normal View History

2024-09-28 14:24:04 +08:00
/****************************************************************************
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