...

Dependencies:   mbed-rtos mbed

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?

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