The final project of Embedde class.

Dependencies:   C12832 LM75B ESP-call MMA7660

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ALARM.cpp Source File

ALARM.cpp

00001 #include "ALARM.h"
00002 
00003 short alarmHour = 0;
00004 short alarmMinute = 12;
00005 short alarmSecond = 00;
00006 bool alarmState = false;
00007 
00008 Semaphore semaphoreAlarmData(0, 1);
00009 Thread _threadAlarm[2];
00010 void _alarmGetDataFromHTML(void)
00011 {
00012     while(1) {
00013         semaphoreWifiHasBuffer.acquire();
00014         PC.printf("%s\r\n", wifiReceivedBuffer);
00015         alarmHour = 10 * (wifiReceivedBuffer[1] - '0') + (wifiReceivedBuffer[2] - '0');
00016         alarmMinute = 10 * (wifiReceivedBuffer[6] - '0') + (wifiReceivedBuffer[7] - '0');
00017         alarmSecond = 10 * (wifiReceivedBuffer[11] - '0') + (wifiReceivedBuffer[12] - '0');
00018 
00019         if((0 <= alarmHour && alarmHour < 24) &&
00020                 (0 <= alarmMinute && alarmMinute < 60) &&
00021                 (0 <= alarmSecond && alarmSecond < 60)) {
00022             alarmState = true;
00023         } else {
00024             alarmState = false;
00025         }
00026         semaphoreAlarmData.release();
00027         buzzerRinging(4, 50);
00028     }
00029 }
00030 
00031 void _alarmDoAlert(void)
00032 {
00033     short _alarmHour, _timerHour;
00034     short _alarmMinute, _timerMinute;
00035     short _alarmSecond, _timerSecond;
00036     bool _alarmState;
00037     while(1) {
00038         semaphoreAlarmData.acquire();
00039         _alarmHour = alarmHour;
00040         _alarmMinute = alarmMinute;
00041         _alarmSecond = alarmSecond;
00042         _alarmState = alarmState;
00043         semaphoreAlarmData.release();
00044 
00045         semaphoreTimer.acquire();
00046         _timerHour = timerHour;
00047         _timerMinute = timerMinute;
00048         _timerSecond = timerSecond;
00049         semaphoreTimer.release();
00050 
00051         if(_alarmState == true) {
00052             if(_alarmHour == _timerHour) {
00053                 if(_alarmMinute == _timerMinute) {
00054                     if(_alarmSecond == _timerSecond) {
00055                         bellSingleAlert(1000 * 30);
00056                     }
00057                 }
00058             }
00059         }
00060     }
00061 }
00062 
00063 void alarmInit(void)
00064 {
00065     _threadAlarm[0].start(_alarmGetDataFromHTML);
00066     _threadAlarm[1].start(_alarmDoAlert);
00067     semaphoreAlarmData.release();
00068 }