UINT32 vjpegEncoderCom_Callback(void) { #ifndef ECOS tt_sem_up(&g_vpJPEG.semEncoder); #else cyg_semaphore_post(&g_vpJPEG.semEncoder); #endif return 0; }
/* Available in: thread. */ void tt_pc_consume (TT_PC_T *pc, void (*consume) (void *arg), void *arg) { tt_sem_down (&pc->consumer); if (consume != NULL) (*consume) (arg); tt_sem_up (&pc->producer); }
UINT32 vjpegDecoderErr_Callback(void) { #ifndef ECOS tt_sem_up(&g_vpJPEG.semDecoder); #else g_DecodeStatus = false; cyg_semaphore_post(&g_vpJPEG.semDecoder); #endif return 0; }
/* Available in: irq, thread. */ int tt_pc_try_consume (TT_PC_T *pc, void (*consume) (void *arg), void *arg) { if (tt_sem_try_down (&pc->consumer) < 0) return -1; if (consume != NULL) (*consume) (arg); tt_sem_up (&pc->producer); return 0; }
/* Available in: thread. */ int tt_pc_consume_timeout (TT_PC_T *pc, void (*consume) (void *arg), void *arg, uint32_t msec) { int rt = tt_sem_down_timeout (&pc->consumer, msec); if (rt == 0) { if (consume != NULL) (*consume) (arg); tt_sem_up (&pc->producer); } return rt; }
void thread_entry(void *arg) { THREAD_ARG_T *the_arg = (THREAD_ARG_T *)arg; int start_ticks = tt_get_ticks (); #define THREAD_RUN_MSEC 3000 while (1) { int cur_ticks = tt_get_ticks (); if (tt_ticks_to_msec (cur_ticks - start_ticks) >= THREAD_RUN_MSEC) break; if(cur_ticks % 64 < 32) DrvGPIO_SetBit(the_arg->gpio_group, the_arg->gpio_bit); /* Turn off LED */ else DrvGPIO_ClrBit(the_arg->gpio_group, the_arg->gpio_bit); /* Turn on LED */ } tt_sem_up (the_arg->join_sem); }
void thread_entry(void *arg) { THREAD_ARG_T *the_arg = (THREAD_ARG_T *)arg; tt_sem_down (the_arg->sem); while (1) { int cur_ticks = tt_get_ticks (); if (cur_ticks % 1024 < 4) { tt_sem_up (the_arg->sem); tt_thread_yield (); tt_sem_down (the_arg->sem); } if(cur_ticks % 64 < 32) the_arg->gpio_group->DOUT &= ~(1 << the_arg->gpio_bit); /* Turn off LED */ else the_arg->gpio_group->DOUT |= (1 << the_arg->gpio_bit); /* Turn on LED */ } }