From 3e7060965e8fda1defcb2447bcf3748fb85e45ab Mon Sep 17 00:00:00 2001 From: Gatsby Van Date: Thu, 27 Jun 2024 13:37:51 +0800 Subject: [PATCH] misc update: make it more conform with GJB-8114 --- df_datalink_sp/src/hwconfig.h | 5 ++- df_datalink_sp/src/main.c | 32 +++++++------- .../src/networking/link_layer/framing.c | 2 +- .../networking/link_layer/geometry/coord.c | 7 +++ .../link_layer/geometry/eulerangles.c | 6 +-- .../link_layer/geometry/eulerangles.h | 4 +- .../link_layer/geometry/quaternion.c | 23 +++++++++- .../link_layer/geometry/quaternion.h | 4 +- .../src/networking/link_layer/link_layer.c | 5 ++- .../src/networking/link_layer/link_layer.h | 2 +- .../networking/link_layer/link_layer_types.h | 2 +- .../src/networking/link_layer/node_list.c | 2 +- .../src/networking/link_layer/scan.c | 44 +++++++++---------- .../src/networking/link_layer/schdevent.c | 2 +- .../src/networking/phy_layer/phy_antenna.c | 8 ++-- .../src/networking/phy_layer/phy_layer.c | 10 ++--- .../src/networking/phy_layer/phy_layer.h | 28 ++++++------ .../src/networking/phy_layer/phy_reg.h | 4 +- df_datalink_sp/src/system_monitor.c | 6 +++ df_datalink_sp/src/system_monitor.h | 20 ++++----- 20 files changed, 125 insertions(+), 91 deletions(-) diff --git a/df_datalink_sp/src/hwconfig.h b/df_datalink_sp/src/hwconfig.h index 969ceb4..e54c291 100644 --- a/df_datalink_sp/src/hwconfig.h +++ b/df_datalink_sp/src/hwconfig.h @@ -13,7 +13,8 @@ * Copyright(c) 2024 Beijing Institute of Technology. * ******************************************************************************/ - +#ifndef HWCONFIG_H_ +#define HWCONFIG_H_ /***************************** Include Files *********************************/ // Standard #include @@ -29,4 +30,4 @@ int8_t Hardware_GetAD9361Temp_2(void); uint8_t Hardware_GetAD9361LockStatus(void); uint8_t Hardware_GetHMC7044LockStatus(void); - +#endif // HWCONFIG_H_ diff --git a/df_datalink_sp/src/main.c b/df_datalink_sp/src/main.c index 32817e0..91e148b 100644 --- a/df_datalink_sp/src/main.c +++ b/df_datalink_sp/src/main.c @@ -72,20 +72,20 @@ struct callback_desc scutm_callback_desc = { L2_CONFIG linkConfig = { .myType = L2_NODE_HEAD, - .clustId = 1, - .myId = 1, - .headId = 1, - .netScale = 2, + .clustId = 1U, + .myId = 1U, + .headId = 1U, + .netScale = 2U, .phyInstPtr = NULL, // physical layer reference .tmcInstPtr = NULL }; // L2_CONFIG linkConfig = { // .myType = L2_NODE_MEMBER, -// .clustId = 1, -// .myId = 2, -// .headId = 1, -// .netScale = 2, +// .clustId = 1U, +// .myId = 2U, +// .headId = 1U, +// .netScale = 2U, // .phyInstPtr = NULL, // physical layer reference // .tmcInstPtr = NULL // }; @@ -106,21 +106,21 @@ static PHY_CONFIG phyConfig = { TMC_CONFIG tmcConfig = { .baseAddr = TIME_CONTROLLER_BASEADDR, - .reset = 10 + .reset = 10U }; static SYSBUS_CONFIG sysbusConfig = { .baseAddr = SYSBUS_BASE_ADDR, - .txQueueMax = 16, - .rxQueueMax = 16 + .txQueueMax = 16U, + .rxQueueMax = 16U }; /*********************** Driver Instance Definitions **************************/ -static struct irq_ctrl_desc *intcDescPtr; // General interrupt controller descriptor -static struct timer_desc *logTmPtr; -static SYSBUS *sysbusDescPtr; -static PHY_INST *phyInstPtr; +static struct irq_ctrl_desc *intcDescPtr = NULL; // General interrupt controller descriptor +static struct timer_desc *logTmPtr = NULL; +static SYSBUS *sysbusDescPtr = NULL; +static PHY_INST *phyInstPtr = NULL; static TMC_INST *tmcInstPtr = NULL; -L2_INST *linkInstPtr; +L2_INST *linkInstPtr = NULL; /****************************************************************************/ diff --git a/df_datalink_sp/src/networking/link_layer/framing.c b/df_datalink_sp/src/networking/link_layer/framing.c index c3a2826..f926b1b 100644 --- a/df_datalink_sp/src/networking/link_layer/framing.c +++ b/df_datalink_sp/src/networking/link_layer/framing.c @@ -165,7 +165,7 @@ bool L2_CrcCheck(uint8_t *dataBuff, uint32_t dataLen, L2_CRC_TYPE crcType) ASSERT(dataBuff != NULL); int32_t Status; uint32_t crcVal; - crcVal = 0; + crcVal = 0U; Status = L2_CrcGen(dataBuff, dataLen, crcType, &crcVal); if (Status == SUCCESS) { diff --git a/df_datalink_sp/src/networking/link_layer/geometry/coord.c b/df_datalink_sp/src/networking/link_layer/geometry/coord.c index aa4db2b..2579d12 100644 --- a/df_datalink_sp/src/networking/link_layer/geometry/coord.c +++ b/df_datalink_sp/src/networking/link_layer/geometry/coord.c @@ -75,6 +75,10 @@ COORD Coord_GetScalarMult(COORD a, double t) /** @brief Divides a coordinate vector by a real number. */ void Coord_ScalarDiv(COORD *a, double t) { + if (t == 0.0) { + *a = COORD_NIL; + return; + } a->x /= t; a->y /= t; a->z /= t; @@ -83,6 +87,9 @@ void Coord_ScalarDiv(COORD *a, double t) /** @brief Divides a coordinate vector by a real number. */ COORD Coord_GetScalarDiv(COORD a, double t) { + if (t == 0.0) { + return COORD_NIL; + } COORD ret; ret.x = a.x / t; ret.y = a.y / t; diff --git a/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.c b/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.c index 2a07e74..ce1ed3e 100644 --- a/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.c +++ b/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.c @@ -69,9 +69,9 @@ EULERANGLES EulerAngles_GetScalarMult(EULERANGLES e, double f) /** @brief Normalize EulerAngles. */ void EulerAngles_Normalize(EULERANGLES *e) { - e->alpha = fmod(e->alpha, 2 * EUL_PI); - e->beta = fmod(e->beta, 2 * EUL_PI); - e->gamma = fmod(e->gamma, 2 * EUL_PI); + e->alpha = fmod(e->alpha, 2.0 * EUL_PI); + e->beta = fmod(e->beta, 2.0 * EUL_PI); + e->gamma = fmod(e->gamma, 2.0 * EUL_PI); } /** @brief Normalize EulerAngles. */ diff --git a/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.h b/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.h index bf790fa..ab98d5c 100644 --- a/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.h +++ b/df_datalink_sp/src/networking/link_layer/geometry/eulerangles.h @@ -30,8 +30,8 @@ #define EUL_PI 3.14159265358979323846 -#define DEG2RAD(d) ((EUL_PI / 180.0) * d) -#define RAD2DEG(r) ((180.0 / EUL_PI) * r) +#define DEG2RAD(d) ((EUL_PI / 180.0) * (d)) +#define RAD2DEG(r) ((180.0 / EUL_PI) * (r)) /** * Orientations are represented by 3D double precision Tait-Bryan (Euler) tuples diff --git a/df_datalink_sp/src/networking/link_layer/geometry/quaternion.c b/df_datalink_sp/src/networking/link_layer/geometry/quaternion.c index f224b65..d5dce6a 100644 --- a/df_datalink_sp/src/networking/link_layer/geometry/quaternion.c +++ b/df_datalink_sp/src/networking/link_layer/geometry/quaternion.c @@ -91,6 +91,10 @@ QUATERNION Quaternion_GetScalarMult(QUATERNION a, double t) /** @brief Divides a quaternion by a real number. */ void Quaternion_ScalarDiv(QUATERNION *q, double t) { + if (t == 0.0) { + *q = QUATERNION_NIL; + return; + } q->s /= t; q->i /= t; q->j /= t; @@ -190,6 +194,9 @@ inline double Quaternion_GetRotationAngle(QUATERNION q) /** @brief Get axis of quaternion. */ COORD Quaternion_GetRotationAxis(QUATERNION q) { + if ((q.s > 1.0) || (q.s < -1.0)) { + return COORD_NIL; + } double sin_theta_inv; COORD ret; sin_theta_inv = 1.0 / sin(acos(q.s)); @@ -202,6 +209,12 @@ COORD Quaternion_GetRotationAxis(QUATERNION q) /** @brief Get the axis and rotate angle of a unit Quaternion */ void Quaternion_GetRotationAxisAndAngle(QUATERNION q, COORD *axis, double *angle) { + if ((q.s > 1.0) || (q.s < -1.0)) { + *axis = COORD_NIL; + *angle = NAN; + return; + } + double sin_theta_inv; *angle = acos(q.s); @@ -218,6 +231,11 @@ void Quaternion_GetRotationAxisAndAngle(QUATERNION q, COORD *axis, double *angle /** @brief Decompose the rotation on to 2 parts. */ void Quaternion_GetSwingAndTwist(QUATERNION q, COORD axis, QUATERNION *swing, QUATERNION *twist) { + if ((swing == NULL) || (twist == NULL)) + { + return; + } + double p; COORD v; v.x = q.i; @@ -326,7 +344,7 @@ EULERANGLES Quaternion_ToEulerAngles(QUATERNION q, EULERANGLES_TYPE type) if (mask1 || mask2) { ret.alpha = 0; - ret.gamma = (asinValue > 0) ? (2.0 * atan2(q.i, q.s)) : (-2.0 * atan2(q.i, q.s)); + ret.gamma = (asinValue > 0.0) ? (2.0 * atan2(q.i, q.s)) : (-2.0 * atan2(q.i, q.s)); } else { @@ -339,6 +357,7 @@ EULERANGLES Quaternion_ToEulerAngles(QUATERNION q, EULERANGLES_TYPE type) default: ret = EULERANGLES_NIL; + break; } return ret; } @@ -428,7 +447,7 @@ QUATERNION Quaternion_RotationFromTo(COORD from, COORD to) QUATERNION Quaternion_Lerp(QUATERNION q1, QUATERNION q2, double t) { QUATERNION ret; - Quaternion_ScalarMult(&q1, 1 - t); + Quaternion_ScalarMult(&q1, 1.0 - t); Quaternion_ScalarMult(&q1, t); ret = Quaternion_Add(q1, q2); Quaternion_Normalize(&ret); diff --git a/df_datalink_sp/src/networking/link_layer/geometry/quaternion.h b/df_datalink_sp/src/networking/link_layer/geometry/quaternion.h index 79241b4..020f3ba 100644 --- a/df_datalink_sp/src/networking/link_layer/geometry/quaternion.h +++ b/df_datalink_sp/src/networking/link_layer/geometry/quaternion.h @@ -56,13 +56,13 @@ QUATERNION Quaternion_Add(QUATERNION q1, QUATERNION q2); void Quaternion_ScalarMult(QUATERNION *q, double t); /** @brief Multiplies a quaternion by a real number. */ -QUATERNION Quaternion_GetScalarMult(QUATERNION a, double t); +QUATERNION Quaternion_GetScalarMult(QUATERNION q, double t); /** @brief Divides a quaternion by a real number. */ void Quaternion_ScalarDiv(QUATERNION *q, double t); /** @brief Divides a quaternion by a real number. */ -QUATERNION Quaternion_GetScalarDiv(QUATERNION a, double t); +QUATERNION Quaternion_GetScalarDiv(QUATERNION q, double t); /** @brief Multiplies two quaternions. */ QUATERNION Quaternion_Mult(QUATERNION q1, QUATERNION q2); diff --git a/df_datalink_sp/src/networking/link_layer/link_layer.c b/df_datalink_sp/src/networking/link_layer/link_layer.c index b1922df..f4aba4b 100644 --- a/df_datalink_sp/src/networking/link_layer/link_layer.c +++ b/df_datalink_sp/src/networking/link_layer/link_layer.c @@ -39,7 +39,7 @@ /***************** Macros (Inline Functions) Definitions *********************/ /**************************** Type Definitions *******************************/ /************************** Function Prototypes ******************************/ -static void L2_RcdShift(L2_RCD *rcd, int32_t netxVal); +static void L2_RcdShift(L2_RCD *rcd, uint32_t netxVal); static void UpdateMainSate(L2_INST *instPtr, L2_NODE_STATE newSate); static void L2_SetSlotNum(L2_INST *instPtr, uint32_t newSlotNum); static void L2_SetFrameNum(L2_INST *instPtr, uint32_t newFrameNum); @@ -50,7 +50,7 @@ static void L2_FrameStateUpdate(L2_INST *instPtr); /** * @brief Shift L2 status record.(newval->next->curr->last) */ -inline void L2_RcdShift(L2_RCD *rcd, int32_t netxVal) +inline void L2_RcdShift(L2_RCD *rcd, uint32_t netxVal) { ASSERT(rcd != NULL); rcd->last = rcd->curr; @@ -132,6 +132,7 @@ static void L2_FrameStateUpdate(L2_INST *instPtr) PHY_INST *phyRef = instPtr->config.phyInstPtr; bool isValid; L2_FRAME_TYPE recvType = L2_GetLastOptFrameType(instPtr); + isValid = false; // Update frame state. if (Phy_IsFrameValid(phyRef) == false) { diff --git a/df_datalink_sp/src/networking/link_layer/link_layer.h b/df_datalink_sp/src/networking/link_layer/link_layer.h index 15b80bd..cbe8ad2 100644 --- a/df_datalink_sp/src/networking/link_layer/link_layer.h +++ b/df_datalink_sp/src/networking/link_layer/link_layer.h @@ -29,7 +29,7 @@ #include "../../system_monitor.h" /************************** Constant Definitions *****************************/ /***************** Macros (Inline Functions) Definitions *********************/ -#define AssertL2Event(instPtr, event) Linklayer_EventHandler(instPtr, event) +#define AssertL2Event(instPtr, event) (Linklayer_EventHandler((instPtr), (event))) /**************************** Type Definitions *******************************/ /** diff --git a/df_datalink_sp/src/networking/link_layer/link_layer_types.h b/df_datalink_sp/src/networking/link_layer/link_layer_types.h index 108fe0d..1e9f46e 100644 --- a/df_datalink_sp/src/networking/link_layer/link_layer_types.h +++ b/df_datalink_sp/src/networking/link_layer/link_layer_types.h @@ -145,7 +145,7 @@ typedef enum typedef struct { L2_EVENT_TYPE event; ///< event type - void *msg; ///< event message + void *msg; ///< event message (MUST be a heap item) } L2_EVENT; /** diff --git a/df_datalink_sp/src/networking/link_layer/node_list.c b/df_datalink_sp/src/networking/link_layer/node_list.c index 9ae9bfb..7f81c5b 100644 --- a/df_datalink_sp/src/networking/link_layer/node_list.c +++ b/df_datalink_sp/src/networking/link_layer/node_list.c @@ -44,7 +44,7 @@ inline uint32_t L2_GetNodeListLen(NODE_LIST *list) /**************************** Type Definitions *******************************/ /************************** Variable Definitions *****************************/ -static NODE_ENTRY util_entry; +static NODE_ENTRY util_entry = { 0 }; /************************** Function Prototypes ******************************/ /** * @brief helper function to free node entry. diff --git a/df_datalink_sp/src/networking/link_layer/scan.c b/df_datalink_sp/src/networking/link_layer/scan.c index 4d5c882..d66824a 100644 --- a/df_datalink_sp/src/networking/link_layer/scan.c +++ b/df_datalink_sp/src/networking/link_layer/scan.c @@ -182,7 +182,7 @@ static void PendCfmAck(L2_SCAN_FSM *scanFsmPtr) ******************************************************************************/ static void StageUpdate(L2_SCAN_FSM *scanFsmPtr, SCAN_STAGE newStage) { - ASSERT(newStage >= L2_SCAN_NONE_STAGE && newStage <= L2_SCAN_CFM_STAGE); + ASSERT((newStage >= L2_SCAN_NONE_STAGE) && (newStage <= L2_SCAN_CFM_STAGE)); DBG_INFO("ScanNet current stage: %" PRIu8 " -> ScanNet new stage: %" PRIu8 " \n", scanFsmPtr->scanStage, newStage); scanFsmPtr->scanStage = newStage; @@ -270,10 +270,10 @@ static int32_t Scan_AdvHandler(L2_INST *instPtr) { // using pull mode to receive confirm frame // since first time sync procedure is accomplished in ADV stage. - Phy_SetBeamWidth(phyRef, PHY_ANT_BEAM_16); - Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); - Phy_SetMode(phyRef, PHY_MODE_PULL); - L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_CFM_FRAME); + (void)Phy_SetBeamWidth(phyRef, PHY_ANT_BEAM_16); + (void)Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); + (void)Phy_SetMode(phyRef, PHY_MODE_PULL); + (void)L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_CFM_FRAME); scanFsmPtr->cfmTimeout++; // increase counter. instPtr->log.lastBeamWidth = PHY_ANT_BEAM_16; } @@ -287,17 +287,17 @@ static int32_t Scan_AdvHandler(L2_INST *instPtr) if (scanFsmPtr->advTimeout > ADV_LISTEN_TIMEOUT) { /* Antenna steering (reserved, automatically accomplished by physical layer) */ - Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); - L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_SCAN_FRAME); + (void)Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); + (void)L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_SCAN_FRAME); DBG_WARNING("Adv timeout, restart net scan from L2_SCAN_INIT_STAGE.\n"); - L2_Scan_Reset(scanFsmPtr); + (void)L2_Scan_Reset(scanFsmPtr); instPtr->log.lastBeamWidth = PHY_ANT_BEAM_16; } else { /* Antenna steering (reserved, automatically accomplished by physical layer) */ - Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); - L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_ADV_FRAME); + (void)Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); + (void)L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_ADV_FRAME); scanFsmPtr->advTimeout++; instPtr->log.lastBeamWidth = PHY_ANT_BEAM_16; } @@ -332,10 +332,10 @@ static int32_t Scan_CfmHandler(L2_INST *instPtr) { // using pull mode to receive confirm frame // since first time sync procedure is accomplished in ADV stage. - Phy_SetBeamWidth(phyRef, PHY_ANT_BEAM_16); - Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); - Phy_SetMode(phyRef, PHY_MODE_PULL); - L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_CFM_FRAME); + (void)Phy_SetBeamWidth(phyRef, PHY_ANT_BEAM_16); + (void)Phy_SetBeamNo(phyRef, scanFsmPtr->beamNo, PHY_ANT_BEAM_16); + (void)Phy_SetMode(phyRef, PHY_MODE_PULL); + (void)L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_CFM_FRAME); scanFsmPtr->cfmTimeout++; // increase counter. instPtr->log.lastBeamWidth = PHY_ANT_BEAM_16; } @@ -359,7 +359,7 @@ static int32_t ScanMsg_Packing(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t dst int32_t Status; uint32_t dataChunk; uint8_t *buff = instPtr->sendPktData; - if (type < L2_ADV_FRAME || type > L2_CFM_FRAME) + if ((type < L2_ADV_FRAME) || (type > L2_CFM_FRAME)) { DBG_ERROR("Unexpected frame type: %" PRId8 ".\n", type); return EPARAM; @@ -606,7 +606,7 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) }; newRtneConfig.rtneTable = initTable; newRtneConfig.rtnePrd = ARRAY_SIZE(initTable); - AssertL2Event(instPtr, &rtneUpEvent); + (void)AssertL2Event(instPtr, &rtneUpEvent); } PendCfmAck(instPtr->scanFSM); // Time sync. @@ -622,7 +622,7 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) L2_NODE_STATE newState = L2_NORMAL_STATE; l2Event.event = L2_EV_MAIN_STATE_UPDATE; l2Event.msg = &newState; - AssertL2Event(instPtr, &l2Event); + (void)AssertL2Event(instPtr, &l2Event); } } @@ -827,7 +827,7 @@ int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntry) instPtr->log.lastBeamWidth = PHY_ANT_BEAM_16; if (commNode != NULL) { - Phy_SetBeamNo(phyRef, commNode->nodeInfo.beamNo, PHY_ANT_BEAM_16); + (void)Phy_SetBeamNo(phyRef, commNode->nodeInfo.beamNo, PHY_ANT_BEAM_16); } } else @@ -845,7 +845,7 @@ int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntry) torState = L2_TOR_SUSPEND; } // Setup antenna beam - Phy_SetBeamWidth(phyRef, PHY_ANT_BEAM_120); + (void)Phy_SetBeamWidth(phyRef, PHY_ANT_BEAM_120); instPtr->log.lastBeamWidth = PHY_ANT_BEAM_120; } @@ -857,7 +857,7 @@ int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntry) DBG_ERROR("Only head node can send init-scan Frame.\n"); return FAILURE; } - L2_SetupNextSlot(instPtr, torState, L2_SCAN_FRAME); + (void)L2_SetupNextSlot(instPtr, torState, L2_SCAN_FRAME); break; case L2_SLOT_ADVERTISE: @@ -875,7 +875,7 @@ int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntry) } } /* Antenna setting (reserved.) */ - L2_SetupNextSlot(instPtr, torState, L2_ADV_FRAME); + (void)L2_SetupNextSlot(instPtr, torState, L2_ADV_FRAME); break; case L2_SLOT_CONFIRM: @@ -896,7 +896,7 @@ int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntry) } } /* Antenna setting (reserved.) */ - L2_SetupNextSlot(instPtr, torState, L2_CFM_FRAME); + (void)L2_SetupNextSlot(instPtr, torState, L2_CFM_FRAME); break; default: DBG_ERROR("Cannot start a routine for slot type [%" PRId8 "] properly.\n", rtneEntry->slotType); diff --git a/df_datalink_sp/src/networking/link_layer/schdevent.c b/df_datalink_sp/src/networking/link_layer/schdevent.c index 7d6abea..b3a074e 100644 --- a/df_datalink_sp/src/networking/link_layer/schdevent.c +++ b/df_datalink_sp/src/networking/link_layer/schdevent.c @@ -365,7 +365,7 @@ void L2_EventPoolHandler(L2_INST *instPtr) if (event->schdFrame == L2_GetCurrentFrameNum(instPtr) && event->schdSlot == L2_GetCurrentSlotNum(instPtr)) { DBG_INFO("Asserting scheduled event [%" PRIu32 "].\n", event->eventId); - AssertL2Event(instPtr, &(event->l2Event)); + (void)AssertL2Event(instPtr, &(event->l2Event)); if (event->isVolatile == true) { DBG_INFO("Deleting scheduled event [%" PRIu32 "], since it is volatile.\n", event->eventId); diff --git a/df_datalink_sp/src/networking/phy_layer/phy_antenna.c b/df_datalink_sp/src/networking/phy_layer/phy_antenna.c index d6bca50..b312688 100644 --- a/df_datalink_sp/src/networking/phy_layer/phy_antenna.c +++ b/df_datalink_sp/src/networking/phy_layer/phy_antenna.c @@ -82,7 +82,7 @@ const uint16_t freqTable[L1_FRAME_MAX_HOPS] = 2124 }; -const uint16_t antCalTable[L1_FRAME_MAX_HOPS][L1_ANT_NUM_CH] = +const int16_t antCalTable[L1_FRAME_MAX_HOPS][L1_ANT_NUM_CH] = //Antenna-JG01 { { 0, 2525, -7533, -6846}, { 0, 12726, -7818, -6860}, @@ -317,7 +317,7 @@ void Phy_SetBeamTable(PHY_INST *instPtr, PHY_ANT_ANGLE *table, uint32_t offset) * FAILURE beamNo exceeds the table size * ******************************************************************************/ -int32_t Phy_SetBeamNo(PHY_INST *instPtr, int32_t beamNo, PHY_ANT_BEAM_WIDTH beamWidth) +int32_t Phy_SetBeamNo(PHY_INST *instPtr, size_t beamNo, PHY_ANT_BEAM_WIDTH beamWidth) { ASSERT(instPtr != NULL); @@ -406,8 +406,8 @@ int32_t Phy_SetBeamAngle(PHY_INST *instPtr, double offAx, double rndAx) ASSERT(instPtr != NULL); uint16_t offAxDeg = 0; uint16_t rndAxDeg = 0; - offAxDeg = (offAx >= 0) ? (((int32_t)(offAx * 180 / ANT_PI)) % 360) : (((int32_t)(offAx * 180 / ANT_PI)) % 360 + 360); - rndAxDeg = (rndAx >= 0) ? (((int32_t)(rndAx * 180 / ANT_PI)) % 360) : (((int32_t)(rndAx * 180 / ANT_PI)) % 360 + 360); + offAxDeg = (offAx >= 0) ? (((int32_t)(offAx * 180.0 / ANT_PI)) % 360) : (((int32_t)(offAx * 180.0 / ANT_PI)) % 360 + 360); + rndAxDeg = (rndAx >= 0) ? (((int32_t)(rndAx * 180.0 / ANT_PI)) % 360) : (((int32_t)(rndAx * 180.0 / ANT_PI)) % 360 + 360); if (offAxDeg > 60) { DBG_ERROR("Angle out of range, off axis angle: %" PRIu16 " (should be 0~60), round axis angle: %" PRIu16 " (should be 0~360).\n", diff --git a/df_datalink_sp/src/networking/phy_layer/phy_layer.c b/df_datalink_sp/src/networking/phy_layer/phy_layer.c index f7156c1..57d2a15 100644 --- a/df_datalink_sp/src/networking/phy_layer/phy_layer.c +++ b/df_datalink_sp/src/networking/phy_layer/phy_layer.c @@ -335,7 +335,7 @@ inline L1_FRAME_TYPE Phy_GetLastRecvFrameType(PHY_INST *instPtr) { return L1_NONE_FRAME; } - int32_t frame_type = (PhyRead(instPtr, COASE_FREQEST) & COASE_TYPE_MASK); + uint32_t frame_type = (PhyRead(instPtr, COASE_FREQEST) & COASE_TYPE_MASK); switch (frame_type) { case COASE_TYPE_2KBPS_20MS: @@ -1036,7 +1036,7 @@ void Phy_RefreshHwSate(PHY_INST *instPtr) ASSERT(instPtr != NULL); uint32_t rawData; #ifndef EMULATION - float evalData; + double evalData; instPtr->hwSate.isSpOk = true; // -- Update FPGA voltage status; instPtr->hwSate.spFpgaVolt = 0; @@ -1259,7 +1259,7 @@ double Phy_GetCoarseFreqEst(PHY_INST *instPtr) double freqEst; frameType = Phy_GetLastRecvFrameType(instPtr); - if (frameType > L1_1M2BPS_5MS_FRAME || frameType <= L1_NONE_FRAME) + if ((frameType > L1_1M2BPS_5MS_FRAME) || (frameType <= L1_NONE_FRAME)) { return INFINITY; // FIXME } @@ -1297,14 +1297,14 @@ double Phy_GetFineFreqEst(PHY_INST *instPtr) double freqEst; L1_FRAME_TYPE frameType; frameType = Phy_GetLastRecvFrameType(instPtr); - if (frameType > L1_1M2BPS_5MS_FRAME || frameType <= L1_NONE_FRAME) + if ((frameType > L1_1M2BPS_5MS_FRAME) || (frameType <= L1_NONE_FRAME)) { return INFINITY; // FIXME } regValue = PhyRead(instPtr, FINE_FREQEST); estAbs = regValue & FINE_FREQEST_VAL_MASK; - if (frameType >= L1_200KBPS_5MS_FRAME) + if ((frameType >= L1_200KBPS_5MS_FRAME)) { // 12M Rc freqEst = 48e6 / 2048 * ((double)estAbs) / 8192.0; diff --git a/df_datalink_sp/src/networking/phy_layer/phy_layer.h b/df_datalink_sp/src/networking/phy_layer/phy_layer.h index 43c40bb..327de08 100644 --- a/df_datalink_sp/src/networking/phy_layer/phy_layer.h +++ b/df_datalink_sp/src/networking/phy_layer/phy_layer.h @@ -34,24 +34,24 @@ * @name PhysicalLayer_Common_Constant * @{ */ -#define L1_NUM_ANT_NRRW_PATTERN 37 -#define L1_INIT_BEAM_NO 0 +#define L1_NUM_ANT_NRRW_PATTERN 37U +#define L1_INIT_BEAM_NO 0U #define L1_INIT_ANT_WD PHY_ANT_BEAM_120 -#define L1_ANT_NUM_CH 4 +#define L1_ANT_NUM_CH 4U #define L1_FRAME_NONE_LEN UINT32_MAX // byte #define L1_FRAME_NONE_COMP UINT32_MAX // *10ns(Timer_L) #define L1_FRAME_NONE_HOPS UINT32_MAX -#define L1_FRAME_MAX_HOPS 81 -#define L1_FRAME_2KBPS_20MS_HOPS 1 -#define L1_FRAME_2KBPS_100MS_HOPS 81 -#define L1_FRAME_10KBPS_10MS_HOPS 1 -#define L1_FRAME_10KBPS_20MS_HOPS 11 -#define L1_FRAME_40KBPS_20MS_HOPS 19 -#define L1_FRAME_40KBPS_10MS_HOPS 9 -#define L1_FRAME_200KBPS_5MS_HOPS 20 -#define L1_FRAME_1M2BPS_5MS_HOPS 20 -#define PHY_LOG_EXPIRE 40 // 50*5ms +#define L1_FRAME_MAX_HOPS 81U +#define L1_FRAME_2KBPS_20MS_HOPS 1U +#define L1_FRAME_2KBPS_100MS_HOPS 81U +#define L1_FRAME_10KBPS_10MS_HOPS 1U +#define L1_FRAME_10KBPS_20MS_HOPS 11U +#define L1_FRAME_40KBPS_20MS_HOPS 19U +#define L1_FRAME_40KBPS_10MS_HOPS 9U +#define L1_FRAME_200KBPS_5MS_HOPS 20U +#define L1_FRAME_1M2BPS_5MS_HOPS 20U +#define PHY_LOG_EXPIRE 40U // 50*5ms /** @} */ /***************** Macros (Inline Functions) Definitions *********************/ /**************************** Type Definitions *******************************/ @@ -306,7 +306,7 @@ void Phy_AntConfigInit(PHY_ANT_CONFIG *antConfig); void Phy_AntConfigMode(PHY_INST *instPtr, PHY_ANT_MODE mode); void Phy_SetBeamTable(PHY_INST *instPtr, PHY_ANT_ANGLE *table, uint32_t offset); int32_t Phy_SetBeamWidth(PHY_INST *instPtr, PHY_ANT_BEAM_WIDTH beamWidth); -int32_t Phy_SetBeamNo(PHY_INST *instPtr, int32_t beamNo, PHY_ANT_BEAM_WIDTH beamWidth); +int32_t Phy_SetBeamNo(PHY_INST *instPtr, size_t beamNo, PHY_ANT_BEAM_WIDTH beamWidth); int32_t Phy_SetBeamAngle(PHY_INST *phyInstPtr, double offAx, double rndAx); /** @} PhysicalLayer_AntennaControl*/ diff --git a/df_datalink_sp/src/networking/phy_layer/phy_reg.h b/df_datalink_sp/src/networking/phy_layer/phy_reg.h index 1675079..fa64a1e 100644 --- a/df_datalink_sp/src/networking/phy_layer/phy_reg.h +++ b/df_datalink_sp/src/networking/phy_layer/phy_reg.h @@ -26,8 +26,8 @@ #include "util.h" /***************** Macros (Inline Functions) Definitions *********************/ -#define PhyRead(instPtr, addr) IO_In32((instPtr)->phyCofig.baseAddr + addr) -#define PhyWrite(instPtr, addr, value) IO_Out32((instPtr)->phyCofig.baseAddr + addr, value) +#define PhyRead(instPtr, addr) IO_In32((instPtr)->phyCofig.baseAddr + (addr)) +#define PhyWrite(instPtr, addr, value) IO_Out32((instPtr)->phyCofig.baseAddr + (addr), (value)) /************************** Constant Definitions *****************************/ /** diff --git a/df_datalink_sp/src/system_monitor.c b/df_datalink_sp/src/system_monitor.c index d50c20d..fb8193e 100644 --- a/df_datalink_sp/src/system_monitor.c +++ b/df_datalink_sp/src/system_monitor.c @@ -127,6 +127,7 @@ void SysMonitor_Destroy(void) */ void SysMonitor_UpdateSysinfo(const SYSINFO *info) { + ASSERT(info != NULL); uint8_t buffIndx; buffIndx = GetWritable(sysMonitorInst->sysInfoCtrl); sysMonitorInst->sysInfoCtrl.wBusy = buffIndx; @@ -143,6 +144,7 @@ void SysMonitor_UpdateSysinfo(const SYSINFO *info) void SysMonitor_GetSysinfo(SYSINFO *info) { ASSERT(sysMonitorInst != NULL); + ASSERT(info != NULL); uint8_t buffIndx, buffIndex_old; buffIndex_old = sysMonitorInst->sysInfoCtrl.rBusy; if (buffIndex_old != BUFF_NONE) @@ -201,9 +203,13 @@ void SysMonitor_GetSendPayload(uint8_t *buff, uint32_t *id, size_t len) uint8_t buffIndx, buffIndex_old; buffIndex_old = sysMonitorInst->sendCtrl.rBusy; if (buffIndex_old != BUFF_NONE) + { buffIndx = buffIndex_old; // Keep it busy + } else + { buffIndx = GetReadable(sysMonitorInst->sendCtrl); + } sysMonitorInst->sendCtrl.rBusy = buffIndx; if (sysMonitorInst->send[buffIndx].dataId != DATA_ID_NONE) { diff --git a/df_datalink_sp/src/system_monitor.h b/df_datalink_sp/src/system_monitor.h index f96abbc..6dffefc 100644 --- a/df_datalink_sp/src/system_monitor.h +++ b/df_datalink_sp/src/system_monitor.h @@ -54,12 +54,12 @@ // #define IS_PL_VALID(x) (x <= 1.03 && x >= 0.97) // #define IS_PLAUX_VALID(x) (x <= 1.89 && x >= 1.71) // #define IS_BRAM_VALID(x) (x <= 1.03 && x >= 0.97) -#define IS_PS_VALID(x) (x <= 1.1 && x >= 0.9) -#define IS_PSAUX_VALID(x) (x <= 2.0 && x >= 1.6) -#define IS_DDR_VALID(x) (x <= 1.7 && x >= 1.3) -#define IS_PL_VALID(x) (x <= 1.1 && x >= 0.9) -#define IS_PLAUX_VALID(x) (x <= 2.0 && x >= 1.6) -#define IS_BRAM_VALID(x) (x <= 1.1 && x >= 0.9) +#define IS_PS_VALID(x) ((x) <= 1.1 && (x) >= 0.9) +#define IS_PSAUX_VALID(x) ((x) <= 2.0 && (x) >= 1.6) +#define IS_DDR_VALID(x) ((x) <= 1.7 && (x) >= 1.3) +#define IS_PL_VALID(x) (x <= 1.1 && (x) >= 0.9) +#define IS_PLAUX_VALID(x) ((x) <= 2.0 && (x) >= 1.6) +#define IS_BRAM_VALID(x) ((x) <= 1.1 && (x) >= 0.9) #define CLK_SP_PLL0_LOCK BIT(0) #define CLK_SP_PLL1_LOCK BIT(2) @@ -194,12 +194,12 @@ typedef struct __attribute__((packed)) uint8_t spFpgaVolt; ///< Signal processor voltage state indicator uint8_t spClkState; ///< Signal processor clock state indicator uint8_t spAdLockState; ///< Signal processor adc lock state indicator - uint8_t spAdTemp_0; ///< Signal processor adc0 temperature - uint8_t spAdTemp_1; ///< Signal processor adc1 temperature - uint8_t spFpgaTemp; ///< Signal processor FPGA temperature + int8_t spAdTemp_0; ///< Signal processor adc0 temperature + int8_t spAdTemp_1; ///< Signal processor adc1 temperature + int8_t spFpgaTemp; ///< Signal processor FPGA temperature // -- Antenna status uint8_t antVolt; ///< Antenna voltage state indicator - uint8_t antTemp; ///< Antenna rf temperature + int8_t antTemp; ///< Antenna rf temperature uint8_t antPll; ///< Antenna rf lock state indicator uint8_t antMgc0; ///< Antenna rf mgc0~1 indicator uint8_t antMgc1; ///< Antenna rf mgc2~3 indicator