📄 ixtimesyncacc.c
字号:
/* * Disable the interrupt for the indicated mode of Auxiliary Time Stamp * in the IEEE 1588 hardware assist block */PUBLIC IxTimeSyncAccStatusixTimeSyncAccAuxTimeInterruptDisable(IxTimeSyncAccAuxMode auxMode){ /* Verify the parameters */ if (IX_TIMESYNCACC_AUXMODE_INVALID <= auxMode) { return IX_TIMESYNCACC_INVALIDPARAM; } /* if (IX_TIMESYNCACC_AUXMODE_INVALID <= auxMode) */ /* Initialised before? */ IXP400_TIMESYNCACC_INIT_CHECK(); /* Unregister the Callback and CLEAR the amm/asm bits on */ if (IX_TIMESYNCACC_AUXMODE_MASTER == auxMode) { ixTimeSyncAccControlAmmsInterruptMaskClear(); ixTsAuxMasterTimeCallback = (IxTimeSyncAccAuxTimeCallback) NULL; } /* else of if (IX_TIMESYNCACC_AUXMODE_MASTER == auxMode) */ else { ixTimeSyncAccControlAsmsInterruptMaskClear(); ixTsAuxSlaveTimeCallback = (IxTimeSyncAccAuxTimeCallback) NULL; } /* end of if (IX_TIMESYNCACC_AUXMODE_MASTER == auxMode) */ return IX_TIMESYNCACC_SUCCESS;} /* end of ixTimeSyncAccAuxTimeInterruptDisable() function *//* * Poll for the Auxiliary Time Stamp captured for the mode indicated * (Master or Slave) */PUBLIC IxTimeSyncAccStatusixTimeSyncAccAuxTimePoll(IxTimeSyncAccAuxMode auxMode, BOOL *auxPollFlag, IxTimeSyncAccTimeValue *auxTime){ /* Local variables */ BOOL ammsFlag = FALSE; BOOL asmsFlag = FALSE; /* Verify the parameters */ if (((BOOL *)NULL == auxPollFlag) || (IX_TIMESYNCACC_AUXMODE_INVALID <= auxMode) || ((IxTimeSyncAccTimeValue *)NULL == auxTime)) { return IX_TIMESYNCACC_INVALIDPARAM; } /* end of if (((BOOL *)NULL == auxPollFlag) || (IX_TIMESYNCACC_AUXMODE_INVALID <= auxMode) || ((IxTimeSyncAccTimeValue *)NULL == auxTime)) */ /* Initialised before? */ IXP400_TIMESYNCACC_INIT_CHECK(); /* Fetch Auxiliary Master/Slave Mode Snapshot */ if (IX_TIMESYNCACC_AUXMODE_MASTER == auxMode) { /* Is interrupt mode of processing is enabled? */ if ((IxTimeSyncAccAuxTimeCallback) NULL != ixTsAuxMasterTimeCallback) { return IX_TIMESYNCACC_INTERRUPTMODEINUSE; } /* end of if ((IxTimeSyncAccAuxTimeCallback) NULL != ixTsAuxMasterTimeCallback) */ /* Is the Auxiliary Master Mode Snapshot available? */ ammsFlag = ixTimeSyncAccEventAmmsFlagGet(); if (FALSE == ammsFlag) { *auxPollFlag = FALSE; auxTime->timeValueLowWord =0; auxTime->timeValueHighWord = 0; return IX_TIMESYNCACC_SUCCESS; } /* end of if (FALSE == ammsFlag) */ /* Fetch Auxiliary Master Snapshot */ ixTimeSyncAccAuxMasterModeSnapshotGet(&auxTime->timeValueLowWord, &auxTime->timeValueHighWord); *auxPollFlag = TRUE; /* Clear the snapshot availability condition */ ixTimeSyncAccEventAmmsFlagClear(); } /* else of if (IX_TIMESYNCACC_AUXMODE_MASTER == auxMode) */ else { /* Is interrupt mode of processing is enabled? */ if ((IxTimeSyncAccAuxTimeCallback) NULL != ixTsAuxSlaveTimeCallback) { return IX_TIMESYNCACC_INTERRUPTMODEINUSE; } /* end of if ((IxTimeSyncAccAuxTimeCallback) NULL != ixTsAuxSlaveTimeCallback) */ /* Is the Auxiliary Slave Mode Snapshot available? */ asmsFlag = ixTimeSyncAccEventAsmsFlagGet(); if (FALSE == asmsFlag) { *auxPollFlag = FALSE; auxTime->timeValueLowWord =0; auxTime->timeValueHighWord = 0; return IX_TIMESYNCACC_SUCCESS; } /* end of if (FALSE == asmsFlag) */ /* Fetch Auxiliary Slave Snapshot */ ixTimeSyncAccAuxSlaveModeSnapshotGet(&auxTime->timeValueLowWord, &auxTime->timeValueHighWord); *auxPollFlag = TRUE; /* Clear the snapshot availability condition */ ixTimeSyncAccEventAsmsFlagClear(); } /* end of if (IX_TIMESYNCACC_AUXMODE_MASTER == auxMode) */ return IX_TIMESYNCACC_SUCCESS;} /* end of ixTimeSyncAccAuxTimePoll() function *//* Reset the IEEE 1588 hardware assist block */PUBLIC IxTimeSyncAccStatusixTimeSyncAccReset(void){ /* Initialised before? */ IXP400_TIMESYNCACC_INIT_CHECK(); /* Reset Hardware Assist */ ixTimeSyncAccControlReset(); /* Clear Stats */ ixTsStats.rxMsgs = ixTsStats.txMsgs = 0; /* Unregister any Callback Routines */ ixTsTargetTimeCallback = (IxTimeSyncAccTargetTimeCallback) NULL; ixTsAuxMasterTimeCallback = (IxTimeSyncAccAuxTimeCallback) NULL; ixTsAuxSlaveTimeCallback = (IxTimeSyncAccAuxTimeCallback) NULL; return IX_TIMESYNCACC_SUCCESS;} /* end of ixTimeSyncAccReset() function *//* Return the IxTimeSyncAcc Statistics */PUBLIC IxTimeSyncAccStatusixTimeSyncAccStatsGet(IxTimeSyncAccStats *timeSyncStats){ /* Verify the parameter */ if ((IxTimeSyncAccStats *) NULL == timeSyncStats) { return IX_TIMESYNCACC_INVALIDPARAM; } /* end of ((IxTimeSyncAccStats *) NULL == timeSyncStats) */ /* Return Stats */ timeSyncStats->rxMsgs = ixTsStats.rxMsgs; timeSyncStats->txMsgs = ixTsStats.txMsgs; return IX_TIMESYNCACC_SUCCESS;} /* end of ixTimeSyncAccStatsGet() function *//* Reset Time Sync statistics */PUBLIC voidixTimeSyncAccStatsReset(void){ /* Clear Stats */ ixTsStats.rxMsgs = ixTsStats.txMsgs = 0; return;} /* end of ixTimeSyncAccStatsReset() function *//* Display the Time Sync current status */PUBLIC IxTimeSyncAccStatusixTimeSyncAccShow(void){ /* Local Varaiables */ UINT32 regValue = 0; UINT32 regLowValue = 0; UINT32 regHighValue = 0; UINT16 seqId = 0; UINT32 uuIdLow = 0; UINT16 uuIdHigh = 0; BOOL bitSet = FALSE; UINT32 ptpPortNum = 0; /* Initialised before? */ IXP400_TIMESYNCACC_INIT_CHECK(); /* Dump Block Level Status */ /* System Time registers contents */ regLowValue = 0; regHighValue = 0; ixTimeSyncAccSystemTimeSnapshotGet(®LowValue, ®HighValue); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "System Test (Low:High): %x : %x\n", regLowValue, regHighValue,0,0,0,0); /* Frequency Scaling Value */ regValue = 0; ixTimeSyncAccAddendFsvGet(®Value); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Frequency Scaling Value: %x\n", regValue,0,0,0,0,0); /* Target time reached/exceeded interrupt mask value */ bitSet = ixTimeSyncAccControlTtmInterruptMaskGet(); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Target Time Reached/Exceeded Interrupt Mask: %s\n", (INT32)((TRUE == bitSet) ? "ENABLED":"DISABLED"),0,0,0,0,0); /* Target time reached/exceeded event flag value */ bitSet = ixTimeSyncAccEventTtmFlagGet(); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Target Time Reached/Exceeded Event Flag: %s\n", (INT32)((TRUE == bitSet) ? "SET":"CLEAR"),0,0,0,0,0); /* Target Time registers contents */ regLowValue = 0; regHighValue = 0; ixTimeSyncAccTargetTimeSnapshotGet(®LowValue, ®HighValue); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Target Time (Low:High): %x : %x\n", regLowValue, regHighValue,0,0,0,0); /* Auxiliary Master Mode Snapshot interrupt mask value */ bitSet = ixTimeSyncAccControlAmmsInterruptMaskGet(); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Auxiliary Master Mode Snapshot Interrupt Mask: %s\n", (INT32)((TRUE == bitSet) ? "ENABLED":"DISABLED"),0,0,0,0,0); /* Auxiliary Master Mode Snapshot event flag value */ bitSet = ixTimeSyncAccEventAmmsFlagGet(); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Auxiliary Master Mode Snapshot Event Flag: %s\n", (INT32)((TRUE == bitSet) ? "SET":"CLEAR"),0,0,0,0,0); /* Auxiliary Master Snapshot registers */ regLowValue = 0; regHighValue = 0; ixTimeSyncAccAuxMasterModeSnapshotGet(®LowValue, ®HighValue); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Auxiliary Master Mode Snapshot (Low:High): %x : %x\n", regLowValue, regHighValue,0,0,0,0); /* Auxiliary Slave Mode Snapshot interrupt mask value */ bitSet = ixTimeSyncAccControlAsmsInterruptMaskGet(); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Auxiliary Slave Mode Snapshot Interrupt Mask: %s\n", (INT32)((TRUE == bitSet) ? "ENABLED":"DISABLED"),0,0,0,0,0); /* Auxiliary Slave Mode Snapshot event flag value */ bitSet = ixTimeSyncAccEventAsmsFlagGet(); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Auxiliary Slave Mode Snapshot Event Flag: %s\n", (INT32)((TRUE == bitSet) ? "SET":"CLEAR"),0,0,0,0,0); /* Auxiliary Slave Snapshot registers */ regLowValue = 0; regHighValue = 0; ixTimeSyncAccAuxSlaveModeSnapshotGet(®LowValue, ®HighValue); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Auxiliary Slave Mode Snapshot (Low:High) : %x : %x\n", regLowValue, regHighValue,0,0,0,0); /* Dump Port Level Status */ for (ptpPortNum = 0; ptpPortNum < IXP400_TIMESYNCACC_MAX_1588PTP_PORT; ptpPortNum++) { /* Display the port number */ ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "PTP Port #: %u %s\n", ptpPortNum, (INT32)((TRUE == ixTsNpeEnabled[ptpPortNum]) ? "***FUSED-OUT***":""), 0,0,0,0); /* Get the Master Mode and Timestamp All PTP messages status */ bitSet = ixTimeSyncAccControlPTPPortMasterModeGet(ptpPortNum); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "\tMaster Mode: %s\n", (INT32)((TRUE == bitSet) ? "SET":"CLEAR"),0,0,0,0,0); bitSet = ixTimeSyncAccControlPTPPortPTPMsgTimestampGet(ptpPortNum); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "\tTimestamp All Mode: %s\n", (INT32)((TRUE == bitSet) ? "SET":"CLEAR"),0,0,0,0,0); /* Receive Timestamp Event Flag */ bitSet = ixTimeSyncAccControlPTPPortRxsFlagGet(ptpPortNum); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "\tReceive Timestamp Event Flag: %s\n", (INT32)((TRUE == bitSet) ? "SET":"CLEAR"),0,0,0,0,0); /* Receive timestamp registers */ regLowValue = 0; regHighValue = 0; ixTimeSyncAccPTPPortReceiveSnapshotGet(ptpPortNum, ®LowValue, ®HighValue); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "\tReceive Timestamp (Low:High): %x : %x\n", regLowValue,regHighValue,0,0,0,0); /* UUID and Seq# */ ixTimeSyncAccPTPMsgUuidSeqIdGet(ptpPortNum, &uuIdLow, &uuIdHigh, &seqId); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "\tUUID (Low: High (16-Bits)): %x : %x \n" "Seq# (16Bits Only): %x\n", uuIdLow, uuIdHigh, seqId,0,0,0); /* Transmit Timestamp Event Flag */ bitSet = ixTimeSyncAccControlPTPPortTxsFlagGet(ptpPortNum); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "\tTransmit Timestamp Event Flag: %s\n", (INT32)((TRUE == bitSet) ? "SET":"CLEAR"),0,0,0,0,0); /* Transmit timestamp registers */ regLowValue = 0; regHighValue = 0; ixTimeSyncAccPTPPortTransmitSnapshotGet(ptpPortNum, ®LowValue,®HighValue); ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "\tTransmit Timestamp (Low:High): %x : %x\n", regLowValue,regHighValue,0,0,0,0); } /* end of for (ptpPortNum = 0; ptpPortNum < IXP400_TIMESYNCACC_MAX_1588PTP_PORT; ptpPortNum++) */ /* Stats */ ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Receive Timestamps Count: %u\n" "Transmit Timestamp Count: %u\n", ixTsStats.rxMsgs, ixTsStats.txMsgs,0,0,0,0); /* Callback Routine Addresses */ ixOsalLog (IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT, "Target Time Callback: %p\n" "Auxiliary Master Mode Snapshot Callback: %p\n" "Auxiliary Slave Mode Snapshot Callback: %p\n", (UINT32)ixTsTargetTimeCallback, (UINT32)ixTsAuxMasterTimeCallback, (UINT32)ixTsAuxSlaveTimeCallback, 0,0,0); return IX_TIMESYNCACC_SUCCESS;} /* end of ixTimeSyncAccShow() function */#endif /* __ixp46X */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -