Пример #1
0
void VCOM_echo(void)
{
    uint8_t temp;
    circular_buffer_pools_t * cb_out = circular_buffer_pointer(0x2);
    circular_buffer_pools_t * cb_in = circular_buffer_pointer(0x82);

    if((!circular_buffer_is_empty(cb_out)) && (!circular_buffer_is_full(cb_in)))
    {
        circular_buffer_pop(cb_out,&temp);
        circular_buffer_push(cb_in,&temp);
        //  Set Next Timer Reload to finish transfer after there is room in FIFO
        start_timer(1);
    }

}
Пример #2
0
/**
 * Lee un byte en un búfer circular
 * @param cb	Búfer circular
 * @return		El byte como un casting de uint8_t a int32_t en caso de éxito
 * 				o -1 en caso de error
 */
int32_t circular_buffer_read (volatile circular_buffer_t *cb)
{
	int32_t byte;
    if (circular_buffer_is_empty (cb))
    	return -1;
    else
    {
        byte = cb->data[cb->start];
        cb->count--;

        cb->start++;
    	if (cb->start == cb->size)
    		cb->start = 0;
        return byte;
    }
}