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 "ALARM.h"
pkr7098 1:ed1c6618f739 2
pkr7098 1:ed1c6618f739 3 short alarmHour = 0;
pkr7098 1:ed1c6618f739 4 short alarmMinute = 12;
pkr7098 1:ed1c6618f739 5 short alarmSecond = 00;
pkr7098 1:ed1c6618f739 6 bool alarmState = false;
pkr7098 1:ed1c6618f739 7
pkr7098 1:ed1c6618f739 8 Semaphore semaphoreAlarmData(0, 1);
pkr7098 1:ed1c6618f739 9 Thread _threadAlarm[2];
pkr7098 1:ed1c6618f739 10 void _alarmGetDataFromHTML(void)
pkr7098 1:ed1c6618f739 11 {
pkr7098 1:ed1c6618f739 12 while(1) {
pkr7098 1:ed1c6618f739 13 semaphoreWifiHasBuffer.acquire();
pkr7098 1:ed1c6618f739 14 PC.printf("%s\r\n", wifiReceivedBuffer);
pkr7098 1:ed1c6618f739 15 alarmHour = 10 * (wifiReceivedBuffer[1] - '0') + (wifiReceivedBuffer[2] - '0');
pkr7098 1:ed1c6618f739 16 alarmMinute = 10 * (wifiReceivedBuffer[6] - '0') + (wifiReceivedBuffer[7] - '0');
pkr7098 1:ed1c6618f739 17 alarmSecond = 10 * (wifiReceivedBuffer[11] - '0') + (wifiReceivedBuffer[12] - '0');
pkr7098 1:ed1c6618f739 18
pkr7098 1:ed1c6618f739 19 if((0 <= alarmHour && alarmHour < 24) &&
pkr7098 1:ed1c6618f739 20 (0 <= alarmMinute && alarmMinute < 60) &&
pkr7098 1:ed1c6618f739 21 (0 <= alarmSecond && alarmSecond < 60)) {
pkr7098 1:ed1c6618f739 22 alarmState = true;
pkr7098 1:ed1c6618f739 23 } else {
pkr7098 1:ed1c6618f739 24 alarmState = false;
pkr7098 1:ed1c6618f739 25 }
pkr7098 1:ed1c6618f739 26 semaphoreAlarmData.release();
pkr7098 1:ed1c6618f739 27 buzzerRinging(4, 50);
pkr7098 1:ed1c6618f739 28 }
pkr7098 1:ed1c6618f739 29 }
pkr7098 1:ed1c6618f739 30
pkr7098 1:ed1c6618f739 31 void _alarmDoAlert(void)
pkr7098 1:ed1c6618f739 32 {
pkr7098 1:ed1c6618f739 33 short _alarmHour, _timerHour;
pkr7098 1:ed1c6618f739 34 short _alarmMinute, _timerMinute;
pkr7098 1:ed1c6618f739 35 short _alarmSecond, _timerSecond;
pkr7098 1:ed1c6618f739 36 bool _alarmState;
pkr7098 1:ed1c6618f739 37 while(1) {
pkr7098 1:ed1c6618f739 38 semaphoreAlarmData.acquire();
pkr7098 1:ed1c6618f739 39 _alarmHour = alarmHour;
pkr7098 1:ed1c6618f739 40 _alarmMinute = alarmMinute;
pkr7098 1:ed1c6618f739 41 _alarmSecond = alarmSecond;
pkr7098 1:ed1c6618f739 42 _alarmState = alarmState;
pkr7098 1:ed1c6618f739 43 semaphoreAlarmData.release();
pkr7098 1:ed1c6618f739 44
pkr7098 1:ed1c6618f739 45 semaphoreTimer.acquire();
pkr7098 1:ed1c6618f739 46 _timerHour = timerHour;
pkr7098 1:ed1c6618f739 47 _timerMinute = timerMinute;
pkr7098 1:ed1c6618f739 48 _timerSecond = timerSecond;
pkr7098 1:ed1c6618f739 49 semaphoreTimer.release();
pkr7098 1:ed1c6618f739 50
pkr7098 1:ed1c6618f739 51 if(_alarmState == true) {
pkr7098 1:ed1c6618f739 52 if(_alarmHour == _timerHour) {
pkr7098 1:ed1c6618f739 53 if(_alarmMinute == _timerMinute) {
pkr7098 1:ed1c6618f739 54 if(_alarmSecond == _timerSecond) {
pkr7098 1:ed1c6618f739 55 bellSingleAlert(1000 * 30);
pkr7098 1:ed1c6618f739 56 }
pkr7098 1:ed1c6618f739 57 }
pkr7098 1:ed1c6618f739 58 }
pkr7098 1:ed1c6618f739 59 }
pkr7098 1:ed1c6618f739 60 }
pkr7098 1:ed1c6618f739 61 }
pkr7098 1:ed1c6618f739 62
pkr7098 1:ed1c6618f739 63 void alarmInit(void)
pkr7098 1:ed1c6618f739 64 {
pkr7098 1:ed1c6618f739 65 _threadAlarm[0].start(_alarmGetDataFromHTML);
pkr7098 1:ed1c6618f739 66 _threadAlarm[1].start(_alarmDoAlert);
pkr7098 1:ed1c6618f739 67 semaphoreAlarmData.release();
pkr7098 1:ed1c6618f739 68 }