main/task_user.c

changeset 77
15dc572a7fcb
parent 71
995557380e5f
child 78
e03d729aecb8
equal deleted inserted replaced
76:0432d9147682 77:15dc572a7fcb
43 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore 43 extern SemaphoreHandle_t xSemaphoreWiFi; ///< WiFi lock semaphore
44 extern int count_pub; ///< Published MQTT messages in transit 44 extern int count_pub; ///< Published MQTT messages in transit
45 extern int Main_Loop1; ///< Main measure loop 45 extern int Main_Loop1; ///< Main measure loop
46 extern int update_running; ///< If update is running 46 extern int update_running; ///< If update is running
47 extern int num_sensors; ///< Detected DS18B20 sensors 47 extern int num_sensors; ///< Detected DS18B20 sensors
48 extern strConfig_t config;
49 extern wifiStation_t wifiStation; 48 extern wifiStation_t wifiStation;
49 extern char hostname[];
50
50 51
51 const int TASK_USER_COLD = BIT0; ///< System cold start 52 const int TASK_USER_COLD = BIT0; ///< System cold start
52 const int TASK_USER_WAKEUP = BIT1; ///< System wakeup from deepsleep 53 const int TASK_USER_WAKEUP = BIT1; ///< System wakeup from deepsleep
53 const int TASK_USER_BUSY = BIT2; ///< User interface is busy doing something. 54 const int TASK_USER_BUSY = BIT2; ///< User interface is busy doing something.
54 const int TASK_USER_REFRESH = BIT3; ///< Refresh requested 55 const int TASK_USER_REFRESH = BIT3; ///< Refresh requested
531 532
532 /** 533 /**
533 * @brief The WiFi setup menu. 534 * @brief The WiFi setup menu.
534 * @param sub The submenu entry to hilite. 535 * @param sub The submenu entry to hilite.
535 */ 536 */
536 void screen_wifi_setup(int sub) 537 /*void screen_wifi_setup(int sub)
537 { 538 {
538 screen_top("WiFi AP setup"); 539 screen_top("WiFi AP setup");
539 menu_line(sub == 0, 1, 25, "Lijst AP"); 540 menu_line(sub == 0, 1, 25, "Lijst AP");
540 menu_line(sub == 1, 1, 37, "Nieuw AP"); 541 menu_line(sub == 1, 1, 37, "Nieuw AP");
541 menu_line(sub == 2, 1, 49, "Terug"); 542 menu_line(sub == 2, 1, 49, "Terug");
542 u8g2_SendBuffer(&u8g2); 543 u8g2_SendBuffer(&u8g2);
543 } 544 }*/
544 545
545 546
546 547
547 /** 548 /**
548 * @brief Show the list if WiFi Access Points. 549 * @brief Show the list if WiFi Access Points.
549 * @param sub The sub entry line. 550 * @param sub The sub entry line.
550 * @param offset The offset in the list. 551 * @param offset The offset in the list.
551 */ 552 */
552 void screen_list_aps(int sub, int offset) 553 /*void screen_list_aps(int sub, int offset)
553 { 554 {
554 int i; 555 int i;
555 wifiStation_t ap; 556 wifiStation_t ap;
556 uint8_t *dst = (uint8_t *)&ap; 557 uint8_t *dst = (uint8_t *)&ap;
557 FILE *f; 558 FILE *f;
584 } 585 }
585 if ((i + offset) == num_ssids) 586 if ((i + offset) == num_ssids)
586 menu_line(sub == i, 1, 25 + (i * 12), "Terug"); 587 menu_line(sub == i, 1, 25 + (i * 12), "Terug");
587 } 588 }
588 u8g2_SendBuffer(&u8g2); 589 u8g2_SendBuffer(&u8g2);
589 } 590 }*/
590 591
591 592
592 593
593 /** 594 /**
594 * @brief Edit WiFi AP menu. 595 * @brief Edit WiFi AP menu.
595 * @param sub The menu entry to hilite. 596 * @param sub The menu entry to hilite.
596 */ 597 */
597 void screen_edit_ap(int sub) 598 /*void screen_edit_ap(int sub)
598 { 599 {
599 screen_top("WiFi wijzig AP"); 600 screen_top("WiFi wijzig AP");
600 menu_line(sub == 0, 1, 25, "SSID %s", editAP.SSID); 601 menu_line(sub == 0, 1, 25, "SSID %s", editAP.SSID);
601 menu_line(sub == 1, 1, 37, "PSK %s", editAP.Password); 602 menu_line(sub == 1, 1, 37, "PSK %s", editAP.Password);
602 menu_line(sub == 2, 1, 49, "Opslaan"); 603 menu_line(sub == 2, 1, 49, "Opslaan");
603 if (edit_ssid >= 0) { 604 if (edit_ssid >= 0) {
604 menu_line(sub == 3, 1, 61, "Verwijder"); 605 menu_line(sub == 3, 1, 61, "Verwijder");
605 } 606 }
606 u8g2_SendBuffer(&u8g2); 607 u8g2_SendBuffer(&u8g2);
607 } 608 }*/
608 609
609 610
610 611
611 /** 612 /**
612 * @brief The network status screen. 613 * @brief The network status screen.
626 627
627 screen_top("Netwerk Status"); 628 screen_top("Netwerk Status");
628 menu_line(0, 1, 25, "IP %s", ip); 629 menu_line(0, 1, 25, "IP %s", ip);
629 menu_line(0, 1, 37, "Mask %s", nm); 630 menu_line(0, 1, 37, "Mask %s", nm);
630 menu_line(0, 1, 49, "GW %s", gw); 631 menu_line(0, 1, 49, "GW %s", gw);
631 menu_line(0, 1, 61, "Naam %s", config.hostname); 632 menu_line(0, 1, 61, "Naam %s", hostname);
632 u8g2_SendBuffer(&u8g2);
633 }
634
635
636
637 /**
638 * @brief The network setup menu.
639 * @param sub The menu entry to hilite.
640 */
641 void screen_network_setup(int sub)
642 {
643 screen_top("Netwerk setup");
644 menu_line(sub == 0, 1, 25, "Naam %s", config.hostname);
645 menu_line(sub == 1, 1, 37, "NTP %s", config.ntp_server);
646 menu_line(sub == 2, 1, 49, "Terug");
647 u8g2_SendBuffer(&u8g2); 633 u8g2_SendBuffer(&u8g2);
648 } 634 }
649 635
650 636
651 637
653 * @brief MQTT status 639 * @brief MQTT status
654 */ 640 */
655 void screen_mqtt() 641 void screen_mqtt()
656 { 642 {
657 screen_top("MQTT Status"); 643 screen_top("MQTT Status");
658 menu_line(0, 1, 25, "serv %s", config.mqtt_server); 644 menu_line(0, 1, 25, "serv %s", CONFIG_MQTT_SERVER);
659 menu_line(0, 1, 37, "port %d", config.mqtt_port); 645 menu_line(0, 1, 37, "port %d", CONFIG_MQTT_PORT);
660 menu_line(0, 1, 49, "user %s", config.mqtt_user); 646 menu_line(0, 1, 49, "user %s", CONFIG_MQTT_USER);
661 u8g2_SendBuffer(&u8g2);
662 }
663
664
665
666 /**
667 * @brief MQTT setup menu.
668 * @param sub The submenu entry to hilite.
669 */
670 void screen_mqtt_setup(int sub)
671 {
672 screen_top("MQTT Setup");
673 menu_line(sub == 0, 1, 25, "serv %s", config.mqtt_server);
674 menu_line(sub == 1, 1, 37, "port %d", config.mqtt_port);
675 menu_line(sub == 2, 1, 49, "user %s", config.mqtt_user);
676 menu_line(sub == 3, 1, 61, "Terug");
677 u8g2_SendBuffer(&u8g2); 647 u8g2_SendBuffer(&u8g2);
678 } 648 }
679 649
680 650
681 651
887 857
888 case ML2_WIFI: 858 case ML2_WIFI:
889 screen_wifi(); 859 screen_wifi();
890 break; 860 break;
891 861
892 case ML2_SETUP_WIFI:
893 screen_wifi_setup(SubMenu);
894 break;
895
896 case ML2_LIST_APS:
897 SubMenu = SubOffset = 0;
898 screen_list_aps(SubMenu, SubOffset);
899 break;
900
901 case ML2_EDIT_AP:
902 screen_edit_ap(0);
903 break;
904
905 case ML2_NETWORK: 862 case ML2_NETWORK:
906 screen_network(); 863 screen_network();
907 break; 864 break;
908 865
909 case ML2_SETUP_NETWORK:
910 screen_network_setup(SubMenu);
911 break;
912
913 case ML2_MQTT: 866 case ML2_MQTT:
914 screen_mqtt(); 867 screen_mqtt();
915 break; 868 break;
916
917 case ML2_SETUP_MQTT:
918 screen_mqtt_setup(SubMenu);
919 break;
920 869
921 case ML2_UPDATE: 870 case ML2_UPDATE:
922 screen_update(); 871 screen_update();
923 break; 872 break;
924 873
989 case ML2_SEL_SENSOR1: 938 case ML2_SEL_SENSOR1:
990 case ML2_SEL_SENSOR2: 939 case ML2_SEL_SENSOR2:
991 case ML2_SEL_SENSOR3: if (rotate_to_sub(event.state.position, num_sensors, &SubMenu, &SubOffset)) 940 case ML2_SEL_SENSOR3: if (rotate_to_sub(event.state.position, num_sensors, &SubMenu, &SubOffset))
992 screen_list_sensors(Main_Loop2 - ML2_SEL_SENSOR1, SubMenu, SubOffset); 941 screen_list_sensors(Main_Loop2 - ML2_SEL_SENSOR1, SubMenu, SubOffset);
993 break; 942 break;
994 case ML2_SETUP_WIFI: if (rotate_to_sub(event.state.position, 2, &SubMenu, &SubOffset))
995 screen_wifi_setup(SubMenu);
996 break;
997 case ML2_LIST_APS: if (rotate_to_sub(event.state.position, num_ssids, &SubMenu, &SubOffset))
998 screen_list_aps(SubMenu, SubOffset);
999 break;
1000 case ML2_EDIT_AP: if (edit_ssid < 0) {
1001 if (rotate_to_sub(event.state.position, 2, &SubMenu, &SubOffset))
1002 screen_edit_ap(SubMenu);
1003 } else {
1004 if (rotate_to_sub(event.state.position, 3, &SubMenu, &SubOffset))
1005 screen_edit_ap(SubMenu);
1006 }
1007 break;
1008 case ML2_SETUP_MQTT: if (rotate_to_sub(event.state.position, 3, &SubMenu, &SubOffset))
1009 screen_mqtt_setup(SubMenu);
1010 break;
1011 case ML2_SETUP_NETWORK: if (rotate_to_sub(event.state.position, 2, &SubMenu, &SubOffset))
1012 screen_network_setup(SubMenu);
1013 break;
1014 default: 943 default:
1015 ESP_LOGI(TAG, "Event: position %ld, direction %s", event.state.position, 944 ESP_LOGI(TAG, "Event: position %ld, direction %s", event.state.position,
1016 event.state.direction ? (event.state.direction == ROTARY_ENCODER_DIRECTION_CLOCKWISE ? "CW":"CCW"):"NOT_SET"); 945 event.state.direction ? (event.state.direction == ROTARY_ENCODER_DIRECTION_CLOCKWISE ? "CW":"CCW"):"NOT_SET");
1017 } 946 }
1018 } 947 }
1034 * @brief Pressed keys actions 963 * @brief Pressed keys actions
1035 */ 964 */
1036 void menu_loop(void) 965 void menu_loop(void)
1037 { 966 {
1038 int idx = 0; 967 int idx = 0;
1039 char txt[32];
1040 968
1041 switch (Main_Loop2) { 969 switch (Main_Loop2) {
1042 case ML2_UNIT1: 970 case ML2_UNIT1:
1043 case ML2_UNIT2: 971 case ML2_UNIT2:
1044 case ML2_UNIT3: 972 case ML2_UNIT3:
1119 SubOffset = 0; 1047 SubOffset = 0;
1120 } 1048 }
1121 break; 1049 break;
1122 1050
1123 case ML2_WIFI: 1051 case ML2_WIFI:
1124 New_Loop2 = ML2_SETUP_WIFI;
1125 break;
1126
1127 case ML2_SETUP_WIFI:
1128 if (SubMenu == 0) {
1129 New_Loop2 = ML2_LIST_APS;
1130 } else if (SubMenu == 1) {
1131 edit_ssid = -1;
1132 editAP.SSID[0] = '\0';
1133 editAP.Password[0] = '\0';
1134 SubMenu = SubOffset = 0;
1135 New_Loop2 = ML2_EDIT_AP;
1136 } else if (SubMenu == 2) {
1137 New_Loop2 = ML2_WIFI;
1138 }
1139 break;
1140
1141 case ML2_LIST_APS:
1142 if ((SubMenu + SubOffset) < num_ssids) {
1143 edit_ssid = SubMenu + SubOffset;
1144 memcpy(editAP.SSID, APs[edit_ssid].SSID, 32);
1145 memcpy(editAP.Password, APs[edit_ssid].Password, 64);
1146 SubMenu = SubOffset = 0;
1147 New_Loop2 = ML2_EDIT_AP;
1148 } else {
1149 New_Loop2 = ML2_SETUP_WIFI;
1150 SubMenu = SubOffset = 0;
1151 }
1152 break;
1153
1154 case ML2_EDIT_AP:
1155 ESP_LOGI(TAG, " ML2_EDIT_AP: SubMenu %d edit_ssid %d", SubMenu, edit_ssid);
1156 if (SubMenu == 0) {
1157 rotary_editer("SSID", editAP.SSID, "", 16, EDIT_TYPE_TEXT);
1158 screen_edit_ap(SubMenu);
1159 } else if (SubMenu == 1) {
1160 rotary_editer("PSK", editAP.Password, "", 16, EDIT_TYPE_TEXT);
1161 screen_edit_ap(SubMenu);
1162 } else if (SubMenu == 2 || SubMenu == 3) {
1163 update_running = 1; // Block measurements
1164 if (edit_ssid < 0)
1165 New_Loop2 = ML2_SETUP_WIFI;
1166 else
1167 New_Loop2 = ML2_LIST_APS;
1168
1169 if (edit_ssid >= 0) {
1170 ESP_LOGI(TAG, "Remove %s", APs[edit_ssid].SSID);
1171 remove_station((uint8_t *)APs[edit_ssid].SSID);
1172 }
1173 if (SubMenu == 2) {
1174 ESP_LOGI(TAG, "Add %s %s", editAP.SSID, editAP.Password);
1175 add_station((uint8_t *)editAP.SSID, (uint8_t *)editAP.Password);
1176 }
1177 }
1178 update_running = 0;
1179 break; 1052 break;
1180 1053
1181 case ML2_NETWORK: 1054 case ML2_NETWORK:
1182 New_Loop2 = ML2_SETUP_NETWORK; 1055 break;
1183 break;
1184
1185 case ML2_SETUP_NETWORK:
1186 if (SubMenu == 0) {
1187 rotary_editer("Hostnaam", config.hostname, "", 16, EDIT_TYPE_TEXT);
1188 screen_network_setup(SubMenu);
1189 } else if (SubMenu == 1) {
1190 rotary_editer("NTP server", config.ntp_server, "", 16, EDIT_TYPE_TEXT);
1191 screen_network_setup(SubMenu);
1192 } else if (SubMenu == 2) {
1193 ESP_LOGI(TAG, "Hostname `%s`", config.hostname);
1194 ESP_LOGI(TAG, "NTP server `%s`", config.ntp_server);
1195 write_config();
1196 New_Loop2 = ML2_NETWORK;
1197 }
1198 break;
1199 1056
1200 case ML2_MQTT: 1057 case ML2_MQTT:
1201 New_Loop2 = ML2_SETUP_MQTT;
1202 break;
1203
1204 case ML2_SETUP_MQTT:
1205 if (SubMenu == 0) {
1206 rotary_editer("MQTT server", config.mqtt_server, "", 16, EDIT_TYPE_TEXT);
1207 screen_mqtt_setup(SubMenu);
1208 } else if (SubMenu == 1) {
1209 sprintf(txt, "%d", config.mqtt_port);
1210 rotary_editer("MQTT server poort", txt, "", 6, EDIT_TYPE_INT);
1211 config.mqtt_port = atoi(txt);
1212 screen_mqtt_setup(SubMenu);
1213 } else if (SubMenu == 2) {
1214 rotary_editer("MQTT user", config.mqtt_user, "", 16, EDIT_TYPE_TEXT);
1215 rotary_editer("MQTT password", config.mqtt_pwd, "", 16, EDIT_TYPE_TEXT);
1216 screen_mqtt_setup(SubMenu);
1217 } else if (SubMenu == 3) {
1218 ESP_LOGI(TAG, "mqtt_server %s:%d", config.mqtt_server, config.mqtt_port);
1219 ESP_LOGI(TAG, "mqtt_user/pass `%s/%s`", config.mqtt_user, config.mqtt_pwd);
1220 write_config();
1221 New_Loop2 = ML2_MQTT;
1222 }
1223 break; 1058 break;
1224 1059
1225 case ML2_UPDATE: 1060 case ML2_UPDATE:
1226 bin_update(); 1061 bin_update();
1227 screen_update(); 1062 screen_update();

mercurial