static esp_err_t event_handler(void *ctx, system_event_t *event) { httpd_handle_t *server = (httpd_handle_t *) ctx; switch(event->event_id) { case SYSTEM_EVENT_STA_START: ESP_LOGI(TAG, "SYSTEM_EVENT_STA_START"); ESP_ERROR_CHECK(esp_wifi_connect()); break; case SYSTEM_EVENT_STA_GOT_IP: ESP_LOGI(TAG, "SYSTEM_EVENT_STA_GOT_IP"); ESP_LOGI(TAG, "Got IP: '%s'", ip4addr_ntoa(&event->event_info.got_ip.ip_info.ip)); /* Start the web server */ if (*server == NULL) { *server = start_webserver(); } break; case SYSTEM_EVENT_STA_DISCONNECTED: ESP_LOGI(TAG, "SYSTEM_EVENT_STA_DISCONNECTED"); ESP_ERROR_CHECK(esp_wifi_connect()); /* Stop the web server */ if (*server) { stop_webserver(*server); *server = NULL; } break; default: break; } return ESP_OK; }
int main(int argc, char *argv[]) { pthread_t thread; /* init threads */ g_thread_init (NULL); gdk_threads_init (); gdk_threads_enter (); gtk_init(&argc, &argv); initApp(); appdata->program = HILDON_PROGRAM(hildon_program_get_instance()); g_set_application_name("Webview"); appdata->window = HILDON_WINDOW(hildon_window_new()); hildon_program_add_window(appdata->program, appdata->window); create_menu(appdata->window); build_interface(appdata->window); /* Connect signal to X in the upper corner */ g_signal_connect(G_OBJECT(appdata->window), "delete_event", G_CALLBACK(destroy), NULL); update_image(); load_settings(); gtk_widget_show_all(GTK_WIDGET(appdata->window)); if(! start_camera(appdata->window)) { g_warning("Unable to start camera\n"); GtkWidget *failDialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Unable to start camera\n"); gtk_dialog_run (GTK_DIALOG (failDialog)); gtk_widget_destroy (failDialog); } if(! start_webserver()) { GtkWidget *failDialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Unable to start web server.\nCheck server port is not already in use.\n"); gtk_dialog_run (GTK_DIALOG (failDialog)); gtk_widget_destroy (failDialog); } sleep(1); pthread_create(&thread, NULL, count_down_thread, NULL); gtk_main(); gdk_threads_leave (); return( 0 ); }
static void on_btnSave_clicked(GtkWidget *button, gpointer userdata) { gint server_port_int = g_ascii_strtod(gtk_entry_get_text(GTK_ENTRY(txtServerPort)), NULL); if( (server_port_int < 1024) || (server_port_int > 32766) ) { GtkWidget *failDialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Bad server port value.\nServer port must be between 1024 and 32766."); gtk_dialog_run (GTK_DIALOG (failDialog)); gtk_widget_destroy (failDialog); return; } gint update_interval_int = g_ascii_strtod(gtk_entry_get_text(GTK_ENTRY(txtUpdateInterval)), NULL); if( (update_interval_int < 1) || (update_interval_int > 1000000) ) { GtkWidget *failDialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Bad update interval entered. Please enter a value between 1 and 1000000\n"); gtk_dialog_run (GTK_DIALOG (failDialog)); gtk_widget_destroy (failDialog); return; } stop_webserver(); save_settings(); load_settings(); start_webserver(); gtk_widget_destroy(button); }
int main(int argc, char **argv) { int webfd; tnrld = new_tnrld(10002); connections = new_ilist(500); processes = new_ilist(500); loop = EV_DEFAULT; // Start tnrld on port 10002. webfd = start_webserver("10002"); if (webfd < 0) { exit(1); } tnrld->listen_fd = webfd; tnrld->evloop = loop; // Signal handler to close cleanly. signal(SIGINT, int_handler); // Signal handler so child pipes end safely. signal(SIGPIPE, SIG_IGN); // Set up the main event loop. ev_io http_watcher; ev_io_init (&http_watcher, accept_cb, webfd, EV_READ); ev_io_start(loop, &http_watcher); ev_set_io_collect_interval (loop, 0.001); ev_loop(loop, 0); printf("Server shut down.\n"); exit(0); }