Beispiel #1
0
void uartbuf_getframe(UINT channel, unsigned char *f, UINT flen, UINT foffset) {

   UINT i;
   unsigned char ch;

   i = 0;
   while (i < (foffset - 1)) {
      cbuffer_read(&Uart[channel], &ch);
      i++;
   }

   i = 0;
   while (i < flen) {
      cbuffer_read(&Uart[channel], &ch);
      f[i++] = ch;
   }

   f[flen] = '\0';
}
Beispiel #2
0
/*
 * Files are queued in a list
 * Remove one file from the list
 * The file in head is removed
 */
static FileInfo* file_agent_finish_file(void)
{
    ElemType file;

    if(cbuffer_read(file_list, &file))
    {
        return NULL;
    }

    return (FileInfo*) file;
}
Beispiel #3
0
static char* test_cbuffer_read(void) {
  CircularBuffer* mybuf = cbuffer_new();
  Buffer* readout = buffer_new(NULL, 11);
  uint32_t test_data[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  cbuffer_append(mybuf, test_data, 11);
  cbuffer_read(mybuf, readout->data, 11);
  mu_assert_eq("size", readout->size, 11);
  mu_assert_eq("content", memcmp(readout->data, test_data, 11 * sizeof(uint32_t)), 0);
  // if we ask for too much it cbuffer gives us what it has.
  Buffer* readout2 = buffer_new(NULL, 30);
  int actually_read = cbuffer_read(mybuf, readout2->data, 30);
  mu_assert_eq("size2", actually_read, 11);
  mu_assert_eq("content2", memcmp(readout2->data, test_data, 11 * sizeof(uint32_t)), 0);

  cbuffer_free(mybuf);
  buffer_free(readout);
  buffer_free(readout2);

  return 0;
}
Beispiel #4
0
void uartbuf_flush(UINT channel) {

   unsigned char ch;

   if ((channel == SLAVE_TX) || (channel == SLAVE_HPTX)) {

      while (!cbuffer_isempty(&Uart[channel])) {
         cbuffer_read(&Uart[channel], &ch);
#ifdef DEBUG
         printf("(0x%03X) - ", ch);
#else
         while (BusyUSART());
         putcUSART(ch);
#endif
      }
   }
}
Beispiel #5
0
static char* test_cbuffer_read_wraps(void) {
  CircularBuffer* mybuf = cbuffer_new();
  // put us at the end of the buffer
  mybuf->pos = IO_BUFFER_SIZE - 5;
  mybuf->tail = IO_BUFFER_SIZE - 5;
  uint32_t test_data[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  cbuffer_append(mybuf, test_data, 11);
  Buffer* readout = buffer_new(NULL, 11);
  cbuffer_read(mybuf, readout->data, 11);
  mu_assert_eq("size", readout->size, 11);
  mu_assert_eq("content", memcmp(readout->data, test_data, 11 * sizeof(uint32_t)), 0);

  cbuffer_free(mybuf);
  buffer_free(readout);

  return 0;
}
Beispiel #6
0
static char* test_cbuffer_delete_front_wraps(void) {
  CircularBuffer* mybuf = cbuffer_new();
  uint32_t test_data[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  // put us at the end of the buffer
  mybuf->pos = IO_BUFFER_SIZE - 5;
  mybuf->tail = IO_BUFFER_SIZE - 5;
  cbuffer_append(mybuf, test_data, 11);
  mu_assert_eq("content", memcmp(&(mybuf->data[mybuf->pos]), 
        test_data, 5 * sizeof(uint32_t)), 0);
  int deleted = cbuffer_deletefront(mybuf, 5);
  mu_assert_eq("deleted", deleted, 5);
  mu_assert_eq("pos", mybuf->pos, 0);
  mu_assert_eq("size", cbuffer_size(mybuf), 6);

  mu_assert_eq("item0", mybuf->data[mybuf->pos], 5);
  mu_assert_eq("item1", mybuf->data[mybuf->pos+1], 6);
  mu_assert_eq("item2", mybuf->data[mybuf->pos+2], 7);

  mu_assert_eq("remaining content in cbuffer", memcmp(
        &(mybuf->data[0]), 
        test_data + 5, 6 * sizeof(uint32_t)), 0);

  Buffer* readout = buffer_new(NULL, 6);
  cbuffer_read(mybuf, readout->data, 6);
  mu_assert_eq("remaining content", memcmp(
        readout->data, 
        (test_data + 5), 
        6 * sizeof(uint32_t)), 0);

  // if we ask to delete everything, just return what was actually deleted.
  int deleted_just_to_end = cbuffer_deletefront(mybuf, 100);
  mu_assert_eq("deleted just to end", deleted_just_to_end, 6);
  mu_assert_eq("pos2", mybuf->pos, 6);
  mu_assert_eq("size2", cbuffer_size(mybuf), 0);

  cbuffer_free(mybuf);
  buffer_free(readout);

  return 0;
}