@@ -929,7 +929,7 @@ void TestBlockWrite(unsigned int wlen_max, AmpIO *wboard, AmpIO *rboard)
929929 }
930930}
931931
932- void TestWaveform (AmpIO *board)
932+ void TestWaveform (AmpIO *board, size_t numReads = 1 )
933933{
934934 const unsigned int WLEN = 256 ;
935935 quadlet_t waveform[WLEN];
@@ -961,20 +961,25 @@ void TestWaveform(AmpIO *board)
961961 return ;
962962 }
963963 Amp1394_Sleep (0.05 );
964- std::cout << " Reading data" << std::endl;
965- if (!board->ReadWaveformTable (waveform_read, 0 , WLEN)) {
966- std::cout << " ReadWaveformTable failed" << std::endl;
967- return ;
968- }
969- for (i = 0 ; i < WLEN; i++) {
970- if (waveform_read[i] != waveform[i]) {
971- std::cout << " Mismatch at quadlet " << i << " , read " << std::hex
972- << waveform_read[i] << " , expected " << waveform[i]
973- << std::dec << std::endl;
964+ for (size_t n = 0 ; n < numReads; n++) {
965+ std::cout << " Reading data" ;
966+ if (numReads > 1 )
967+ std::cout << " : iteration " << n;
968+ std::cout << std::endl;
969+ if (!board->ReadWaveformTable (waveform_read, 0 , WLEN)) {
970+ std::cout << " ReadWaveformTable failed" << std::endl;
974971 return ;
975972 }
973+ for (i = 0 ; i < WLEN; i++) {
974+ if (waveform_read[i] != waveform[i]) {
975+ std::cout << " Mismatch at quadlet " << i << " , read " << std::hex
976+ << waveform_read[i] << " , expected " << waveform[i]
977+ << std::dec << std::endl;
978+ return ;
979+ }
980+ }
981+ std::cout << " Pattern verified!" << std::endl;
976982 }
977- std::cout << " Pattern verified!" << std::endl;
978983#if 0
979984 // Following code will actually generate waveform on DOUT lines
980985 board->WriteDigitalOutput(0x0f,0x00);
@@ -1137,6 +1142,7 @@ int main(int argc, char **argv)
11371142 int port = 0 ;
11381143 std::string IPaddr (ETH_UDP_DEFAULT_IP);
11391144 bool fwBridge = false ;
1145+ bool isVerbose = false ;
11401146
11411147 if (argc > 1 ) {
11421148 for (int i = 1 ; i < argc; i++) {
@@ -1149,10 +1155,14 @@ int main(int argc, char **argv)
11491155 useEthernet = false ;
11501156 }
11511157 }
1158+ else if ((argv[i][0 ] == ' -' ) && (argv[i][1 ] == ' v' )) {
1159+ isVerbose = true ;
1160+ }
11521161 else {
1153- std::cerr << " Usage: eth1394test [-pP]" << std::endl
1162+ std::cerr << " Usage: eth1394test [-pP] [-v] " << std::endl
11541163 << " where P = port number (default 0)" << std::endl
1155- << " can also specify -pethP or -pudp" << std::endl;
1164+ << " can also specify -pethP or -pudp" << std::endl
1165+ << " -v verbose output (ZynqEmioPort)" << std::endl;
11561166 return 0 ;
11571167 }
11581168
@@ -1202,11 +1212,14 @@ int main(int argc, char **argv)
12021212 }
12031213 }
12041214#elif Amp1394_HAS_EMIO
1205- FwPort = new ZynqEmioPort (port, std::cout);
1206- if (!FwPort->IsOK ()) {
1215+ ZynqEmioPort *ZynqPort;
1216+ ZynqPort = new ZynqEmioPort (port, std::cout);
1217+ if (!ZynqPort->IsOK ()) {
12071218 std::cout << " Failed to initialize Zynq EMIO port" << std::endl;
12081219 return 0 ;
12091220 }
1221+ ZynqPort->SetVerbose (isVerbose);
1222+ FwPort = ZynqPort;
12101223 FwPortIsZynq = true ;
12111224 // Zynq EMIO port always has one node (0)
12121225 unsigned int bnum = FwPort->GetBoardId (0 );
@@ -1625,7 +1638,7 @@ int main(int argc, char **argv)
16251638 break ;
16261639
16271640 case ' w' :
1628- TestWaveform (curBoard);
1641+ TestWaveform (curBoard, 10 );
16291642 break ;
16301643
16311644 case ' x' :
0 commit comments