Merge branch '148-bugfix-Expressmimo2-driver' into develop_integration_wk01
This commit is contained in:
@@ -298,6 +298,8 @@ static void *watchdog_thread(void *arg) {
|
||||
int first_acquisition;
|
||||
struct timespec sleep_time,wait;
|
||||
|
||||
int ret;
|
||||
|
||||
|
||||
wait.tv_sec=0;
|
||||
wait.tv_nsec=50000000L;
|
||||
@@ -405,10 +407,10 @@ static void *watchdog_thread(void *arg) {
|
||||
|
||||
first_acquisition=1;
|
||||
printf("Locking watchdog for first acquisition\n");
|
||||
pthread_mutex_timedlock(&exm->watchdog_mutex,&wait);
|
||||
ret = pthread_mutex_timedlock(&exm->watchdog_mutex,&wait);
|
||||
// main loop to keep up with DMA transfers from exmimo2
|
||||
|
||||
int cnt_diff0=0;
|
||||
unsigned long long cnt_diff0=0;
|
||||
while ((!oai_exit) && (!exm->watchdog_exit)) {
|
||||
|
||||
if (exm->daq_state == running) {
|
||||
@@ -425,7 +427,15 @@ static void *watchdog_thread(void *arg) {
|
||||
exm->last_mbox = mbox;
|
||||
|
||||
if (first_acquisition==0)
|
||||
pthread_mutex_timedlock(&exm->watchdog_mutex,&wait);
|
||||
{
|
||||
ret = pthread_mutex_timedlock(&exm->watchdog_mutex,&wait);
|
||||
if(ret)
|
||||
{
|
||||
// exm->watchdog_exit = 1;
|
||||
printf("watchdog_thread pthread_mutex_timedlock error = %d\n", ret);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
exm->ts += (diff*exm->samples_per_frame/150) ;
|
||||
|
||||
@@ -434,7 +444,7 @@ static void *watchdog_thread(void *arg) {
|
||||
(diff > 16)&&
|
||||
(first_acquisition==0)) {// we're too late so exit
|
||||
exm->watchdog_exit = 1;
|
||||
printf("exiting, too late to keep up\n");
|
||||
printf("exiting, too late to keep up - diff = %d\n", diff);
|
||||
}
|
||||
first_acquisition=0;
|
||||
|
||||
@@ -443,7 +453,7 @@ static void *watchdog_thread(void *arg) {
|
||||
cnt_diff0++;
|
||||
if (cnt_diff0 == 10) {
|
||||
exm->watchdog_exit = 1;
|
||||
printf("exiting, HW stopped\n");
|
||||
printf("exiting, HW stopped %llu\n", cnt_diff0);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -454,9 +464,11 @@ static void *watchdog_thread(void *arg) {
|
||||
(exm->ts - exm->last_ts_rx > exm->samples_per_frame)) {
|
||||
exm->watchdog_exit = 1;
|
||||
printf("RX Overflow, exiting (TS %llu, TS last read %llu)\n",
|
||||
exm->ts,exm->last_ts_rx);
|
||||
(long long unsigned int)exm->ts,(long long unsigned int)exm->last_ts_rx);
|
||||
}
|
||||
// printf("ts %lu, last_ts_rx %lu, mbox %d, diff %d\n",exm->ts, exm->last_ts_rx,mbox,diff);
|
||||
|
||||
if ( !ret )
|
||||
pthread_mutex_unlock(&exm->watchdog_mutex);
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user