pslr_handle_t camera_connect( char *model, char *device, int timeout, char *error_message ) { struct timeval prev_time; struct timeval current_time; pslr_handle_t camhandle; int r; gettimeofday(&prev_time, NULL); while (!(camhandle = pslr_init( model, device ))) { gettimeofday(¤t_time, NULL); DPRINT("diff: %f\n", timeval_diff_sec(¤t_time, &prev_time)); if ( timeout == 0 || timeout > timeval_diff_sec(¤t_time, &prev_time)) { DPRINT("sleep 1 sec\n"); sleep_sec(1); } else { snprintf(error_message, 1000, "%d %ds timeout exceeded\n", 1, timeout); return NULL; } } DPRINT("before connect\n"); if (camhandle) { if ((r=pslr_connect(camhandle)) ) { if ( r != -1 ) { snprintf(error_message, 1000, "%d Cannot connect to Pentax camera. Please start the program as root.\n",1); } else { snprintf(error_message, 1000, "%d Unknown Pentax camera found.\n",1); } return NULL; } } return camhandle; }
const Camera * camera() { if(!theCamera && (theHandle = pslr_init(NULL, theDevice))) { atexit(cleanup); theCamera = new Camera(); } return theCamera; }