int PointGreyCamera::toggleStrobeOut(int pin, bool onOff) { StrobeControl strobeControl; strobeControl.source = pin; Error err = m_camera->GetStrobe(&strobeControl); if (err != PGRERROR_OK) { return err.GetType(); } // Check if we need to change register if (strobeControl.onOff == onOff) { if (!onOff || (onOff && strobeControl.polarity == 0 && strobeControl.delay == 0.0f && strobeControl.duration == 0.0f)) { return 0; } } strobeControl.onOff = onOff; if (onOff) { strobeControl.polarity = 0; // low (falling edge) signal strobeControl.delay = 0.0f; // ms strobeControl.duration = 0.0f; // ms. duration 0 = shutter time } err = m_camera->SetStrobe(&strobeControl); return err.GetType(); }
void PointGreyCamera::printError(Error error, bool doExit) { printError(error.GetType(), doExit); }
lldb::thread_result_t Communication::ReadThread (lldb::thread_arg_t p) { Communication *comm = (Communication *)p; Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_COMMUNICATION)); if (log) log->Printf ("%p Communication::ReadThread () thread starting...", p); uint8_t buf[1024]; Error error; ConnectionStatus status = eConnectionStatusSuccess; bool done = false; while (!done && comm->m_read_thread_enabled) { size_t bytes_read = comm->ReadFromConnection (buf, sizeof(buf), 5 * TimeValue::MicroSecPerSec, status, &error); if (bytes_read > 0) comm->AppendBytesToCache (buf, bytes_read, true, status); else if ((bytes_read == 0) && status == eConnectionStatusEndOfFile) { if (comm->GetCloseOnEOF ()) comm->Disconnect (); comm->AppendBytesToCache (buf, bytes_read, true, status); } switch (status) { case eConnectionStatusSuccess: break; case eConnectionStatusEndOfFile: done = true; break; case eConnectionStatusError: // Check GetError() for details if (error.GetType() == eErrorTypePOSIX && error.GetError() == EIO) { // EIO on a pipe is usually caused by remote shutdown comm->Disconnect (); done = true; } if (log) error.LogIfError (log, "%p Communication::ReadFromConnection () => status = %s", p, Communication::ConnectionStatusAsCString (status)); break; case eConnectionStatusInterrupted: // Synchronization signal from SynchronizeWithReadThread() // The connection returns eConnectionStatusInterrupted only when there is no // input pending to be read, so we can signal that. comm->BroadcastEvent (eBroadcastBitNoMorePendingInput); break; case eConnectionStatusNoConnection: // No connection case eConnectionStatusLostConnection: // Lost connection while connected to a valid connection done = true; LLVM_FALLTHROUGH; case eConnectionStatusTimedOut: // Request timed out if (log) error.LogIfError (log, "%p Communication::ReadFromConnection () => status = %s", p, Communication::ConnectionStatusAsCString (status)); break; } } log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_COMMUNICATION); if (log) log->Printf ("%p Communication::ReadThread () thread exiting...", p); comm->m_read_thread_did_exit = true; // Let clients know that this thread is exiting comm->BroadcastEvent (eBroadcastBitNoMorePendingInput); comm->BroadcastEvent (eBroadcastBitReadThreadDidExit); return NULL; }