The final project of Embedde class.

Dependencies:   C12832 LM75B ESP-call MMA7660

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "LM75B.h"
00002 #include "MMA7660.h"
00003 
00004 #include "APPLICATION.h"
00005 #include "PAGE.h"
00006 #include "WEB.h"
00007 
00008 #include "ESP-call.h"
00009 
00010 // Values define =========================================================================================================
00011 
00012 LM75B temp(D14, D15);
00013 Thread _application;
00014 char ledState[11] = "Device";
00015 char ledColor[11] = " ";
00016 
00017 // Functions prototype =========================================================================================================
00018 
00019 void ledChangeColor(unsigned short i);
00020 void wifiInitValues(void);
00021 void application(void);
00022 
00023 // Main function =========================================================================================================
00024 
00025 int main()
00026 {
00027     applicationInit();
00028     lcdShowInitDevicePage(1);
00029 
00030 
00031     lcdShowTryToConnectPage(1);
00032     lcdShowLoadingSimbolStart(0, 20);
00033     wifiConnectToAP();
00034     wifiGetIpAddress();
00035     lcdShowLoadingSimbolTerminate();
00036 
00037     _lcd.cls();
00038     _lcd.locate(0, 0);
00039     _lcd.printf("Generating web site");
00040     lcdShowMyIPPage(0);
00041     lcdShowLoadingSimbolStart(0, 20);
00042     wifiInitValues();
00043     webCreateHtmlDoc();
00044     webDisplayWebsite();
00045     wifiInitServer();
00046     timerInit();
00047     lcdShowLoadingSimbolTerminate();
00048 
00049     _lcd.cls();
00050     _application.start(application);
00051 
00052     wifiInitReceiveData();
00053     while(true) {
00054     }
00055 
00056 }
00057 
00058 // Functions define =========================================================================================================
00059 
00060 void application(void)
00061 {
00062     while (true) {
00063         float temperature = temp.read();
00064         lcdShowMyIPPage(0);
00065 
00066         semaphoreTimer.acquire();
00067         lcdShowDaytime(0);
00068         wifiGenerateValueI("timeHour", timerHour);
00069         wifiGenerateValueI("timeMinute", timerMinute);
00070         wifiGenerateValueI("timeSecond", timerSecond);
00071         semaphoreTimer.release();
00072 
00073         semaphoreAlarmData.acquire();
00074         lcdShowAlerttime(0);
00075         wifiGenerateValueI("alarmHour", alarmHour);
00076         wifiGenerateValueI("alarmMinute", alarmMinute);
00077         wifiGenerateValueI("alarmSecond", alarmSecond);
00078         semaphoreAlarmData.release();
00079 
00080         wifiGenerateValueF("temperature", temperature);
00081         wifiGenerateValueS("temperatureUnit", "C");
00082 
00083         wifiGenerateValueS("ledState", ledState);
00084         wifiGenerateValueS("ledColor", ledColor);
00085 
00086         semaphoreModify.acquire();
00087         _lcd.locate(0, 0);
00088         if(MODE_MODIFY_TIME == UNABLE_TO_MODIFY_TIME) {
00089             semaphoreModify.release();
00090             _lcd.characterI(0, 0, 'T');
00091             wifiGenerateValueS("timeState", "Fixed");
00092         } else {
00093             semaphoreModify.release();
00094             _lcd.putc('T');
00095             wifiGenerateValueS("timeState", "Changeable");
00096         }
00097 
00098 
00099         semaphoreAlarmData.acquire();
00100         _lcd.locate(9, 0);
00101         if(alarmState == ALARM_ENABLED) {
00102             semaphoreAlarmData.release();
00103             _lcd.putc('A');
00104             wifiGenerateValueS("alarmState", "Enabled");
00105         } else {
00106             semaphoreAlarmData.release();
00107             _lcd.characterI(9, 0, 'A');
00108             wifiGenerateValueS("alarmState", "Disabled");
00109         }
00110         semaphoreAlarmData.release();
00111         ledChangeColor(potValueU16(POT_LEFT));
00112         _lcd.locate(60, 0);
00113         _lcd.printf("%.2fC", temperature);
00114         thread_sleep_for(100);
00115     }
00116 }
00117 
00118 void wifiInitValues(void)
00119 {
00120     wifiGenerateValueS("timeState", " ");
00121     wifiGenerateValueI("timeHour", 0);
00122     wifiGenerateValueI("timeMinute", 12);
00123     wifiGenerateValueI("timeSecond", 20);
00124 
00125     wifiGenerateValueS("alarmState", " ");
00126     wifiGenerateValueI("alarmHour", 0);
00127     wifiGenerateValueI("alarmMinute", 12);
00128     wifiGenerateValueI("alarmSecond", 20);
00129 
00130     wifiGenerateValueF("temperature", 0.0);
00131     wifiGenerateValueS("temperatureUnit", "C");
00132 
00133     wifiGenerateValueS("ledState", " ");
00134     wifiGenerateValueS("ledColor", " ");
00135 }
00136 
00137 
00138 void ledChangeColor(unsigned short i)
00139 {
00140     strcpy(ledState, "Device");
00141     if(0 <= i && i < 0xFFFF / 8) {
00142         ledSetColor(0, 0, 0);
00143         strcpy(ledColor, "Black");
00144     } else if(0xFFFF / 8 <= i && i < (0xFFFF / 8) * 2) {
00145         ledSetColor(1, 0, 0);
00146         strcpy(ledColor, "Red");
00147     } else if((0xFFFF / 8) * 2 <= i && i < (0xFFFF / 8) * 3) {
00148         ledSetColor(0, 1, 0);
00149         strcpy(ledColor, "Lime");
00150     } else if((0xFFFF / 8) * 3 <= i && i < (0xFFFF / 8) * 4) {
00151         ledSetColor(0, 0, 1);
00152         strcpy(ledColor, "Blue");
00153     } else if((0xFFFF / 8) * 4 <= i && i < (0xFFFF / 8) * 5) {
00154         ledSetColor(1, 1, 0);
00155         strcpy(ledColor, "Yellow");
00156     } else if((0xFFFF / 8) * 5 <= i && i < (0xFFFF / 8) * 6) {
00157         ledSetColor(0, 1, 1);
00158         strcpy(ledColor, "Cyan");
00159     } else if((0xFFFF / 8) * 6 <= i && i < (0xFFFF / 8) * 7) {
00160         ledSetColor(1, 0, 1);
00161         strcpy(ledColor, "Fuchsia");
00162     } else if((0xFFFF / 8) * 7 <= i && i <= (0xFFFF / 8) * 8) {
00163         ledSetColor(1, 1, 1);
00164         strcpy(ledColor, "White");
00165     }
00166 }
00167 
00168