Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

file_system_manager.cpp

Committer:
klauss
Date:
2015-11-24
Revision:
137:32dd35a6dbc9
Parent:
135:2f4290590e51

File content as of revision 137:32dd35a6dbc9:

#include "file_system_manager.h"

QSPIFileSystem qspifs("qspi");

extern Serial pc;

char file_buffer [ FILE_BUFFER_SIZE ];

int fset_header_ip ( const char * new_header_ip )
{
    FILE * fip = fopen("/qspi/myip.txt", "w");
    if ( fip )
    {
        fprintf( fip, "%s\n\r", new_header_ip  );
        fclose( fip );
        return ( 0 );
    }
        else
    {
        return ( -1 );
    }
}

int fget_ip ( char * header_ip, const size_t length )
{
    FILE * fip = fopen ("/qspi/myip.txt", "r" );
    if ( fip != NULL )
    {
        int read = fread ( header_ip, 1, length, fip );
        if( read > 0 )
        {
            for ( register int i = 0; i < read; i++ )
            {
                if( header_ip [ i ] == '\n' || header_ip [ i ] == '\r' )
                {
                    header_ip [ i ] = '\0';
                    break;
                }
            }
        } else {
            if ( fip ) fclose ( fip );
            return ( -3 );
        }
        
        header_ip [ length ] = 0;

        if ( fip ) fclose ( fip );
        
        return ( read );
    } 
    
    return ( -1 );
}

int fget_fw_ip ( char * fw_ip, const size_t length )
{
    FILE *ffw_ip = fopen( "/qspi/fw_ip.txt", "r");
    if( ffw_ip == NULL ){
        return ( -1 );
    }else{
        int read = fread( fw_ip, 1, 512, ffw_ip );
        if( read > 0 ){
            for( int i = 0; i < read; i++ ) 
                if( fw_ip[ i ] == '\n' || fw_ip[ i ] == '\r' ){
                    fw_ip[ i ] = '\0';
                    break;
                }           
        }else{
           if ( ffw_ip ) fclose ( ffw_ip );
           return ( -3 );
        }
        
       if ( ffw_ip ) fclose ( ffw_ip );
       
       fw_ip [ length ] = 0;
       
       return ( read );
    }
 }

int fget_server_ip ( char * server_ip, const size_t length )
{
    FILE * fsip = fopen ("/qspi/serverip.txt", "r" );
    if ( fsip != NULL )
    {
        int read = fread ( server_ip, 1, length, fsip );
        if( read > 0 )
        {
            for ( register int i = 0; i < read; i++ )
            {
                if( server_ip [ i ] == '\n' || server_ip [ i ] == '\r' )
                {
                    server_ip [ i ] = '\0';
                    break;
                }
            }
        } else {
            if ( fsip ) fclose ( fsip );
            return ( -3 );
        }
        
        server_ip [ length ] = 0;

        fclose ( fsip );
        
        return ( read );
    } 
    
    return ( -1 );
}

int fget_mask ( char * eth_mask, const size_t length )
{
    FILE * fmsk = fopen("/qspi/mymask.txt", "r");
    if ( fmsk != NULL )
    {
        int read = fread ( eth_mask, 1, length, fmsk );
        if( read > 0 )
        {
            for ( register int i = 0; i < read; i++ )
            {
                if( eth_mask [ i ] == '\n' || eth_mask [ i ] == '\r' )
                {
                    eth_mask [ i ] = '\0';
                    break;
                }
            }
        } else {
            if ( fmsk ) fclose ( fmsk );
            return ( -3 );
        }
        
        eth_mask [ length ] = 0;

        if ( fmsk ) fclose ( fmsk );
        
        return ( read );
    } 
    
    return ( -1 );    
}

int fget_gateway ( char * eth_gw, const size_t length )
{
    FILE * fgw = fopen("/qspi/mygateway.txt", "r");
    if ( fgw != NULL )
    {
        int read = fread ( eth_gw, 1, length, fgw );
        if( read > 0 )
        {
            for ( register int i = 0; i < read; i++ )
            {
                if( eth_gw [ i ] == '\n' || eth_gw [ i ] == '\r' )
                {
                    eth_gw [ i ] = '\0';
                    break;
                }
            }
        } else { 
            if ( fgw ) fclose ( fgw );
            return ( -3 );
        }
        
        eth_gw [ length ] = 0;

        if ( fgw ) fclose ( fgw );
        
        return ( read );
    } 
        
    return ( -1 );        
}

int fset_header_ext ( const int new_header_ext )
{
    FILE * fext = fopen( "/qspi/myext.txt", "w" );
    if ( fext )
    {
        fprintf( fext, "%i\n\r", new_header_ext );
        fclose( fext );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fset_acceptable_delay ( const int new_acceptable_delay )
{
    FILE * fad = fopen( "/qspi/acceptable_delay.txt", "w" );
    if ( fad )
    {
        fprintf ( fad, "%i\n\r", new_acceptable_delay );
        fclose ( fad );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_acceptable_delay ( void )
{
    char get_acceptable_delay_buffer [ 32 ] = "";
    
    FILE * fad = fopen ( "/qspi/acceptable_delay.txt", "r" );
    if ( fad == NULL )
    {   
        return ( -3 );
    } else {
        if( fread ( ( void * ) get_acceptable_delay_buffer, 1, sizeof ( get_acceptable_delay_buffer ) - 1, fad ) > 0 )
        {
            if ( fad ) fclose ( fad );
            return ( atoi ( get_acceptable_delay_buffer ) );
        } else {
            if ( fad ) fclose ( fad );
            return ( -5 );
        }
    }
}

int fget_header_ext ( void )
{
    char get_header_ext_buffer [ 32 ] = "";
    
    FILE * fext = fopen ( "/qspi/myext.txt", "r" );
    if ( fext == NULL )
    {   
        return ( -3 );
    } else {
        if( fread ( ( void * ) get_header_ext_buffer, 1, sizeof ( get_header_ext_buffer ) - 1, fext ) > 0 )
        {
            if ( fext ) fclose ( fext );
            return ( atoi ( get_header_ext_buffer ) );
        } else {
            if ( fext ) fclose ( fext );
            return ( -5 );
        }
    }
}

int fset_header_sip_port ( const int new_header_sip_port )
{
    FILE * fport = fopen("/qspi/mysipport.txt", "w");
    if ( fport )
    {
        fprintf( fport,"%i\n\r", new_header_sip_port );
        fclose( fport );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_header_sip_port ( void )
{
    char get_header_sip_port_buffer [ 32 ] = "";
    
    FILE * fport = fopen ( "/qspi/mysipport.txt", "r" );
    if ( fport == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_header_sip_port_buffer, 1, sizeof ( get_header_sip_port_buffer ) - 1, fport ) > 0 )
        {
            if ( fport ) fclose ( fport );
            return ( atoi ( get_header_sip_port_buffer ) );
        } else {
            if ( fport ) fclose ( fport );
            return ( -3 );
        }
    }
}

int fset_server_ip ( const char * new_server_ip )
{
    FILE * fsip = fopen("/qspi/serverip.txt", "w");
    if ( fsip )
    {
        fprintf( fsip,"%s\n\r", new_server_ip );
        fclose( fsip );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fset_server_ext ( const int new_server_ext )
{
    FILE * fserext = fopen("/qspi/peerext.txt", "w");
    if ( fserext )
    {
        fprintf( fserext , "%i\n\r", new_server_ext );
        fclose( fserext );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_server_ext ( void )
{
    char get_server_ext_buffer [ 32 ] = "";
    
    FILE * fserver_ext = fopen ( "/qspi/peerext.txt", "r" );
    if ( fserver_ext == NULL )
    {   
        return ( -3 );
    } else {
        if( fread ( ( void * ) get_server_ext_buffer, 1, sizeof ( get_server_ext_buffer ) - 1, fserver_ext ) > 0 )
        {
            if ( fserver_ext ) fclose ( fserver_ext );
            return ( atoi ( get_server_ext_buffer ) );
        } else {
            if ( fserver_ext ) fclose ( fserver_ext );
            return ( -5 );
        }
    }
}

int fset_server_port ( const int new_server_port )
{
    FILE * fsport = fopen("/qspi/serverport.txt", "w");   
    if ( fsport )
    {
        fprintf(fsport,"%i\n\r", new_server_port );
        fclose( fsport );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_server_port ( void )
{
    char get_server_sip_port_buffer [ 32 ] = "";
    
    FILE * fserver_port = fopen ( "/qspi/serverport.txt", "r" );
    if ( fserver_port == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_server_sip_port_buffer, 1, sizeof ( get_server_sip_port_buffer ) - 1, fserver_port ) > 0 )
        {
            if ( fserver_port ) fclose ( fserver_port );
            return ( atoi ( get_server_sip_port_buffer ) );
        } else {
            if ( fserver_port ) fclose ( fserver_port );
            return ( -3 );
        }
    }
}

int fset_mask ( const char * new_mask )
{
    FILE * fmask = fopen("/qspi/mymask.txt", "w");
    if ( fmask )
    {
        fprintf(fmask,"%s\n\r",new_mask );
        fclose( fmask );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fset_gateway ( const char * new_gateway )
{
    FILE * fgate = fopen("/qspi/mygateway.txt", "w");
    if ( fgate )
    {
        fprintf(fgate,"%s\n\r", new_gateway );
        fclose( fgate );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int set_udp_port_listener ( const int new_udp_port_listener )
{
    FILE * fudpport = fopen( "/qspi/udpport.txt", "w" );
    if ( fudpport )
    {
        fprintf( fudpport, "%i\n\r",new_udp_port_listener );
        fclose( fudpport );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_udp_port_listener ( void )
{
    char get_udp_port_listener_buffer [ 32 ] = "";
    
    FILE * fudp_port_listener = fopen ( "/qspi/udpport.txt", "r" );
    if ( fudp_port_listener == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_udp_port_listener_buffer, 1, sizeof ( get_udp_port_listener_buffer ) - 1, fudp_port_listener ) > 0 )
        {
            if ( fudp_port_listener ) fclose ( fudp_port_listener );
            return ( atoi ( get_udp_port_listener_buffer ) );
        } else {
            if ( fudp_port_listener ) fclose ( fudp_port_listener );
            return ( -3 );
        }
    }
}

int set_tcp_port_listener ( const int new_tcp_port_listener )
{
    FILE * ftcpport = fopen( "/qspi/tcpport.txt", "w" );
    if ( ftcpport )
    {
        fprintf( ftcpport, "%i\n\r",new_tcp_port_listener );
        fclose( ftcpport );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_tcp_port_listener ( void )
{
    char get_tcp_port_listener_buffer [ 32 ] = "";
    
    FILE * ftcp_port_listener = fopen ( "/qspi/tcpport.txt", "r" );
    if ( ftcp_port_listener == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_tcp_port_listener_buffer, 1, sizeof ( get_tcp_port_listener_buffer ) - 1, ftcp_port_listener ) > 0 )
        {
            if ( ftcp_port_listener ) fclose ( ftcp_port_listener );
            return ( atoi ( get_tcp_port_listener_buffer ) );
        } else {
            if ( ftcp_port_listener ) fclose ( ftcp_port_listener );
            return ( -3 );
        }
    }
}

int fset_fw_ip ( const char * new_fw_ip )
{
    FILE * ffwip = fopen("/qspi/fw_ip.txt", "w" );
    if ( ffwip )
    {
        fprintf(ffwip,"%s\n\r", new_fw_ip );
        fclose( ffwip );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fset_fw_port ( const int new_fw_port )
{
    FILE * ffwport = fopen("/qspi/fw_port.txt", "w" );
    if ( ffwport )
    {
        fprintf(ffwport,"%i\n\r", new_fw_port );
        fclose( ffwport );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_fw_port ( void )
{
    char get_fw_server_port_buffer [ 32 ] = "";
    
    FILE * ffw_server_port = fopen ( "/qspi/fw_port.txt", "r" );
    if ( ffw_server_port == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_fw_server_port_buffer, 1, sizeof ( get_fw_server_port_buffer ) - 1, ffw_server_port ) > 0 )
        {
            if ( ffw_server_port ) fclose ( ffw_server_port );
            return ( atoi ( get_fw_server_port_buffer ) );
        } else {
            if ( ffw_server_port ) fclose ( ffw_server_port );
            return ( -3 );
        }
    }
}

int fset_max_ext ( const int new_max_ext )
{
    FILE * fmex = fopen( "/qspi/maxext.txt", "w" );
    if ( fmex ){
        fprintf( fmex, "%i\n\r", new_max_ext );
        fclose( fmex );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_max_ext ( void )
{
    char get_max_ext_buffer [ 32 ] = "";
    
    FILE * fmax_ext = fopen ( "/qspi/maxext.txt", "r" );
    if ( fmax_ext == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_max_ext_buffer, 1, sizeof ( get_max_ext_buffer ) - 1, fmax_ext ) > 0 )
        {
            if ( fmax_ext ) fclose ( fmax_ext );
            return ( atoi ( get_max_ext_buffer ) );
        } else {
            if ( fmax_ext ) fclose ( fmax_ext );
            return ( -3 );
        }
    }
}

int fset_min_ext ( const int new_min_ext )
{
    FILE * fmin = fopen( "/qspi/minext.txt", "w" );
    if ( fmin ){
        fprintf( fmin, "%i\n\r", new_min_ext );
        fclose( fmin );
        return ( 0 );
    }
        else
    {
        return ( -1 );    
    }
}

int fget_min_ext ( void )
{
    char get_min_ext_buffer [ 32 ] = "";
    
    FILE * fmin_ext = fopen ( "/qspi/minext.txt", "r" );
    if ( fmin_ext == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_min_ext_buffer, 1, sizeof ( get_min_ext_buffer ) - 1, fmin_ext ) > 0 )
        {
            if ( fmin_ext ) fclose ( fmin_ext );
            return ( atoi ( get_min_ext_buffer ) );
        } else {
            if ( fmin_ext ) fclose ( fmin_ext );
            return ( -3 );
        }
    }
}

// Print the content of a given file
int cat ( const char * fname )
{
    char buff[513];
    int num;
    
    FILE * fp = fopen( fname, "r" );
    if ( fp == NULL )
    {
        pc.printf( "Failed to open %s", fname);
        return ( -3 );
    }
    
    while( ( num = fread( buff, 1, 512, fp ) ) > 0 )
    {
        buff[ num ] = '\0';
        pc.printf( "%s", buff );
    }
    
    if ( fp ) fclose ( fp );
    
    return ( 0 );
}

int fset_shift_port ( const int new_shift_port )
{
    FILE * shift_port = fopen("/qspi/shift_port.txt", "w" );
    if( shift_port )
    {
        fprintf( shift_port,"%i\n\r", new_shift_port );
        fclose( shift_port );
        return ( 0 );
    }
        else
    {
        return ( -1 );
    }
}


int fget_shift_port ( void )
{
    char get_shift_port_buffer [ 32 ] = "";
    
    FILE * fshift_port = fopen ( "/qspi/shift_port.txt", "r" );
    if ( fshift_port == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_shift_port_buffer, 1, sizeof ( get_shift_port_buffer ) - 1, fshift_port ) > 0 )
        {
            if ( fshift_port ) fclose ( fshift_port );
            return ( atoi ( get_shift_port_buffer ) );
        } else {
            if ( fshift_port ) fclose ( fshift_port );
            return ( -3 );
        }
    }
}

int files ( const char type )
{       
    if ( type == 's' ) {     
        pc.printf("Header IP " );
        cat ("/qspi/myip.txt");

        pc.printf("Header ext ");
        cat("/qspi/myext.txt");

        pc.printf("Header port ");
        cat("/qspi/mysipport.txt");

        pc.printf("Server IP ");
        cat("/qspi/serverip.txt");

        pc.printf("Server ext ");
        cat("/qspi/peerext.txt");

        pc.printf("Server port ");
        cat("/qspi/serverport.txt");

        pc.printf("Mascara de rede ");
        cat("/qspi/mymask.txt");

        pc.printf("Gateway IP ");
        cat("/qspi/mygateway.txt");

        pc.printf("UDP Port ");
        cat("/qspi/udpport.txt");

        pc.printf("TCP Port ");
        cat("/qspi/tcpport.txt");

        pc.printf("FW Server IP ");
        cat("/qspi/fw_ip.txt");

        pc.printf("FW Server Port ");
        cat("/qspi/fw_port.txt");

        pc.printf("Max Ext ");
        cat("/qspi/maxext.txt");

        pc.printf("Min Ext ");
        cat("/qspi/minext.txt");
        
        pc.printf("Shift Port ");
        cat("/qspi/shift_port.txt");

        pc.printf("Clock Server IP ");
        cat("/qspi/serverip.txt");
            
        return ( 0 );
    }
    
    return ( -1 );
}

int init_fsystem ( void )
{
    //  init file system and check if files exist
    int return_value = 0;
    
    if (!qspifs.isformatted()) {
        qspifs.format();
        return_value |= BIT0;
    }
    
    return ( return_value |= BIT1 );
}

int fset_cbx_detach_mode ( const bool new_cbx_detach_mode )
{
    FILE * file_cbx_detach_mode = fopen ("/qspi/cbx_detach_mode.txt", "w" );
    if ( file_cbx_detach_mode )
    {
        fprintf ( file_cbx_detach_mode,"%i\n\r", ( new_cbx_detach_mode ) ? 1 : 0 );
        fclose ( file_cbx_detach_mode );
        return ( 0 );
    }
        else
    {
        return ( -1 );
    }
}

bool fget_cbx_detach_mode ( int * err )
{
    char get_cbx_detach_mode_buffer [ 32 ] = "";
    
    FILE * file_cbx_detach_mode = fopen ( "/qspi/cbx_detach_mode.txt", "r" );
    if ( file_cbx_detach_mode == NULL )
    {
        *err = -1;
    } else {
        if( fread ( ( void * ) get_cbx_detach_mode_buffer, 1, sizeof ( get_cbx_detach_mode_buffer ) - 1, file_cbx_detach_mode ) > 0 )
        {
            if ( file_cbx_detach_mode ) fclose ( file_cbx_detach_mode );
            int tmp = atoi ( get_cbx_detach_mode_buffer );
            
            return ( ( tmp == 1 ) ? true : false );
        } else {
            if ( file_cbx_detach_mode ) fclose ( file_cbx_detach_mode );
            *err = -3;
        }
    }
    
    return false;
}

int fset_cbx_wake_mode ( const bool new_cbx_wake_mode )
{
    FILE * file_cbx_wake_mode = fopen ("/qspi/cbx_wake_mode.txt", "w" );
    if ( file_cbx_wake_mode )
    {
        fprintf ( file_cbx_wake_mode,"%i\n\r", ( new_cbx_wake_mode ) ? 1 : 0 );
        fclose ( file_cbx_wake_mode );
        return ( 0 );
    }
        else
    {
        return ( -1 );
    }
}

bool fget_cbx_wake_mode ( int * err )
{
    char get_cbx_wake_mode_buffer [ 32 ] = "";
    
    FILE * file_cbx_wake_mode = fopen ( "/qspi/cbx_wake_mode.txt", "r" );
    if ( file_cbx_wake_mode == NULL )
    {
        *err = -1;
    } else {
        if( fread ( ( void * ) get_cbx_wake_mode_buffer, 1, sizeof ( get_cbx_wake_mode_buffer ) - 1, file_cbx_wake_mode ) > 0 )
        {
            if ( file_cbx_wake_mode ) fclose ( file_cbx_wake_mode );
            int tmp = atoi ( get_cbx_wake_mode_buffer );
            
            return ( ( tmp == 1 ) ? true : false );
        } else {
            if ( file_cbx_wake_mode ) fclose ( file_cbx_wake_mode );
            *err = -3;
        }
    }
    
    return false;
}

int fset_cbx_mode ( const uint8_t new_cbx_mode )
{
    FILE * file_cbx_mode = fopen ("/qspi/cbx_mode.txt", "w" );
    if ( file_cbx_mode )
    {
        fprintf ( file_cbx_mode,"%i\n\r", new_cbx_mode );
        fclose ( file_cbx_mode );
        return ( 0 );
    }
        else
    {
        return ( -1 );
    }
}

int fget_cbx_mode ( void )
{
    char get_cbx_mode_buffer [ 32 ] = "";
    
    FILE * file_cbx_mode = fopen ( "/qspi/cbx_mode.txt", "r" );
    if ( file_cbx_mode == NULL )
    {
        return ( -1 );
    } else {
        if( fread ( ( void * ) get_cbx_mode_buffer, 1, sizeof ( get_cbx_mode_buffer ) - 1, file_cbx_mode ) > 0 )
        {
            if ( file_cbx_mode ) fclose ( file_cbx_mode );
            return ( atoi ( get_cbx_mode_buffer ) );
        } else {
            if ( file_cbx_mode ) fclose ( file_cbx_mode );
            return ( -3 );
        }
    }
}