Esempio n. 1
0
/*******************************************************************************
 * @brief   register micro task 
 * @author  zhanggaoxin
 * @date    2013-03-19
 * @param   [in]task: 
 * @param   [in]callInterval: 
 * @return  T_U8
 * @retval  the handle of micro task
*******************************************************************************/
T_U8 Fwl_MicroTaskRegister(TASK_FUNC task,T_U16 CallInterval)//CallInterval以10ms为单位
{
    T_U8 i;

    for(i=0;i<MAX_MICRO_TASK;i++)
    {
        if(task_param[i].TaskCalBak == AK_NULL)
        {
            task_param[i].TaskCalBak = task;
            task_param[i].BackUpInterval = task_param[i].CallInterval = CallInterval;
            RunTaskCnt++;
            TaskRegMap |= (1<<i);//注册记录
            if(RunTaskCnt == 1)
            {
                TaskTimer = vtimer_start(10, AK_TRUE, TaskTimerCallBak);
                if(TaskTimer == ERROR_TIMER)
                {
                    akerror("task timer start fail",0,1);
                    while(1);
                }
            }
            return i;
        }
    }
    return 0xff;
}
Esempio n. 2
0
static void
main_thread(void *pdata) {
    QueueSetHandle_t qs;
    QueueSetMemberHandle_t active;

    ASSERT((qs = xQueueCreateSet(SERIAL_RX_SIZE * 3)));
    serial_start(cli_serial, 115200, qs);
    serial_start(&Serial4, 57600, qs);
    serial_start(&Serial5, cfg.gps_baud_rate ? cfg.gps_baud_rate : 57600, qs);
    cli_set_output(cli_serial);
    log_start(cli_serial);
    cl_enabled = 1;

    load_eeprom();
    cfg.flags &= ~FLAG_HOLDOVER_TEST;
    if (cfg.flags & FLAG_GPSEXT) {
        gps_serial = &Serial5;
    } else {
        gps_serial = &Serial4;
    }
    if (!cfg.holdover) {
        cfg.holdover = 60;
    }
    if (!cfg.loopstats_interval) {
        cfg.loopstats_interval = 60;
    }
    ppscapture_start();
    vtimer_start();
    tcpip_start();
    test_reset();
    cli_banner();
    if (!(cfg.flags & FLAG_GPSEXT)) {
        ublox_configure();
        if (HAS_FEATURE(PPSEN) && (cfg.flags & FLAG_PPSEN)) {
            GPIO_OFF(PPSEN);
        }
    }
    cl_enabled = 0;
    while (1) {
        watchdog_main = 5;
        active = xQueueSelectFromSet(qs, pdMS_TO_TICKS(1000));
        if (active == cli_serial->rx_q) {
            int16_t val = serial_get(cli_serial, TIMEOUT_NOBLOCK);
            ASSERT(val >= 0);
            cli_feed(val);
        } else if (active == gps_serial->rx_q) {
            int16_t val = serial_get(gps_serial, TIMEOUT_NOBLOCK);
            ASSERT(val >= 0);
            gps_byte_received(val);
            if (cfg.flags & FLAG_GPSOUT) {
                char tmp = val;
                serial_write(&Serial5, &tmp, 1);
            }
#if 0
        } else if (active == Serial5.rx_q) {
            char tmp = serial_get(&Serial5, TIMEOUT_NOBLOCK);
            serial_write(&Serial4, &tmp, 1);
#endif
        }
    }
}
Esempio n. 3
0
T_TIMER Fwl_TimerStartMilliSecond(T_U16 milliSeconds, T_BOOL loop)
{
    return vtimer_start(milliSeconds, loop, vtimer_callback_func);
}
Esempio n. 4
0
T_TIMER Fwl_TimerStartSecond(T_U8 seconds, T_BOOL loop)
{
    return vtimer_start((T_U16)(seconds*1000), loop, vtimer_callback_func);
}
Esempio n. 5
0
T_TIMER Fwl_TimerStart(T_U16 milliSeconds, T_BOOL loop, T_fVTIMER_CALLBACK callback)    
{
    return vtimer_start(milliSeconds, loop, callback);
}