Full Program
Dependencies: TCPEthernetEverything
eventqueue.cpp@0:ca66419d3b8b, 2017-01-24 (annotated)
- Committer:
- lachu
- Date:
- Tue Jan 24 22:17:16 2017 +0000
- Revision:
- 0:ca66419d3b8b
working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lachu | 0:ca66419d3b8b | 1 | /* |
lachu | 0:ca66419d3b8b | 2 | * (c) Copyright 2012 EVRYTHNG Ltd London / Zurich |
lachu | 0:ca66419d3b8b | 3 | * www.evrythng.com |
lachu | 0:ca66419d3b8b | 4 | * |
lachu | 0:ca66419d3b8b | 5 | * --- DISCLAIMER --- |
lachu | 0:ca66419d3b8b | 6 | * |
lachu | 0:ca66419d3b8b | 7 | * EVRYTHNG provides this source code "as is" and without warranty of any kind, |
lachu | 0:ca66419d3b8b | 8 | * and hereby disclaims all express or implied warranties, including without |
lachu | 0:ca66419d3b8b | 9 | * limitation warranties of merchantability, fitness for a particular purpose, |
lachu | 0:ca66419d3b8b | 10 | * performance, accuracy, reliability, and non-infringement. |
lachu | 0:ca66419d3b8b | 11 | * |
lachu | 0:ca66419d3b8b | 12 | * Author: Michel Yerly |
lachu | 0:ca66419d3b8b | 13 | * |
lachu | 0:ca66419d3b8b | 14 | */ |
lachu | 0:ca66419d3b8b | 15 | #include "mbed.h" |
lachu | 0:ca66419d3b8b | 16 | #include "eventqueue.h" |
lachu | 0:ca66419d3b8b | 17 | #include <time.h> |
lachu | 0:ca66419d3b8b | 18 | |
lachu | 0:ca66419d3b8b | 19 | #include "util.h" |
lachu | 0:ca66419d3b8b | 20 | |
lachu | 0:ca66419d3b8b | 21 | void EventQueue::put(int64_t time, EventType type) |
lachu | 0:ca66419d3b8b | 22 | { |
lachu | 0:ca66419d3b8b | 23 | Event event; |
lachu | 0:ca66419d3b8b | 24 | event.time = time; |
lachu | 0:ca66419d3b8b | 25 | event.type = type; |
lachu | 0:ca66419d3b8b | 26 | queue.push(event); |
lachu | 0:ca66419d3b8b | 27 | } |
lachu | 0:ca66419d3b8b | 28 | |
lachu | 0:ca66419d3b8b | 29 | EventType EventQueue::waitNext(int64_t currentTime) |
lachu | 0:ca66419d3b8b | 30 | { |
lachu | 0:ca66419d3b8b | 31 | Event event = queue.top(); |
lachu | 0:ca66419d3b8b | 32 | queue.pop(); |
lachu | 0:ca66419d3b8b | 33 | int64_t w = event.time - currentTime; |
lachu | 0:ca66419d3b8b | 34 | if (w > 0) wait_ms(w); |
lachu | 0:ca66419d3b8b | 35 | return event.type; |
lachu | 0:ca66419d3b8b | 36 | } |
lachu | 0:ca66419d3b8b | 37 | |
lachu | 0:ca66419d3b8b | 38 | bool EventQueue::empty() |
lachu | 0:ca66419d3b8b | 39 | { |
lachu | 0:ca66419d3b8b | 40 | return queue.empty(); |
lachu | 0:ca66419d3b8b | 41 | } |
lachu | 0:ca66419d3b8b | 42 | |
lachu | 0:ca66419d3b8b | 43 | int EventQueue::size() |
lachu | 0:ca66419d3b8b | 44 | { |
lachu | 0:ca66419d3b8b | 45 | return queue.size(); |
lachu | 0:ca66419d3b8b | 46 | } |