void CFE_TIME_AdjustCmd(CFE_SB_MsgPtr_t MessagePtr, int16 Direction) { CFE_TIME_TimeCmd_t *CommandPtr = (CFE_TIME_TimeCmd_t *) MessagePtr; /* ** Verify command arguments... */ if (CommandPtr->MicroSeconds < 1000000) { #if (CFE_TIME_CFG_SERVER == TRUE) CFE_TIME_SysTime_t Adjust; Adjust.Seconds = CommandPtr->Seconds; Adjust.Subseconds = CFE_TIME_Micro2SubSecs(CommandPtr->MicroSeconds); CFE_TIME_SetAdjust(Adjust, Direction); CFE_TIME_TaskData.CmdCounter++; CFE_EVS_SendEvent(CFE_TIME_DELTA_EID, CFE_EVS_INFORMATION, "STCF Adjust -- secs = %d, usecs = %d, ssecs = 0x%X, dir[1=Pos, 2=Neg] = %d", CommandPtr->Seconds, CommandPtr->MicroSeconds, CFE_TIME_Micro2SubSecs(CommandPtr->MicroSeconds), Direction); #else /* not CFE_TIME_CFG_SERVER */ /* ** We want to know if disabled commands are being sent... */ CFE_TIME_TaskData.ErrCounter++; CFE_EVS_SendEvent(CFE_TIME_DELTA_CFG_EID, CFE_EVS_ERROR, "STCF Adjust commands invalid without CFE_TIME_CFG_SERVER set to TRUE"); #endif /* CFE_TIME_CFG_SERVER */ } else { CFE_TIME_TaskData.ErrCounter++; CFE_EVS_SendEvent(CFE_TIME_DELTA_ERR_EID, CFE_EVS_ERROR, "Invalid STCF Adjust -- secs = %d, usecs = %d, dir[1=Pos, 2=Neg] = %d", CommandPtr->Seconds, CommandPtr->MicroSeconds, Direction); } return; } /* End of CFE_TIME_AdjustCmd() */
void CFE_TIME_SetDelayCmd(CFE_SB_MsgPtr_t MessagePtr, int16 Direction) { CFE_TIME_TimeCmd_t *CommandPtr = (CFE_TIME_TimeCmd_t *) MessagePtr; /* ** Verify "micro-seconds" command argument... */ if (CommandPtr->MicroSeconds < 1000000) { #if (CFE_TIME_CFG_CLIENT == TRUE) CFE_TIME_SysTime_t Delay; Delay.Seconds = CommandPtr->Seconds; Delay.Subseconds = CFE_TIME_Micro2SubSecs(CommandPtr->MicroSeconds); CFE_TIME_SetDelay(Delay, Direction); CFE_TIME_TaskData.CmdCounter++; CFE_EVS_SendEvent(CFE_TIME_DELAY_EID, CFE_EVS_INFORMATION, "Set Tone Delay -- secs = %d, usecs = %d, ssecs = 0x%X, dir = %d", CommandPtr->Seconds, CommandPtr->MicroSeconds, CFE_TIME_Micro2SubSecs(CommandPtr->MicroSeconds), Direction); #else /* not CFE_TIME_CFG_CLIENT */ /* ** We want to know if disabled commands are being sent... */ CFE_TIME_TaskData.ErrCounter++; CFE_EVS_SendEvent(CFE_TIME_DELAY_CFG_EID, CFE_EVS_ERROR, "Set Delay commands invalid without CFE_TIME_CFG_CLIENT set to TRUE"); #endif /* CFE_TIME_CFG_CLIENT */ } else { CFE_TIME_TaskData.ErrCounter++; CFE_EVS_SendEvent(CFE_TIME_DELAY_ERR_EID, CFE_EVS_ERROR, "Invalid Tone Delay -- secs = %d, usecs = %d", CommandPtr->Seconds, CommandPtr->MicroSeconds); } return; } /* End of CFE_TIME_SetDelayCmd() */
void CFE_TIME_SetSTCFCmd(CFE_SB_MsgPtr_t MessagePtr) { CFE_TIME_TimeCmd_t *CommandPtr = (CFE_TIME_TimeCmd_t *) MessagePtr; /* ** Verify "micro-seconds" command argument... */ if (CommandPtr->MicroSeconds < 1000000) { #if (CFE_TIME_CFG_SERVER == TRUE) CFE_TIME_SysTime_t NewSTCF; NewSTCF.Seconds = CommandPtr->Seconds; NewSTCF.Subseconds = CFE_TIME_Micro2SubSecs(CommandPtr->MicroSeconds); CFE_TIME_SetSTCF(NewSTCF); CFE_TIME_TaskData.CmdCounter++; CFE_EVS_SendEvent(CFE_TIME_STCF_EID, CFE_EVS_INFORMATION, "Set STCF -- secs = %d, usecs = %d, ssecs = 0x%X", CommandPtr->Seconds, CommandPtr->MicroSeconds, CFE_TIME_Micro2SubSecs(CommandPtr->MicroSeconds)); #else /* not CFE_TIME_CFG_SERVER */ /* ** We want to know if disabled commands are being sent... */ CFE_TIME_TaskData.ErrCounter++; CFE_EVS_SendEvent(CFE_TIME_STCF_CFG_EID, CFE_EVS_ERROR, "Set STCF commands invalid without CFE_TIME_CFG_SERVER set to TRUE"); #endif /* CFE_TIME_CFG_SERVER */ } else { CFE_TIME_TaskData.ErrCounter++; CFE_EVS_SendEvent(CFE_TIME_STCF_ERR_EID, CFE_EVS_ERROR, "Invalid STCF -- secs = %d, usecs = %d", CommandPtr->Seconds, CommandPtr->MicroSeconds); } return; } /* End of CFE_TIME_SetSTCFCmd() */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ CFE_TIME_SysTime_t CFE_TIME_LatchClock(void) { CFE_TIME_SysTime_t LatchTime; OS_time_t LocalTime; /* ** Get time in O/S format (seconds : microseconds)... */ CFE_PSP_GetTime(&LocalTime); /* ** Convert time to cFE format (seconds : 1/2^32 subseconds)... */ LatchTime.Seconds = LocalTime.seconds; LatchTime.Subseconds = CFE_TIME_Micro2SubSecs(LocalTime.microsecs); return(LatchTime); } /* End of CFE_TIME_LatchClock() */