• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <stdio.h>
17 #include <unistd.h>
18 #include <iot_pwm.h>
19 #include "ohos_init.h"
20 #include "cmsis_os2.h"
21 #include "iot_i2c.h"
22 #include "app_demo_environment.h"
23 #include "app_demo_multi_sample.h"
24 #include "app_demo_aht20.h"
25 #include "app_demo_mq2.h"
26 #include "app_demo_config.h"
27 
28 static unsigned short g_hi3861BoardLedTest = 0;
29 
30 #define FLAG_TRUE   (1)
31 #define FLAG_FALSE  (0)
32 
ReturnAllModeEnumSample(void)33 void ReturnAllModeEnumSample(void)
34 {
35     static unsigned char currentMode = 0;
36     currentMode = GetKeyStatus(CURRENT_MODE);
37     while (1) {
38         if (currentMode != GetKeyStatus(CURRENT_MODE)) {
39             currentMode = GetKeyStatus(CURRENT_MODE);
40             break;
41         }
42         TaskMsleep(SLEEP_1_MS);
43     }
44 }
45 
46 /* environment menu display */
ShowAllEnvironmentValue(void)47 void ShowAllEnvironmentValue(void)
48 {
49     unsigned short combustibleMainMenuGasValueStr[10] = {0};
50     unsigned short temperatureStr[6] = {0};
51     unsigned short humidityStr[6] = {0};
52     static unsigned char currentMode = 0;
53 
54     currentMode = GetKeyStatus(CURRENT_MODE);
55     IoTI2cInit(0, HI_I2C_IDX_BAUDRATE); /* baudrate: 400000 */
56     IoTI2cSetBaudrate(0, HI_I2C_IDX_BAUDRATE);
57     while (1) {
58         (void)GetAht20SensorData();
59         Mq2GetData();
60         (void*)FloatToString(GetAhtSensorValue(AHT_TEMPERATURE), temperatureStr);
61         (void*)FloatToString(GetAhtSensorValue(AHT_HUMIDITY), humidityStr);
62         (void*)FloatToString(GetCombuSensorValue(), combustibleMainMenuGasValueStr);
63 
64         OledShowStr(OLED_X_POSITION_18, OLED_Y_POSITION_5,
65                     temperatureStr, OLED_DISPLAY_STRING_TYPE_1); /* 18, 5, xx, 1 */
66 
67         OledShowStr(OLED_X_POSITION_81, OLED_Y_POSITION_5,
68                     humidityStr, OLED_DISPLAY_STRING_TYPE_1); /* 18, 5, xx, 1 */
69 
70         if (!GetCombuSensorValue()) {
71             OledShowStr(OLED_X_POSITION_48, OLED_Y_POSITION_6,
72                         "0.00    ", OLED_DISPLAY_STRING_TYPE_1); /* 48, 6, x.xx, 1 */
73         } else {
74             OledShowStr(OLED_X_POSITION_48, OLED_Y_POSITION_6,
75                         combustibleMainMenuGasValueStr, OLED_DISPLAY_STRING_TYPE_1); /* 48, 6, x.xx, 1 */
76         }
77         if (currentMode != GetKeyStatus(CURRENT_MODE)) {
78             currentMode = GetKeyStatus(CURRENT_MODE);
79             break;
80         }
81         TaskMsleep(SLEEP_100_MS); // 10ms
82     }
83 }
84 
EnvironmentAllMode(void)85 void EnvironmentAllMode(void)
86 {
87     OledFillScreen(OLED_CLEAN_SCREEN); // clean screen
88     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_0,
89                 "WiFi-AP  ON  U:1", OLED_DISPLAY_STRING_TYPE_1); /* 0, 0, x.xx, 1 */
90     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_1,
91                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 1, x.xx, 1 */
92     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_2,
93                 "  Environment   ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 2, x.xx, 1 */
94     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_3,
95                 "  Monitoring    ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 3, x.xx, 1 */
96     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_4,
97                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 4, x.xx, 1 */
98     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_5,
99                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 4, x.xx, 1 */
100     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_5,
101                 "T:    C H:    % ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 5, x.xx, 1 */
102     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_6,
103                 "C_Gas:00        ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 6, x.xx, 1 */
104     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_7,
105                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 7, x.xx, 1 */
106     ShowAllEnvironmentValue();
107 }
108 
EnvironmentTemperatureMode(void)109 void EnvironmentTemperatureMode(void)
110 {
111     OledFillScreen(OLED_CLEAN_SCREEN); // clean screen
112     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_0,
113                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 0, x.xx, 1 */
114     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_1,
115                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 1, x.xx, 1 */
116     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_2,
117                 "  Temperature   ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 2, x.xx, 1 */
118     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_3,
119                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 3, x.xx, 1 */
120     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_4,
121                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 4, x.xx, 1 */
122     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_5,
123                 "   T:    C      ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 5, x.xx, 1 */
124     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_6,
125                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 6, x.xx, 1 */
126     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_7,
127                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 7, x.xx, 1 */
128     ShowTemperatureValue();
129 }
130 
EnvironmentHumidityMode(void)131 void EnvironmentHumidityMode(void)
132 {
133     OledFillScreen(OLED_CLEAN_SCREEN); // clean screen
134     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_0,
135                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 0, x.xx, 1 */
136     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_1,
137                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 1, x.xx, 1 */
138     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_2,
139                 "    Humidity    ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 2, x.xx, 1 */
140     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_3,
141                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 3, x.xx, 1 */
142     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_4,
143                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 4, x.xx, 1 */
144     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_5,
145                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 4, x.xx, 1 */
146     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_5,
147                 "     H:    %    ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 5, x.xx, 1 */
148     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_6,
149                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 6, x.xx, 1 */
150     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_7,
151                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 7, x.xx, 1 */
152     ShowHumidityValue();
153 }
154 
EnvironmentCombustibleGasMode(void)155 void EnvironmentCombustibleGasMode(void)
156 {
157     OledFillScreen(OLED_CLEAN_SCREEN); // clean screen
158     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_0,
159                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 0, x.xx, 1 */
160     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_1,
161                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 1, x.xx, 1 */
162     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_2,
163                 "     C_Gas      ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 2, x.xx, 1 */
164     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_3,
165                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 3, x.xx, 1 */
166     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_4,
167                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 4, x.xx, 1 */
168     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_5,
169                 "  C_Gas:        ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 5, x.xx, 1 */
170     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_6,
171                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 6, x.xx, 1 */
172     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_7,
173                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 7, x.xx, 1 */
174     ShowCombustibleGasValue();
175 }
176 
EnvironmentReturnMode(void)177 void EnvironmentReturnMode(void)
178 {
179     OledFillScreen(OLED_CLEAN_SCREEN); // clean screen
180     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_0,
181                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 0, x.xx, 1 */
182     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_1,
183                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 1, x.xx, 1 */
184     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_2,
185                 "Return Menu     ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 2, x.xx, 1 */
186     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_3,
187                 "  Environment   ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 3, x.xx, 1 */
188     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_4,
189                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 4, x.xx, 1 */
190     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_5,
191                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 5, x.xx, 1 */
192     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_6,
193                 "                ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 6, x.xx, 1 */
194     OledShowStr(OLED_X_POSITION_0, OLED_Y_POSITION_7,
195                 "Continue        ", OLED_DISPLAY_STRING_TYPE_1); /* 0, 7, x.xx, 1 */
196     ReturnAllModeEnumSample();
197 }
198 
EnvironmentDisplay(void)199 void EnvironmentDisplay(void)
200 {
201     while (HI_ERR_SUCCESS != OledInit()) {
202         if (g_hi3861BoardLedTest == FLAG_FALSE) {
203             g_hi3861BoardLedTest = FLAG_TRUE;
204              /* test HiSpark board */
205             FACTORY_HISPARK_BOARD_TEST("-----------HiSpark board check----------");
206         }
207         TaskMsleep(SLEEP_1S);
208     }
209     /* 按键中断初始化 */
210     TestGpioInit();
211     while (1) {
212         switch (GetKeyStatus(CURRENT_MODE)) {
213             case ENV_ALL_MODE:
214                 EnvironmentAllMode();
215                 break;
216             case ENV_TEMPERATURE_MODE:
217                 EnvironmentTemperatureMode();
218                 break;
219             case ENV_HUMIDITY_MODE:
220                 EnvironmentHumidityMode();
221                 break;
222             case COMBUSTIBLE_GAS_MODE:
223                 EnvironmentCombustibleGasMode();
224                 break;
225             case ENV_RETURN_MODE:
226                 EnvironmentReturnMode();
227                 break;
228             default:
229                 break;
230         }
231     }
232 }
233