const bool wifi(const struct ip_info *info) { uint8_t mac_address[6] ALIGNED; char *ap_password = NULL; struct ip_info ip_config; oled_info_t oled_info = { OLED_128x64_I2C_DEFAULT }; const bool oled_connected = oled_start(&oled_info); if (!wifi_detect()){ (void) console_status(CONSOLE_YELLOW, WIFI_NOT_CONNECTED); OLED_CONNECTED(oled_connected, oled_puts(&oled_info, WIFI_NOT_CONNECTED)); return false; } (void) ap_params_init(); ap_password = (char *) ap_params_get_password(); (void) console_status(CONSOLE_YELLOW, STARTING_WIFI); OLED_CONNECTED(oled_connected, oled_status(&oled_info, STARTING_WIFI)); wifi_ap_init(ap_password); printf("ESP8266 information\n"); printf(" SDK : %s\n", system_get_sdk_version()); printf(" Firmware : %s\n\n", wifi_get_firmware_version()); if (network_params_init()) { (void) console_status(CONSOLE_YELLOW, CHANGING_TO_STATION_MODE); OLED_CONNECTED(oled_connected, oled_status(&oled_info, CHANGING_TO_STATION_MODE)); ssid = network_params_get_ssid(); if (network_params_is_use_dhcp()) { wifi_station(ssid, network_params_get_password()); } else { ip_config.ip.addr = network_params_get_ip_address(); ip_config.netmask.addr = network_params_get_net_mask(); ip_config.gw.addr = network_params_get_default_gateway(); wifi_station_ip(ssid, network_params_get_password(), &ip_config); } } opmode = wifi_get_opmode(); if (opmode == WIFI_STA) { printf("WiFi mode : Station (AP: %s)\n", network_params_get_ssid()); } else { printf("WiFi mode : Access Point (authenticate mode: %s)\n", *ap_password == '\0' ? "Open" : "WPA_WPA2_PSK"); } if (wifi_get_macaddr(mac_address)) { printf(" MAC address : "MACSTR "\n", MAC2STR(mac_address)); } else { (void) console_error("wifi_get_macaddr"); OLED_CONNECTED(oled_connected, oled_status(&oled_info, "E: wifi_get_macaddr")); } printf(" Hostname : %s\n", wifi_get_hostname()); if (wifi_get_ip_info(&ip_config)) { printf(" IP-address : " IPSTR "\n", IP2STR(ip_config.ip.addr)); printf(" Netmask : " IPSTR "\n", IP2STR(ip_config.netmask.addr)); printf(" Gateway : " IPSTR "\n", IP2STR(ip_config.gw.addr)); if (opmode == WIFI_STA) { const _wifi_station_status status = wifi_station_get_connect_status(); printf(" Status : %s\n", wifi_station_status(status)); if (status != WIFI_STATION_GOT_IP) { (void) console_error("Not connected!"); if (oled_connected) { oled_set_cursor(&oled_info, 2, 0); (void) oled_puts(&oled_info, wifi_station_status(status)); oled_set_cursor(&oled_info, 5, 0); (void) oled_printf(&oled_info, "SSID : %s\n", network_params_get_ssid()); oled_status(&oled_info, "E: Not connected!"); } for (;;) ; } } } else { (void) console_error("wifi_get_ip_info"); OLED_CONNECTED(oled_connected, oled_status(&oled_info, "E: wifi_get_ip_info")); } if (fota_params_init()) { OLED_CONNECTED(oled_connected, oled_status(&oled_info, "FOTA mode")); console_newline(); fota(fota_params_get_server()); for (;;) ; } (void) console_status(CONSOLE_GREEN, WIFI_STARTED); OLED_CONNECTED(oled_connected, oled_status(&oled_info, WIFI_STARTED)); memcpy((void *)info, (const void *)&ip_config, sizeof(struct ip_info)); return true; }
void notmain(void) { hardware_init(); ltc_reader_params_init(); output.console_output = ltc_reader_params_is_console_output(); output.lcd_output = ltc_reader_params_is_lcd_output(); output.midi_output = ltc_reader_params_is_midi_output(); output.artnet_output = ltc_reader_params_is_artnet_output(); if(output.midi_output) { midi_send_init(); } if (output.lcd_output) { output.lcd_output = lcd_detect(); } if (output.artnet_output) { output.artnet_output = wifi_detect(); } ltc_reader_init(&output); printf("[V%s] %s Compiled on %s at %s\n", SOFTWARE_VERSION, hardware_board_get_model(), __DATE__, __TIME__); printf("SMPTE TimeCode LTC Reader / Converter"); console_set_top_row(3); console_set_cursor(0, 12); console_puts("Console output : "); handle_bool(output.console_output); console_putc('\n'); console_puts("LCD output : "); handle_bool(output.lcd_output); console_putc('\n'); console_puts("MIDI output : "); handle_bool(output.midi_output); console_putc('\n'); console_puts("ArtNet output : "); handle_bool(output.artnet_output);console_puts(" (not implemented)\n"); if (output.artnet_output) { uint8_t mac_address[6]; struct ip_info ip_config; (void) ap_params_init(); const char *ap_password = ap_params_get_password(); console_status(CONSOLE_YELLOW, "Starting Wifi ..."); wifi_init(ap_password); printf("\nESP8266 information\n"); printf(" SDK : %s\n", system_get_sdk_version()); printf(" Firmware : %s\n\n", wifi_get_firmware_version()); if (network_params_init()) { console_status(CONSOLE_YELLOW, "Changing to Station mode ..."); if (network_params_is_use_dhcp()) { wifi_station(network_params_get_ssid(), network_params_get_password()); } else { ip_config.ip.addr = network_params_get_ip_address(); ip_config.netmask.addr = network_params_get_net_mask(); ip_config.gw.addr = network_params_get_default_gateway(); wifi_station_ip(network_params_get_ssid(), network_params_get_password(), &ip_config); } } const _wifi_mode opmode = wifi_get_opmode(); if (opmode == WIFI_STA) { printf("WiFi mode : Station\n"); } else { printf("WiFi mode : Access Point (authenticate mode : %s)\n", *ap_password == '\0' ? "Open" : "WPA_WPA2_PSK"); } if (wifi_get_macaddr(mac_address)) { printf(" MAC address : "MACSTR "\n", MAC2STR(mac_address)); } else { console_error("wifi_get_macaddr"); } printf(" Hostname : %s\n", wifi_station_get_hostname()); if (wifi_get_ip_info(&ip_config)) { printf(" IP-address : " IPSTR "\n", IP2STR(ip_config.ip.addr)); printf(" Netmask : " IPSTR "\n", IP2STR(ip_config.netmask.addr)); printf(" Gateway : " IPSTR "\n", IP2STR(ip_config.gw.addr)); if (opmode == WIFI_STA) { const _wifi_station_status status = wifi_station_get_connect_status(); printf(" Status : %s\n", wifi_station_status(status)); if (status != WIFI_STATION_GOT_IP){ console_error("Not connected!"); for(;;); } } } else { console_error("wifi_get_ip_info"); } console_status(CONSOLE_YELLOW, "Starting UDP ..."); udp_begin(6454); console_status(CONSOLE_GREEN, "Wifi is started"); } for (;;) { ltc_reader(); } }