示例#1
0
/**
  * @brief  pop_buffer_queue
  *         dequeues the circular buffer
  * @param  *buffer : pointer to event buffer
  * @retval None
  */ 
wifi_event_TypeDef * pop_eventbuffer_queue(wifi_event_buffer *buffer) 
{
  int bufsize;
  uint32_t index;

  if (event_empty(buffer)) 
    {
      //printf("\r\Event Buffer Empty!!\r\n");
      return NULL;
    } 
  else
    {
      /* First in First Out*/
      index=buffer->start/ELEMENT_SIZE;
      element.data_length = buffer->element[index].data_length;
      element.socket_id = buffer->element[index].socket_id;
      element.server_id = buffer->element[index].server_id;
      element.wind64_pending_packet_no = buffer->element[index].wind64_pending_packet_no;
      element.wind = buffer->element[index].wind;
      element.event = buffer->element[index].event;
      buffer->start = buffer->start + ELEMENT_SIZE;
      buffer->count--;

      bufsize = (buffer->size);
      buffer->start %= bufsize;
      return &element;
    }
}
示例#2
0
static void event_test()
{
	// test vectors
	const int add[] = {0,2,3,10,6 ,4,0,16,0 ,16,16,16,16,16,16,0};
	const int get[] = {2,0,6,0 ,16,0,4,0 ,16,0,0,0,0,0,0,16};

	event_clear();
	for (int i=0;i<sizeof(add)/sizeof(int);i++)
	{
		printf("round %d:+%d-%d:",i,add[i],get[i]);
		for (int j=0;j<add[i];j++) event_push((event){.raw=i});
		for (int j=0;j<get[i];j++) printf("%2d ",event_get(i));
		//printf("in: %p out:%p start:%p end:%p",evt_in, evt_out, QUEUE_START,QUEUE_END);
		if (event_full()) printf(" - now full ");
		if (event_empty()) printf("- now empty ");
		printf("\n");
	}