7 #include "PlusConfigure.h" 11 #include "vtkPlusUSImagingParameters.h" 117 std::vector<float> nonZeroes;
118 for (
unsigned i = 0;
i < arraySize;
i++)
122 nonZeroes.push_back(depths[
i]);
125 std::sort(nonZeroes.begin(), nonZeroes.end());
128 while (
i < nonZeroes.size())
130 if (nonZeroes[
i] == nonZeroes[
i - 1])
132 nonZeroes.erase(nonZeroes.begin() +
i);
139 if (nonZeroes.size() == 0)
141 nonZeroes.push_back(depths[0]);
143 int32_t
count = nonZeroes.size();
146 for (
i = 0;
i < nonZeroes.size();
i++)
148 depths[
i] = nonZeroes[
i];
151 for (;
i < arraySize;
i++)
163 os << indent <<
"MinValue: " << this->
m_MinValue << std::endl;
164 os << indent <<
"MaxValue: " << this->
m_MaxValue << std::endl;
165 os << indent <<
"LogLinearKnee: " << this->
m_Knee << std::endl;
166 os << indent <<
"LogMax: " << static_cast<unsigned>(this->
m_OutputKnee) << std::endl;
167 os << indent <<
"TransducerID: " << this->
m_TransducerID << std::endl;
168 os << indent <<
"Frozen: " << this->
IsFrozen() << std::endl;
169 os << indent <<
"Voltage: " << static_cast<unsigned>(this->
GetVoltage()) << std::endl;
173 for(
int i = 0;
i < 8;
i++)
177 for(
int i = 0;
i < 4;
i++)
181 for(
int i = 0;
i < 6;
i++)
186 os << indent <<
"CustomFields: " << std::endl;
187 vtkIndent indent2 = indent.GetNextIndent();
188 igsioFieldMapType::iterator it;
191 os << indent2 << it->first <<
": " << it->second.second << std::endl;
198 LOG_TRACE(
"vtkPlusWinProbeVideoSource::ReadConfiguration");
201 XML_READ_STRING_ATTRIBUTE_REQUIRED(TransducerID, deviceConfig);
202 XML_READ_BOOL_ATTRIBUTE_OPTIONAL(UseDeviceFrameReconstruction, deviceConfig);
203 XML_READ_BOOL_ATTRIBUTE_OPTIONAL(SpatialCompoundEnabled, deviceConfig);
204 XML_READ_BOOL_ATTRIBUTE_OPTIONAL(BHarmonicEnabled, deviceConfig);
205 XML_READ_BOOL_ATTRIBUTE_OPTIONAL(MRevolvingEnabled, deviceConfig);
206 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
float, TransmitFrequencyMHz, deviceConfig);
207 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
float, ScanDepthMm, deviceConfig);
208 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
int, SpatialCompoundCount, deviceConfig);
209 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
int, MPRFrequency, deviceConfig);
210 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
int, MLineIndex, deviceConfig);
211 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
int, MWidth, deviceConfig);
212 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(int32_t, MWidthLines, deviceConfig);
213 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
int, MAcousticLineCount, deviceConfig);
214 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
int, MDepth, deviceConfig);
215 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
unsigned long, Voltage, deviceConfig);
216 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
unsigned long, MinValue, deviceConfig);
217 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
unsigned long, MaxValue, deviceConfig);
218 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
unsigned long, LogLinearKnee, deviceConfig);
219 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
unsigned long, LogMax, deviceConfig);
220 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
unsigned long, SSDecimation, deviceConfig);
221 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
double, FirstGainValue, deviceConfig);
222 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
double, OverallTimeGainCompensation, deviceConfig);
223 XML_READ_SCALAR_ATTRIBUTE_OPTIONAL(
int, BFrameRateLimit, deviceConfig);
226 const char* strMode = deviceConfig->GetAttribute(
"Mode");
233 const char* mwidthSeconds_string = deviceConfig->GetAttribute(
"MWidth");
234 if(mwidthSeconds_string)
236 int mwidthSeconds = std::stoi(mwidthSeconds_string);
237 if(mwidthSeconds > 0)
266 deviceConfig->SetAttribute(
"TransducerID", this->
m_TransducerID.c_str());
269 deviceConfig->SetAttribute(
"HarmonicEnabled", this->
GetBHarmonicEnabled() ?
"TRUE" :
"FALSE");
270 deviceConfig->SetAttribute(
"MRevolvingEnabled", this->
GetMRevolvingEnabled() ?
"TRUE" :
"FALSE");
272 deviceConfig->SetFloatAttribute(
"ScanDepthMm", this->
GetScanDepthMm());
275 deviceConfig->SetIntAttribute(
"MPRFrequency", this->
GetMPRFrequency());
276 deviceConfig->SetIntAttribute(
"MLineIndex", this->
GetMLineIndex());
278 deviceConfig->SetIntAttribute(
"MWidthLines", this->
m_MWidth);
280 deviceConfig->SetIntAttribute(
"MDepth", this->
GetMDepth());
283 deviceConfig->SetUnsignedLongAttribute(
"Voltage", this->
GetVoltage());
284 deviceConfig->SetUnsignedLongAttribute(
"MinValue", this->
GetMinValue());
285 deviceConfig->SetUnsignedLongAttribute(
"MaxValue", this->
GetMaxValue());
286 deviceConfig->SetUnsignedLongAttribute(
"LogLinearKnee", this->
GetLogLinearKnee());
287 deviceConfig->SetUnsignedLongAttribute(
"LogMax", this->
GetLogMax());
288 deviceConfig->SetUnsignedLongAttribute(
"SSDecimation", this->
GetSSDecimation());
305 if(modeString.empty())
307 LOG_WARNING(
"Empty mode string defaults to B mode");
312 std::transform(modeString.begin(), modeString.end(), modeString.begin(), ::toupper);
314 if(modeString ==
"B")
316 else if(modeString ==
"BRF")
318 else if(modeString ==
"RF")
320 else if(modeString ==
"M")
322 else if(modeString ==
"PW")
324 else if(modeString ==
"ARFI")
326 else if(modeString ==
"CFD")
329 { LOG_ERROR(
"Unrecognized mode: " << modeString); }
361 LOG_ERROR(
"Invalid mode passed: " <<
int(
mode));
370 int32_t mlineWidth = pow(2, round(std::log(
value *
m_MPRF) / std::log(2)));
377 return mwidthSeconds;
386 int __stdcall
frameCallback(
int length,
char*
data,
char* hHeader,
char* hGeometry,
char* hModeFrameHeader)
395 uint16_t* frame = reinterpret_cast<uint16_t*>(
data + 16);
396 assert(buffer.size() == frameSize[0] * frameSize[1]);
399 #pragma omp parallel for 400 for(
unsigned t = 0;
t < frameSize[0];
t++)
402 for(
unsigned s = 0; s < frameSize[1]; s++)
404 uint16_t val = frame[
t * frameSize[1] + s];
421 cVal = logFactor * std::log(
float(1 + val));
427 buffer[s * frameSize[0] +
t] = static_cast<uint8_t>(cVal);
434 #pragma omp parallel for 435 for(
unsigned t = 0;
t < frameSize[0];
t++)
437 for(
unsigned s = 0; s < frameSize[1]; s++)
448 CineModeFrameHeader* header = (CineModeFrameHeader*)hHeader;
449 CFDGeometryStruct* cfdGeometry = (CFDGeometryStruct*)hGeometry;
450 GeometryStruct* brfGeometry = (GeometryStruct*)hGeometry;
451 MGeometryStruct* mGeometry = (MGeometryStruct*)hGeometry;
452 PWGeometryStruct* pwGeometry = (PWGeometryStruct*)hGeometry;
453 ARFIGeometryStruct* arfiGeometry = (ARFIGeometryStruct*)hGeometry;
454 int callbackFrameNumber = header->TotalFrameCounter;
455 InputSourceBindings usMode = header->InputSourceBinding;
456 FrameSizeType frameSize = { 1, 1, 1 };
458 if(header->TotalFrameCounter == 0)
467 frameSize[0] = cfdGeometry->LineCount;
468 frameSize[1] = cfdGeometry->SamplesPerKernel;
470 else if(usMode & B || usMode & BFRFALineImage_SampleData)
476 frameSize[0] = brfGeometry->LineCount;
477 frameSize[1] = brfGeometry->SamplesPerLine;
481 <<
" to " << frameSize[1] <<
". Adjusting spacing and buffer sizes.");
488 LOG_INFO(
"Scan Depth changed. Adjusting spacing.");
492 else if(usMode & ARFI)
495 int lineRepeatCount = arfiGeometry->PrePushLineRepeatCount + arfiGeometry->PostPushLineRepeatCount;
498 assert(length == arfiDataSize + timeblock);
499 frameSize[0] = (arfiDataSize + timeblock) /
sizeof(int32_t);
504 LOG_INFO(
"ARFI frame size updated. Adjusting buffer size and spacing.");
511 LOG_INFO(
"Scan Depth changed. Adjusting spacing.");
515 else if(usMode & BFRFALineImage_RFData)
517 frameSize[0] = brfGeometry->SamplesPerLine * brfGeometry->Decimation;
518 frameSize[1] = brfGeometry->LineCount;
521 LOG_INFO(
"Rf frame size updated. Adjusting buffer size and spacing.");
530 LOG_INFO(
"Scan Depth changed. Adjusting spacing.");
534 else if(usMode & M_PostProcess)
536 frameSize[0] = mGeometry->LineCount;
537 frameSize[1] = mGeometry->SamplesPerLine;
545 <<
" to " << frameSize[0] <<
"x" << frameSize[1] <<
". Adjusting buffer size.");
552 LOG_INFO(
"Scan Depth changed. Adjusting spacing.");
556 else if(usMode & PWD_PostProcess)
558 frameSize[0] = pwGeometry->NumberOfImageLines;
559 frameSize[1] = pwGeometry->NumberOfImageSamples;
563 LOG_INFO(
"Unsupported frame type: " << std::hex << usMode);
570 LOG_DEBUG(
"Timestamp is <= 0 so ignoring this frame.");
574 LOG_DEBUG(
"Frame: " << callbackFrameNumber <<
". Mode: " << std::setw(4) << std::hex << usMode <<
". Timestamp: " <<
timestamp <<
". UseDeviceFrameReconstruction: " <<
m_UseDeviceFrameReconstruction);
581 assert(length == frameSize[0] * frameSize[1] *
sizeof(uint16_t) + 16);
583 if(usMode & M_PostProcess)
591 frameSize, VTK_UNSIGNED_CHAR,
592 1, US_IMG_BRIGHTNESS, 0,
598 LOG_WARNING(
"Error adding item to extra video source " <<
m_ExtraSources[
i]->GetSourceId());
614 frameSize, VTK_UNSIGNED_CHAR,
615 1, US_IMG_BRIGHTNESS, 0,
621 LOG_WARNING(
"Error adding item to primary video source " <<
m_PrimarySources[
i]->GetSourceId());
628 LOG_DEBUG(
"Frame ignored - B-mode source not defined. Got mode: " << std::hex << usMode);
631 else if(usMode & ARFI)
636 int32_t* tempData = reinterpret_cast<int32_t*>(
data);
638 double currentTime = vtkIGSIOAccurateTimer::GetSystemTime();
642 1, US_IMG_RF_REAL, 0,
648 LOG_WARNING(
"Error adding item to ARFI video source " <<
m_ExtraSources[
i]->GetSourceId());
652 LOG_INFO(
"Success adding item to ARFI video source " <<
m_ExtraSources[
i]->GetSourceId());
656 else if(usMode & BFRFALineImage_RFData)
660 assert(length == frameSize[0] * frameSize[1] *
sizeof(int32_t));
664 1, US_IMG_RF_REAL, 0,
670 LOG_WARNING(
"Error adding item to RF video source " <<
m_ExtraSources[
i]->GetSourceId());
674 else if(usMode & CFD)
680 LOG_INFO(
"Frame ignored. Got mode: " << std::hex << usMode);
701 <<
"Frame size: " << frameSize[0] <<
"x" << frameSize[1]
703 <<
", buffer image orientation: " 704 << igsioCommon::GetStringFromUsImageOrientation(
m_PrimarySources[
i]->GetInputImageOrientation()));
739 <<
"Frame size: " << frameSize[0] <<
"x" << frameSize[1] <<
"x" << frameSize[2]
741 <<
", buffer image orientation: " 742 << igsioCommon::GetStringFromUsImageOrientation(
m_ExtraSources[
i]->GetInputImageOrientation()));
750 unsigned int numSpaceDimensions = 3;
751 std::vector<double> spacing;
761 for(
unsigned int i = 0;
i < numSpaceDimensions; ++
i)
766 std::ostringstream spacingStream;
768 for(
unsigned int i = 0;
i < numSpaceDimensions; ++
i)
771 if(
i != numSpaceDimensions - 1)
773 spacingStream <<
" ";
776 this->
m_CustomFields[
"ElementSpacing"].first = FRAMEFIELD_FORCE_SERVER_SEND;
777 this->
m_CustomFields[
"ElementSpacing"].second = spacingStream.str();
778 LOG_DEBUG(
"Adjusted spacing: " << spacingStream.str());
786 for(
int i = 0;
i < 8;
i++)
791 for(
int i = 0;
i < 4;
i++)
800 WPSetCallback(funcPtr);
829 LOG_ERROR(
"Neither B-mode nor RF-mode data sources are defined, and unable to retrieve the video source in the capturing device.");
835 LOG_DEBUG(
"Connect to WinProbe");
838 LOG_ERROR(
"Failed connecting to WinProbe!");
843 LOG_ERROR(
"Failed loading defaults!");
848 LOG_ERROR(
"Transducer not connected!");
854 std::string presetPath =
"Default.xml";
855 LOG_DEBUG(
"Loading Default Presets. " << presetPath);
856 if(!LoadXmlPreset(presetPath.c_str()))
858 LOG_ERROR(
"Failed loading default presets!")
873 this->
m_CustomFields[
"SamplingRate"].first = FRAMEFIELD_FORCE_SERVER_SEND;
876 SetSCCompoundAngleCount(0);
878 LOG_DEBUG(
"GetHandleBRFInternally: " << GetHandleBRFInternally());
879 LOG_DEBUG(
"GetBFRFImageCaptureMode: " << GetBFRFImageCaptureMode());
883 SetHandleBRFInternally(
false);
884 SetBFRFImageCaptureMode(2);
888 SetHandleBRFInternally(
true);
889 SetBFRFImageCaptureMode(0);
895 LOG_ERROR(
"Primary source is not defined!");
902 LOG_ERROR(
"RF source is not defined!");
907 SetPWIsEnabled(
true);
916 SetCFSamplesPerKernel(2);
919 SetCFIsEnabled(
true);
923 LOG_DEBUG(
"GetHandleBRFInternally: " << GetHandleBRFInternally());
924 LOG_DEBUG(
"GetBFRFImageCaptureMode: " << GetBFRFImageCaptureMode());
925 SetPendingRecreateTables(
true);
929 for(
int i = 0;
i < 8;
i++)
937 for(
int i = 0;
i < 4;
i++)
945 for(
int i = 0;
i < 6;
i++)
982 char* sessionPtr = GetSessionPtr();
983 bool success = WPVPSetSession(sessionPtr);
986 LOG_WARNING(
"Failed setting session pointer!");
991 SetMaxDmaTransferSize(0x100000);
995 WPDXSetIsGetSpatialCompoundedTexEnabled(
true);
996 WPDXSetFusedTexBufferMax(16);
998 WPDXSetDrawTextLayer(
false);
999 WPDXSetDrawScalesAndBars(
false);
1000 std::this_thread::sleep_for(std::chrono::milliseconds(100));
1003 SetMIsEnabled(
true);
1012 LOG_DEBUG(
"GetPendingRecreateTables: " << GetPendingRecreateTables());
1013 LOG_DEBUG(
"GetPendingRestartSequencer: " << GetPendingRestartSequencer());
1014 LOG_DEBUG(
"GetPendingRun30Frames: " << GetPendingRun30Frames());
1022 LOG_DEBUG(
"Disconnecting from WinProbe");
1028 LOG_DEBUG(
"Disconnect from WinProbe finished");
1064 LOG_WARNING(
"Probe has been disconnected from the engine!");
1078 char* texture =
nullptr;
1081 int tLength = WPDXGetFusedTexData(&texture, &slicePitch, &rowPitch);
1084 LOG_DEBUG(
"B Mode buffer empty");
1089 FrameSizeType frameSize = { 1, 1, 1 };
1090 frameSize[0] = tLength / rowPitch;
1091 frameSize[1] = rowPitch;
1095 <<
" to " << frameSize[1] <<
". Adjusting spacing and buffer sizes.");
1102 LOG_INFO(
"Scan Depth changed. Adjusting spacing.");
1108 unsigned int temp = 0;
1109 temp = (texture[0] & 0xff);
1111 temp = (texture[1] & 0xff);
1113 temp = (texture[2] & 0xff);
1115 temp = (texture[3] & 0xff);
1123 LOG_DEBUG(
"Timestamp is <= 0 so ignoring this frame.");
1125 WPFreePointer(texture);
1135 frameSize, VTK_UNSIGNED_CHAR,
1136 1, US_IMG_BRIGHTNESS, 0,
1142 LOG_WARNING(
"Error adding item to primary video source " <<
m_PrimarySources[
i]->GetSourceId());
1146 WPFreePointer(texture);
1181 return WPGetIsScanningProperty();
1191 SetPendingRecreateTables(
true);
1238 SetPendingRecreateTables(
true);
1261 ::SetSSDepth(depth);
1262 SetPendingRecreateTables(
true);
1300 assert(index >= 0 && index < 8);
1311 assert(index >= 0 && index < 8);
1315 SetTGC(index,
value);
1316 SetPendingTGCUpdate(
true);
1339 SetTGCFirstGainValue(
value);
1362 SetTGCOverallGain(
value);
1363 SetPendingTGCUpdate(
true);
1365 for (
int tgcIndex=0; tgcIndex < 8; tgcIndex += 1)
1376 assert(index >= 0 && index < 4);
1387 assert(index >= 0 && index < 4);
1392 SetPendingRecreateTables(
true);
1402 assert(index >= 0 && index < 6);
1413 assert(index >= 0 && index < 6);
1417 WPSetARFIFocalDepth(index, depth);
1418 SetPendingRecreateTables(
true);
1442 SetBMultiTxCount(
count);
1443 SetPendingRecreateTables(
true);
1460 assert(propertyValue > 0 && propertyValue <= 16);
1465 SetPendingRecreateTables(
true);
1482 assert(propertyValue > 0 && propertyValue <= 255);
1487 SetPendingRecreateTables(
true);
1508 SetPendingRecreateTables(
true);
1529 SetPendingRecreateTables(
true);
1548 SetSCIsEnabled(
value);
1583 SetSCCompoundAngleCount(
value);
1584 SetPendingRecreateTables(
true);
1610 SetHandleBRFInternally(
false);
1611 SetBFRFImageCaptureMode(2);
1615 SetHandleBRFInternally(
true);
1616 SetBFRFImageCaptureMode(0);
1643 double timestamp = vtkIGSIOAccurateTimer::GetSystemTime();
1647 1, US_IMG_RF_REAL, 0,
1653 LOG_WARNING(
"Error adding fake zeros item to ARFI video source " <<
m_ExtraSources[
i]->GetSourceId());
1657 LOG_WARNING(
"Success adding fake zeros item to ARFI video source ");
1661 SetPendingRecreateTables(
true);
1662 LOG_INFO(
"Mode changed to: " << this->
ModeToString(mode));
1712 brfEnabled = (GetBFRFImageCaptureMode() == 2);
1725 SetBIsHarmonic(
value);
1726 SetPendingRecreateTables(
true);
1744 SetBIsBubbleContrast(
value);
1745 SetPendingRecreateTables(
true);
1763 SetBIsAmplitudeModulation(
value);
1764 SetPendingRecreateTables(
true);
1782 SetBIsTransmitLocked(
value);
1783 SetPendingRecreateTables(
true);
1802 SetBTxCurrent(
value);
1803 SetPendingRecreateTables(
true);
1821 SetTxTxCycleCount(
value);
1822 SetPendingRecreateTables(
true);
1840 SetTxTxFNumber(
value);
1841 SetPendingRecreateTables(
true);
1859 SetApodizationFNumber(
value);
1860 SetPendingRecreateTables(
true);
1878 SetFilterFilterCoefficientSet(
value);
1879 SetPendingRecreateTables(
true);
1898 mmodeEnabled = GetMIsEnabled();
1904 return mmodeEnabled;
1912 SetMIsRevolving(
value);
1913 SetPendingRecreateTables(
true);
1932 SetPendingRecreateTables(
true);
1950 SetMAcousticLineIndex(
value);
1951 SetPendingRecreateTables(
true);
1971 SetPendingRecreateTables(
true);
1978 int mwidthSeconds = 0;
1984 return mwidthSeconds;
1992 SetPendingRecreateTables(
true);
2011 SetPendingRecreateTables(
true);
2030 SetPendingRecreateTables(
true);
2051 SetPendingRecreateTables(
true);
2071 SetPendingRecreateTables(
true);
2090 if(propertyValue > 2000)
2092 LOG_ERROR(
"The maximum ARFI line timer is 2000. Ignoring call to change to " << propertyValue);
2097 SetPendingRecreateTables(
true);
2119 SetPendingRecreateTables(
true);
2141 SetPendingRecreateTables(
true);
2161 if(propertyValue > 250 * 250)
2163 LOG_ERROR(
"The maximum ARFI inter set delay is 250*250. Ignoring call to change to " << propertyValue);
2166 else if (propertyValue == 0)
2168 LOG_WARNING(
"ARFI inter set delay defaulting to clinical delay mode of approximately 1 second.");
2191 if(propertyValue > 250)
2193 LOG_ERROR(
"The maximum ARFI inter push delay is 250. Ignoring call to change to " << propertyValue);
2220 LOG_ERROR(
"A X4BF does not support ARFI mode.");
2222 WPSetARFIPushConfigurationString(pushConfiguration.c_str());
2223 SetPendingRecreateTables(
true);
2232 char* temp =
new char[50];
2233 WPGetARFIPushConfigurationString(temp);
2243 char* temp =
new char[20];
2244 WPGetFPGARevDateString(temp);
2256 WPSetTransducerID(guid.c_str());
2257 SetPendingRecreateTables(
true);
2266 return transducer_id;
2272 std::vector<double> spacing = { 0.0, 0.0, 1.0};
2283 std::vector<double> spacing = { 0.0, 0.0, 1.0};
2301 bool arfiEnabled =
false;
2319 LOG_ERROR(
"The FPGA version must be '2020-10-24 24' to ARFIPush. Current version: " <<
m_FPGAVersion);
2326 if (cappedVoltage > maximumVoltage)
2328 LOG_WARNING(
"Voltage was higher than 50V before sending ARFI push. Capping voltage to " <<
std::to_string(maximumVoltage) <<
"V.");
2329 cappedVoltage = maximumVoltage;
2379 LOG_ERROR(
"Cannot apply changes while not connected.")
2394 LOG_ERROR(
"Failed to set depth imaging parameter");
2408 LOG_ERROR(
"Failed to set voltage parameter");
2422 LOG_ERROR(
"Failed to set frequency parameter");
static const char * GET_B_FILTER_COEFFICIENT_SET
void SetARFIPushConfigurationString(std::string pushConfiguration)
bool GetSpatialCompoundEnabled()
void SetMWidth(int value)
static const char * SET_SPATIAL_COMPOUND_COUNT
int32_t m_ARFIInterPushDelay
virtual void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
void SetBHarmonicEnabled(bool value)
int32_t GetARFIInterPushDelay()
static const std::string RFMODE_PORT_NAME
uint8_t GetLogMax() const
int32_t m_MAcousticLineCount
vtkPlusWinProbeVideoSource * thisPtr
static const char * SET_M_LINE_COUNT
bool m_BBubbleContrastEnabled
int GetBTransmitCurrent()
PlusStatus ARFIPush(uint8_t maximumVoltage=50)
static const char * GET_B_TRANSMIT_CURRENT
static const char * GET_RF_MODE_ENABLED
PhidgetRCServo_Voltage voltage
vtkPlusWinProbeVideoSource()
bool IsPending(const std::string ¶mName) const
static const char * SET_B_TRANSMIT_LOCKED
static const char * GET_B_BUBBLE_CONTRAST_ENABLED
static const char * SET_ARFI_TX_TX_CYCLE_WIDTH
virtual void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
static const char * GET_ARFI_POST_PUSH_LINE_REPEAT_COUNT
float GetFocalPointDepth(int index)
static const char * SET_B_AMPLITUDE_MODULATION_ENABLED
static const char * SET_ARFI_ENABLED
int MSecondsFromWidth(int32_t value)
void AdjustSpacing(bool value)
virtual PlusStatus GetInputFrameSize(vtkPlusChannel &aChannel, unsigned int &x, unsigned int &y, unsigned int &z) const
static const char * GET_SPATIAL_COMPOUND_ANGLE
uint8_t m_BFilterCoefficientSet
static const char * SET_ARFI_PUSH_CONFIG
PlusStatus SetARFITxTxCycleWidth(uint8_t propertyValue)
float m_FocalPointDepth[4]
bool m_UseDeviceFrameReconstruction
static const char * KEY_DEPTH
uint16_t GetMinValue() const
int32_t m_ARFIPostPushLineRepeatCount
void FrameCallback(int length, char *data, char *hHeader, char *hGeometry)
#define XML_FIND_DEVICE_ELEMENT_REQUIRED_FOR_WRITING(deviceConfig, rootConfigElement)
PlusStatus SetARFITxCycleCount(uint16_t propertyValue)
PlusStatus SendCommand(const char *command)
bool GetBBubbleContrastEnabled()
PlusStatus FreezeDevice(bool freeze)
static const char * GET_SPATIAL_COMPOUND_COUNT
bool GetBAmplitudeModulationEnabled()
static const char * GET_B_FRAME_RATE_LIMIT
PlusStatus SetVoltage(uint8_t voltage)
void SetBApodizationFNumber(double value)
static const char * KEY_FREQUENCY
uint16_t m_ARFITxCycleCount
int32_t GetSpatialCompoundCount()
static const char * GET_B_TRANSMIT_LOCKED
static const char * GET_B_HARMONIC_ENABLED
int __stdcall frameCallback(int length, char *data, char *hHeader, char *hGeometry, char *hModeFrameHeader)
virtual PlusStatus StartRecording()
static const char * GET_FOCAL_DEPTH
static const char * GET_M_WIDTH
static const char * SET_ARFI_TX_TX_CYCLE_COUNT
double GetFirstGainValue()
static const std::string BMODE_PORT_NAME
static const char * GET_B_MULTIFOCAL_ZONE_COUNT
PlusStatus GetDepthMm(double &aDepthMm) const
int32_t GetARFIPrePushLineRepeatCount()
void SetMDepth(int32_t value)
virtual PlusStatus ReadConfiguration(vtkXMLDataElement *config)
double m_RenderedTimestampOffset
static const char * SET_SPATIAL_COMPOUND_ENABLED
friend int __stdcall frameCallback(int length, char *data, char *hHeader, char *hGeometry, char *hModeFrameHeader)
PlusStatus SetFocalPointDepth(int index, float depth)
static const char * GET_M_LINE_COUNT
int32_t GetARFIStopSample()
std::string to_string(ClariusAvailability avail)
std::string GetFPGARevDateString()
double m_OverallTimeGainCompensation
virtual PlusStatus InternalDisconnect() VTK_OVERRIDE
std::string m_TransducerID
uint16_t GetMaxValue() const
float GetTransmitFrequencyMHz()
bool GetBHarmonicEnabled()
vtkPlusUsImagingParameters * ImagingParameters
Store the current imaging parameters.
bool RequireImageOrientationInConfiguration
PlusStatus SetTimeGainCompensation(int index, double value)
static const char * GET_MPR_FREQUENCY
void SetMRevolvingEnabled(bool value)
static const char * SET_B_TRANSMIT_CURRENT
bool m_SpatialCompoundEnabled
uint8_t GetARFITxCycleWidth()
PlusStatus SetPending(const std::string ¶mName, bool pending)
static const char * GET_B_APODIZATION_FNUMBER
bool m_BAmplitudeModulationEnabled
uint16_t m_ARFITxTxCycleCount
static const char * GET_ARFI_TX_TX_CYCLE_WIDTH
uint8_t GetARFITxTxCycleWidth()
static const char * GET_ARFI_TX_CYCLE_COUNT
static const char * SET_ARFI_TX_CYCLE_WIDTH
double CurrentPixelSpacingMm[3]
Values used in calculation of image to transducer matrix.
static const char * UV_SEND_COMMAND
static const char * SET_FREEZE
std::vector< uint8_t > m_PrimaryBuffer
void SetARFIStopSample(int32_t value)
PlusStatus GetVideoSourcesByPortName(const char *aPortName, std::vector< vtkPlusDataSource * > &sources)
void SetBTransmitFNumber(double value)
std::string ModeToString(Mode mode)
PlusStatus SetScanDepthMm(float depth)
igsioFieldMapType m_CustomFields
void SetMModeEnabled(bool value)
void SetBTransmitCurrent(int value)
static const char * GET_SPATIAL_COMPOUND_ENABLED
static const char * SET_ALL_FOCAL_DEPTHS
std::vector< uint8_t > m_ExtraBuffer
static const char * SET_ARFI_PRE_PUSH_LINE_REPEAT_COUNT
void SetSpatialCompoundCount(int32_t value)
static const char * SET_B_BUBBLE_CONTRAST_ENABLED
void SetMPRFrequency(int32_t value)
~vtkPlusWinProbeVideoSource()
static const char * SET_M_WIDTH
virtual PlusStatus Disconnect()
Class for acquiring ultrasound images from WinProbe ultrasound systems.
PlusStatus GetFirstActiveOutputVideoSource(vtkPlusDataSource *&aVideoSource)
void ReconstructFrame(char *data, std::vector< uint8_t > &buffer, const FrameSizeType &frameSize)
uint8_t GetSSDecimation()
static const char * GET_ARFI_INTER_PUSH_DELAY
bool GetBTransmitLocked()
void FlipTexture(char *data, const FrameSizeType &frameSize, int rowPitch)
static const char * SET_M_LINE_INDEX
int32_t GetARFIInterSetDelay()
unsigned long FrameNumber
static const char * SET_ARFI_START_SAMPLE
double m_BTransmitFNumber
PlusStatus SetBMultiFocalZoneCount(int32_t count)
static const char * SET_TGC_OVERALL_GAIN
PlusStatus SetARFIPrePushLineRepeatCount(int32_t propertyValue)
static const char * GET_M_LINE_INDEX
PlusStatus SetTransducerID(std::string guid)
static const char * GET_M_DEPTH
static const char * GET_TGC_OVERALL_GAIN
PlusStatus SetFirstGainValue(double value)
double GetBTransmitFNumber()
int32_t GetARFIStartSample()
PlusStatus SetARFIPostPushLineRepeatCount(int32_t propertyValue)
bool GetARFIIsX8BFEnabled()
int32_t GetBMultiFocalZoneCount()
PlusStatus InternalUpdate()
static const char * GET_FPGA_REV_DATE_STRING
static const char * SET_B_FILTER_COEFFICIENT_SET
static const char * SET_ARFI_FOCAL_DEPTH
PlusStatus SetARFITxTxCycleCount(uint16_t propertyValue)
int GetTransducerInternalID()
static const char * SET_MMODE_ENABLED
static const char * GET_B_TRANSMIT_CYCLE_COUNT
void SetARFIEnabled(bool value)
uint16_t GetARFITxTxCycleCount()
int32_t GetARFIPostPushLineRepeatCount()
PlusStatus SetARFIInterPushDelay(int32_t propertyValue)
bool GetMRevolvingEnabled()
PlusStatus SetProbeVoltage(float aVoltage)
uint16_t GetLogLinearKnee() const
static const char * GET_FIRST_GAIN_VALUE
PlusStatus SetSSDecimation(uint8_t value)
int32_t GetBFrameRateLimit()
virtual PlusStatus StopRecording()
PlusStatus SetARFIFocalPointDepth(int index, float depth)
#define XML_FIND_DEVICE_ELEMENT_REQUIRED_FOR_READING(deviceConfig, rootConfigElement)
FrameSizeType m_ExtraFrameSize
void SetBTransmitLocked(bool value)
static const char * IS_SCANNING
virtual PlusStatus InternalStartRecording() VTK_OVERRIDE
std::string m_ARFIPushConfigurationString
int m_ARFIPushConfigurationCount
static const char * SET_FIRST_GAIN_VALUE
int32_t m_ARFIInterSetDelay
std::vector< vtkPlusDataSource * > m_ExtraSources
PlusStatus SetTransmitFrequencyMHz(float frequency)
virtual PlusStatus WriteConfiguration(vtkXMLDataElement *config)
static const char * GET_ARFI_TX_CYCLE_WIDTH
static const char * SET_MPR_FREQUENCY
std::string m_FPGAVersion
static const char * KEY_VOLTAGE
static const char * GET_DECIMATION
const char const char * value
Phidget_ChannelClass uint32_t * count
PlusStatus GetProbeVoltage(float &aVoltage) const
PlusStatus SetExtraSourceMode(Mode mode)
static const char * GET_FREEZE
static const char * GET_ARFI_PUSH_CONFIG
PlusStatus SetARFIInterSetDelay(int32_t propertyValue)
virtual bool IsRecording() const
void SetBTransmitCycleCount(uint16_t value)
uint8_t GetBFilterCoefficientSet()
int32_t MWidthFromSeconds(int value)
Mode StringToMode(std::string modeString)
bool StartThreadForInternalUpdates
float m_ARFIFocalPointDepth[6]
void SetARFIStartSample(int32_t value)
static const char * SET_B_MULTIFOCAL_ZONE_COUNT
PlusStatus SetARFITxCycleWidth(uint8_t propertyValue)
static const char * SET_ALL_ARFI_FOCAL_DEPTHS
PlusStatus InternalApplyImagingParameterChange() override
double GetOverallTimeGainCompensation()
std::vector< vtkPlusDataSource * > m_PrimarySources
static const char * GET_B_AMPLITUDE_MODULATION_ENABLED
const double * GetCurrentPixelSpacingMm()
void SetBFrameRateLimit(int32_t value)
static const char * GET_B_TRANSMIT_FNUMBER
static const char * SET_ARFI_INTER_SET_DELAY
static const char * GET_M_REVOLVING_ENABLED
static const char * SET_M_DEPTH
static const char * SET_RF_MODE_ENABLED
static const char * SET_B_TRANSMIT_CYCLE_COUNT
uint16_t m_BTransmitCycleCount
static const char * SET_ARFI_TX_CYCLE_COUNT
void SetMWidthLines(int32_t value)
static const char * GET_X8BF_ENABLED
static const char * SET_ARFI_LINE_TIMER
int32_t GetMAcousticLineCount()
static const char * GET_ARFI_LINE_TIMER
static const char * GET_TGC
static const char * SET_FOCAL_DEPTH
uint16_t GetARFITxCycleCount()
PlusStatus SetOverallTimeGainCompensation(double value)
virtual PlusStatus InternalStopRecording() VTK_OVERRIDE
static const char * SET_ARFI_POST_PUSH_LINE_REPEAT_COUNT
PlusStatus GetFrequencyMhz(double &aFrequencyMhz) const
std::vector< double > GetExtraSourceSpacing()
static const char * SET_ARFI_INTER_PUSH_DELAY
int32_t GetMPRFrequency()
float GetSpatialCompoundAngle()
double GetBApodizationFNumber()
static const char * GET_ARFI_STOP_SAMPLE
void SetMAcousticLineCount(int32_t value)
float GetTransducerWidthMm()
virtual igsioCommon::VTKScalarPixelType GetPixelType(vtkPlusChannel &aChannel)
FrameSizeType m_PrimaryFrameSize
void SetSpatialCompoundEnabled(bool value)
static const char * SET_B_HARMONIC_ENABLED
std::vector< double > GetPrimarySourceSpacing()
virtual PlusStatus InternalConnect() VTK_OVERRIDE
double m_TimeGainCompensation[8]
static const char * SET_B_FRAME_RATE_LIMIT
bool IsSet(const std::string ¶mName) const
static const char * GET_MMODE_ENABLED
static const char * SET_ARFI_STOP_SAMPLE
static const char * GET_ARFI_START_SAMPLE
void SetBAmplitudeModulationEnabled(bool value)
static const char * SET_TGC
float GetARFIFocalPointDepth(int index)
float m_SpatialCompoundAngle
void SetBRFEnabled(bool value)
static const char * SET_B_TRANSMIT_FNUMBER
int32_t focalCountFromDepthsArray(float *depths, unsigned arraySize)
uint16_t GetBTransmitCycleCount()
int32_t m_ARFIStartSample
PlusStatus SetARFILineTimer(uint16_t propertyValue)
static const char * GET_ARFI_PRE_PUSH_LINE_REPEAT_COUNT
vtkStandardNewMacro(vtkPlusWinProbeVideoSource)
static const char * SET_DECIMATION
static const char * GET_ARFI_ENABLED
static const char * GET_ARFI_FOCAL_DEPTH
void SetBBubbleContrastEnabled(bool value)
static const char * SET_M_REVOLVING_ENABLED
static const char * GET_ARFI_INTER_SET_DELAY
int32_t m_ARFIPrePushLineRepeatCount
uint8_t m_ARFITxTxCycleWidth
double GetTimeGainCompensation(int index)
std::string GetARFIPushConfigurationString()
uint8_t m_ARFITxCycleWidth
void SetMLineIndex(int32_t value)
std::string GetTransducerID()
int32_t m_BFrameRateLimit
static const char * GET_ARFI_TX_TX_CYCLE_COUNT
void SetBFilterCoefficientSet(uint8_t value)
int32_t m_SpatialCompoundCount
double m_BApodizationFNumber
static const char * SET_B_APODIZATION_FNUMBER
Interface to a 3D positioning tool, video source, or generalized data stream.
uint16_t GetARFILineTimer()
static const char * GET_TRANSDUCER_INTERNAL_ID