Beispiel #1
0
/**
 * \brief Initializes the real time system
 */
int main(void) {

	//Turn on wifi hotspot, id "ChicoTheStalker"
	portENABLE_INTERRUPTS();

	// Initialize USART for WiFi and LCD
	initializeUSART();

	gs_initialize_module(USART_2, BAUD_RATE_9600, USART_0, BAUD_RATE_115200);
	gs_set_wireless_ssid("ChicoTheStalker");
	gs_activate_wireless_connection();

	/* Web server config */
	configure_web_page("ChicoTheStalker", "~~ Control Interface ~~", HTML_DROPDOWN_LIST);

	// Switching modes
	add_element_choice('A', "Attachment Mode");
	add_element_choice('C', "Command Mode");

	// Command mode options
	add_element_choice('0', "Stop");
	add_element_choice('1', "Forward");
	add_element_choice('2', "Backward");
	add_element_choice('3', "Rotate Left");
	add_element_choice('4', "Rotate Right");
	add_element_choice('5', "Show Temperature");
	add_element_choice('6', "Show Distance");
	start_web_server();

	// initialize motion
	motion_init();

	// Initialize thermal sensor
	initializeSensor();

	// Declare tasks
	xTaskCreate(handleHttpRequestsTask, (const portCHAR *)"Handle server requests", 800, NULL /* parameters */,0, &taskHandles[0]);

	currentCommand = COMMAND_MODE;
	display("Command mode", "Wait for cmds.");

	vTaskStartScheduler();

	displayToTerminal("\r\n\n\nGoodbye... no space for idle task!\r\n"); // Doh, so we're dead...
}
Beispiel #2
0
gboolean
connect_to_server (gpointer data)
{
    if (connect_to_daemon() < 0) {
        return TRUE;
    }

    applet_message ("Connected to ccnet.\n");

    start_seafile_daemon ();
    applet->auto_sync_disabled = FALSE;
    start_heartbeat_monitor();
    start_web_server();

    start_open_browser_timer (1000, NULL);

    return FALSE;
}
Beispiel #3
0
/*
 *  After spawning the ccnet.exe process;
 *  
 *  1. Connect to daemon
 *  2. spawn seaf-daemon, sefile-web
 *  3. start rpc server & rpc client
 *  4. prompt login, if not finished yet
 *  5. open browser when 13420 port can be connected
 */
static void CALLBACK
ConnDaemonProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
    if (connect_to_daemon() < 0) {
        return;
    }
    applet_message ("Connected to ccnet.\n");

    KillTimer (hwnd, iTimerID);

    start_seafile_daemon ();
    start_heartbeat_monitor ();
    start_web_server ();

    prompt_win7_tip_if_necessary ();

    open_browser_timer_id = SetTimer (NULL, OPEN_BROWSER_TIMER_ID,
                                      1000, TestWebServer);
}
Beispiel #4
0
int start_accept(http_conf *g)
{
	int count; 
	struct epoll_event ev[MAX_EVENT];
	epoll_extra_data_t *epoll_data;
	
	
	start_web_server(g);
	
	printf("--------------- start server\n--------------");
	while(1){
		count = epoll_wait(g->epfd, ev, MAX_EVENT, -1);
		while(count-- > 0){
			epoll_data = (epoll_data_t *)ev[count].data.ptr;
			if(epoll_data->type  == SERVERFD) {
				int confd =  accept(g->fd, NULL, NULL);
				pool_t *p = (pool_t *)pool_create();
				http_connect_t * con;
				epoll_extra_data_t *data_ptr;

				data_ptr = (epoll_extra_data_t *)palloc(p, sizeof(epoll_extra_data_t));
				con = (http_connect_t *) palloc(p, sizeof(http_connect_t));//换成初始化函数,
				con->p= p;
				con->fd = confd;
				data_ptr->type = SOCKFD;
				data_ptr->ptr = (void *) con;
				epoll_add_fd(g->epfd, confd, EPOLL_R, (void *)data_ptr);//对epoll data结构指向的结构体重新封装,分websit
	 			//data struct ,  connect  data struct , file data struct , 
			}
			else if((ev[count].events & EPOLLIN)) {
				http_connect_t * con;
				
				con = (http_connect_t *) epoll_data->ptr;
				switch(epoll_data->type) {
					case SOCKFD:
						if(con->in == NULL) {
							accept_handler(g, con, ev+count);
						}
						if(con->next_handle != NULL) {
                            con->next_handle(con);
						} else {
						    epoll_del_fd(g->epfd, ev);
						    close(con->fd);
                            pool_destroy(con->p);
						}
	 					break;
					case CGIFD: {
	 					epoll_cgi_t *cgi = (epoll_cgi_t *)epoll_data->ptr;
		 				break;
	 	 			}
	 	 		}
				

			}
			else if(ev[count].events & EPOLLOUT) {
				
	 	 	}


	 	} 
	} 
}
Beispiel #5
0
int start_accept(http_conf *g)
{
	int count;
	int confd  ;
	struct epoll_event ev[MAX_EVENT];
	struct epoll_event *evfd ;
	epoll_extra_data_t *epoll_data;
	struct sockaddr addr;
	struct sockaddr_in addrIn;
	socklen_t addLen = sizeof(struct sockaddr );


	start_web_server(g);

	printf("--------------- start server\n--------------");
	while(1){
		count = epoll_wait(g->epfd, ev, MAX_EVENT, -1);
		evfd = ev;
		while( (confd =  accept(g->fd, &addr, &addLen)) && confd > 0) {
			pool_t *p = (pool_t *)pool_create();
			http_connect_t * con;
			epoll_extra_data_t *data_ptr;

			addrIn =  *((struct sockaddr_in *) &addr);
			data_ptr = (epoll_extra_data_t *)palloc(p, sizeof(epoll_extra_data_t));
			con = (http_connect_t *) palloc(p, sizeof(http_connect_t));//换成初始化函数,
			con->p= p;
			con->fd = confd;
			con->in = (request *)request_init(p);
			con->out = (response *)response_init(p);
			char *ip  = NULL;
			if(addrIn.sin_addr.s_addr) {
				ip = inet_ntoa(addrIn.sin_addr);
			}

			if(ip) {
				con->in->clientIp = (string *) string_init_from_str(p, ip, strlen(ip));
			}

			con->next_handle = accept_handler;
			data_ptr->type = SOCKFD;
			data_ptr->ptr = (void *) con;
			epoll_add_fd(g->epfd, confd, EPOLL_R, (void *)data_ptr);//对epoll data结构指向的结构体重新封装,分websit
			//data struct ,  connect  data struct , file data struct ,
		}
		while((evfd->events & EPOLLIN)){
			if((evfd->events & EPOLLIN)) {
				http_connect_t * con;
				epoll_data = (epoll_data_t *)evfd->data.ptr;

				con = (http_connect_t *) epoll_data->ptr;
				switch(epoll_data->type) {
					case SOCKFD:
						if(con->in == NULL) {
							//accept_handler(g, con, evfd);
							epoll_edit_fd(g->epfd, evfd, EPOLL_W);
                            //epoll_del_fd(g->epfd, evfd);
						}
						while(con->next_handle != NULL) {
							int ret = con->next_handle(con);
							if(ret == -1) {
								con->next_handle = NULL;
								epoll_del_fd(g->epfd, evfd);
								close(con->fd);
								ds_log(con, "  [END] ", LOG_LEVEL_DEFAULT);
								pool_destroy(con->p);
							}else if(ret == 1) {
								break;
							}
                            /*if(con->next_handle(con) == -1) {
                            	epoll_del_fd(g->epfd, evfd);
                                close(con->fd);
                                pool_destroy(con->p);
                            }*/
						}
	 					break;
					case CGIFD: {
	 					epoll_cgi_t *cgi = (epoll_cgi_t *)epoll_data->ptr;
		 				break;
	 	 			}
	 	 		}


			}
			else if(evfd->events & EPOLLOUT) {

	 	 	}

	 	 	evfd++;
	 	}
	}
}
Beispiel #6
0
int
start_accept(http_conf_t *conf)
{
	int count; 
	struct epoll_event ev[MAX_EVENT];
	epoll_extra_data_t *epoll_data;
	struct epoll_event * evfd;

	int evIndex ;

	
	
	start_web_server(conf);
	
	printf("--------------- start server\n--------------");
	while(1){
		count = epoll_wait(conf->epfd, ev, MAX_EVENT, -1);
		http_accept_request_socket(conf, conf->fd);
		if(count < 0) { count = 0;}
		
		for(evIndex = 0; evIndex < count; evIndex++) {
			evfd = ev + evIndex;
			epoll_data = (epoll_extra_data_t *)evfd->data.ptr;
			if(epoll_data->type  != SERVERFD && (evfd->events & EPOLLIN)) {
				http_connect_t * con;
				
				con = (http_connect_t *) epoll_data->ptr;
				switch(epoll_data->type) {
					case SOCKFD:
						accept_handler(conf, con, evfd);
	 					break; 
					case CGIFD: {
	 					epoll_cgi_t *cgi = (epoll_cgi_t *)epoll_data->ptr;
						if(read_cgi(cgi) == 0) {
							list_buffer_used_to_zero(cgi->cgi_data);
							if(cgi_parse_handler(cgi) == 0) {
								

							}
							else {
								
							}
							epoll_del_fd(conf->epfd, evfd);
							pool_destroy(cgi->con->p);
	 	 					close(cgi->con->fd);
						}
						else {
						}
						
		 				break;
	 	 			}
					case SERVERFD:
						//有多个web配置的时候可用 以后测试
						//http_accept_request_socket(g, con->fd);
						//接受连接
						break;
	 	 		}
				

			}
			else if(evfd->events & EPOLLOUT) {
				
	 	 	}else if(evfd->events & EPOLLRDHUP) {
				http_connect_t * con;
				epoll_data = (epoll_data_t *)evfd->data.ptr;

				con = (http_connect_t *) epoll_data->ptr;	
				if(con->in != NULL) {
					epoll_edit_fd(conf->epfd, evfd, EPOLL_W);
					
					pool_destroy(con->p);
					close(con->fd);

				}
				con->next_handle = NULL;
				epoll_del_fd(conf->epfd, evfd);

		
			}


	 	} 

	} 
}
Beispiel #7
0
int start_accept(http_conf *g)
{
	int count;
	int confd  ;
	struct epoll_event ev[MAX_EVENT];
	struct epoll_event *evfd ;
	epoll_extra_data_t *epoll_data;
	struct sockaddr addr;
	struct sockaddr_in addrIn;
	socklen_t addLen = sizeof(struct sockaddr );
	int evIndex ;

	start_web_server(g);

	//处理write pipe 错误。向已经关闭的socket fd 写内容触发
	signal (SIGPIPE, client_request_close);

	printf("--------------- start server\n--------------");
	while(1){
		count = epoll_wait(g->epfd, ev, MAX_EVENT, -1);
	
		accept_request_socket(g);
		if(count < 0) { count = 0;}
		
		evfd = ev;
		for(evIndex = 0; evIndex < count; evIndex++) {
			epoll_data = (epoll_extra_data_t *)evfd->data.ptr;
			if((evfd->events & EPOLLIN)) {


				switch(epoll_data->type) {
					case SOCKFD:
						handle_request_socket(g, evfd);
						/*con = (http_connect_t *) epoll_data->ptr;
					
						while(con->next_handle != NULL) {
							int ret = con->next_handle(con);
							if(ret == DONE) {
								if(con->in->execute_file != NULL && con->in->execute_file->len > 0) {
									char *shPath = (char *)palloc(con->p, sizeof(char)*con->in->execute_file->len +1);
									strncpy(shPath, con->in->execute_file->ptr, con->in->execute_file->len);
									ds_log(con, " [send execute sh command:]", LOG_LEVEL_DEFAULT);
									send_execute_sh_cmd(con, g);
								}
								destory_connect(g, con, evfd);
								//con->next_handle = NULL;
								//epoll_del_fd(g->epfd, evfd);
								//close(con->fd);
								//ds_log(con, "  [END] ", LOG_LEVEL_DEFAULT);
								//pool_destroy(con->p);
							}else if(ret == CONTINUE) {
								break;
							}
						}*/
	 					break;
					case CGIFD: {
	 					epoll_cgi_t *cgi = (epoll_cgi_t *)epoll_data->ptr;
						
		 				break;
	 	 			}
					case SERVERFD: 
					  break;
	 	 		}


			}
			else if(evfd->events & EPOLLOUT) {

	 	 	} else if(evfd->events & EPOLLRDHUP) {
			
				http_connect_t * con;

				con = (http_connect_t *) epoll_data->ptr;	
				destory_connect(g, con, evfd);

				/*if(con->in != NULL) {
					ds_log(con, "  [END] ", LOG_LEVEL_DEFAULT);
					epoll_edit_fd(g->epfd, evfd, EPOLL_W);
					
					pool_destroy(con->p);
					close(con->fd);

				}
				con->next_handle = NULL;
				epoll_del_fd(g->epfd, evfd);*/

		
			}

	 	 	evfd++;
	 	}
	}
}
Beispiel #8
0
void fATWE(void *arg){
        printf("[ATWE]: _AT_WLAN_START_WEB_SERVER_\n\r"); 
        start_web_server();
}