void Camera::setup() { // adjust packet size according to the current network capacity tPvUint32 maxPacketSize = 9000; PvCaptureAdjustPacketSize(handle_, maxPacketSize); // set data rate to the max unsigned long max_data_rate = getMaxDataRate(); if (max_data_rate < GIGE_MAX_DATA_RATE) { ROS_WARN("Detected max data rate is %lu bytes/s, typical maximum data rate for a " "GigE port is %lu bytes/s. Are you using a GigE network card and cable?\n", max_data_rate, GIGE_MAX_DATA_RATE); } setAttribute("StreamBytesPerSecond", max_data_rate); // capture whole frame by default setBinning(); setRoiToWholeFrame(); // query for attributes (TODO: more) CHECK_ERR( PvAttrUint32Get(handle_, "TotalBytesPerFrame", &frameSize_), "Unable to retrieve frame size" ); // allocate frame buffers frames_ = new tPvFrame[bufferSize_]; memset(frames_, 0, sizeof(tPvFrame) * bufferSize_); for (unsigned int i = 0; i < bufferSize_; ++i) { frames_[i].ImageBuffer = new char[frameSize_]; frames_[i].ImageBufferSize = frameSize_; frames_[i].Context[0] = (void*)this; // for frameDone callback } }
BinnedSpectrum::BinnedSpectrum(float size, UInt spread, PeakSpectrum ps) : bin_spread_(spread), bin_size_(size), bins_(), raw_spec_(ps) { setBinning(); }