APP Team
/
app2
...
annThread.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 | AnalogIn evenAnn1(p19); |
passelin | 3:cd25d0efe0e1 | 4 | AnalogIn evenAnn2(p20); |
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 | short Average(short values[5]) |
passelin | 3:cd25d0efe0e1 | 10 | { |
passelin | 3:cd25d0efe0e1 | 11 | return ((values[0] + values[1] + values[2] + values[3] + values[4]) /5); |
passelin | 3:cd25d0efe0e1 | 12 | } |
passelin | 3:cd25d0efe0e1 | 13 | |
passelin | 3:cd25d0efe0e1 | 14 | void samplingAnn(void const *n) |
passelin | 3:cd25d0efe0e1 | 15 | { |
passelin | 3:cd25d0efe0e1 | 16 | static short tabPot1[5] = {0, 0, 0, 0, 0}; |
passelin | 3:cd25d0efe0e1 | 17 | static short tabPot2[5] = {0, 0, 0, 0, 0}; |
passelin | 3:cd25d0efe0e1 | 18 | static short currentValue[2] = {0, 0}; |
passelin | 3:cd25d0efe0e1 | 19 | short avg[2]= {0, 0}; |
passelin | 3:cd25d0efe0e1 | 20 | static short tabPtr = 0; |
passelin | 3:cd25d0efe0e1 | 21 | static bool ready = false; |
passelin | 3:cd25d0efe0e1 | 22 | |
passelin | 3:cd25d0efe0e1 | 23 | currentValue[0] = evenAnn1.read() * 1000; |
passelin | 3:cd25d0efe0e1 | 24 | avg[0] = Average(tabPot1); |
passelin | 3:cd25d0efe0e1 | 25 | |
passelin | 3:cd25d0efe0e1 | 26 | currentValue[1] = evenAnn2.read() * 1000; |
passelin | 3:cd25d0efe0e1 | 27 | avg[1] = Average(tabPot2); |
passelin | 3:cd25d0efe0e1 | 28 | |
passelin | 3:cd25d0efe0e1 | 29 | if(ready) |
passelin | 3:cd25d0efe0e1 | 30 | { |
passelin | 3:cd25d0efe0e1 | 31 | if((currentValue[0] < (avg[0] - ANN_THRESOLD)) || (currentValue[0] > (avg[0] + ANN_THRESOLD))) |
passelin | 3:cd25d0efe0e1 | 32 | { |
passelin | 3:cd25d0efe0e1 | 33 | Event_t *event1 = new Event_t(); |
passelin | 3:cd25d0efe0e1 | 34 | event1->type = POT_1; |
passelin | 3:cd25d0efe0e1 | 35 | event1->time = time(NULL); |
passelin | 3:cd25d0efe0e1 | 36 | queue_mutex.lock(); |
passelin | 3:cd25d0efe0e1 | 37 | eventQueue.put(event1); |
passelin | 3:cd25d0efe0e1 | 38 | queue_mutex.unlock(); |
passelin | 3:cd25d0efe0e1 | 39 | } |
passelin | 3:cd25d0efe0e1 | 40 | |
passelin | 3:cd25d0efe0e1 | 41 | if((currentValue[1] < (avg[1] - ANN_THRESOLD)) || (currentValue[1] > (avg[1] + ANN_THRESOLD))) |
passelin | 3:cd25d0efe0e1 | 42 | { |
passelin | 3:cd25d0efe0e1 | 43 | Event_t *event2 = new Event_t(); |
passelin | 3:cd25d0efe0e1 | 44 | event2->type = POT_2; |
passelin | 3:cd25d0efe0e1 | 45 | event2->time = time(NULL); |
passelin | 3:cd25d0efe0e1 | 46 | queue_mutex.lock(); |
passelin | 3:cd25d0efe0e1 | 47 | eventQueue.put(event2); |
passelin | 3:cd25d0efe0e1 | 48 | queue_mutex.unlock(); |
passelin | 3:cd25d0efe0e1 | 49 | } |
passelin | 3:cd25d0efe0e1 | 50 | } |
passelin | 3:cd25d0efe0e1 | 51 | |
passelin | 3:cd25d0efe0e1 | 52 | tabPot1[tabPtr] = currentValue[0]; |
passelin | 3:cd25d0efe0e1 | 53 | tabPot2[tabPtr] = currentValue[1]; |
passelin | 3:cd25d0efe0e1 | 54 | |
passelin | 3:cd25d0efe0e1 | 55 | tabPtr++; |
passelin | 3:cd25d0efe0e1 | 56 | if(tabPtr == 5) |
passelin | 3:cd25d0efe0e1 | 57 | { |
passelin | 3:cd25d0efe0e1 | 58 | tabPtr = 0; |
passelin | 3:cd25d0efe0e1 | 59 | ready = true; |
passelin | 3:cd25d0efe0e1 | 60 | } |
passelin | 3:cd25d0efe0e1 | 61 | } |
passelin | 3:cd25d0efe0e1 | 62 | |
passelin | 3:cd25d0efe0e1 | 63 | void AnnEvent_thread(void const *args) |
passelin | 3:cd25d0efe0e1 | 64 | { |
passelin | 3:cd25d0efe0e1 | 65 | RtosTimer samplingTimer(samplingAnn, osTimerPeriodic, (void *)0); |
passelin | 3:cd25d0efe0e1 | 66 | samplingTimer.start(ANN_DELAY); |
passelin | 3:cd25d0efe0e1 | 67 | while (true){} |
passelin | 3:cd25d0efe0e1 | 68 | } |