phil4321 wrote on Tuesday, October 16, 2007:
Hi,
I have created a coRoutine task much like the flashLed example. The functions work fine as per the example. What I would like to do is deleted the tasks created (on an external event happening) and re-initialize my StartTimerCoRoutines( unsigned portBASE_TYPE uxNumberToCreate ) function shown below with a new number of tasks.
I have taken a look at the functions in croutine.c and the only one I think I could use is the xCoRoutineRemoveFromEventList( const xList *pxEventList ) function, but I am unsure how to get a pointer to the events list.
Hope you can help. Is this a normal task to do using the coRoutine functions or intended use.
Thanks,
Phil
void vDevPoll_StartTimerCoRoutines( unsigned portBASE_TYPE uxNumberToCreate )
{
unsigned portBASE_TYPE uxIndex;
if( uxNumberToCreate > crfMAX_TIMER_TASKS )
{
uxNumberToCreate = crfMAX_TIMER_TASKS;
}
/* Create the queue used to pass data between the co-routines. */
xTimerQueue = xQueueCreate( crfQUEUE_LENGTH, sizeof( unsigned portBASE_TYPE ) );
if( xTimerQueue )
{
/* Create uxNumberToCreate ‘fixed delay’ co-routines. */
for( uxIndex = 0; uxIndex < uxNumberToCreate; uxIndex++ )
{
xCoRoutineCreate( prvDevPoll_FixedDelayCoRoutine, crfFIXED_DELAY_PRIORITY, uxIndex );
}
/* Create the ‘flash’ co-routine. */
xCoRoutineCreate( prvDevPoll_TimerCoRoutine, crfTIMER_PRIORITY, crfTIMER_INDEX );
}
// Start the scheduler.
// vTaskStartScheduler();
}