Пример #1
0
parse_result parse_int(char const * str) {
	parse_result r=parse_int_hex(str);
	if (r.result)
		return r;
	else
		return parse_int_dec(str);
}
Пример #2
0
parse_result parse_ipv4addr(char const * str) {
	parse_result addr[4];
	addr[0]=parse_int_dec(str);
	addr[1]=parse_int_dec(addr[0].rest+1);
	addr[2]=parse_int_dec(addr[1].rest+1);
	addr[3]=parse_int_dec(addr[2].rest+1);
	if (   addr[0].result && in_range(*(int*)addr[0].result, 0, 256)
		&& addr[1].result && in_range(*(int*)addr[1].result, 0, 256)
		&& addr[2].result && in_range(*(int*)addr[2].result, 0, 256)
		&& addr[3].result && in_range(*(int*)addr[3].result, 0, 256)
		&& addr[0].rest && (*addr[0].rest=='.')
		&& addr[1].rest && (*addr[1].rest=='.')
		&& addr[2].rest && (*addr[2].rest=='.'))
	{
		size_t len=addr[3].rest-str+1;
		return make_parse_result(tostring(take_string(len, fullstr(str))), addr[3].rest);
	} else
		return make_parse_result(NULL, str);
}
Пример #3
0
bool  ServerConfig::getInt(const char* p,int* data) {
	_CONFIG* ret;
	
	if((ret = find(p)) == NULL)
		return false;
	
	*data = parse_int_dec(ret->value);
	
	if(*data == 0&&*(ret->value) != '0') {
		return false;
	}
	return true;
	
}
Пример #4
0
int main(int args,char** argv) {
	int ch;
	char script[256] = {0};
	char c_times[64] = {0};
	char buf[256] = { 0 };

	int times = 0;
	//printf("times=%d\n",args);
	get_file_from_path(argv[0], buf);

	if(args == 1) {
		Usage(buf);
		return 1;
	}

	while((ch = getopt(args,argv,"f:t:")) != -1) {
        switch(ch) {
            case 'f':
                strcpy(script,optarg);
                break;
			case 't':
				strcpy(c_times,optarg);
				break;
            default:
                break;
        }
    }
	
	if(script[0] == 0||c_times[0] == 0) {
		Usage(buf);
		return 1;
	}

	times = parse_int_dec(c_times);
	AutoControllerMock contorl;

	if(!contorl.init(script))
		return 1;

	for(int i = 0; i < times;i++) {
		contorl.runController();
	}

	return 0;
}
bool wifi_manager::getWifiStatus(wifi_status* _status) {
	
	bool ret = false;
	size_t len = WIFI_BUFFER_LEN - 1;
	char* p_start,*p_end;
	do {
		if(_status==NULL || _ctrl == NULL)
			break;

		memset(_status,0,sizeof(wifi_status));
		
		if(wpa_ctrl_request(_ctrl,"STATUS-VERBOSE",sizeof("STATUS-VERBOSE"),_buffer,&len,NULL))
			break;
		
		_buffer[len] = 0;
		
		p_start = _buffer;
		
		while(p_start < _buffer + len) {
			p_end = sl_find_first_char(p_start,'\n');
			*p_end = 0;
			
			if(strncmp(p_start,"bssid=",6) == 0) {
				sl_hwaddr_aton(p_start + 6,_status->bssid);
			}else if(strncmp(p_start,"id=",3) == 0) {
				_status->id = parse_int_dec(p_start + 3);
			}else if(strncmp(p_start,"ssid=",5) == 0) {
				strncpy(_status->ssid,p_start + 5 ,128);
			}else if(strncmp(p_start,"ip_address=",11) == 0) {
				strncpy(_status->ip_address,p_start + 11,16);
			}
			
			p_start = p_end + 1;
		}
	
		ret = true;
	}while(0);
	
	return ret;
}
bool wifi_manager::addWifiNetwork(const char* ssid,const char* passwd) {
	bool ret = false;
	size_t len = WIFI_BUFFER_LEN - 1;
	char buf[256] = {0};
	int id;
	char* p;
	do {
		if(wpa_ctrl_request(_ctrl,"ADD_NETWORK",sizeof("ADD_NETWORK"),_buffer,&len,NULL))
			break;
		
		_buffer[len] = 0;
		p = _buffer;

		while(*p != '\n')p++;
		*p = 0;
		id = parse_int_dec(_buffer);
		
		//printf("new network id:%s\n",_buffer);

		sprintf(buf,"SET_NETWORK %d ssid \"%s\"",id,ssid);
		
		if(wpa_ctrl_request(_ctrl,buf,strlen(buf),_buffer,&len,NULL))
			break;
		
		printf("%s\n",buf);

		sprintf(buf,"SET_NETWORK %d psk \"%s\"",id,passwd);
		
		if(wpa_ctrl_request(_ctrl,buf,strlen(buf),_buffer,&len,NULL))
			break;
		_buffer[len] = 0;	
		//printf("%s\n%s",buf,_buffer);
		ret = true;
	}while(0);
	
	return ret;
}
bool wifi_manager::listConfigedWifi(list<wifi_list*> *_list) {
	bool ret = false;
	size_t len = WIFI_BUFFER_LEN - 1;
	char* p_start,*p_end;
	do {
		if(_list==NULL || _ctrl == NULL)
			break;
		
		if(wpa_ctrl_request(_ctrl,"LIST_NETWORKS",sizeof("LIST_NETWORKS"),_buffer,&len,NULL))
			break;
		
		_buffer[len] = 0;
		p_start = _buffer;
		
		while(p_start < _buffer + len) {
			p_end = sl_find_first_char(p_start,'\n');
			*p_end = 0;
			
			if(strncmp(p_start,"network",7) != 0) 
			{
				wifi_list *_wifi_list = new wifi_list;
				char _buf[256];
				char *p1 = p_start,*p2 = _buf;
				
				while(*p1&&*p1 != '\t')
					*p2++ = *p1++;
				
				*p2 = 0;
				p1 ++;
				
				_wifi_list->id = parse_int_dec(_buf);
				
				p2 = _buf;
				while(*p1&&*p1 != '\t')
					*p2++ = *p1++;
				
				*p2 = 0;
				p1 ++;
				
				strncpy(_wifi_list->ssid,_buf,128);
				
				while(*p1&&*p1 != '\t')p1++;				
				p1++;
				
				p2 = _buf;
				while(*p1&&*p1 != '\t')
					*p2++ = *p1++;
				
				*p2 = 0;
				p1 ++;
				
				if(strncmp(_buf,"[CURRENT]",strlen("[CURRENT]")) == 0)
					_wifi_list->flag = 1;
				else
					_wifi_list->flag = 0;
				
				_list->push_back(_wifi_list);
			}
			p_start = p_end + 1;
		}

		ret = true;
	}while(0);
	
	return ret;
}
bool wifi_manager::getAvaiableWifi(list<wifi_scan*> *_list) {
	bool ret = false;
	size_t len = WIFI_BUFFER_LEN - 1;
	char* p_start,*p_end;
	do {
		if(_list==NULL || _ctrl == NULL)
			break;
		
		if(wpa_ctrl_request(_ctrl,"SCAN",sizeof("SCAN"),_buffer,&len,NULL))
			break;
		
		len = WIFI_BUFFER_LEN - 1;
		
		if(wpa_ctrl_request(_ctrl,"SCAN_RESULTS",sizeof("SCAN_RESULTS"),_buffer,&len,NULL))
			break;
		
		_buffer[len] = 0;
		
		p_start = _buffer;
		
		
		while(p_start < _buffer + len) {
		//	printf("--line:%s\n",p_start);
			p_end = sl_find_first_char(p_start,'\n');
			*p_end = 0;
			
			if(strncmp(p_start,"bssid",5) != 0) 
			{
				wifi_scan* _scan = new wifi_scan;

				memset(_scan,0,sizeof(wifi_scan));

				char _buf[256];
				char *p1 = p_start,*p2 = _buf;
				
				while(*p1&&*p1 != '\t')
					*p2++ = *p1++;
				
				*p2 = 0;
				p1 ++;
				
				sl_hwaddr_aton(_buf,_scan->bssid);
				
				p2 = _buf;
				while(*p1&&*p1 != '\t')
					*p2++ = *p1++;
				
				*p2 = 0;
				p1 ++;
				
				_scan->frequency = parse_int_dec(_buf);
				
				p2 = _buf;
				while(*p1&&*p1 != '\t')
					*p2++ = *p1++;
				
				*p2 = 0;
				p1 ++;
				_scan->signal_level = parse_int_dec(_buf);
				
				p2 = _buf;
				while(*p1&&*p1 != '\t')
					*p2++ = *p1++;
				
				*p2 = 0;
				p1 ++;
				strncpy(_scan->flags,_buf,128);
				
				strncpy(_scan->ssid,p1,128);		
				
				_list->push_back(_scan);
			}
			
			p_start = p_end + 1;
		}
		ret = true;	
	}while(0);
	
	return ret;
}
Пример #9
0
int main(int args,char** argv) {
	int ch = 0;
	int port = 0;
	char serial_port[32] = { 0 };
	char filename[256] = {0};
	ServerConfig* pConfig = NULL;
	SlServer* pserver = NULL;
	
#ifdef SLSERVER_LINUX
	if(signal(SIGINT, signal_handler) == SIG_ERR) {
        printf("could not register signal handler\n");
        exit(1);
    }
	pthread_mutex_init(&slglobal.frame_lock,NULL);
#else
	INIT_GLOBAL_FRAME_LOCK;
#endif

	slglobal.is_stream_running = false;
	slglobal.frame = NULL;
	slglobal.frame_size = 0;
	slglobal.frame_alloc_size = 0;
	slglobal.frame_count = 1;
	
	
	
	while((ch = getopt(args,argv,"p:s:f:")) != -1) {
		
		switch(ch) {
			case 'p':
				port = parse_int_dec(optarg);
				break;
			case 's':
				strcpy_s(serial_port,optarg);
				break;
			case 'f':
				strcpy_s(filename,optarg);
				break;
			default:
				LOGOUT("%s:Unknow Option -%c\n",argv[0],ch);
				goto end;
		}
	}
	
	if(*filename == 0) {
		Usage();
		LOGOUT("\t you must input config file\n");
		goto end;
	}
	
	pConfig = new ServerConfig();
	pConfig->init(filename);
	
	if(pConfig->parseData() == false) {
		LOGOUT("***ERROR*** error config file\n");
		goto end;
	}
	pConfig->debug();
	
	if(port == 0&&!pConfig->getInt("port",&port)) {
		LOGOUT("***ERROR*** Cannot find port\n");
		goto end;
	}
	
	if(*serial_port == 0&&!pConfig->getString("serial",serial_port)) {
		LOGOUT("***ERROR*** Cannot define serial port\n");
		goto end;
	}
	
	LOGOUT("***INFO*** now we start server\n");
	
	pserver = new SlServer(port,pConfig);
	slglobal.pConfig = pConfig;
	
	if (pserver->init(serial_port) == false) {
		goto end;
	}

	if (pserver->start() == false) {
		goto end;
	}

	LOGOUT("***INFO*** server start ok\n");
	slglobal.server = pserver;
	
#ifdef SLSERVER_WIN32
	LOGOUT("***INFO*** Please Input A Char To Stop This Server\n");
	getc(stdin);
#else
	slglobal.global_running = true;

	while(slglobal.global_running) {
		usleep(10);
	}
#endif

	pserver->stop();
	if (pserver)
		delete pserver;
end:
	if (pConfig){
		pConfig->sync();
		delete pConfig;
	}
#ifdef SLSERVER_LINUX
	pthread_mutex_destroy(&slglobal.frame_lock);
#else
	DESTROY_GLOBAL_FRAME_LOCK;
#endif
	if(slglobal.frame)
		 free(slglobal.frame);
	
	return 0;
}