// // #include #include #include "SiUSBXp.h" #include "l1c8051.h" devicePacket_t cmdPacket; devicePacket_t lastStatus; devicePacket_t lastData; bool verbose = false; l1c8051 *usb; int main( int argc, char **argv ) { SI_STATUS rc; unsigned deviceSerial = 1; HANDLE deviceHandle; // First pass over command-line arguments to find device type and index for ( unsigned arg=1;argshowErrorTrace(); exit(0); } // Second pass over command-line arguments for ( unsigned arg=1;argflushBuffer( 2, true ); } else if ( !strcmp( argv[arg], "--status" ) ) { cmdPacket.cmd = deviceHeader_t::StatusRequest; usb->dispatch( cmdPacket, 8 ); if ( !(*usb) ) usb->showErrorTrace(); usb->receive( lastStatus, 68 ); if ( !(*usb) ) usb->showErrorTrace(); for ( unsigned wordNumber=0; wordNumber < 32; wordNumber++ ) printf( "[%d] %#06x\n", wordNumber, lastStatus.us[wordNumber] ); } else if ( !strcmp( argv[arg], "--config" ) ) { cmdPacket.cmd = deviceHeader_t::ConfigurationData; unsigned char registerId = strtoul( argv[++arg], 0, 0 ) & 0x1f; unsigned short registerData = strtoul( argv[++arg], 0, 0 ); cmdPacket.config.Id = registerId; cmdPacket.config.Data = registerData; usb->dispatch( cmdPacket, 8 ); if ( !(*usb) ) usb->showErrorTrace(); usb->receive( lastStatus, 68 ); if ( !(*usb) ) usb->showErrorTrace(); // printf( "Register Id = %#x, data = %#x\n", registerId, registerData ); // for ( unsigned wordNumber=0; wordNumber < 32; wordNumber++ ) // printf( "[%d] %#06x\n", wordNumber, lastStatus.us[wordNumber] ); } else if ( !strcmp( argv[arg], "--reset" ) ) { cmdPacket.cmd = deviceHeader_t::ResetRequest; usb->dispatch( cmdPacket, 8 ); } else if ( !strcmp( argv[arg], "--l1reset" ) ) { cmdPacket.cmd = deviceHeader_t::L1ResetRequest; usb->dispatch( cmdPacket, 8 ); } else if ( !strcmp( argv[arg], "--int0Enable" ) ) { cmdPacket.cmd = deviceHeader_t::Int0Enable; usb->dispatch( cmdPacket, 8 ); } else if ( !strcmp( argv[arg], "--int0Disable" ) ) { cmdPacket.cmd = deviceHeader_t::Int0Disable; usb->dispatch( cmdPacket, 8 ); } else if ( !strcmp( argv[arg], "--int0Monitor" ) ) { cmdPacket.cmd = deviceHeader_t::Int0Enable; usb->dispatch( cmdPacket, 8 ); printf( "Int0Monitor: waiting for interrupt\n" ); usb->receive( lastStatus, 68 ); if ( !(*usb) ) { usb->showErrorTrace(); } } else if ( !strcmp( argv[arg], "--verbose" ) ) { verbose = true; } } // Close the device if ( usb ) delete usb; }