Changeset 303

Show
Ignore:
Timestamp:
09/17/06 09:48:45 (16 years ago)
Author:
wagi
Message:

Streaming test for the m-audio 410. some improvements in handling of
non-comfrorming devices (such as firespy)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libfreebob/src/bebob/bebob_dl_mgr.cpp

    r297 r303  
    7474    , m_isAppRunning( false ) 
    7575    , m_forceEnabled( false ) 
     76    , m_bStartBootloader( true ) 
    7677{ 
    7778    memset( &m_cachedInfoRegs, 0, sizeof( m_cachedInfoRegs ) ); 
     
    8081    // XXX throw exception if initialize fails! 
    8182    m_configRom->initialize(); 
    82     cacheInfoRegisters(); 
     83    if ( !cacheInfoRegisters() ) { 
     84        debugError( "BootloaderManager: could not cache info registers\n" ); 
     85    } 
    8386 
    8487    switch(  m_cachedInfoRegs.m_protocolVersion ) { 
     
    118121{ 
    119122    if ( !m_configRom->updatedNodeId() ) { 
     123        debugError( "cacheInfoRegisters: did not find device anymore\n" ); 
    120124        return false; 
    121125    } 
     
    238242    } 
    239243 
    240     printf( "prepare for download (start bootloader)\n" ); 
    241     if ( !startBootloaderCmd() ) { 
    242         debugError( "downloadFirmware: Could not start bootloader\n" ); 
    243         return false; 
     244    if ( m_bStartBootloader ) { 
     245        printf( "prepare for download (start bootloader)\n" ); 
     246        if ( !startBootloaderCmd() ) { 
     247            debugError( "downloadFirmware: Could not start bootloader\n" ); 
     248            return false; 
     249        } 
    244250    } 
    245251 
     
    299305    } 
    300306 
    301     printf( "prepare for download (start bootloader)\n" ); 
    302     if ( !startBootloaderCmd() ) { 
    303         debugError( "downloadCnE: Could not start bootloader\n" ); 
    304         return false; 
     307    if ( m_bStartBootloader ) { 
     308        printf( "prepare for download (start bootloader)\n" ); 
     309        if ( !startBootloaderCmd() ) { 
     310            debugError( "downloadCnE: Could not start bootloader\n" ); 
     311            return false; 
     312        } 
    305313    } 
    306314 
     
    502510BeBoB::BootloaderManager::programGUID( fb_octlet_t guid ) 
    503511{ 
    504     if ( !startBootloaderCmd() ) { 
    505         debugError( "programGUID: Could not start bootloader\n" ); 
    506         return false; 
     512    if ( m_bStartBootloader ) { 
     513        if ( !startBootloaderCmd() ) { 
     514            debugError( "programGUID: Could not start bootloader\n" ); 
     515            return false; 
     516        } 
    507517    } 
    508518 
  • trunk/libfreebob/src/bebob/bebob_dl_mgr.h

    r280 r303  
    5959        bool setForceOperations( bool enabled ) 
    6060            { m_forceEnabled = enabled; return true; } 
     61 
     62        bool setStartBootloader( bool bStartBootloader ) 
     63            { m_bStartBootloader = bStartBootloader; return true; } 
    6164    protected: 
    6265        enum EObjectType { 
     
    115118 
    116119        bool            m_forceEnabled; 
     120        bool            m_bStartBootloader; 
    117121 
    118122        DECLARE_DEBUG_MODULE; 
  • trunk/libfreebob/src/configrom.cpp

    r282 r303  
    360360ConfigRom::updatedNodeId() 
    361361{ 
     362    struct csr1212_csr* csr = 0; 
    362363    for ( fb_nodeid_t nodeId = 0; 
    363364          nodeId < m_1394Service->getNodeCount(); 
     
    368369        csr_info.nodeId = 0xffc0 | nodeId; 
    369370 
    370         struct csr1212_csr* csr = 
    371             csr1212_create_csr( &configrom_csr1212_ops, 
    372                                 5 * sizeof(fb_quadlet_t),   // XXX Why 5 ?!? 
    373                                 &csr_info ); 
     371        csr = csr1212_create_csr( &configrom_csr1212_ops, 
     372                                  5 * sizeof(fb_quadlet_t),   // XXX Why 5 ?!? 
     373                                  &csr_info ); 
    374374 
    375375        if (!csr || csr1212_parse_csr( csr ) != CSR1212_SUCCESS) { 
     
    377377                csr1212_destroy_csr(csr); 
    378378            } 
    379             return false; 
     379            continue; 
    380380        } 
    381381 
     
    396396                m_nodeId = nodeId; 
    397397            } 
     398            if (csr) { 
     399                csr1212_destroy_csr(csr); 
     400            } 
    398401            return true; 
    399402        } 
     403    } 
     404 
     405    if (csr) { 
     406        csr1212_destroy_csr(csr); 
    400407    } 
    401408 
  • trunk/libfreebob/src/freebob-downloader.cpp

    r297 r303  
    4646    {"port",      'p', "PORT",      0,  "Set port" }, 
    4747    {"force",     'f', 0,           0,  "Force firmware download" }, 
     48    {"noboot",    'b', 0,           0,  "Do no start bootloader (bootloader is already running)" }, 
    4849    { 0 } 
    4950}; 
     
    6566    int   port; 
    6667    int   force; 
     68    int   no_bootloader_restart; 
    6769} arguments; 
    6870 
     
    9799        arguments->force = 1; 
    98100        break; 
     101    case 'b': 
     102        arguments->no_bootloader_restart = 1; 
     103        break; 
    99104    case ARGP_KEY_ARG: 
    100105        if (state->arg_num >= 3) { 
     
    171176        std::string str( arguments.args[2] ); 
    172177 
     178        blMgr.setStartBootloader( arguments.no_bootloader_restart != 1 ); 
    173179        if ( !blMgr.downloadFirmware( str ) ) { 
    174180            cerr << "Failed to download firmware" << endl; 
  • trunk/libfreebob/src/maudio/fw410.xml

    r299 r303  
    1414        <Port>0</Port> 
    1515        <Node>1</Node> 
     16        <Plug>0</Plug> 
    1617        <Dimension>8</Dimension> 
    1718        <Samplerate>48000</Samplerate> 
    1819        <IsoChannel>-1</IsoChannel> 
     20        <Master>0</Master> 
    1921        <Streams> 
    2022          <Stream> 
     
    8890        <Port>0</Port> 
    8991        <Node>1</Node> 
    90         <Dimension>2</Dimension> 
    91         <Samplerate>48000</Samplerate> 
    92         <IsoChannel>-1</IsoChannel> 
     92        <Plug>1</Plug> 
     93        <Dimension>2</Dimension> 
     94        <Samplerate>48000</Samplerate> 
     95        <IsoChannel>-1</IsoChannel> 
     96        <Master>0</Master> 
    9397        <Streams> 
    9498          <Stream> 
     
    110114        </Streams> 
    111115      </Connection> 
    112  
    113       <Connection> 
    114         <Port>0</Port> 
    115         <Node>1</Node> 
    116         <Dimension>1</Dimension> 
    117         <Samplerate>48000</Samplerate> 
    118         <IsoChannel>-1</IsoChannel> 
     116       
     117      <!-- 
     118      <Connection> 
     119        <Port>0</Port> 
     120        <Node>1</Node> 
     121        <Plug>2</Plug> 
     122        <Dimension>2</Dimension> 
     123        <Samplerate>48000</Samplerate> 
     124        <IsoChannel>-1</IsoChannel> 
     125        <Master>0</Master> 
    119126        <Streams> 
    120127          <Stream> 
     
    126133            <Name>MIDIOut L</Name> 
    127134          </Stream> 
     135          <Stream> 
     136            <Position>1</Position> 
     137            <Location>2</Location> 
     138            <Format>6</Format> 
     139            <Type>4</Type> 
     140            <DestinationPort>2</DestinationPort> 
     141            <Name>Dummy</Name> 
     142          </Stream> 
    128143        </Streams> 
    129144      </Connection> 
     145      --> 
     146 
    130147    </ConnectionSet> 
     148 
    131149 
    132150    <ConnectionSet> 
     
    136154        <Port>0</Port> 
    137155        <Node>1</Node> 
    138         <Dimension>2</Dimension> 
    139         <Samplerate>48000</Samplerate> 
    140         <IsoChannel>-1</IsoChannel> 
     156        <Plug>0</Plug> 
     157        <Dimension>2</Dimension> 
     158        <Samplerate>48000</Samplerate> 
     159        <IsoChannel>-1</IsoChannel> 
     160        <Master>1</Master> 
    141161        <Streams> 
    142162          <Stream> 
     
    159179      </Connection> 
    160180 
    161       <Connection> 
    162         <Port>0</Port> 
    163         <Node>1</Node> 
    164         <Dimension>2</Dimension> 
    165         <Samplerate>48000</Samplerate> 
    166         <IsoChannel>-1</IsoChannel> 
     181      <!-- 
     182      <Connection> 
     183        <Port>0</Port> 
     184        <Node>1</Node> 
     185        <Plug>1</Plug> 
     186        <Dimension>2</Dimension> 
     187        <Samplerate>48000</Samplerate> 
     188        <IsoChannel>-1</IsoChannel> 
     189        <Master>0</Master> 
    167190        <Streams> 
    168191          <Stream> 
     
    184207        </Streams> 
    185208      </Connection> 
    186  
    187       <Connection> 
    188         <Port>0</Port> 
    189         <Node>1</Node> 
    190         <Dimension>1</Dimension> 
    191         <Samplerate>48000</Samplerate> 
    192         <IsoChannel>-1</IsoChannel> 
     209      --> 
     210 
     211      <Connection> 
     212        <Port>0</Port> 
     213        <Node>1</Node> 
     214        <Plug>2</Plug> 
     215        <Dimension>2</Dimension> 
     216        <Samplerate>48000</Samplerate> 
     217        <IsoChannel>-1</IsoChannel> 
     218        <Master>0</Master> 
    193219        <Streams> 
    194220          <Stream> 
     
    200226            <Name>MIDIIn</Name> 
    201227          </Stream> 
    202         </Streams> 
    203       </Connection> 
     228          <Stream> 
     229            <Position>1</Position> 
     230            <Location>2</Location> 
     231            <Format>6</Format> 
     232            <Type>4</Type> 
     233            <DestinationPort>2</DestinationPort> 
     234            <Name>Dummy</Name> 
     235          </Stream> 
     236        </Streams> 
     237      </Connection> 
     238 
    204239    </ConnectionSet> 
    205240 
     
    210245        <Samplerate>48000</Samplerate> 
    211246        <AudioChannels>10</AudioChannels> 
    212         <MidiChannels>1</MidiChannels> 
     247        <MidiChannels>0</MidiChannels> 
    213248      </Format> 
    214249    </StreamFormats> 
     
    217252      <Format> 
    218253        <Samplerate>48000</Samplerate> 
    219         <AudioChannels>4</AudioChannels> 
    220         <MidiChannels>1</MidiChannels> 
     254        <AudioChannels>2</AudioChannels> 
     255        <MidiChannels>2</MidiChannels> 
    221256      </Format> 
    222257    </StreamFormats> 
  • trunk/libfreebob/src/maudio/maudio_avdevice.cpp

    r299 r303  
    7575 
    7676    {0x000d6c, 0x00010046, "fw410.xml"},       // M-Audio, FW 410 
     77    {0x000d6c, 0x00010058, "fw410.xml"},       // M-Audio, FW 410; Version 5.10.0.5036 
    7778}; 
    7879 
     
    180181                    return false; 
    181182                } 
     183 
     184                // set correct node id 
     185                for ( xmlNodePtr pNode = pDevDesc->xmlChildrenNode; pNode; pNode = pNode->next ) { 
     186                    if ( ( !xmlStrcmp( pNode->name,  ( const xmlChar * ) "Connection" ) ) ) { 
     187                        for ( xmlNodePtr pSubNode = pNode->xmlChildrenNode; pSubNode; pSubNode = pSubNode->next ) { 
     188                            if ( ( !xmlStrcmp( pSubNode->name,  ( const xmlChar * ) "Node" ) ) ) { 
     189                                char* result; 
     190                                asprintf( &result, "%d", m_iNodeId ); 
     191                                xmlNodeSetContent( pSubNode, BAD_CAST result ); 
     192                                free( result ); 
     193                            } 
     194                        } 
     195                    } 
     196                } 
     197 
    182198                xmlAddChild( pDeviceNode, pDevDesc ); 
    183199            } 
  • trunk/libfreebob/src/xmlparser.c

    r241 r303  
    177177        ConnectionSpecParseNode( "Dimension", dimension ); 
    178178        ConnectionSpecParseNode( "Samplerate", samplerate ); 
    179         ConnectionSpecParseNode( "IsoChannel", iso_channel ); 
     179        ConnectionSpecParseNode( "IsoChannel", iso_channel ); 
     180        ConnectionSpecParseNode( "Master", is_master ); 
    180181 
    181182        if ( !xmlStrcmp( cur->name, (const xmlChar*) "Streams" ) ) { 
  • trunk/libfreebob/tests/Makefile.am

    r259 r303  
    2121        $(LIBAVC1394_CFLAGS) 
    2222 
    23 noinst_PROGRAMS = test-freebob test-extplugcmd freebob-server 
     23noinst_PROGRAMS = test-freebob test-extplugcmd test-fw410 freebob-server 
    2424noinst_HEADERS =  
    2525 
     
    3232        $(LIBAVC1394_LIBS) 
    3333 
     34test_fw410_SOURCES = test-fw410.cpp 
     35test_fw410_LDADD   = $(LIBAVC1394_LIBS) $(LIBIEC61883_LIBS) -lrom1394 
     36 
    3437freebob_server_SOURCES = freebob-server.c 
    3538freebob_server_LDADD   = $(top_builddir)/src/libfreebob.la $(LIBXML_LIBS) \