Exemplo n.º 1
0
int main(int argc, char* argv[])
{
  CircularBuffer buffer;
  CircularBuffer_init(&buffer, 3);
  assert( CircularBuffer_isEmpty(&buffer) );
  
  CircularBuffer_write(&buffer, '1');
  assert( CircularBuffer_isEmpty(&buffer) == 0 );
  assert( CircularBuffer_head(&buffer) == '1' );

  CircularBuffer_write(&buffer, '2');
  assert( CircularBuffer_head(&buffer) == '1' );
  
  CircularBuffer_write(&buffer, '3');
  assert( CircularBuffer_isFull(&buffer) );
  assert( CircularBuffer_head(&buffer) == '1' );

  CircularBuffer_write(&buffer, '4');
  assert( CircularBuffer_isFull(&buffer) );
  assert( CircularBuffer_head(&buffer) == '2' );

  assert( CircularBuffer_read(&buffer) == '2' ); // '1' was overwritten when buffer was full
  assert( CircularBuffer_isFull(&buffer) == 0 );
  assert( CircularBuffer_read(&buffer) == '3' ); 
  assert( CircularBuffer_read(&buffer) == '4' );
  assert( CircularBuffer_isEmpty(&buffer) );

  printf("Circular Buffer: All tests PASSED.\n");
  return 0;
}
Exemplo n.º 2
0
int main(void)
{
    DDRB |= _BV(PB5);

	Usart_init();

	Timer0_init();

    Twi_init();

    CircularBuffer_init(&twi_input);

	_enableInterrupts();

    while(1);
}
Exemplo n.º 3
0
static void oper_idle(uint8_t element)
{
    switch(element)
    {
        case TW_SR_SLA_ACK:
        case TW_SR_ARB_LOST_SLA_ACK:
        {
            TWCR = Twi_ack;
            break;
        }
        case TW_SR_DATA_ACK:
        case TW_SR_DATA_NACK:
        {
            CircularBuffer_init(&buffer);
            currentState = changeState(Twi_dataRegister);
            Twi_controlRegister = Twi_ack;
            break;
        }
    }
}