int bsp_om_start_timer(u32 timer_len,void *func,u32 para,struct softtimer_list *timer) { s32 ret = BSP_OK; timer->func = func; timer->para = para; timer->timeout = timer_len*1000; timer->wake_type = SOFTTIMER_NOWAKE; if(timer->init_flags != TIMER_INIT_FLAG) { ret = bsp_softtimer_create(timer); bsp_softtimer_add(timer); } else { ret =bsp_softtimer_modify(timer,timer_len*1000); bsp_softtimer_add(timer); } return ret; }
void for_softtimer_test_3(u32 para) { s32 ret = 0; num[1]++; if (num[1]<10) { ret = bsp_softtimer_modify(&my_softtimer,num[1]*100); if (ret !=OK) { bsp_trace(BSP_LOG_LEVEL_ERROR,BSP_MODU_SOFTTIMER,"for_softtimer_test_3 11modify error\n"); return; } bsp_softtimer_add(&my_softtimer); } if (num[1]==10) { num[1] = 0; ret = bsp_softtimer_free(&my_softtimer); if (ret !=OK) { bsp_trace(BSP_LOG_LEVEL_ERROR,BSP_MODU_SOFTTIMER,"for_softtimer_test_3 free error\n"); return; } osl_sem_up(&sem3); } return; }
u32 bsp_cpu_swt_set(u32 set_swt,u32 period) { u32 ret = BSP_OK; if(BSP_SYSVIEW_SWT_ON == set_swt) { if(cpu_info_stru.loop_timer.init_flags == TIMER_INIT_FLAG ) { bsp_om_stop_timer(&cpu_info_stru.loop_timer); bsp_softtimer_modify(&cpu_info_stru.loop_timer,period*1000); bsp_softtimer_add(&cpu_info_stru.loop_timer); /* 初始化计数信息*/ get_task_time(0); ret = BSP_OK; } else { ret = (u32)bsp_om_start_timer(period,cpu_timeout_done , 0, &(cpu_info_stru.loop_timer)); if(ret == BSP_OK) { /* 初始化计数信息*/ get_task_time(0); ret = BSP_OK; } else { ret = (u32)BSP_ERROR; } } } else { if(cpu_info_stru.loop_timer.init_flags == TIMER_INIT_FLAG ) { ret = (u32)bsp_om_stop_timer(&cpu_info_stru.loop_timer); } else { ret = BSP_OK; } /*去 初始化计数信息*/ get_task_time(1); } if(BSP_OK != ret) { return ret; } cpu_info_stru.report_swt = set_swt; cpu_info_stru.report_timer_len = period; return BSP_OK; }