The final project of Embedde class.

Dependencies:   C12832 LM75B ESP-call MMA7660

Committer:
pkr7098
Date:
Thu Jun 03 07:09:55 2021 +0000
Revision:
2:37756b51ccdb
Parent:
1:ed1c6618f739
The final project of Embedde class.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pkr7098 1:ed1c6618f739 1 #include "SWITCH.h"
pkr7098 1:ed1c6618f739 2
pkr7098 1:ed1c6618f739 3 InterruptIn switch2(SW2);
pkr7098 1:ed1c6618f739 4 InterruptIn switch3(SW3);
pkr7098 1:ed1c6618f739 5
pkr7098 1:ed1c6618f739 6 Semaphore semaphoreISRSwitchLeft(0, 1);
pkr7098 1:ed1c6618f739 7 Semaphore semaphoreISRSwitchRight(0, 1);
pkr7098 1:ed1c6618f739 8
pkr7098 1:ed1c6618f739 9 static bool _switchData[2] = {0, 0};
pkr7098 1:ed1c6618f739 10
pkr7098 1:ed1c6618f739 11 static void _switchBeep()
pkr7098 1:ed1c6618f739 12 {
pkr7098 1:ed1c6618f739 13 buzzerInstruction = BUZZER_INSTRUCTION_RINGING;
pkr7098 1:ed1c6618f739 14 buzzerDelay = SWITCH_DEBOUNCING_DELAY;
pkr7098 1:ed1c6618f739 15 buzzerCnt = SWITCH_BEEP_CNT;
pkr7098 1:ed1c6618f739 16 semaphoreBuzzerValues.release();
pkr7098 1:ed1c6618f739 17 semaphoreBuzzer.release();
pkr7098 1:ed1c6618f739 18 }
pkr7098 1:ed1c6618f739 19 static void _switchLeftPushed(void)
pkr7098 1:ed1c6618f739 20 {
pkr7098 1:ed1c6618f739 21 _switchData[SWITCH_LEFT] = 1;
pkr7098 1:ed1c6618f739 22 if(semaphoreBuzzerValues.try_acquire() == true) {
pkr7098 1:ed1c6618f739 23 _switchBeep();
pkr7098 1:ed1c6618f739 24 }
pkr7098 1:ed1c6618f739 25 semaphoreISRSwitchLeft.release();
pkr7098 1:ed1c6618f739 26 }
pkr7098 1:ed1c6618f739 27 static void _switchRightPushed(void)
pkr7098 1:ed1c6618f739 28 {
pkr7098 1:ed1c6618f739 29 _switchData[SWITCH_RIGHT] = 1;
pkr7098 1:ed1c6618f739 30 if(semaphoreBuzzerValues.try_acquire() == true) {
pkr7098 1:ed1c6618f739 31 _switchBeep();
pkr7098 1:ed1c6618f739 32 }
pkr7098 1:ed1c6618f739 33 semaphoreISRSwitchRight.release();
pkr7098 1:ed1c6618f739 34 }
pkr7098 1:ed1c6618f739 35
pkr7098 1:ed1c6618f739 36 static void _switchLeftReleased(void)
pkr7098 1:ed1c6618f739 37 {
pkr7098 1:ed1c6618f739 38 _switchData[SWITCH_LEFT] = 0;
pkr7098 1:ed1c6618f739 39 semaphoreISRSwitchLeft.release();
pkr7098 1:ed1c6618f739 40 }
pkr7098 1:ed1c6618f739 41
pkr7098 1:ed1c6618f739 42 static void _switchRightReleased(void)
pkr7098 1:ed1c6618f739 43 {
pkr7098 1:ed1c6618f739 44 _switchData[SWITCH_RIGHT] = 0;
pkr7098 1:ed1c6618f739 45 semaphoreISRSwitchRight.release();
pkr7098 1:ed1c6618f739 46 }
pkr7098 1:ed1c6618f739 47
pkr7098 1:ed1c6618f739 48 // ====================================================================================
pkr7098 1:ed1c6618f739 49
pkr7098 1:ed1c6618f739 50 void switchInit(void)
pkr7098 1:ed1c6618f739 51 {
pkr7098 1:ed1c6618f739 52 printf("Init switches\r\n");
pkr7098 1:ed1c6618f739 53 switch3.rise(_switchLeftReleased);
pkr7098 1:ed1c6618f739 54 switch2.rise(_switchRightReleased);
pkr7098 1:ed1c6618f739 55 switch3.fall(_switchLeftPushed);
pkr7098 1:ed1c6618f739 56 switch2.fall(_switchRightPushed);
pkr7098 1:ed1c6618f739 57 }
pkr7098 1:ed1c6618f739 58
pkr7098 1:ed1c6618f739 59 bool switchValue(int dir)
pkr7098 1:ed1c6618f739 60 {
pkr7098 1:ed1c6618f739 61 return _switchData[dir];
pkr7098 1:ed1c6618f739 62 }
pkr7098 1:ed1c6618f739 63
pkr7098 1:ed1c6618f739 64 bool switchValueWait(int dir)
pkr7098 1:ed1c6618f739 65 {
pkr7098 1:ed1c6618f739 66 if(dir == SWITCH_LEFT) {
pkr7098 1:ed1c6618f739 67 semaphoreISRSwitchLeft.acquire();
pkr7098 1:ed1c6618f739 68 } else {
pkr7098 1:ed1c6618f739 69 semaphoreISRSwitchRight.acquire();
pkr7098 1:ed1c6618f739 70 }
pkr7098 1:ed1c6618f739 71 printf("Switch%d read\r\n",dir);
pkr7098 1:ed1c6618f739 72 return _switchData[dir];
pkr7098 1:ed1c6618f739 73 }