コード例 #1
0
ファイル: test_queue.c プロジェクト: etosha/fslib
void test_queue_enque() {
    struct _queue * q = queue_create(sizeof(int));

    int i, size = 3;
    int items[3] = {0, 1, 2};
    int item;

    for (i=0; i<size; ++i) {
        assert( q->n_items == i );
        queue_enque(q, &items[i]);
    }
    
    queue_deque(q, &item);
    assert ( item == 0);
    assert ( q->n_items == 2);
    queue_deque(q, &item);
    assert ( item == 1);
    assert ( q->n_items == 1);
    queue_deque(q, &item);
    assert ( item == 2);
    assert ( q->n_items == 0);
    assert ( NULL == queue_deque(q, &item) );
    assert ( NULL == queue_deque(q, &item) );

    queue_remove(q);
}
コード例 #2
0
void queue_test1() {
	Queue queue;
	queue_init(&queue, sizeof(int));
	
	for (int i = 0; i < 10; i++) {
		queue_enque(&queue, &i);
	}

	for (int i = 0; i < 5; i++) {
		int item;
		queue_deque(&queue, &item);
		printf("%d ", item);
	}
	putchar('\n');

	for (int i = 15; i < 30; i++) {
		queue_enque(&queue, &i);
	}

	for (int i = 0; i < 15; i++) {
		int item;
		queue_deque(&queue, &item);
		printf("%d ", item);
	}
	putchar('\n');

	queue_destroy(&queue);
}
コード例 #3
0
ファイル: range.cpp プロジェクト: AndyA/auton
void loop() {
  queue_event e;

  if (queue_deque(&q, &e))
    send_event(&e);

  // queue_deque disables interrupts - so we need to make sure it
  // isn't called all the time.
  delayMicroseconds(250);
}
コード例 #4
0
ファイル: range.cpp プロジェクト: AndyA/auton
void calibration_loop() {
  queue_event e;
  uint8_t ls = 0;
  for (int sp = 0; sp <= 180; sp++) {
    uint32_t start = millis();
    uint8_t revs = 0;
    set_speed(sp);
    while (revs < 6) {
      if (millis() - start > 10000) break;
      delayMicroseconds(250);
      if (queue_deque(&q, &e)) {
        send_event(&e);
        if (e.type == QT_INDEX) {
          revs++;
          ls = !ls;
          digitalWrite(LED, ls);
        }
      }
    }
  }
}