Exemple #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);
    }

}
Exemple #2
0
/**
 * Escribe un byte en un búfer circular
 * @param cb	Búfer circular
 * @param byte	Byte a escribir
 * @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_write (volatile circular_buffer_t *cb, uint8_t byte)
{
    /* Escribimos en el búfer sólo si hay espacio */
    if (circular_buffer_is_full (cb))
    	return -1;
    else
    {
        cb->data[cb->end] = byte;
        cb->count++;

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