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