User`s manual
UC-7408 User’s Manual Programmer’s Guide
5-17
// configure the dout frequency. When the timer timeouts, dout_control() will
be called to change the dout state
value.it_value.tv_sec = duration[0][nDuration]/1000;
value.it_value.tv_usec = (duration[0][nDuration]%1000) *1000 ;
value.it_interval = value.it_value;
setitimer(ITIMER_REAL,&value,NULL);
ndin_StateChangeDetected = 0; // reset these counters
ndout_StateChangeDetected = 0;
printf("DI duration,:0, DO duration:%d\n",duration[0][nDuration]);
set_din_event(0, low2highevent, DIN_EVENT_LOW_TO_HIGH, 0);
while( ndin_StateChangeDetected < TEST_NUM ) {
pause();
}
printf("ndin_StateChangeDetected:%d, ndout_StateChangeDetected:%d,\n",
ndin_StateChangeDetected, ndout_StateChangeDetected);
printf("loss detection
probability:%f\%,\n",(ndout_StateChangeDetected-ndin_StateChangeDetected)*100.0/nd
out_StateChangeDetected);
}
}//end of if( nChoice ==0 )
else if( nChoice == 1 ) { //test for din duration!=0
for ( nDuration=0; nDuration < DURATION_NUM; nDuration++ ) {
// configure the dout frequence. when the timer timeout, dout_control() will
be call to change the dout state
value.it_value.tv_sec = duration[1][nDuration]/1000;
value.it_value.tv_usec = ( duration[1][nDuration]%1000 ) *1000 ;
value.it_interval = value.it_value;
setitimer(ITIMER_REAL,&value,NULL);
// Test for: dout kept in the same frequency but din set for different duration
for( i=0; i<DURATION_NUM; i++) {
if( duration[1][i] <= duration[1][nDuration] ) {
// reset these counters
ndin_StateChangeDetected = 0;
ndout_StateChangeDetected = 0;
printf("DI duration,:%d, DO duration:%d\n", duration[1][i],
duration[1][nDuration] );
set_din_event(0, low2highevent, DIN_EVENT_LOW_TO_HIGH, duration[1][i]);
while( ndout_StateChangeDetected < TEST_NUM ) {
pause();
}
printf("ndin_StateChangeDetected:%d, ndout_StateChangeDetected:%d,\n",
ndin_StateChangeDetected, ndout_StateChangeDetected);
printf("loss detection
probability:%f\%,\n",(ndout_StateChangeDetected-ndin_StateChangeDetected)*100.0/nd
out_StateChangeDetected);
}
} //end of for( i=0; i<DURATION_NUM; i++)
}
}
} while(1);
pthread_exit(NULL);
}
void init_sigaction(void)
{
struct sigaction act;
act.sa_handler=dout_control;