APP Team
/
app2
...
numThread.cpp@5:3b94e16f0675, 2014-01-28 (annotated)
- Committer:
- trixrabbit
- Date:
- Tue Jan 28 20:29:36 2014 +0000
- Revision:
- 5:3b94e16f0675
- Parent:
- 3:cd25d0efe0e1
update priority
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
passelin | 3:cd25d0efe0e1 | 1 | #include "main.h" |
passelin | 3:cd25d0efe0e1 | 2 | |
passelin | 3:cd25d0efe0e1 | 3 | DigitalIn evenNum1(p15); |
passelin | 3:cd25d0efe0e1 | 4 | DigitalIn evenNum2(p16); |
passelin | 3:cd25d0efe0e1 | 5 | |
passelin | 3:cd25d0efe0e1 | 6 | extern Queue<Event_t, 16> eventQueue; |
passelin | 3:cd25d0efe0e1 | 7 | extern Mutex queue_mutex; |
passelin | 3:cd25d0efe0e1 | 8 | |
passelin | 3:cd25d0efe0e1 | 9 | void samplingNum(void const *n) |
passelin | 3:cd25d0efe0e1 | 10 | { |
passelin | 3:cd25d0efe0e1 | 11 | static bool stateChanged[2] = {false, false}; |
passelin | 3:cd25d0efe0e1 | 12 | static bool value[2] = {1, 1}; |
passelin | 3:cd25d0efe0e1 | 13 | |
passelin | 3:cd25d0efe0e1 | 14 | stateChanged[0] = (value[0] != evenNum1.read()); |
passelin | 3:cd25d0efe0e1 | 15 | stateChanged[1] = (value[1] != evenNum2.read()); |
passelin | 3:cd25d0efe0e1 | 16 | |
passelin | 3:cd25d0efe0e1 | 17 | if((stateChanged[0] == true) || (stateChanged[1] == true)) |
passelin | 3:cd25d0efe0e1 | 18 | { |
passelin | 3:cd25d0efe0e1 | 19 | wait_ms(50); |
passelin | 3:cd25d0efe0e1 | 20 | stateChanged[0] = (value[0] != evenNum1.read()); |
passelin | 3:cd25d0efe0e1 | 21 | stateChanged[1] = (value[1] != evenNum2.read()); |
passelin | 3:cd25d0efe0e1 | 22 | |
passelin | 3:cd25d0efe0e1 | 23 | if(stateChanged[0]) |
passelin | 3:cd25d0efe0e1 | 24 | { |
passelin | 3:cd25d0efe0e1 | 25 | Event_t *event1 = new Event_t(); |
passelin | 3:cd25d0efe0e1 | 26 | event1->type = SWITCH_1; |
passelin | 3:cd25d0efe0e1 | 27 | event1->time = time(NULL); |
passelin | 3:cd25d0efe0e1 | 28 | queue_mutex.lock(); |
passelin | 3:cd25d0efe0e1 | 29 | eventQueue.put(event1); |
passelin | 3:cd25d0efe0e1 | 30 | queue_mutex.unlock(); |
passelin | 3:cd25d0efe0e1 | 31 | value[0] = !value[0]; |
passelin | 3:cd25d0efe0e1 | 32 | } |
passelin | 3:cd25d0efe0e1 | 33 | if(stateChanged[1]) |
passelin | 3:cd25d0efe0e1 | 34 | { |
passelin | 3:cd25d0efe0e1 | 35 | Event_t *event2 = new Event_t(); |
passelin | 3:cd25d0efe0e1 | 36 | event2->type = SWITCH_2; |
passelin | 3:cd25d0efe0e1 | 37 | event2->time = time(NULL); |
passelin | 3:cd25d0efe0e1 | 38 | queue_mutex.lock(); |
passelin | 3:cd25d0efe0e1 | 39 | eventQueue.put(event2); |
passelin | 3:cd25d0efe0e1 | 40 | queue_mutex.unlock(); |
passelin | 3:cd25d0efe0e1 | 41 | value[1] = !value[1]; |
passelin | 3:cd25d0efe0e1 | 42 | } |
passelin | 3:cd25d0efe0e1 | 43 | } |
passelin | 3:cd25d0efe0e1 | 44 | } |
passelin | 3:cd25d0efe0e1 | 45 | |
passelin | 3:cd25d0efe0e1 | 46 | void NumEvent_thread(void const *args) |
passelin | 3:cd25d0efe0e1 | 47 | { |
passelin | 3:cd25d0efe0e1 | 48 | RtosTimer samplingTimer(samplingNum, osTimerPeriodic, (void *)0); |
passelin | 3:cd25d0efe0e1 | 49 | samplingTimer.start(NUM_DELAY); |
passelin | 3:cd25d0efe0e1 | 50 | while (true){} |
passelin | 3:cd25d0efe0e1 | 51 | } |