Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Drivers/ScanLabSMC/ACT/LibMCDriver_ScanLabSMC.xml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@
<error name="LINEARPOWERVALUESAREINCOMPLETE" code="1046" description="Linear power values are incomplete." />
<error name="NONLINEARPOWERVALUESAREINCOMPLETE" code="1047" description="Nonlinear power values are incomplete." />
<error name="INTERPOLATIONDATAISNOTINCREASING" code="1048" description="Interpolation data is not increasing." />
<error name="EMPTYRTCSERVICEDLLRESOURCENAME" code="1049" description="Empty RTC Service DLL Resource Name." />
<error name="RTCSERVICERESOURCENOTFOUND" code="1050" description="RTC Service Resource not found." />
<error name="EMPTYRTCSERVICEDLLRESOURCEDATA" code="1051" description="Empty RTC Service DLL Resource Data." />

</errors>

Expand Down Expand Up @@ -140,6 +143,7 @@
<option name="Unknown" value="0" />
<option name="Version_0_8" value="8" />
<option name="Version_0_9" value="9" />
<option name="Version_1_0" value="10" />
</enum>

<enum name="JobCharacteristic">
Expand Down Expand Up @@ -504,6 +508,10 @@ Custom implementation
<param name="RTCDLLResourceName" type="string" pass="in" description="Resource name of RTC DLL" />
</method>

<method name="SetRTCServiceDLLResourceName" description="Sets the default resource name of the RTC Service DLL. Overrides custom resource data if set before.">
<param name="RTCServiceDLLResourceName" type="string" pass="in" description="Resource name of RTC Service DLL" />
</method>

<method name="SetXercesDLLResource" description="Sets the default resource name of auxiliary resource DLLs. Overrides custom resource data if set before.">
<param name="XercesDLLResourceName" type="string" pass="in" description="Resource name of the Xerces dependency DLL" />
</method>
Expand All @@ -513,6 +521,10 @@ Custom implementation
<param name="RTCDLLResourceData" type="basicarray" class="uint8" pass="in" description="Resource data of RTC DLL" />
</method>

<method name="SetRTCServiceDLLResourceData" description="Sets custom binaries for the needed RTC Service DLLs. Overrides custom resource data if set before.">
<param name="RTCServiceDLLResourceData" type="basicarray" class="uint8" pass="in" description="Resource data of RTC Service DLL" />
</method>

<method name="SetCustomXercesDLLData" description="Sets the custom binary for auxiliary resource DLLs. Overrides custom resource data if set before.">
<param name="XercesDLLResourceData" type="basicarray" class="uint8" pass="in" description="Resource data of the Xerces dependency DLL" />
</method>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,15 @@ typedef LibMCDriver_ScanLabSMCResult (*PLibMCDriver_ScanLabSMCSMCContext_DrawLay
*/
typedef LibMCDriver_ScanLabSMCResult (*PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetDLLResourcesPtr) (LibMCDriver_ScanLabSMC_Driver_ScanLabSMC pDriver_ScanLabSMC, const char * pSMCDLLResourceName, const char * pRTCDLLResourceName);

/**
* Sets the default resource name of the RTC Service DLL. Overrides custom resource data if set before.
*
* @param[in] pDriver_ScanLabSMC - Driver_ScanLabSMC instance.
* @param[in] pRTCServiceDLLResourceName - Resource name of RTC Service DLL
* @return error code or 0 (success)
*/
typedef LibMCDriver_ScanLabSMCResult (*PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceNamePtr) (LibMCDriver_ScanLabSMC_Driver_ScanLabSMC pDriver_ScanLabSMC, const char * pRTCServiceDLLResourceName);

/**
* Sets the default resource name of auxiliary resource DLLs. Overrides custom resource data if set before.
*
Expand All @@ -647,6 +656,16 @@ typedef LibMCDriver_ScanLabSMCResult (*PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_
*/
typedef LibMCDriver_ScanLabSMCResult (*PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetCustomDLLDataPtr) (LibMCDriver_ScanLabSMC_Driver_ScanLabSMC pDriver_ScanLabSMC, LibMCDriver_ScanLabSMC_uint64 nSMCDLLResourceDataBufferSize, const LibMCDriver_ScanLabSMC_uint8 * pSMCDLLResourceDataBuffer, LibMCDriver_ScanLabSMC_uint64 nRTCDLLResourceDataBufferSize, const LibMCDriver_ScanLabSMC_uint8 * pRTCDLLResourceDataBuffer);

/**
* Sets custom binaries for the needed RTC Service DLLs. Overrides custom resource data if set before.
*
* @param[in] pDriver_ScanLabSMC - Driver_ScanLabSMC instance.
* @param[in] nRTCServiceDLLResourceDataBufferSize - Number of elements in buffer
* @param[in] pRTCServiceDLLResourceDataBuffer - uint8 buffer of Resource data of RTC Service DLL
* @return error code or 0 (success)
*/
typedef LibMCDriver_ScanLabSMCResult (*PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceDataPtr) (LibMCDriver_ScanLabSMC_Driver_ScanLabSMC pDriver_ScanLabSMC, LibMCDriver_ScanLabSMC_uint64 nRTCServiceDLLResourceDataBufferSize, const LibMCDriver_ScanLabSMC_uint8 * pRTCServiceDLLResourceDataBuffer);

/**
* Sets the custom binary for auxiliary resource DLLs. Overrides custom resource data if set before.
*
Expand Down Expand Up @@ -856,8 +875,10 @@ typedef struct {
PLibMCDriver_ScanLabSMCSMCContext_GetUnfinishedJobPtr m_SMCContext_GetUnfinishedJob;
PLibMCDriver_ScanLabSMCSMCContext_DrawLayerPtr m_SMCContext_DrawLayer;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetDLLResourcesPtr m_Driver_ScanLabSMC_SetDLLResources;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceNamePtr m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetXercesDLLResourcePtr m_Driver_ScanLabSMC_SetXercesDLLResource;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetCustomDLLDataPtr m_Driver_ScanLabSMC_SetCustomDLLData;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceDataPtr m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetCustomXercesDLLDataPtr m_Driver_ScanLabSMC_SetCustomXercesDLLData;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_LoadSDKPtr m_Driver_ScanLabSMC_LoadSDK;
PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_CreateContextPtr m_Driver_ScanLabSMC_CreateContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,9 @@ class ELibMCDriver_ScanLabSMCException : public std::exception {
case LIBMCDRIVER_SCANLABSMC_ERROR_LINEARPOWERVALUESAREINCOMPLETE: return "LINEARPOWERVALUESAREINCOMPLETE";
case LIBMCDRIVER_SCANLABSMC_ERROR_NONLINEARPOWERVALUESAREINCOMPLETE: return "NONLINEARPOWERVALUESAREINCOMPLETE";
case LIBMCDRIVER_SCANLABSMC_ERROR_INTERPOLATIONDATAISNOTINCREASING: return "INTERPOLATIONDATAISNOTINCREASING";
case LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCENAME: return "EMPTYRTCSERVICEDLLRESOURCENAME";
case LIBMCDRIVER_SCANLABSMC_ERROR_RTCSERVICERESOURCENOTFOUND: return "RTCSERVICERESOURCENOTFOUND";
case LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCEDATA: return "EMPTYRTCSERVICEDLLRESOURCEDATA";
}
return "UNKNOWN";
}
Expand Down Expand Up @@ -302,6 +305,9 @@ class ELibMCDriver_ScanLabSMCException : public std::exception {
case LIBMCDRIVER_SCANLABSMC_ERROR_LINEARPOWERVALUESAREINCOMPLETE: return "Linear power values are incomplete.";
case LIBMCDRIVER_SCANLABSMC_ERROR_NONLINEARPOWERVALUESAREINCOMPLETE: return "Nonlinear power values are incomplete.";
case LIBMCDRIVER_SCANLABSMC_ERROR_INTERPOLATIONDATAISNOTINCREASING: return "Interpolation data is not increasing.";
case LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCENAME: return "Empty RTC Service DLL Resource Name.";
case LIBMCDRIVER_SCANLABSMC_ERROR_RTCSERVICERESOURCENOTFOUND: return "RTC Service Resource not found.";
case LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCEDATA: return "Empty RTC Service DLL Resource Data.";
}
return "unknown error";
}
Expand Down Expand Up @@ -623,8 +629,10 @@ class CDriver_ScanLabSMC : public CDriver {
}

inline void SetDLLResources(const std::string & sSMCDLLResourceName, const std::string & sRTCDLLResourceName);
inline void SetRTCServiceDLLResourceName(const std::string & sRTCServiceDLLResourceName);
inline void SetXercesDLLResource(const std::string & sXercesDLLResourceName);
inline void SetCustomDLLData(const CInputVector<LibMCDriver_ScanLabSMC_uint8> & SMCDLLResourceDataBuffer, const CInputVector<LibMCDriver_ScanLabSMC_uint8> & RTCDLLResourceDataBuffer);
inline void SetRTCServiceDLLResourceData(const CInputVector<LibMCDriver_ScanLabSMC_uint8> & RTCServiceDLLResourceDataBuffer);
inline void SetCustomXercesDLLData(const CInputVector<LibMCDriver_ScanLabSMC_uint8> & XercesDLLResourceDataBuffer);
inline void LoadSDK();
inline PSMCContext CreateContext(const std::string & sContextName, classParam<CSMCConfiguration> pSMCConfiguration);
Expand Down Expand Up @@ -813,8 +821,10 @@ class CDriver_ScanLabSMC : public CDriver {
pWrapperTable->m_SMCContext_GetUnfinishedJob = nullptr;
pWrapperTable->m_SMCContext_DrawLayer = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_SetDLLResources = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_SetXercesDLLResource = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_SetCustomDLLData = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_SetCustomXercesDLLData = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_LoadSDK = nullptr;
pWrapperTable->m_Driver_ScanLabSMC_CreateContext = nullptr;
Expand Down Expand Up @@ -1384,6 +1394,15 @@ class CDriver_ScanLabSMC : public CDriver {
if (pWrapperTable->m_Driver_ScanLabSMC_SetDLLResources == nullptr)
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName = (PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceNamePtr) GetProcAddress(hLibrary, "libmcdriver_scanlabsmc_driver_scanlabsmc_setrtcservicedllresourcename");
#else // _WIN32
pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName = (PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceNamePtr) dlsym(hLibrary, "libmcdriver_scanlabsmc_driver_scanlabsmc_setrtcservicedllresourcename");
dlerror();
#endif // _WIN32
if (pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName == nullptr)
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
pWrapperTable->m_Driver_ScanLabSMC_SetXercesDLLResource = (PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetXercesDLLResourcePtr) GetProcAddress(hLibrary, "libmcdriver_scanlabsmc_driver_scanlabsmc_setxercesdllresource");
#else // _WIN32
Expand All @@ -1402,6 +1421,15 @@ class CDriver_ScanLabSMC : public CDriver {
if (pWrapperTable->m_Driver_ScanLabSMC_SetCustomDLLData == nullptr)
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData = (PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceDataPtr) GetProcAddress(hLibrary, "libmcdriver_scanlabsmc_driver_scanlabsmc_setrtcservicedllresourcedata");
#else // _WIN32
pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData = (PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetRTCServiceDLLResourceDataPtr) dlsym(hLibrary, "libmcdriver_scanlabsmc_driver_scanlabsmc_setrtcservicedllresourcedata");
dlerror();
#endif // _WIN32
if (pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData == nullptr)
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
pWrapperTable->m_Driver_ScanLabSMC_SetCustomXercesDLLData = (PLibMCDriver_ScanLabSMCDriver_ScanLabSMC_SetCustomXercesDLLDataPtr) GetProcAddress(hLibrary, "libmcdriver_scanlabsmc_driver_scanlabsmc_setcustomxercesdlldata");
#else // _WIN32
Expand Down Expand Up @@ -1777,6 +1805,10 @@ class CDriver_ScanLabSMC : public CDriver {
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_ScanLabSMC_SetDLLResources == nullptr) )
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

eLookupError = (*pLookup)("libmcdriver_scanlabsmc_driver_scanlabsmc_setrtcservicedllresourcename", (void**)&(pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName));
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName == nullptr) )
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

eLookupError = (*pLookup)("libmcdriver_scanlabsmc_driver_scanlabsmc_setxercesdllresource", (void**)&(pWrapperTable->m_Driver_ScanLabSMC_SetXercesDLLResource));
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_ScanLabSMC_SetXercesDLLResource == nullptr) )
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;
Expand All @@ -1785,6 +1817,10 @@ class CDriver_ScanLabSMC : public CDriver {
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_ScanLabSMC_SetCustomDLLData == nullptr) )
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

eLookupError = (*pLookup)("libmcdriver_scanlabsmc_driver_scanlabsmc_setrtcservicedllresourcedata", (void**)&(pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData));
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData == nullptr) )
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;

eLookupError = (*pLookup)("libmcdriver_scanlabsmc_driver_scanlabsmc_setcustomxercesdlldata", (void**)&(pWrapperTable->m_Driver_ScanLabSMC_SetCustomXercesDLLData));
if ( (eLookupError != 0) || (pWrapperTable->m_Driver_ScanLabSMC_SetCustomXercesDLLData == nullptr) )
return LIBMCDRIVER_SCANLABSMC_ERROR_COULDNOTFINDLIBRARYEXPORT;
Expand Down Expand Up @@ -2514,6 +2550,15 @@ class CDriver_ScanLabSMC : public CDriver {
CheckError(m_pWrapper->m_WrapperTable.m_Driver_ScanLabSMC_SetDLLResources(m_pHandle, sSMCDLLResourceName.c_str(), sRTCDLLResourceName.c_str()));
}

/**
* CDriver_ScanLabSMC::SetRTCServiceDLLResourceName - Sets the default resource name of the RTC Service DLL. Overrides custom resource data if set before.
* @param[in] sRTCServiceDLLResourceName - Resource name of RTC Service DLL
*/
void CDriver_ScanLabSMC::SetRTCServiceDLLResourceName(const std::string & sRTCServiceDLLResourceName)
{
CheckError(m_pWrapper->m_WrapperTable.m_Driver_ScanLabSMC_SetRTCServiceDLLResourceName(m_pHandle, sRTCServiceDLLResourceName.c_str()));
}

/**
* CDriver_ScanLabSMC::SetXercesDLLResource - Sets the default resource name of auxiliary resource DLLs. Overrides custom resource data if set before.
* @param[in] sXercesDLLResourceName - Resource name of the Xerces dependency DLL
Expand All @@ -2533,6 +2578,15 @@ class CDriver_ScanLabSMC : public CDriver {
CheckError(m_pWrapper->m_WrapperTable.m_Driver_ScanLabSMC_SetCustomDLLData(m_pHandle, (LibMCDriver_ScanLabSMC_uint64)SMCDLLResourceDataBuffer.size(), SMCDLLResourceDataBuffer.data(), (LibMCDriver_ScanLabSMC_uint64)RTCDLLResourceDataBuffer.size(), RTCDLLResourceDataBuffer.data()));
}

/**
* CDriver_ScanLabSMC::SetRTCServiceDLLResourceData - Sets custom binaries for the needed RTC Service DLLs. Overrides custom resource data if set before.
* @param[in] RTCServiceDLLResourceDataBuffer - Resource data of RTC Service DLL
*/
void CDriver_ScanLabSMC::SetRTCServiceDLLResourceData(const CInputVector<LibMCDriver_ScanLabSMC_uint8> & RTCServiceDLLResourceDataBuffer)
{
CheckError(m_pWrapper->m_WrapperTable.m_Driver_ScanLabSMC_SetRTCServiceDLLResourceData(m_pHandle, (LibMCDriver_ScanLabSMC_uint64)RTCServiceDLLResourceDataBuffer.size(), RTCServiceDLLResourceDataBuffer.data()));
}

/**
* CDriver_ScanLabSMC::SetCustomXercesDLLData - Sets the custom binary for auxiliary resource DLLs. Overrides custom resource data if set before.
* @param[in] XercesDLLResourceDataBuffer - Resource data of the Xerces dependency DLL
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ typedef void * LibMCDriver_ScanLabSMC_pvoid;
#define LIBMCDRIVER_SCANLABSMC_ERROR_LINEARPOWERVALUESAREINCOMPLETE 1046 /** Linear power values are incomplete. */
#define LIBMCDRIVER_SCANLABSMC_ERROR_NONLINEARPOWERVALUESAREINCOMPLETE 1047 /** Nonlinear power values are incomplete. */
#define LIBMCDRIVER_SCANLABSMC_ERROR_INTERPOLATIONDATAISNOTINCREASING 1048 /** Interpolation data is not increasing. */
#define LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCENAME 1049 /** Empty RTC Service DLL Resource Name. */
#define LIBMCDRIVER_SCANLABSMC_ERROR_RTCSERVICERESOURCENOTFOUND 1050 /** RTC Service Resource not found. */
#define LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCEDATA 1051 /** Empty RTC Service DLL Resource Data. */

/*************************************************************************************************************************
Error strings for LibMCDriver_ScanLabSMC
Expand Down Expand Up @@ -220,6 +223,9 @@ inline const char * LIBMCDRIVER_SCANLABSMC_GETERRORSTRING (LibMCDriver_ScanLabSM
case LIBMCDRIVER_SCANLABSMC_ERROR_LINEARPOWERVALUESAREINCOMPLETE: return "Linear power values are incomplete.";
case LIBMCDRIVER_SCANLABSMC_ERROR_NONLINEARPOWERVALUESAREINCOMPLETE: return "Nonlinear power values are incomplete.";
case LIBMCDRIVER_SCANLABSMC_ERROR_INTERPOLATIONDATAISNOTINCREASING: return "Interpolation data is not increasing.";
case LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCENAME: return "Empty RTC Service DLL Resource Name.";
case LIBMCDRIVER_SCANLABSMC_ERROR_RTCSERVICERESOURCENOTFOUND: return "RTC Service Resource not found.";
case LIBMCDRIVER_SCANLABSMC_ERROR_EMPTYRTCSERVICEDLLRESOURCEDATA: return "Empty RTC Service DLL Resource Data.";
default: return "unknown error";
}
}
Expand Down Expand Up @@ -264,7 +270,8 @@ namespace LibMCDriver_ScanLabSMC {
enum class eSMCConfigVersion : LibMCDriver_ScanLabSMC_int32 {
Unknown = 0,
Version_0_8 = 8,
Version_0_9 = 9
Version_0_9 = 9,
Version_1_0 = 10
};

enum class eJobCharacteristic : LibMCDriver_ScanLabSMC_int32 {
Expand Down
3 changes: 3 additions & 0 deletions Drivers/ScanLabSMC/Implementation/libmcdriver_scanlabsmc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ IDriver * CWrapper::CreateDriver(const std::string & sName, const std::string &
if (sType == "scanlab-smc-0.9")
return new CDriver_ScanLabSMC(sName, sType, pDriverEnvironment);

if (sType == "scanlab-smc-1.0")
return new CDriver_ScanLabSMC(sName, sType, pDriverEnvironment);

if (sType == "scanlab-smc-latest")
return new CDriver_ScanLabSMC(sName, sType, pDriverEnvironment);

Expand Down
Loading