/** @fn void can_init(void) * initialization routine * * @param none * @return none * @pre component is initialized * * Uses: \n * Changes: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ void can_init(void) { // internal variables initialization CANTxQueue.IndexIn = 0; CANTxQueue.IndexOut = 0; CANTxQueue.IsFull = 0; CANRxQueue.IndexIn = 0; CANRxQueue.IndexOut = 0; CANRxQueue.IsFull = 0; CANData.BusOff = FALSE; CANData.ErrTxTimeoutCnt = 0; CANData.ErrTxOverflowCnt = 0; CANData.ErrRxOverflowCnt = 0; CANData.ErrBusOffCnt = 0; // can cell initialization can_cell_init(); // start of the periodic task OSSetPeriodicAlarm(cOS_TaskId_CanTask, 2); CAN_LED_TX(0); CAN_LED_RX(0); }
/** * Set a one shot alarm to perform a callback after an amount of time. */ BOOL OSSetAlarm(OSAlarm *alarm, OSTime time, AlarmCallback callback) { return OSSetPeriodicAlarm(alarm, OSGetTime() + time, 0, callback); }
void _GX2InitVsync() { gVsyncThreadQueue = OSAllocFromSystem<OSThreadQueue>(); gVsyncAlarm = OSAllocFromSystem<OSAlarm>(); auto ticks = (static_cast<OSTime>(OSGetSystemInfo()->clockSpeed / 4) * 60) / 1000; OSCreateAlarm(gVsyncAlarm); OSSetPeriodicAlarm(gVsyncAlarm, 0, OSGetTime(), ticks, pVsyncAlarmHandler); }