...

Dependencies:   mbed-rtos mbed

Committer:
passelin
Date:
Tue Jan 28 19:36:56 2014 +0000
Revision:
3:cd25d0efe0e1
Clean code in multiple files

Who changed what in which revision?

UserRevisionLine numberNew 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 }