Exemplo n.º 1
0
    DWORD WINAPI ThreadProc(LPVOID params)
    {     
        const int BUFSIZE = 4096;
        std::unique_ptr<server_config> pcfg(static_cast<server_config*>(params));

        int recvlen, fd;                // # bytes received, our socket
        char buf[BUFSIZE];              // receive buffer 

        if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { // create a UDP socket
            dbg_print("cannot create server socket: error: %d", WSAGetLastError());
            FOR_EACH(auto& cb, pcfg->server_cbs()) cb(StartupFailed);
            return 1;
        }
Exemplo n.º 2
0
max21100::max21100() : i2cbus(new i2c("/dev/i2c-1", addr)) { // initialize i2c bus
  power_cfg pcfg(i2cbus);
  pcfg.power(power_cfg::ENABLE);
}
Exemplo n.º 3
0
int main(int argc, char *argv[]) {

	if( argc < 3 ) {
		printf( "%s", useMsg );
		return 0;
	}

	char * t;
	if(NULL!=(t = getenv("TERM_ROOT"))){
		term_root = strdup(t);
	}else{
		fprintf( stderr, "Переменная TERM_ROOT не установлена, будет использован текущий путь.\n" );
	}

	strcpy( exeFileName, argv[0] );
	strcpy( inputFileName, argv[argc-1] );
	strcpy( cfgName, argv[argc-2] );

	TFiltrParams filtrParams;

	TCfg *cfg = 0;
	TAutoPtr<TCfg> pcfg(cfg);
	try {
		readCfg( cfg, filtrParams );
		parseCommandString( argc, argv, filtrParams );
	} catch (TException e) {
		fprintf( stderr, "%s\n", e.what() );
		exit(-1);
	}

	logfile = new CLog("filtr.exe");
	if(useStdOut) {
		//logfile.addAppender(new ConsoleLogAppender(logLevel,"%s | %e | %m"));
		//logfile->addAppender(new CConsoleLogAppender(logLevel, "%e | %m"));
		logfile->addAppender(new CConsoleLogAppender(logLevel, LOG_FORMAT));
	}
	if(useStdErr) {
		//logfile.addAppender(new EConsoleLogAppender(logLevel,"%s | %e | %m"));
		//logfile->addAppender(new EConsoleLogAppender(logLevel, "%e | %m"));
		logfile->addAppender(new EConsoleLogAppender(logLevel, LOG_FORMAT));
	}
	if(!logFileName.empty()) {
		try {
			//logfile->addAppender(new CFileLogAppender(logLevel, logFileName, append, "%s | %e | %m"));
			logfile->addAppender(new CFileLogAppender(logLevel, logFileName, append, LOG_FORMAT));
		} catch(string e) {
			fprintf(stderr,"%s\n",e.c_str());
			exit(1);
		}
	}

	logfile->info( string("filtr.exe - ") + inputFileName );

	{ // Для того, чтобы был вызван деструктор logfile
		TAutoPtr<CLog> aLogFile( logfile );

		logfile->info( "чтение входных файлов" );
		construct_file_names();
		if( read_and_verify_Blk0s(filtrParams) != 0 ) {
			return 1;
		}
		int length = in_blk0.totalFrameNum * in_blk0.totalPixNum;
		if( readData(filtrParams, length ) != 0 ) {
			return 1;
		}

		readFiltrParams( *cfg, filtrParams, in4_blk0.b0.satId );

		// для автоматического удаления данных по окончанию работы
		TAutoPtr<short> a_in_data(in_data);
		TAutoPtr<short> a_in2_data(in2_data);
		TAutoPtr<short> a_in3_data(in3_data);
		TAutoPtr<short> a_in4_data(in4_data);
		TAutoPtr<short> a_in5_data(in5_data);

		// для результата
		out_data = new short[length];
		TAutoPtr<short> a_out_data(out_data);
		out_blk0 = in_blk0;

		int *filtr_stat = new int[N_MASK_VALUE];
		TAutoPtr<int> a_filtr_stat(filtr_stat);
		for( int i = 0; i < N_MASK_VALUE; i++ ) {
			filtr_stat[i] = 0;
		}

		logfile->info( "фильтрация облачности" );
		try {
			// собственно фильтрация
			int res = TFiltr::filtr_processing(
						  filtrParams,
						  in_blk0,  in_data,
						  in2_blk0, in2_data,
						  in3_blk0, in3_data,
						  in4_blk0, in4_data,
						  in5_blk0, in5_data,
						  out_blk0, out_data,
						  filtr_stat);
			if( res != 0 ) {
				return 1;
			}
			// фильтрация завершена
		} catch (TRequestExc& e) {
			logfile->error( e.text() );
			return 1;
		}

		if( filtrParams.stat_flag ) {
			printStats( filtr_stat );
		}

		logfile->info( "коррекция нулевого блока" );
		if( correctData( out_data, out_blk0 ) != 0 ) {
			return 1;
		}

		logfile->info( "запись результатов фильтрации" );
		if( writeFileNOAA( outputFileName, out_blk0, out_data, out_blk0.totalFrameNum * out_blk0.totalPixNum ) != 0 ) {
			return 1;
		}
		logfile->info( "" );
		logfile->info( "работа программы завершена успешно !" );
	}	// Для того, чтобы был вызван деструктор logfile
	return 0;
}