// // #include #include #include "SiUSBXp.h" #include "chimaera.h" #include "utils.h" devicePacket_t cmdPacket; devicePacket_t lastStatus; devicePacket_t lastData; bool quiet = false; bool verbose = false; int main( int argc, char **argv ) { SI_STATUS rc; HANDLE deviceHandle; unsigned maxLoops = 10; unsigned maxEvents = 1; unsigned char maxPacketRequest = 10; rc = openDevice( "Cavendish Chimaera USB", 0, &deviceHandle ); if ( rc != SI_SUCCESS ) { printf( "openDevice(): rc = %d\n", rc ); exit(0); } for ( unsigned arg=1;arg>4)+1; cmdPacket.cmd = deviceHeader_t::FlushRequest; requestDevice( deviceHandle, cmdPacket ); usleep(10000); if ( verbose ) printf( "#packets = %#x\n", packets ); unsigned char packetsRequested; for ( unsigned packet=0; packet= maxPacketRequest ) { packetsRequested = maxPacketRequest; } else { packetsRequested = packetsRemaining; } cmdPacket.cmd = deviceHeader_t::PacketRequest; cmdPacket.uc[0] = packetsRequested; // Number of packets requestDevice( deviceHandle, cmdPacket ); for ( unsigned char nread=packetsRequested; nread; nread-- ) { readDeviceData( deviceHandle, lastData, 68 ); if ( !quiet ) showLastData( lastData ); if ( lastData.cmd != deviceHeader_t::Data ) { printf( "cmd=%#x\n", lastData.cmd ); break; } } } if ( verbose ) { cmdPacket.cmd = deviceHeader_t::StatusRequest; requestDevice( deviceHandle, cmdPacket ); readDeviceData( deviceHandle, lastStatus, 68 ); showLastStatus( lastStatus ); } } // Close the device rc = closeDevice( deviceHandle ); if ( rc != SI_SUCCESS ) { printf( "closeDevice(): rc = %d\n", rc ); exit(0); } }