enhance code inherence

This commit is contained in:
Gatsby Van
2024-03-07 11:40:53 +08:00
parent ec772ba9e3
commit c09bd57408
3 changed files with 84 additions and 37 deletions
@@ -29,16 +29,19 @@
#define CTRL_WORD_DEFAULT 0x00 #define CTRL_WORD_DEFAULT 0x00
#define ANT_MODE_BEAM_MASK 0xF0 #define ANT_MODE_BEAM_MASK 0xF0
#define ANT_MODE_NARROR_BEAM 0x00 // 8 #define ANT_BEAM_NARROR 0x00 // 8
#define ANT_MODE_WIDE_BEAM_1 0x10 // 25 #define ANT_BEAM_SUBNARROR_0 0x10 // 25
#define ANT_MODE_WIDE_BEAM_2 0x20 // 60 #define ANT_BEAM_SUBNARROR_1 0x20 // 60
#define ANT_MODE_WIDE_BEAM_3 0x30 // 120 #define ANT_BEAM_WIDE 0x30 // 120
#define ANT_MODE_HIGH_POWER 0x00 #define ANT_MODE_POWER_MASK 0x0F
#define ANT_MODE_LOW_POWER 0x04 #define ANT_POWER_FULL 0x00
#define ANT_MODE_STANDBY 0x0F #define ANT_POWER_LOW 0x04
#define ATN_MODE_DEFAULT (ANT_MODE_WIDE_BEAM_1 | ANT_MODE_LOW_POWER) #define ANT_POWER_STANDBY 0x0F
#define ATN_MODE_HIGH (ANT_MODE_WIDE_BEAM_1 | ANT_MODE_HIGH_POWER) #define ATN_MODE_SILENT (ANT_BEAM_SUBNARROR_0 | ANT_POWER_STANDBY)
#define ATN_MODE_LOWPOWER (ANT_BEAM_SUBNARROR_0 | ANT_POWER_LOW)
#define ATN_MODE_FULLPOWER (ANT_BEAM_SUBNARROR_0 | ANT_POWER_FULL)
#define ATN_MODE_DEFAULT ATN_MODE_SILENT
#define DEFAULT_CENTRTAL_FREQ 0x06D7 // 26.25GHz #define DEFAULT_CENTRTAL_FREQ 0x06D7 // 26.25GHz
@@ -66,9 +69,9 @@ uint16_t hopPattern_2KBPS_20MS[L1_FRAME_2KBPS_20MS_HOPS] =
uint16_t hopPattern_2KBPS_100MS[L1_FRAME_2KBPS_100MS_HOPS] = uint16_t hopPattern_2KBPS_100MS[L1_FRAME_2KBPS_100MS_HOPS] =
{ {
0, 44, 88, 131, 175, 219, 263, 306, 0, 44, 88, 131, 175, 219, 263, 306,
350, 394, 438, 481, 525, 569, 613, 656, 350, 394, 438, 481, 525, 569, 613, 656,
700, 744, 788, 831, 875, 919, 963, 1006, 700, 744, 788, 831, 875, 919, 963, 1006,
1050, 1094, 1138, 1181, 1225, 1269, 1313, 1356, 1050, 1094, 1138, 1181, 1225, 1269, 1313, 1356,
1400, 1444, 1488, 1531, 1575, 1619, 1663, 1706, 1400, 1444, 1488, 1531, 1575, 1619, 1663, 1706,
1750, 1794, 1838, 1881, 1925, 1969, 2013, 2056, 1750, 1794, 1838, 1881, 1925, 1969, 2013, 2056,
@@ -87,7 +90,7 @@ uint16_t hopPattern_10KBPS_10MS[L1_FRAME_10KBPS_10MS_HOPS] =
uint16_t hopPattern_10KBPS_20MS[L1_FRAME_10KBPS_20MS_HOPS] = uint16_t hopPattern_10KBPS_20MS[L1_FRAME_10KBPS_20MS_HOPS] =
{ {
1500, 1600, 1700, 1800, 1900, 1400, 1300, 1200, 1500, 1600, 1700, 1800, 1900, 1400, 1300, 1200,
1100, 1000, 900 1100, 1000, 900
}; };
uint16_t hopPattern_40KBPS_10MS[L1_FRAME_40KBPS_10MS_HOPS] = uint16_t hopPattern_40KBPS_10MS[L1_FRAME_40KBPS_10MS_HOPS] =
@@ -105,16 +108,16 @@ uint16_t hopPattern_40KBPS_20MS[L1_FRAME_40KBPS_20MS_HOPS] =
uint16_t hopPattern_200KBPS_5MS[L1_FRAME_200KBPS_5MS_HOPS] = uint16_t hopPattern_200KBPS_5MS[L1_FRAME_200KBPS_5MS_HOPS] =
{ {
500, 1600, 1700, 1800, 1900, 2000, 1500, 1600, 500, 1600, 1700, 1800, 1900, 2000, 1500, 1600,
1700, 1800, 1900, 2000, 1500, 1600, 1700, 1800, 1700, 1800, 1900, 2000, 1500, 1600, 1700, 1800,
1900, 2000, 1500, 1500 1900, 2000, 1500, 1500
}; };
uint16_t hopPattern_1M2BPS_5MS[L1_FRAME_1M2BPS_5MS_HOPS] = uint16_t hopPattern_1M2BPS_5MS[L1_FRAME_1M2BPS_5MS_HOPS] =
{ {
500, 600, 700, 800, 900, 1000, 500, 600, 500, 600, 700, 800, 900, 1000, 500, 600,
700, 800, 900, 1000, 500, 600, 700, 800, 700, 800, 900, 1000, 500, 600, 700, 800,
900, 1000, 500, 500 900, 1000, 500, 500
}; };
// Pair by regex // Pair by regex
@@ -186,13 +189,14 @@ PHY_ANT_ANGLE antNrrwPattern[L1_NUM_ANT_NRRW_PATTERN] =
0 0
}; };
#endif #endif
/*****************************************************************************/ /*****************************************************************************/
/** /**
* @brief * @brief Initialize antenna configurations (load preset values)
* *
* @param antConfig * @param antConfig pointer to antenna configure
* *
* @return * @return None.
* *
******************************************************************************/ ******************************************************************************/
void Phy_AntConfigInit(PHY_ANT_CONFIG *antConfig) void Phy_AntConfigInit(PHY_ANT_CONFIG *antConfig)
@@ -246,20 +250,30 @@ void Phy_AntConfigInit(PHY_ANT_CONFIG *antConfig)
// *********************** // ***********************
} }
/*****************************************************************************/
/**
* @brief Update antenna power mode setting
*
* @param instPtr pointer to physical layer instance
* @param mode new antenna mode
*
* @return None.
*
******************************************************************************/
void Phy_AntConfigMode(PHY_INST *instPtr, PHY_ANT_MODE mode) void Phy_AntConfigMode(PHY_INST *instPtr, PHY_ANT_MODE mode)
{ {
ASSERT(instPtr != NULL); ASSERT(instPtr != NULL);
uint8_t config = instPtr->antConfig.antMode & ANT_MODE_BEAM_MASK; uint8_t config = instPtr->antConfig.antMode & ANT_MODE_BEAM_MASK;
switch (mode) switch (mode)
{ {
case PHY_ANT_MODE_SILENT: case PHY_ANT_MODE_STANDBY:
config |= ANT_MODE_STANDBY; config |= ANT_POWER_STANDBY;
break; break;
case PHY_ANT_MODE_LOW_POWER: case PHY_ANT_MODE_POWER_LOW:
config |= ANT_MODE_LOW_POWER; config |= ANT_POWER_LOW;
break; break;
case PHY_ANT_MODE_HIGH_POWER: case PHY_ANT_MODE_POWER_FULL:
config |= ANT_MODE_HIGH_POWER; config |= ANT_POWER_FULL;
break; break;
default: default:
DBG_ERROR("Unknown antenna mode: %" PRIu8 ", remain previous mode.\n", mode); DBG_ERROR("Unknown antenna mode: %" PRIu8 ", remain previous mode.\n", mode);
@@ -269,6 +283,17 @@ void Phy_AntConfigMode(PHY_INST *instPtr, PHY_ANT_MODE mode)
instPtr->antConfig.antMode = config; instPtr->antConfig.antMode = config;
} }
/*****************************************************************************/
/**
* @brief Update antenna point direction using predefined beam table
*
* @param instPtr pointer to physical layer instance
* @param beamNo new beam index
*
* @return SUCCESS.
* FAILURE beamNo exceeds the table size
*
******************************************************************************/
int32_t Phy_SetBeamNo(PHY_INST *instPtr, int32_t beamNo) int32_t Phy_SetBeamNo(PHY_INST *instPtr, int32_t beamNo)
{ {
ASSERT(instPtr != NULL); ASSERT(instPtr != NULL);
@@ -318,6 +343,17 @@ int32_t Phy_SetBeamNo(PHY_INST *instPtr, int32_t beamNo)
} }
} }
/*****************************************************************************/
/**
* @brief Update antenna beam width setting
*
* @param instPtr pointer to physical layer instance
* @param beamWidth new beam width
*
* @return SUCCESS.
* EPARAM - the direction is exceeds predefined range
*
******************************************************************************/
int32_t Phy_SetBeamWidth(PHY_INST *instPtr, PHY_ANT_BEAM_WIDTH beamWidth) int32_t Phy_SetBeamWidth(PHY_INST *instPtr, PHY_ANT_BEAM_WIDTH beamWidth)
{ {
ASSERT(instPtr != NULL); ASSERT(instPtr != NULL);
@@ -325,16 +361,16 @@ int32_t Phy_SetBeamWidth(PHY_INST *instPtr, PHY_ANT_BEAM_WIDTH beamWidth)
switch (beamWidth) switch (beamWidth)
{ {
case PHY_ANT_BEAM_120: case PHY_ANT_BEAM_120:
beamConfig |= ANT_MODE_WIDE_BEAM_3; beamConfig |= ANT_BEAM_WIDE;
break; break;
case PHY_ANT_BEAM_60: case PHY_ANT_BEAM_60:
beamConfig |= ANT_MODE_WIDE_BEAM_2; beamConfig |= ANT_BEAM_SUBNARROR_1;
break; break;
case PHY_ANT_BEAM_25: case PHY_ANT_BEAM_25:
beamConfig |= ANT_MODE_WIDE_BEAM_1; beamConfig |= ANT_BEAM_SUBNARROR_0;
break; break;
case PHY_ANT_BEAM_8: case PHY_ANT_BEAM_8:
beamConfig |= ANT_MODE_NARROR_BEAM; beamConfig |= ANT_BEAM_NARROR;
break; break;
default: default:
DBG_ERROR("Beam width code: 0x%08X is illegal.\n\r", beamWidth); DBG_ERROR("Beam width code: 0x%08X is illegal.\n\r", beamWidth);
@@ -345,7 +381,18 @@ int32_t Phy_SetBeamWidth(PHY_INST *instPtr, PHY_ANT_BEAM_WIDTH beamWidth)
return SUCCESS; return SUCCESS;
} }
// Common version radius double input /*****************************************************************************/
/**
* @brief Set antenna to a specific direction
*
* @param instPtr pointer to physical layer instance
* @param offAx elevation angle
* @param rndAx azimuth angle
*
* @return SUCCESS.
* EPARAM - the direction is exceeds predefined range
*
******************************************************************************/
int32_t Phy_SetBeamAngle(PHY_INST *instPtr, double offAx, double rndAx) int32_t Phy_SetBeamAngle(PHY_INST *instPtr, double offAx, double rndAx)
{ {
ASSERT(instPtr != NULL); ASSERT(instPtr != NULL);
@@ -170,9 +170,9 @@ typedef enum
typedef enum typedef enum
{ {
PHY_ANT_MODE_NONE = 0, PHY_ANT_MODE_NONE = 0,
PHY_ANT_MODE_SILENT = 1, PHY_ANT_MODE_STANDBY = 1,
PHY_ANT_MODE_LOW_POWER = 2, PHY_ANT_MODE_POWER_LOW = 2,
PHY_ANT_MODE_HIGH_POWER = 3, PHY_ANT_MODE_POWER_FULL = 3,
} PHY_ANT_MODE; } PHY_ANT_MODE;
typedef struct typedef struct
+3 -3
View File
@@ -430,19 +430,19 @@ int32_t SystemBus_HandleCmd(SYSBUS *instPtr)
if(data[WD_EN_CMD] == EN_CMD_ON_HIGH_POWER) if(data[WD_EN_CMD] == EN_CMD_ON_HIGH_POWER)
{ {
// high power config // high power config
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_HIGH_POWER); Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_FULL);
} }
else if(data[WD_EN_CMD] == EN_CMD_ON_LOW_POWER) else if(data[WD_EN_CMD] == EN_CMD_ON_LOW_POWER)
{ {
// low power config // low power config
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_LOW_POWER); Phy_AntConfigMode(phyRef, PHY_ANT_MODE_POWER_LOW);
} }
else if(data[WD_EN_CMD] == EN_CMD_SILENT) else if(data[WD_EN_CMD] == EN_CMD_SILENT)
{ {
// silence config // silence config
// TODO: better approach? // TODO: better approach?
Linklayer_Halt(linkInstPtr); Linklayer_Halt(linkInstPtr);
Phy_AntConfigMode(phyRef, PHY_ANT_MODE_SILENT); Phy_AntConfigMode(phyRef, PHY_ANT_MODE_STANDBY);
TIME_WORD pullTime = {0, 0}; TIME_WORD pullTime = {0, 0};
pullTime.int_part = TimeCtrl_GetIntCnt(tmcRef) + 1; pullTime.int_part = TimeCtrl_GetIntCnt(tmcRef) + 1;
Status = Phy_SetTimeWord(phyRef, &pullTime, PHY_TIME_WORD_POLL); Status = Phy_SetTimeWord(phyRef, &pullTime, PHY_TIME_WORD_POLL);