The final project of Embedde class.
Dependencies: C12832 LM75B ESP-call MMA7660
SWITCH/SWITCH.cpp@2:37756b51ccdb, 2021-06-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |