OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [soft/] [linux/] [common/] [utils/] [tf_workparam.cpp] - Diff between revs 2 and 6

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 6
 
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <stdio.h>
 
#include <stdarg.h>
#include <stdarg.h>
 
 
#include "utypes.h"
#include "utypes.h"
//#include "useful.h"
 
#include "tf_workparam.h"
#include "tf_workparam.h"
 
 
#ifdef _DEBUG
#ifdef _DEBUG
#define new DEBUG_NEW
#define new DEBUG_NEW
#undef THIS_FILE
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
static char THIS_FILE[] = __FILE__;
#endif
#endif
 
 
 
 
//
//
 
 
 
 
TF_WorkParam::TF_WorkParam(void)
TF_WorkParam::TF_WorkParam(void)
{
{
 
 
    max_item=0;
    max_item=0;
    memset( this, 0, sizeof( TF_WorkParam ) );
    memset( this, 0, sizeof( TF_WorkParam ) );
 
 
    SetDefault();
    SetDefault();
 
 
 
 
}
}
 
 
TF_WorkParam::~TF_WorkParam(void)
TF_WorkParam::~TF_WorkParam(void)
{
{
    U32 ii=0;
    U32 ii=0;
 
 
    // Освобождение памяти от строковых параметров
    // Освобождение памяти от строковых параметров
    for( ii=0; ii<max_item; ii++ )
    for( ii=0; ii<max_item; ii++ )
    {
    {
        if( array_cfg[ii].is_float==2 )
        if( array_cfg[ii].is_float==2 )
        {
        {
            STR_CFG *cfg=array_cfg+ii;
            STR_CFG *cfg=array_cfg+ii;
            char **ptr=(char**)cfg->ptr;
            char **ptr=(char**)cfg->ptr;
 
 
            char *ps=*ptr;
            char *ps=*ptr;
            if( ps!=NULL )
            if( ps!=NULL )
                free( ps );
                free( ps );
        }
        }
    }
    }
}
}
 
 
//! Установка параметров по умолчанию
//! Установка параметров по умолчанию
void TF_WorkParam::SetDefault( void )
void TF_WorkParam::SetDefault( void )
{
{
 
 
    U32 ii=0;
    U32 ii=0;
 
 
    // Освобождение памяти от строковых параметров
    // Освобождение памяти от строковых параметров
    for( ii=0; ii<max_item; ii++ )
    for( ii=0; ii<max_item; ii++ )
    {
    {
        if( array_cfg[ii].is_float==2 )
        if( array_cfg[ii].is_float==2 )
        {
        {
            STR_CFG *cfg=array_cfg+ii;
            STR_CFG *cfg=array_cfg+ii;
            char **ptr=(char**)cfg->ptr;
            char **ptr=(char**)cfg->ptr;
 
 
            char *ps=*ptr;
            char *ps=*ptr;
            if( ps!=NULL )
            if( ps!=NULL )
                free( ps );
                free( ps );
        }
        }
    }
    }
 
 
 
 
    //ZeroMemory( this, sizeof( TF_WorkParam ) );
 
 
 
 
 
 
 
 
 
 
 
    ii=0;
    ii=0;
    /*
 
array_cfg[ii++]=STR_CFG(  0, "RGG_SideObservation", "1", (U32*)&st.Nav_LR_Side, "борт наблюдения (правый +1, левый -1)" );
 
array_cfg[ii++]=STR_CFG(  1, "lambda",          "0.0032",       (U32*)&st.lambda, "длина волны (м)" );
 
array_cfg[ii++]=STR_CFG(  2, "RliFileName",                             "..\\gol\\bmp\\_A_4Kx16k.bmp",          (U32*)&pRliFileName, "имя файла с изображением для режима иммитации РЛИ " );
 
array_cfg[ii++]=STR_CFG(  3, "SYNTH_OBZOR_cutDoppler",  "1",    (U32*)(&st.cutDoppler), "cutDoppler" );
 
*/
 
 
 
    max_item=ii;
    max_item=ii;
 
 
 
 
    /*
 
 
 
   {
 
           if( pPathVega==NULL )
 
           {
 
                 pPathVega = (char*)malloc( 1024 );
 
           }
 
 
 
                int ret=GetEnvironmentVariableA(
 
                        "VEGA",
 
                        pPathVega,
 
                        1020
 
                        );
 
                char buf[1024];
 
                if( ret==0 )
 
                        sprintf( pPathVega, "c:\\vega" );
 
 
 
                sprintf( buf, "%s\\temp\\obzor\\", pPathVega );
 
 
 
 
 
        strcpy( st.output_dir, buf );                        // директория файлов вычислений(server)
 
        strcpy( st.output_dir_loc, buf );                    // директория файлов вычислений(client)
 
 
 
        strcpy( sk.output_dir, buf );                        // директория файлов вычислений(server)
 
        strcpy( sk.output_dir_loc, buf );                    // директория файлов вычислений(client)
 
 
 
        //free( pPathVega );
 
   };
 
*/
 
    {
    {
        char str[1024];
        char str[1024];
        for( unsigned ii=0; ii<max_item; ii++ )
        for( U32 ii=0; ii<max_item; ii++ )
        {
        {
            sprintf( str, "%s  %s", array_cfg[ii].name, array_cfg[ii].def );
            sprintf( str, "%s  %s", array_cfg[ii].name, array_cfg[ii].def );
            GetParamFromStr( str );
            GetParamFromStr( str );
        }
        }
 
 
 
 
    }
    }
 
 
 
 
}
}
 
 
 
 
//! Получение параметров из файла инициализации
//! Получение параметров из файла инициализации
void TF_WorkParam::GetParamFromFile( BRDCHAR* fname )
void TF_WorkParam::GetParamFromFile( BRDCHAR* fname )
{
{
 
 
    FILE *in;
    FILE *in;
 
 
    in=BRDC_fopen( fname, _BRDC("rt") );
    in=BRDC_fopen( fname, _BRDC("rt") );
    if( in==NULL ) {
    if( in==NULL ) {
        //log_out( "Не могу открыть файл конфигурации %s\r\n", fname );
        BRDC_printf( _BRDC("Can't open configuration file: %s\r\n"), fname );
        BRDC_fprintf( stderr, _BRDC("Can't open configuration file: %s\r\n"), fname );
 
        return;
        return;
    }
    }
    //log_out( "\r\nЧтение параметров из файла %s\r\n\r\n", fname );
    BRDC_printf( _BRDC("\r\nRead parameters from file: %s\r\n\r\n"), fname );
    BRDC_fprintf( stderr, _BRDC("\r\nReading parameters from file: %s\r\n\r\n"), fname );
 
 
 
    char str[512];
    char str[512];
 
 
    for( ; ; ) {
    for( ; ; ) {
        if( fgets( str, 510, in )==NULL ) {
        if( fgets( str, 510, in )==NULL ) {
            break;
            break;
        }
        }
        str[510]=0;
        str[510]=0;
        GetParamFromStr( str );
        GetParamFromStr( str );
    }
    }
    log_out( "\r\n" );
    log_out( "\r\n" );
    fclose( in );
    fclose( in );
 
 
}
}
 
 
//! Получение параметра из строки
//! Получение параметра из строки
U32 TF_WorkParam::GetParamFromStr( char* str )
U32 TF_WorkParam::GetParamFromStr( char* str )
{
{
    char name[256], val[256];
    char name[256], val[256];
    U32 ii;
    U32 ii;
    int ret;
    int ret;
    U32 len=strlen( str )+1;
    U32 len=strlen( str )+1;
    ret=sscanf( str, "%128s %128s", name, val );
    ret=sscanf( str, "%128s %128s", name, val );
    if( ret==2 ) {
    if( ret==2 ) {
        for( ii=0; ii<max_item; ii++ ) {
        for( ii=0; ii<max_item; ii++ ) {
            if( strcmp( array_cfg[ii].name, name )==0 ) {
            if( strcmp( array_cfg[ii].name, name )==0 ) {
                if( array_cfg[ii].is_float==0 ) {
                if( array_cfg[ii].is_float==0 ) {
                    sscanf( val, "%i", array_cfg[ii].ptr );
                    sscanf( val, "%i", array_cfg[ii].ptr );
                    // scr.log_out( "%-20s  %d\r\n", array_cfg[ii].name, *(array_cfg[ii].ptr) );
 
                } else if( array_cfg[ii].is_float==1 ) {
                } else if( array_cfg[ii].is_float==1 ) {
                    sscanf( val, "%g", (float*)array_cfg[ii].ptr );
                    sscanf( val, "%g", (float*)array_cfg[ii].ptr );
                    // scr.log_out( "%-20s  %g\r\n", array_cfg[ii].name, *((float*)(array_cfg[ii].ptr)) );
 
                } else if( array_cfg[ii].is_float==2 ) {
                } else if( array_cfg[ii].is_float==2 ) {
                    //*((CString*)array_cfg[ii].ptr)=val;
 
                    {
                    {
 
 
                        STR_CFG *cfg=array_cfg+ii;
                        STR_CFG *cfg=array_cfg+ii;
                        char **ptr=(char**)cfg->ptr;
                        char **ptr=(char**)cfg->ptr;
 
 
                        char *ps=*ptr;
                        char *ps=*ptr;
                        if( ps!=NULL )
                        if( ps!=NULL )
                            free( ps );
                            free( ps );
                        ps = (char*)malloc( 128 );
                        ps = (char*)malloc( 128 );
                        *(cfg->ptr)=((size_t)ps);
                        *(cfg->ptr)=(U32)ps;
                        sprintf( ps, "%s", val );
                        sprintf( ps, "%s", val );
                        //scr.log_out("%-20s  %s\r\n", array_cfg[ii].name, ps );
 
 
 
                    }
                    }
                } else if( array_cfg[ii].is_float==3 ) {
                } else if( array_cfg[ii].is_float==3 ) {
                    U32 v;
                    U32 v;
                    bool *p=(bool*)(array_cfg[ii].ptr);
                    bool *p=(bool*)(array_cfg[ii].ptr);
                    sscanf( val, "%d", &v );
                    sscanf( val, "%d", &v );
                    if( v ) {
                    if( v ) {
                        *p=true;
                        *p=true;
                        //scr.log_out( "%-20s  true\r\n", array_cfg[ii].name );
 
                    } else {
                    } else {
                        *p=false;
                        *p=false;
                        //scr.log_out( "%-20s  false\r\n", array_cfg[ii].name );
 
                    }
                    }
                }
                }
                break;
                break;
            }
            }
        }
        }
    }
    }
    return len;
    return len;
}
}
 
 
 
 
//! Расчёт параметров
//! Расчёт параметров
void TF_WorkParam::CalculateParams( void )
void TF_WorkParam::CalculateParams( void )
{
{
    ShowParam();
    ShowParam();
}
}
 
 
 
 
//! Сохранение параметров в памяти
//! Сохранение параметров в памяти
U32 TF_WorkParam::PutParamToMemory( char* ptr, U32 max_size )
U32 TF_WorkParam::PutParamToMemory( char* ptr, U32 max_size )
{
{
    char str[256];
    char str[256];
    int len;
    int len;
    int total=0;
    int total=0;
    unsigned ii;
    U32 ii;
    STR_CFG *cfg;
    STR_CFG *cfg;
 
 
    *((U32*)ptr)=max_item;
    *((U32*)ptr)=max_item;
    total=4;
    total=4;
 
 
    for( ii=0; ii<max_item; ii++ )
    for( ii=0; ii<max_item; ii++ )
    {
    {
        cfg=array_cfg+ii;
        cfg=array_cfg+ii;
        str[0]=0;
        str[0]=0;
        switch( cfg->is_float )
        switch( cfg->is_float )
        {
        {
        case 0: sprintf( str, "%s  %d \r\n", cfg->name, *(cfg->ptr) ); break;
        case 0: sprintf( str, "%s  %d \r\n", cfg->name, *(cfg->ptr) ); break;
        case 1:
        case 1:
            {
            {
                float* v=(float*)(cfg->ptr);
                float* v=(float*)(cfg->ptr);
                sprintf( str, "%s  %g \r\n", cfg->name, *v ); break;
                sprintf( str, "%s  %g \r\n", cfg->name, *v ); break;
            }
            }
            break;
            break;
        case 2:
        case 2:
            {
            {
                if( *(cfg->ptr)==0 )
                if( *(cfg->ptr)==0 )
                {
                {
                    sprintf( str, "%s  \r\n", cfg->name );
                    sprintf( str, "%s  \r\n", cfg->name );
                } else
                } else
                {
                {
                    sprintf( str, "%s  %s \r\n", cfg->name,(char*)(*cfg->ptr) );
                    sprintf( str, "%s  %s \r\n", cfg->name,(char*)(*cfg->ptr) );
                }
                }
 
 
            }
            }
            break;
            break;
 
 
        }
        }
        len=strlen( str )+1;
        len=strlen( str )+1;
        if( (total+len)<(int)max_size )
        if( (total+len)<(S32)max_size )
        {
        {
            strcpy( ptr+total, str );
            strcpy( ptr+total, str );
            total+=len;
            total+=len;
        }
        }
    }
    }
    return total;
    return total;
}
}
 
 
//! Получение параметров из памяти
//! Получение параметров из памяти
void TF_WorkParam::GetParamFromMemory( char* ptr )
void TF_WorkParam::GetParamFromMemory( char* ptr )
{
{
    char *src=ptr;
    char *src=ptr;
    U32 len;
    U32 len;
    U32 n;
    U32 n;
    n=*((U32*)ptr);
    n=*((U32*)ptr);
    unsigned ii;
    U32 ii;
    int total=4;
    int total=4;
 
 
    for( ii=0; ii<n; ii++ )
    for( ii=0; ii<n; ii++ )
    {
    {
        src=ptr+total;
        src=ptr+total;
        len=GetParamFromStr( src );
        len=GetParamFromStr( src );
        total+=len;
        total+=len;
    }
    }
 
 
}
}
 
 
 
 
//! Отображение параметров
//! Отображение параметров
void TF_WorkParam::ShowParam( void )
void TF_WorkParam::ShowParam( void )
{
{
        U32 ii;
    U32 ii;
        STR_CFG  *item;
        STR_CFG  *item;
        log_out( "\r\n\r\n\r\nParameters value:\r\n\r\n" );
    log_out( "\r\n\r\n\r\nParameters:\r\n\r\n" );
        for( ii=0; ii<max_item; ii++ )
        for( ii=0; ii<max_item; ii++ )
        {
    {
                item=array_cfg+ii;
        item=array_cfg+ii;
        if( item->is_float==2 )
        if( item->is_float==2 )
                {
        {
 
 
                        char **ptr=(char**)item->ptr;
            char **ptr=(char**)item->ptr;
                        char *ps=*ptr;
            char *ps=*ptr;
                        log_out( "%s  %s\r\n", item->name, ps );
            log_out( "%s  %s\r\n", item->name, ps );
                } else if( item->is_float==0 )
        } else if( item->is_float==0 )
                {
        {
                        U32 ps=*((U32*)item->ptr);
            U32 ps=*((U32*)item->ptr);
                        log_out( "%s  %d\r\n", item->name, ps );
            log_out( "%s  %d\r\n", item->name, ps );
                } else if( item->is_float==1 )
        } else if( item->is_float==1 )
                {
        {
                        float ps=*((float*)item->ptr);
            float ps=*((float*)item->ptr);
                        log_out( "%s  %g\r\n", item->name, ps );
            log_out( "%s  %g\r\n", item->name, ps );
                } else if( item->is_float==3 )
        } else if( item->is_float==3 )
                {
        {
                        U32 ps=*((U32*)item->ptr);
            U32 ps=*((U32*)item->ptr);
                        if( ps ) log_out( "%s  %s\r\n", item->name, "true" );
            if( ps ) log_out( "%s  %s\r\n", item->name, "true" );
                        else log_out( "%s  %s\r\n", item->name, "false" );
            else log_out( "%s  %s\r\n", item->name, "false" );
                }
        }
        }
    }
        log_out( "\r\n\r\n\r\n" );
    log_out( "\r\n\r\n\r\n" );
 
 
}
}
 
 
 
 
void TF_WorkParam::log_out( const char* format, ... )
void TF_WorkParam::log_out( const char* format, ... )
{
{
 
 
                char buffer[2048];
    char buffer[2048];
 
 
                va_list marker;
    va_list marker;
                va_start( marker, format );
    va_start( marker, format );
                vsprintf( buffer, format, marker );
    vsprintf( buffer, format, marker );
                va_end( marker );
    va_end( marker );
 
 
                BRDC_fprintf( stderr, "%s", buffer );
    printf( "%s", buffer );
 
 
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.