Пример #1
0
/** @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);

}
Пример #2
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);
}
Пример #3
0
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);
}