diff --git a/C#/StaticFiles/fgt_sdk_dlls/linux/arm/libfgt_SDK.so b/C#/StaticFiles/fgt_sdk_dlls/linux/arm/libfgt_SDK.so
index 39bf48a..56f4351 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/linux/arm/libfgt_SDK.so and b/C#/StaticFiles/fgt_sdk_dlls/linux/arm/libfgt_SDK.so differ
diff --git a/C#/StaticFiles/fgt_sdk_dlls/linux/arm64/libfgt_SDK.so b/C#/StaticFiles/fgt_sdk_dlls/linux/arm64/libfgt_SDK.so
index 8f43043..173cdbd 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/linux/arm64/libfgt_SDK.so and b/C#/StaticFiles/fgt_sdk_dlls/linux/arm64/libfgt_SDK.so differ
diff --git a/C#/StaticFiles/fgt_sdk_dlls/linux/x64/libfgt_SDK.so b/C#/StaticFiles/fgt_sdk_dlls/linux/x64/libfgt_SDK.so
index 914e8b8..7d85643 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/linux/x64/libfgt_SDK.so and b/C#/StaticFiles/fgt_sdk_dlls/linux/x64/libfgt_SDK.so differ
diff --git a/C#/StaticFiles/fgt_sdk_dlls/mac/x64/libfgt_SDK.dylib b/C#/StaticFiles/fgt_sdk_dlls/mac/x64/libfgt_SDK.dylib
index 9883b6e..09f2006 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/mac/x64/libfgt_SDK.dylib and b/C#/StaticFiles/fgt_sdk_dlls/mac/x64/libfgt_SDK.dylib differ
diff --git a/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.dll b/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.dll
index 56d89cd..767ea89 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.dll and b/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.dll differ
diff --git a/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.lib b/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.lib
index 97e5643..032a6d2 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.lib and b/C#/StaticFiles/fgt_sdk_dlls/windows/x64/fgt_SDK.lib differ
diff --git a/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.dll b/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.dll
index 223ddf1..ec669e0 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.dll and b/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.dll differ
diff --git a/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.lib b/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.lib
index e5a30aa..c2feace 100644
Binary files a/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.lib and b/C#/StaticFiles/fgt_sdk_dlls/windows/x86/fgt_SDK.lib differ
diff --git a/C#/fgt_sdk_csharp.sln b/C#/fgt_sdk_csharp.sln
index f13694b..9e5ad51 100644
--- a/C#/fgt_sdk_csharp.sln
+++ b/C#/fgt_sdk_csharp.sln
@@ -5,7 +5,7 @@ VisualStudioVersion = 16.0.30204.135
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "fgt_sdk", "fgt_sdk_csharp\fgt_sdk.csproj", "{33B38AD3-45AB-47A7-A60A-FEF1F5F2C680}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "UnitTests\UnitTests.csproj", "{CCFEDF28-2E32-4486-A939-B8D48C3E2169}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests", "UnitTests\UnitTests.csproj", "{CCFEDF28-2E32-4486-A939-B8D48C3E2169}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{D0B23A9F-ECEC-45DB-998C-FD00A8C96626}"
EndProject
@@ -25,7 +25,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basic Sensor Regulation", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basic Set Pressure", "Examples\Basic Set Pressure\Basic Set Pressure.csproj", "{BC5CFC73-73E5-4589-99E9-D2FA6ED0D1C6}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basic Set Valve Position", "Examples\Basic Set Valve Position\Basic Set Valve Position.csproj", "{3BAF2C97-A143-4F04-9D17-8BF28380BF13}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basic Set Valve Position", "Examples\Basic Set Valve Position\Basic Set Valve Position.csproj", "{3BAF2C97-A143-4F04-9D17-8BF28380BF13}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FD111F64-AE9B-41B6-98E5-6BF1A8BF86A2}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/C#/fgt_sdk_csharp/Enums/fgt_INSTRUMENT_TYPE.cs b/C#/fgt_sdk_csharp/Enums/fgt_INSTRUMENT_TYPE.cs
index 0c3a57e..1c6ffc7 100644
--- a/C#/fgt_sdk_csharp/Enums/fgt_INSTRUMENT_TYPE.cs
+++ b/C#/fgt_sdk_csharp/Enums/fgt_INSTRUMENT_TYPE.cs
@@ -13,5 +13,6 @@ public enum fgt_INSTRUMENT_TYPE
LineUP,
IPS,
ESS,
+ F_OEM,
}
}
diff --git a/C#/fgt_sdk_csharp/Enums/fgt_SENSOR_TYPE.cs b/C#/fgt_sdk_csharp/Enums/fgt_SENSOR_TYPE.cs
index c7a7954..425d043 100644
--- a/C#/fgt_sdk_csharp/Enums/fgt_SENSOR_TYPE.cs
+++ b/C#/fgt_sdk_csharp/Enums/fgt_SENSOR_TYPE.cs
@@ -18,5 +18,7 @@ public enum fgt_SENSOR_TYPE
Pressure_S,
Pressure_M,
Pressure_XL,
+ Flow_M_plus_dual,
+ Flow_L_plus_dual,
}
-}
\ No newline at end of file
+}
diff --git a/C#/fgt_sdk_csharp/Enums/fgt_VALVE_TYPE.cs b/C#/fgt_sdk_csharp/Enums/fgt_VALVE_TYPE.cs
index 4a6e376..1019b3e 100644
--- a/C#/fgt_sdk_csharp/Enums/fgt_VALVE_TYPE.cs
+++ b/C#/fgt_sdk_csharp/Enums/fgt_VALVE_TYPE.cs
@@ -11,5 +11,8 @@ public enum fgt_VALVE_TYPE
TwoSwitch,
LSwitch,
PSwitch,
+ M_X,
+ Two_X,
+ L_X,
}
-}
\ No newline at end of file
+}
diff --git a/C#/fgt_sdk_csharp/fgtSdk.cs b/C#/fgt_sdk_csharp/fgtSdk.cs
index 981f1d2..18c78b7 100644
--- a/C#/fgt_sdk_csharp/fgtSdk.cs
+++ b/C#/fgt_sdk_csharp/fgtSdk.cs
@@ -1,12 +1,12 @@
-using fgt_sdk.Structs;
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Reflection;
using System.Runtime.InteropServices;
using fgt_sdk.Enums;
-using System.Reflection;
+using fgt_sdk.Structs;
namespace fgt_sdk
{
@@ -43,7 +43,9 @@ private static IntPtr ArchResolver(string libraryName, Assembly assembly, DllImp
libFile = "libfgt_SDK.dylib";
}
else
+ {
throw new NotSupportedException("Operating system not supported");
+ }
var archFolder = RuntimeInformation.ProcessArchitecture switch
{
@@ -287,6 +289,18 @@ private static IntPtr ArchResolver(string libraryName, Assembly assembly, DllImp
[DllImport(FGT_SDK)]
private static extern byte fgt_set_manual(uint pressureIndex, float value);
+ // unsigned char __stdcall fgt_set_digitalOutput(unsigned int controllerIndex, unsigned char state);
+ [DllImport(FGT_SDK)]
+ private static extern byte fgt_set_digitalOutput(uint controllerIndex, byte port, byte state);
+
+ // unsigned char __stdcall fgt_get_sensorAirBubbleFlag(unsigned int sensorIndex, unsigned char* detected);
+ [DllImport(FGT_SDK)]
+ private static extern byte fgt_get_sensorAirBubbleFlag(uint pressureIndex, ref byte detected);
+
+ // unsigned char __stdcall fgt_get_inletPressure(unsigned int pressureIndex, float* pressure);
+ [DllImport(FGT_SDK)]
+ private static extern byte fgt_get_inletPressure(uint pressureIndex, ref float pressure);
+
#endregion
#endregion
@@ -356,7 +370,7 @@ private static fgt_ERROR_CODE ErrCheck(fgt_ERROR_CODE errorCode, fgt_ERRCHECK_TY
/// Error code
public static fgt_ERROR_CODE Fgt_init()
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_init(), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_init(), fgt_ERRCHECK_TYPE.Generic);
return errCode;
}
@@ -368,7 +382,7 @@ public static fgt_ERROR_CODE Fgt_init()
/// Error code
public static fgt_ERROR_CODE Fgt_close()
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_close(), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_close(), fgt_ERRCHECK_TYPE.Generic);
return errCode;
}
@@ -388,7 +402,7 @@ public static (byte count, List<(ushort serialNumber, fgt_INSTRUMENT_TYPE type)>
{
if (serialNumbers[i] != 0)
{
- tuplesList.Add((serialNumbers[i], (fgt_INSTRUMENT_TYPE) types[i]));
+ tuplesList.Add((serialNumbers[i], (fgt_INSTRUMENT_TYPE)types[i]));
}
}
return (count, tuplesList);
@@ -417,7 +431,7 @@ public static fgt_ERROR_CODE Fgt_initEx(List serialNumbers)
throw;
}
- return ErrCheck((fgt_ERROR_CODE) fgt_initEx(sns), fgt_ERRCHECK_TYPE.Generic);
+ return ErrCheck((fgt_ERROR_CODE)fgt_initEx(sns), fgt_ERRCHECK_TYPE.Generic);
}
///
@@ -458,7 +472,7 @@ public static fgt_ERROR_CODE Fgt_remove_simulated_instr(fgt_INSTRUMENT_TYPE type
public static (fgt_ERROR_CODE errCode, List info) Fgt_get_controllersInfo()
{
var controllersInfo = new fgt_CONTROLLER_INFO[256];
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_controllersInfo(controllersInfo), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_controllersInfo(controllersInfo), fgt_ERRCHECK_TYPE.Generic);
var controllersInfoList = controllersInfo.Where(c => c.SN != 0).ToList();
return (errCode, controllersInfoList);
}
@@ -481,8 +495,8 @@ public static (fgt_ERROR_CODE errCode, int count) Fgt_get_pressureChannelCount()
public static (fgt_ERROR_CODE errCode, int count) Fgt_get_sensorChannelCount()
{
byte count = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_sensorChannelCount(ref count), fgt_ERRCHECK_TYPE.Generic);
- return (errCode, (int) count);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorChannelCount(ref count), fgt_ERRCHECK_TYPE.Generic);
+ return (errCode, count);
}
///
@@ -492,8 +506,8 @@ public static (fgt_ERROR_CODE errCode, int count) Fgt_get_sensorChannelCount()
public static (fgt_ERROR_CODE errCode, int count) Fgt_get_TtlChannelCount()
{
byte count = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_TtlChannelCount(ref count), fgt_ERRCHECK_TYPE.Generic);
- return (errCode, (int) count);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_TtlChannelCount(ref count), fgt_ERRCHECK_TYPE.Generic);
+ return (errCode, count);
}
///
@@ -506,7 +520,7 @@ public static (fgt_ERROR_CODE errCode, int count) Fgt_get_valveChannelCount()
{
byte count = 0;
var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_valveChannelCount(ref count), fgt_ERRCHECK_TYPE.Generic);
- return (errCode, (int)count);
+ return (errCode, count);
}
///
@@ -518,7 +532,7 @@ public static (fgt_ERROR_CODE errCode, int count) Fgt_get_valveChannelCount()
public static (fgt_ERROR_CODE errCode, List info) Fgt_get_pressureChannelsInfo()
{
var info = new fgt_CHANNEL_INFO[256];
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_pressureChannelsInfo(info), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_pressureChannelsInfo(info), fgt_ERRCHECK_TYPE.Generic);
var controllersInfoList = info.Where(c => c.ControllerSN != 0).ToList();
return (errCode, controllersInfoList);
}
@@ -533,13 +547,13 @@ public static (fgt_ERROR_CODE errCode, List<(fgt_CHANNEL_INFO channelInfo, fgt_S
{
var info = new fgt_CHANNEL_INFO[256];
var type = new int[256];
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_sensorChannelsInfo(info, type), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorChannelsInfo(info, type), fgt_ERRCHECK_TYPE.Generic);
var tuplesList = new List<(fgt_CHANNEL_INFO, fgt_SENSOR_TYPE)>();
for (var index = 0; index < info.Length; index++)
{
if (info[index].ControllerSN != 0)
{
- tuplesList.Add((info[index], (fgt_SENSOR_TYPE) type[index]));
+ tuplesList.Add((info[index], (fgt_SENSOR_TYPE)type[index]));
}
}
@@ -554,7 +568,7 @@ public static (fgt_ERROR_CODE errCode, List<(fgt_CHANNEL_INFO channelInfo, fgt_S
public static (fgt_ERROR_CODE errCode, List info) Fgt_get_TtlChannelsInfo()
{
var info = new fgt_CHANNEL_INFO[256];
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_TtlChannelsInfo(info), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_TtlChannelsInfo(info), fgt_ERRCHECK_TYPE.Generic);
var controllersInfoList = info.Where(c => c.ControllerSN != 0).ToList();
return (errCode, controllersInfoList);
}
@@ -593,7 +607,7 @@ public static (fgt_ERROR_CODE errCode, List<(fgt_CHANNEL_INFO channelInfo, fgt_V
/// Error code
public static fgt_ERROR_CODE Fgt_set_pressure(uint pressureIndex, float pressure)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_pressure(pressureIndex, pressure), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_pressure(pressureIndex, pressure), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return errCode;
}
@@ -605,7 +619,7 @@ public static fgt_ERROR_CODE Fgt_set_pressure(uint pressureIndex, float pressure
public static (fgt_ERROR_CODE errCode, float pressure) Fgt_get_pressure(uint pressureIndex)
{
var pressure = 0.0f;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_pressure(pressureIndex, ref pressure), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_pressure(pressureIndex, ref pressure), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return (errCode, pressure);
}
@@ -618,7 +632,7 @@ public static (fgt_ERROR_CODE errCode, float pressure, ushort timeStamp) Fgt_get
{
var pressure = 0.0f;
ushort timestamp = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_pressureEx(pressureIndex, ref pressure, ref timestamp), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_pressureEx(pressureIndex, ref pressure, ref timestamp), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return (errCode, pressure, timestamp);
}
@@ -632,7 +646,7 @@ public static (fgt_ERROR_CODE errCode, float pressure, ushort timeStamp) Fgt_get
/// Error code
public static fgt_ERROR_CODE Fgt_set_sensorRegulation(uint sensorIndex, uint pressureIndex, float setpoint)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_sensorRegulation(sensorIndex, pressureIndex, setpoint), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_sensorRegulation(sensorIndex, pressureIndex, setpoint), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return errCode;
}
@@ -644,7 +658,7 @@ public static fgt_ERROR_CODE Fgt_set_sensorRegulation(uint sensorIndex, uint pre
public static (fgt_ERROR_CODE errCode, float value) Fgt_get_sensorValue(uint sensorIndex)
{
var value = 0.0f;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_sensorValue(sensorIndex, ref value), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorValue(sensorIndex, ref value), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return (errCode, value);
}
@@ -657,7 +671,7 @@ public static (fgt_ERROR_CODE errCode, float value, ushort timeStamp) Fgt_get_se
{
var value = 0.0f;
ushort timestamp = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_sensorValueEx(sensorIndex, ref value, ref timestamp), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorValueEx(sensorIndex, ref value, ref timestamp), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return (errCode, value, timestamp);
}
@@ -668,7 +682,7 @@ public static (fgt_ERROR_CODE errCode, float value, ushort timeStamp) Fgt_get_se
/// Error code and current position
public static (fgt_ERROR_CODE errCode, int position) Fgt_get_valvePosition(uint valveIndex)
{
- int position = 0;
+ var position = 0;
var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_valvePosition(valveIndex, ref position), fgt_ERRCHECK_TYPE.Generic, valveIndex);
return (errCode, position);
}
@@ -683,7 +697,7 @@ public static (fgt_ERROR_CODE errCode, int position) Fgt_get_valvePosition(uint
/// Error code
public static fgt_ERROR_CODE Fgt_set_valvePosition(uint valveIndex, int position, fgt_SWITCH_DIRECTION direction = fgt_SWITCH_DIRECTION.Shortest, bool wait = true)
{
- var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_valvePosition(valveIndex, position, (int) direction, wait ? 1 : 0), fgt_ERRCHECK_TYPE.Generic, valveIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_valvePosition(valveIndex, position, (int)direction, wait ? 1 : 0), fgt_ERRCHECK_TYPE.Generic, valveIndex);
return errCode;
}
@@ -725,7 +739,7 @@ public static fgt_ERROR_CODE Fgt_set_sessionPressureUnit(string unit)
throw;
}
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_sessionPressureUnit(pressureUnit), fgt_ERRCHECK_TYPE.Pressure);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_sessionPressureUnit(pressureUnit), fgt_ERRCHECK_TYPE.Pressure);
return errCode;
}
@@ -751,7 +765,7 @@ public static fgt_ERROR_CODE Fgt_set_pressureUnit(uint pressureIndex, string uni
throw;
}
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_pressureUnit(pressureIndex, pressureUnit), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_pressureUnit(pressureIndex, pressureUnit), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return errCode;
}
@@ -764,7 +778,7 @@ public static fgt_ERROR_CODE Fgt_set_pressureUnit(uint pressureIndex, string uni
public static (fgt_ERROR_CODE errCode, string unit) Fgt_get_pressureUnit(uint pressureIndex)
{
var pressureUnit = new char[140];
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_pressureUnit(pressureIndex, pressureUnit), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_pressureUnit(pressureIndex, pressureUnit), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
var unitString = new string(pressureUnit.TakeWhile(c => c != '\0').ToArray());
return (errCode, unitString);
@@ -792,7 +806,7 @@ public static fgt_ERROR_CODE Fgt_set_sensorUnit(uint sensorIndex, string sensorU
throw;
}
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_sensorUnit(sensorIndex, unit), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_sensorUnit(sensorIndex, unit), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return errCode;
}
@@ -805,7 +819,7 @@ public static fgt_ERROR_CODE Fgt_set_sensorUnit(uint sensorIndex, string sensorU
public static (fgt_ERROR_CODE errCode, string unit) Fgt_get_sensorUnit(uint sensorIndex)
{
var unit = new char[140];
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_sensorUnit(sensorIndex, unit), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorUnit(sensorIndex, unit), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
var unitString = new string(unit.TakeWhile(c => c != '\0').ToArray());
return (errCode, unitString);
@@ -820,7 +834,7 @@ public static (fgt_ERROR_CODE errCode, string unit) Fgt_get_sensorUnit(uint sens
/// Error code
public static fgt_ERROR_CODE Fgt_set_sensorCalibration(uint sensorIndex, fgt_SENSOR_CALIBRATION table)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_sensorCalibration(sensorIndex, (int) table), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_sensorCalibration(sensorIndex, (int)table), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return errCode;
}
@@ -832,9 +846,9 @@ public static fgt_ERROR_CODE Fgt_set_sensorCalibration(uint sensorIndex, fgt_SEN
public static (fgt_ERROR_CODE errCode, fgt_SENSOR_CALIBRATION table) Fgt_get_sensorCalibration(uint sensorIndex)
{
var table = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_sensorCalibration(sensorIndex, ref table), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorCalibration(sensorIndex, ref table), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
- return (errCode, (fgt_SENSOR_CALIBRATION) table);
+ return (errCode, (fgt_SENSOR_CALIBRATION)table);
}
///
@@ -848,7 +862,7 @@ public static (fgt_ERROR_CODE errCode, fgt_SENSOR_CALIBRATION table) Fgt_get_sen
/// Error code
public static fgt_ERROR_CODE Fgt_set_sensorCustomScale(uint sensorIndex, (float a, float b, float c) scale)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_sensorCustomScale(sensorIndex, scale.a, scale.b, scale.c), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_sensorCustomScale(sensorIndex, scale.a, scale.b, scale.c), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return errCode;
}
@@ -865,7 +879,7 @@ public static fgt_ERROR_CODE Fgt_set_sensorCustomScale(uint sensorIndex, (float
/// Error code
public static fgt_ERROR_CODE Fgt_set_sensorCustomScaleEx(uint sensorIndex, (float a, float b, float c) scale, float sMax)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_sensorCustomScaleEx(sensorIndex, scale.a, scale.b, scale.c, sMax), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_sensorCustomScaleEx(sensorIndex, scale.a, scale.b, scale.c, sMax), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return errCode;
}
@@ -877,7 +891,7 @@ public static fgt_ERROR_CODE Fgt_set_sensorCustomScaleEx(uint sensorIndex, (floa
/// Error code
public static fgt_ERROR_CODE Fgt_calibratePressure(uint pressureIndex)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_calibratePressure(pressureIndex), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_calibratePressure(pressureIndex), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return errCode;
}
@@ -896,7 +910,7 @@ public static fgt_ERROR_CODE Fgt_calibratePressure(uint pressureIndex)
/// Error code
public static fgt_ERROR_CODE Fgt_set_customSensorRegulation(float measure, float setpoint, float maxSensorRange, uint pressureIndex)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_customSensorRegulation(measure, setpoint, maxSensorRange, pressureIndex), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_customSensorRegulation(measure, setpoint, maxSensorRange, pressureIndex), fgt_ERRCHECK_TYPE.Generic);
return errCode;
}
@@ -908,7 +922,7 @@ public static fgt_ERROR_CODE Fgt_set_customSensorRegulation(float measure, float
public static (fgt_ERROR_CODE errCode, float pMin, float pMax) Fgt_get_pressureRange(uint pressureIndex)
{
float pMin = 0, pMax = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_pressureRange(pressureIndex, ref pMin, ref pMax), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_pressureRange(pressureIndex, ref pMin, ref pMax), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return (errCode, pMin, pMax);
}
@@ -920,7 +934,7 @@ public static (fgt_ERROR_CODE errCode, float pMin, float pMax) Fgt_get_pressureR
public static (fgt_ERROR_CODE errCode, (float sMin, float sMax) range) Fgt_get_sensorRange(uint sensorIndex)
{
float sMin = 0, sMax = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_get_sensorRange(sensorIndex, ref sMin, ref sMax), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorRange(sensorIndex, ref sMin, ref sMax), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return (errCode, (sMin, sMax));
}
@@ -931,7 +945,7 @@ public static (fgt_ERROR_CODE errCode, (float sMin, float sMax) range) Fgt_get_s
/// Error code and Maximum position of this valve
public static (fgt_ERROR_CODE errCode, int posMax) Fgt_get_valveRange(uint valveIndex)
{
- int posMax = 0;
+ var posMax = 0;
var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_valveRange(valveIndex, ref posMax), fgt_ERRCHECK_TYPE.Sensor, valveIndex);
return (errCode, posMax);
}
@@ -944,7 +958,7 @@ public static (fgt_ERROR_CODE errCode, int posMax) Fgt_get_valveRange(uint valve
///
public static fgt_ERROR_CODE Fgt_set_pressureLimit(uint pressureIndex, (float pMin, float pMax) limits)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_pressureLimit(pressureIndex, limits.pMin, limits.pMax), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_pressureLimit(pressureIndex, limits.pMin, limits.pMax), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return errCode;
}
@@ -961,7 +975,7 @@ public static fgt_ERROR_CODE Fgt_set_pressureLimit(uint pressureIndex, (float pM
/// Error code
public static fgt_ERROR_CODE Fgt_set_sensorRegulationResponse(uint sensorIndex, uint responseTime)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_sensorRegulationResponse(sensorIndex, responseTime), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_sensorRegulationResponse(sensorIndex, responseTime), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
return errCode;
}
@@ -975,7 +989,7 @@ public static fgt_ERROR_CODE Fgt_set_sensorRegulationResponse(uint sensorIndex,
/// Error code
public static fgt_ERROR_CODE Fgt_set_pressureResponse(uint pressureIndex, byte value)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_pressureResponse(pressureIndex, value), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_pressureResponse(pressureIndex, value), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return errCode;
}
@@ -1000,7 +1014,7 @@ public static (fgt_ERROR_CODE errCode, fgt_INSTRUMENT_TYPE type, ushort controll
var detailsString = new string(details.TakeWhile(c => c != '\0').ToArray());
- return ((fgt_ERROR_CODE) errCode, (fgt_INSTRUMENT_TYPE) type, controllerSN: controllerSn, infoCode == 1, detailsString);
+ return ((fgt_ERROR_CODE)errCode, (fgt_INSTRUMENT_TYPE)type, controllerSN: controllerSn, infoCode == 1, detailsString);
}
///
@@ -1020,7 +1034,7 @@ public static (fgt_ERROR_CODE errCode, fgt_INSTRUMENT_TYPE type, ushort controll
var detailsString = new string(details.TakeWhile(c => c != '\0').ToArray());
- return ((fgt_ERROR_CODE) errCode, (fgt_INSTRUMENT_TYPE) type, controllerSN: controllerSn, infoCode == 1, detailsString);
+ return ((fgt_ERROR_CODE)errCode, (fgt_INSTRUMENT_TYPE)type, controllerSN: controllerSn, infoCode == 1, detailsString);
}
///
@@ -1032,7 +1046,7 @@ public static (fgt_ERROR_CODE errCode, fgt_INSTRUMENT_TYPE type, ushort controll
/// Error code
public static fgt_ERROR_CODE Fgt_set_power(uint controllerIndex, fgt_POWER state)
{
- return (fgt_ERROR_CODE) fgt_set_power(controllerIndex, (byte) state);
+ return (fgt_ERROR_CODE)fgt_set_power(controllerIndex, (byte)state);
}
///
@@ -1045,7 +1059,7 @@ public static (fgt_ERROR_CODE errCode, fgt_POWER state) Fgt_get_power(uint contr
{
byte state = 0;
var errCode = fgt_get_power(controllerIndex, ref state);
- return ((fgt_ERROR_CODE) errCode, (fgt_POWER) state);
+ return ((fgt_ERROR_CODE)errCode, (fgt_POWER)state);
}
#endregion
@@ -1060,7 +1074,7 @@ public static (fgt_ERROR_CODE errCode, fgt_POWER state) Fgt_get_power(uint contr
/// Error code
public static fgt_ERROR_CODE Fgt_set_TtlMode(uint TtlIndex, fgt_TTL_MODE mode)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_TtlMode(TtlIndex, (int) mode), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_TtlMode(TtlIndex, (int)mode), fgt_ERRCHECK_TYPE.Generic);
return errCode;
}
@@ -1072,8 +1086,8 @@ public static fgt_ERROR_CODE Fgt_set_TtlMode(uint TtlIndex, fgt_TTL_MODE mode)
public static (fgt_ERROR_CODE errCode, bool ttlEvent) Fgt_read_Ttl(uint ttlIndex)
{
uint state = 0;
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_read_Ttl(ttlIndex, ref state), fgt_ERRCHECK_TYPE.Generic);
- return ((fgt_ERROR_CODE) errCode, Convert.ToBoolean(state));
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_read_Ttl(ttlIndex, ref state), fgt_ERRCHECK_TYPE.Generic);
+ return (errCode, Convert.ToBoolean(state));
}
///
@@ -1083,7 +1097,7 @@ public static (fgt_ERROR_CODE errCode, bool ttlEvent) Fgt_read_Ttl(uint ttlIndex
/// Error code and a boolean indicating if an event (edge) has occured
public static fgt_ERROR_CODE Fgt_trigger_Ttl(uint ttlIndex)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_trigger_Ttl(ttlIndex), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_trigger_Ttl(ttlIndex), fgt_ERRCHECK_TYPE.Generic);
return errCode;
}
@@ -1100,7 +1114,7 @@ public static fgt_ERROR_CODE Fgt_trigger_Ttl(uint ttlIndex)
/// Error code
public static fgt_ERROR_CODE Fgt_set_purge(uint controllerIndex, bool purge)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_purge(controllerIndex, (byte) (purge ? 1 : 0)), fgt_ERRCHECK_TYPE.Generic);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_purge(controllerIndex, (byte)(purge ? 1 : 0)), fgt_ERRCHECK_TYPE.Generic);
return errCode;
}
@@ -1113,10 +1127,50 @@ public static fgt_ERROR_CODE Fgt_set_purge(uint controllerIndex, bool purge)
///
public static fgt_ERROR_CODE Fgt_set_manual(uint pressureIndex, float value)
{
- var errCode = ErrCheck((fgt_ERROR_CODE) fgt_set_manual(pressureIndex, value), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_manual(pressureIndex, value), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
return errCode;
}
+ ///
+ /// Set the digital output ON or OFF on a controller
+ /// This feature is only available on the F-OEM device.
+ ///
+ /// Index of controller or unique ID
+ /// Address of the digital output to toggle. For F-OEM: 0: Pump, 1: LED
+ /// True to turn on the output, false to turn off
+ /// Error code
+ public static fgt_ERROR_CODE Fgt_set_digitalOutput(uint controllerIndex, byte port, bool state)
+ {
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_set_digitalOutput(controllerIndex, port, (byte)(state ? 1 : 0)), fgt_ERRCHECK_TYPE.Generic);
+ return errCode;
+ }
+
+ ///
+ /// Read the flag indicating whether the flow rate sensor detects an air bubble. Only
+ /// available on Flow Unit sensor ranges M+ and L+.
+ ///
+ /// Index of sensor channel or unique ID
+ /// Error code and a boolean which is true if the sensor detects an air bubble
+ public static (fgt_ERROR_CODE errCode, bool detected) Fgt_get_sensorAirBubbleFlag(uint sensorIndex)
+ {
+ byte detected = 0;
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_sensorAirBubbleFlag(sensorIndex, ref detected), fgt_ERRCHECK_TYPE.Sensor, sensorIndex);
+ return (errCode, detected != 0);
+ }
+
+ ///
+ /// Returns the pressure measured at the device's inlet.
+ /// This feature is only available on LineUP Flow EZ and FOEM Pressure Module instruments.
+ ///
+ /// Index of pressure channel or unique ID
+ /// Error code and current inlet pressure
+ public static (fgt_ERROR_CODE errCode, float pressure) Fgt_get_inletPressure(uint pressureIndex)
+ {
+ var pressure = 0.0f;
+ var errCode = ErrCheck((fgt_ERROR_CODE)fgt_get_inletPressure(pressureIndex, ref pressure), fgt_ERRCHECK_TYPE.Pressure, pressureIndex);
+ return (errCode, pressure);
+ }
+
#endregion
///
diff --git a/C#/fgt_sdk_csharp/fgt_sdk.csproj b/C#/fgt_sdk_csharp/fgt_sdk.csproj
index 9d23a5e..43c79fb 100644
--- a/C#/fgt_sdk_csharp/fgt_sdk.csproj
+++ b/C#/fgt_sdk_csharp/fgt_sdk.csproj
@@ -5,16 +5,16 @@
Fluigent
Fluigent Software Development Kit
C# Software Development Kit for Fluigent instruments
- 21.4.0.0
+ 22.0.0.0
Microfluidics, Control
AnyCPU;x64;x86
true
- 21.4.0.0
+ 22.0.0.0
Apache-2.0
- Copyright (c) Fluigent 2021
+ Copyright (c) Fluigent 2022
https://github.com/Fluigent/fgt-SDK
https://www.fluigent.com/
- 21.4.0.0
+ 22.0.0.0
diff --git a/C++/CMakeLists.txt b/C++/CMakeLists.txt
index 13182cd..411843d 100644
--- a/C++/CMakeLists.txt
+++ b/C++/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.13)
-project(SDK_cpp_examples VERSION 21.4.0.0)
+project(SDK_cpp_examples VERSION 22.0.0.0)
set(CMAKE_CXX_STANDARD 11)
add_subdirectory(fgt_SDK_Cpp)
diff --git a/C++/fgt_SDK_Cpp/dlls/fgt_SDK.h b/C++/fgt_SDK_Cpp/dlls/fgt_SDK.h
index 084a5fc..e53327b 100644
--- a/C++/fgt_SDK_Cpp/dlls/fgt_SDK.h
+++ b/C++/fgt_SDK_Cpp/dlls/fgt_SDK.h
@@ -1,13 +1,13 @@
/*============================================================================
* Fluigent Software Developement Kit
*----------------------------------------------------------------------------
-* Copyright (c) Fluigent 2021. All Rights Reserved.
+* Copyright (c) Fluigent 2022. All Rights Reserved.
*----------------------------------------------------------------------------
*
* Title: fgt_SDK.h
* Purpose: Functions API for Fluigent instruments
-* Version: 21.4.0.0
-* Date: 12/2021
+* Version: 22.0.0.0
+* Date: 04/2022
*============================================================================*/
#ifndef _FGT_SDK_H
@@ -71,13 +71,15 @@ extern "C"
};
/** @Description Instrument controller type */
- enum class fgt_INSTRUMENT_TYPE { None, MFCS, MFCS_EZ, FRP, LineUP, IPS, ESS };
+ enum class fgt_INSTRUMENT_TYPE { None, MFCS, MFCS_EZ, FRP, LineUP, IPS, ESS, F_OEM };
/** @Description Sensor type */
enum class fgt_SENSOR_TYPE {
None,
Flow_XS_single, Flow_S_single, Flow_S_dual, Flow_M_single, Flow_M_dual, Flow_L_single, Flow_L_dual, Flow_XL_single,
- Pressure_S, Pressure_M, Pressure_XL };
+ Pressure_S, Pressure_M, Pressure_XL,
+ Flow_M_plus_dual, Flow_L_plus_dual,
+ };
/** @Description Sensor calibration table */
enum class fgt_SENSOR_CALIBRATION { None, H2O, IPA, HFE, FC40, OIL };
@@ -92,7 +94,7 @@ extern "C"
enum class fgt_LINK_MODULE { None, FlowEZ, PSwitch = 3, SwitchEZ = 4 };
/** @Description Valve type */
- enum class fgt_VALVE_TYPE { None, MSwitch, TwoSwitch, LSwitch, PSwitch };
+ enum class fgt_VALVE_TYPE { None, MSwitch, TwoSwitch, LSwitch, PSwitch, M_X, Two_X, L_X };
/** @Description Switch direction type */
enum class fgt_SWITCH_DIRECTION { Shortest, Anticlockwise, Clockwise };
@@ -351,6 +353,16 @@ typedef struct
*/
unsigned char FGT_API fgt_get_sensorValueEx(unsigned int sensorIndex, float* value, unsigned short* timeStamp);
+ /**
+ * @Description Read the flag indicating whether the flow rate sensor detects an air bubble. Only
+ available on Flow Unit sensor ranges M+ and L+.
+ * @param sensorIndex Index of sensor channel or unique ID
+ * @out detected 1 if an air bubble was detected, 0 otherwise.
+ * @return fgt_ERROR_CODE
+ * @see fgt_get_sensorStatus
+ */
+ unsigned char FGT_API fgt_get_sensorAirBubbleFlag(unsigned int sensorIndex, unsigned char* detected);
+
/**
* @Description Read the position of a specific valve channel.
* @param valveIndex Index of valve channel
@@ -660,6 +672,24 @@ typedef struct
*/
unsigned char FGT_API fgt_set_manual(unsigned int pressureIndex, float value);
+ /**
+ * @Description Set the digital output ON or OFF on a controller
+ * This feature is only available on the F-OEM device.
+ * @param controllerIndex Index of controller or unique ID
+ * @param port Address of the digital output to toggle. For F-OEM: 0: Pump, 1: LED
+ * @param state 0: OFF, 1:ON
+ * @return fgt_ERROR_CODE
+ */
+ unsigned char FGT_API fgt_set_digitalOutput(unsigned int controllerIndex, unsigned char port, unsigned char state);
+
+ /**
+ * @Description Returns the pressure measured at the device's inlet.
+ * This feature is only available on LineUP Flow EZ and FOEM Pressure Module instruments.
+ * @param pressureIndex Index of pressure channel or unique ID
+ * @out pressure Inlet pressure value in selected unit, default is "mbar"
+ * @return fgt_ERROR_CODE
+ */
+ unsigned char FGT_API fgt_get_inletPressure(unsigned int pressureIndex, float* pressure);
#ifdef __cplusplus
}
diff --git a/C++/fgt_SDK_Cpp/dlls/linux/arm/libfgt_SDK.so b/C++/fgt_SDK_Cpp/dlls/linux/arm/libfgt_SDK.so
index 39bf48a..56f4351 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/linux/arm/libfgt_SDK.so and b/C++/fgt_SDK_Cpp/dlls/linux/arm/libfgt_SDK.so differ
diff --git a/C++/fgt_SDK_Cpp/dlls/linux/arm64/libfgt_SDK.so b/C++/fgt_SDK_Cpp/dlls/linux/arm64/libfgt_SDK.so
index 8f43043..173cdbd 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/linux/arm64/libfgt_SDK.so and b/C++/fgt_SDK_Cpp/dlls/linux/arm64/libfgt_SDK.so differ
diff --git a/C++/fgt_SDK_Cpp/dlls/linux/x64/libfgt_SDK.so b/C++/fgt_SDK_Cpp/dlls/linux/x64/libfgt_SDK.so
index 914e8b8..7d85643 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/linux/x64/libfgt_SDK.so and b/C++/fgt_SDK_Cpp/dlls/linux/x64/libfgt_SDK.so differ
diff --git a/C++/fgt_SDK_Cpp/dlls/mac/x64/libfgt_SDK.dylib b/C++/fgt_SDK_Cpp/dlls/mac/x64/libfgt_SDK.dylib
index 9883b6e..09f2006 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/mac/x64/libfgt_SDK.dylib and b/C++/fgt_SDK_Cpp/dlls/mac/x64/libfgt_SDK.dylib differ
diff --git a/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.dll b/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.dll
index 56d89cd..767ea89 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.dll and b/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.dll differ
diff --git a/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.lib b/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.lib
index 97e5643..032a6d2 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.lib and b/C++/fgt_SDK_Cpp/dlls/windows/x64/fgt_SDK.lib differ
diff --git a/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.dll b/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.dll
index 223ddf1..ec669e0 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.dll and b/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.dll differ
diff --git a/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.lib b/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.lib
index e5a30aa..c2feace 100644
Binary files a/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.lib and b/C++/fgt_SDK_Cpp/dlls/windows/x86/fgt_SDK.lib differ
diff --git a/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.cpp b/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.cpp
index a59fa78..0ba8fc8 100644
--- a/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.cpp
+++ b/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.cpp
@@ -60,6 +60,7 @@ std::ostream& operator<<(std::ostream& str, fgt_INSTRUMENT_TYPE instrType)
case fgt_INSTRUMENT_TYPE::LineUP: str << "LineUP"; break;
case fgt_INSTRUMENT_TYPE::IPS: str << "IPS"; break;
case fgt_INSTRUMENT_TYPE::ESS: str << "ESS"; break;
+ case fgt_INSTRUMENT_TYPE::F_OEM: str << "F_OEM"; break;
default: str << "Unknown instrument type (" << int(instrType) << ")";
}
return str;
@@ -82,6 +83,8 @@ std::ostream& operator<<(std::ostream& str, fgt_SENSOR_TYPE sensorType)
case fgt_SENSOR_TYPE::Pressure_S: str << "Pressure_S"; break;
case fgt_SENSOR_TYPE::Pressure_M: str << "Pressure_M"; break;
case fgt_SENSOR_TYPE::Pressure_XL: str << "Pressure_XL"; break;
+ case fgt_SENSOR_TYPE::Flow_M_plus_dual: str << "Flow_M_plus_dual"; break;
+ case fgt_SENSOR_TYPE::Flow_L_plus_dual: str << "Flow_L_plus_dual"; break;
default: str << "Unknown sensor type (" << int(sensorType) << ")";
}
return str;
@@ -140,6 +143,9 @@ std::ostream& operator<<(std::ostream& str, fgt_VALVE_TYPE valveType)
case fgt_VALVE_TYPE::TwoSwitch: str << "TwoSwitch"; break;
case fgt_VALVE_TYPE::LSwitch: str << "LSwitch"; break;
case fgt_VALVE_TYPE::PSwitch: str << "PSwitch"; break;
+ case fgt_VALVE_TYPE::M_X: str << "M_X"; break;
+ case fgt_VALVE_TYPE::Two_X: str << "Two_X"; break;
+ case fgt_VALVE_TYPE::L_X: str << "L_X"; break;
default: str << "Unknown valve type (" << int(valveType) << ")";
}
return str;
@@ -1090,6 +1096,51 @@ fgt_ERROR_CODE Fgt_set_manual(unsigned int pressureIndex, float value)
return returnCode;
}
+/**
+ * @Description Set the digital output ON or OFF on a controller
+ * This feature is only available on the F-OEM device.
+ * @param controllerIndex Index of controller or unique ID
+ * @param port Address of the digital output to toggle. For F-OEM: 0: Pump, 1: LED
+ * @param state 0: OFF, 1:ON
+ * @return fgt_ERROR_CODE
+ */
+fgt_ERROR_CODE Fgt_set_digitalOutput(unsigned int controllerIndex, unsigned char port, unsigned char state)
+{
+ fgt_ERROR_CODE returnCode = fgt_ERROR_CODE(fgt_set_digitalOutput(controllerIndex, port, state));
+ Fgt_Manage_Generic_Status(returnCode, "Fgt_set_digitalOutput");
+ return returnCode;
+}
+
+/**
+ * @Description Read the flag indicating whether the flow rate sensor detects an air bubble. Only
+ available on Flow Unit sensor ranges M+ and L+.
+ * @param sensorIndex Index of sensor channel or unique ID
+ * @out detected 1 if an air bubble was detected, 0 otherwise.
+ * @return fgt_ERROR_CODE
+ * @see fgt_get_sensorStatus
+ */
+fgt_ERROR_CODE Fgt_get_sensorAirBubbleFlag(unsigned int sensorIndex, unsigned char* detected)
+{
+ fgt_ERROR_CODE returnCode = fgt_ERROR_CODE(fgt_get_sensorAirBubbleFlag(sensorIndex, detected));
+ Fgt_Manage_Sensor_Status(sensorIndex, "Fgt_get_sensorAirBubbleFlag");
+ return returnCode;
+}
+
+/**
+ * @Description Returns the pressure measured at the device's inlet.
+ * This feature is only available on LineUP Flow EZ and FOEM Pressure Module instruments.
+ * @param pressureIndex Index of pressure channel or unique ID
+ * @param *pressure Inlet pressure value in selected unit, default is "mbar"
+ * @return errorCode
+ * @see fgt_get_pressureStatus
+ */
+fgt_ERROR_CODE Fgt_get_inletPressure(unsigned int pressureIndex, float* pressure)
+{
+ fgt_ERROR_CODE returnCode = fgt_ERROR_CODE(fgt_get_inletPressure(pressureIndex, pressure));
+ Fgt_Manage_Pressure_Status(pressureIndex, "Fgt_get_inletPressure");
+ return returnCode;
+}
+
fgt_ERROR_CODE Fgt_set_errorReportMode(fgt_ERROR_REPORT_MODE mode)
{
error_report_mode = mode;
diff --git a/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.h b/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.h
index ae2c8e4..4a7e896 100644
--- a/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.h
+++ b/C++/fgt_SDK_Cpp/fgt_SDK_Cpp.h
@@ -1,14 +1,14 @@
/*============================================================================
* Fluigent Software Developement Kit for C++
*----------------------------------------------------------------------------
-* Copyright (c) Fluigent 2021. All Rights Reserved.
+* Copyright (c) Fluigent 2022. All Rights Reserved.
*----------------------------------------------------------------------------
*
* Title: fgt_SDK_Cpp.h
* Purpose: Wrapper to fgt_SDK library
* Contains an interface to each dll function and type conversions
-* Version: 21.4.0.0
-* Date: 12/2021
+* Version: 22.0.0.0
+* Date: 04/2022
*============================================================================*/
#ifndef _FGT_SDK_CPP_H
@@ -601,6 +601,36 @@ fgt_ERROR_CODE Fgt_set_purge(unsigned int controllerIndex, unsigned char purge);
*/
fgt_ERROR_CODE Fgt_set_manual(unsigned int pressureIndex, float value);
+/**
+ * @Description Set the digital output ON or OFF on a controller
+ * This feature is only available on the F-OEM device.
+ * @param controllerIndex Index of controller or unique ID
+ * @param port Address of the digital output to toggle. For F-OEM: 0: Pump, 1: LED
+ * @param state 0: OFF, 1:ON
+ * @return fgt_ERROR_CODE
+ */
+fgt_ERROR_CODE Fgt_set_digitalOutput(unsigned int controllerIndex, unsigned char port, unsigned char state);
+
+/**
+ * @Description Read the flag indicating whether the flow rate sensor detects an air bubble. Only
+ available on Flow Unit sensor ranges M+ and L+.
+ * @param sensorIndex Index of sensor channel or unique ID
+ * @out detected 1 if an air bubble was detected, 0 otherwise.
+ * @return fgt_ERROR_CODE
+ * @see fgt_get_sensorStatus
+ */
+fgt_ERROR_CODE FGT_API Fgt_get_sensorAirBubbleFlag(unsigned int sensorIndex, unsigned char* detected);
+
+/**
+ * @Description Returns the pressure measured at the device's inlet.
+ * This feature is only available on LineUP Flow EZ and FOEM Pressure Module instruments.
+ * @param pressureIndex Index of pressure channel or unique ID
+ * @param *pressure Inlet pressure value in selected unit, default is "mbar"
+ * @return errorCode
+ * @see fgt_get_pressureStatus
+ */
+fgt_ERROR_CODE Fgt_get_inletPressure(unsigned int pressureIndex, float* pressure);
+
/**
* @Description Sets a flag that defines how SDK errors should be reported.
* @param mode The report mode to use.
diff --git a/Fluigent SDK.pdf b/Fluigent SDK.pdf
index 5a565f0..ea72301 100644
Binary files a/Fluigent SDK.pdf and b/Fluigent SDK.pdf differ
diff --git a/LabVIEW/dlls/fgt_SDK.h b/LabVIEW/dlls/fgt_SDK.h
index 084a5fc..e53327b 100644
--- a/LabVIEW/dlls/fgt_SDK.h
+++ b/LabVIEW/dlls/fgt_SDK.h
@@ -1,13 +1,13 @@
/*============================================================================
* Fluigent Software Developement Kit
*----------------------------------------------------------------------------
-* Copyright (c) Fluigent 2021. All Rights Reserved.
+* Copyright (c) Fluigent 2022. All Rights Reserved.
*----------------------------------------------------------------------------
*
* Title: fgt_SDK.h
* Purpose: Functions API for Fluigent instruments
-* Version: 21.4.0.0
-* Date: 12/2021
+* Version: 22.0.0.0
+* Date: 04/2022
*============================================================================*/
#ifndef _FGT_SDK_H
@@ -71,13 +71,15 @@ extern "C"
};
/** @Description Instrument controller type */
- enum class fgt_INSTRUMENT_TYPE { None, MFCS, MFCS_EZ, FRP, LineUP, IPS, ESS };
+ enum class fgt_INSTRUMENT_TYPE { None, MFCS, MFCS_EZ, FRP, LineUP, IPS, ESS, F_OEM };
/** @Description Sensor type */
enum class fgt_SENSOR_TYPE {
None,
Flow_XS_single, Flow_S_single, Flow_S_dual, Flow_M_single, Flow_M_dual, Flow_L_single, Flow_L_dual, Flow_XL_single,
- Pressure_S, Pressure_M, Pressure_XL };
+ Pressure_S, Pressure_M, Pressure_XL,
+ Flow_M_plus_dual, Flow_L_plus_dual,
+ };
/** @Description Sensor calibration table */
enum class fgt_SENSOR_CALIBRATION { None, H2O, IPA, HFE, FC40, OIL };
@@ -92,7 +94,7 @@ extern "C"
enum class fgt_LINK_MODULE { None, FlowEZ, PSwitch = 3, SwitchEZ = 4 };
/** @Description Valve type */
- enum class fgt_VALVE_TYPE { None, MSwitch, TwoSwitch, LSwitch, PSwitch };
+ enum class fgt_VALVE_TYPE { None, MSwitch, TwoSwitch, LSwitch, PSwitch, M_X, Two_X, L_X };
/** @Description Switch direction type */
enum class fgt_SWITCH_DIRECTION { Shortest, Anticlockwise, Clockwise };
@@ -351,6 +353,16 @@ typedef struct
*/
unsigned char FGT_API fgt_get_sensorValueEx(unsigned int sensorIndex, float* value, unsigned short* timeStamp);
+ /**
+ * @Description Read the flag indicating whether the flow rate sensor detects an air bubble. Only
+ available on Flow Unit sensor ranges M+ and L+.
+ * @param sensorIndex Index of sensor channel or unique ID
+ * @out detected 1 if an air bubble was detected, 0 otherwise.
+ * @return fgt_ERROR_CODE
+ * @see fgt_get_sensorStatus
+ */
+ unsigned char FGT_API fgt_get_sensorAirBubbleFlag(unsigned int sensorIndex, unsigned char* detected);
+
/**
* @Description Read the position of a specific valve channel.
* @param valveIndex Index of valve channel
@@ -660,6 +672,24 @@ typedef struct
*/
unsigned char FGT_API fgt_set_manual(unsigned int pressureIndex, float value);
+ /**
+ * @Description Set the digital output ON or OFF on a controller
+ * This feature is only available on the F-OEM device.
+ * @param controllerIndex Index of controller or unique ID
+ * @param port Address of the digital output to toggle. For F-OEM: 0: Pump, 1: LED
+ * @param state 0: OFF, 1:ON
+ * @return fgt_ERROR_CODE
+ */
+ unsigned char FGT_API fgt_set_digitalOutput(unsigned int controllerIndex, unsigned char port, unsigned char state);
+
+ /**
+ * @Description Returns the pressure measured at the device's inlet.
+ * This feature is only available on LineUP Flow EZ and FOEM Pressure Module instruments.
+ * @param pressureIndex Index of pressure channel or unique ID
+ * @out pressure Inlet pressure value in selected unit, default is "mbar"
+ * @return fgt_ERROR_CODE
+ */
+ unsigned char FGT_API fgt_get_inletPressure(unsigned int pressureIndex, float* pressure);
#ifdef __cplusplus
}
diff --git a/LabVIEW/dlls/fgt_SDK_32.dll b/LabVIEW/dlls/fgt_SDK_32.dll
index 223ddf1..ec669e0 100644
Binary files a/LabVIEW/dlls/fgt_SDK_32.dll and b/LabVIEW/dlls/fgt_SDK_32.dll differ
diff --git a/LabVIEW/dlls/fgt_SDK_64.dll b/LabVIEW/dlls/fgt_SDK_64.dll
index 56d89cd..767ea89 100644
Binary files a/LabVIEW/dlls/fgt_SDK_64.dll and b/LabVIEW/dlls/fgt_SDK_64.dll differ
diff --git a/LabVIEW/sourceCode/TypeDefs/fgt_INSTRUMENT_TYPE.ctl b/LabVIEW/sourceCode/TypeDefs/fgt_INSTRUMENT_TYPE.ctl
index a409f38..e148a4a 100644
Binary files a/LabVIEW/sourceCode/TypeDefs/fgt_INSTRUMENT_TYPE.ctl and b/LabVIEW/sourceCode/TypeDefs/fgt_INSTRUMENT_TYPE.ctl differ
diff --git a/LabVIEW/sourceCode/TypeDefs/fgt_SENSOR_TYPE.ctl b/LabVIEW/sourceCode/TypeDefs/fgt_SENSOR_TYPE.ctl
index 1cd8268..19c889c 100644
Binary files a/LabVIEW/sourceCode/TypeDefs/fgt_SENSOR_TYPE.ctl and b/LabVIEW/sourceCode/TypeDefs/fgt_SENSOR_TYPE.ctl differ
diff --git a/LabVIEW/sourceCode/TypeDefs/fgt_VALVE_TYPE.ctl b/LabVIEW/sourceCode/TypeDefs/fgt_VALVE_TYPE.ctl
index f2ec1c9..c4664e5 100644
Binary files a/LabVIEW/sourceCode/TypeDefs/fgt_VALVE_TYPE.ctl and b/LabVIEW/sourceCode/TypeDefs/fgt_VALVE_TYPE.ctl differ
diff --git a/LabVIEW/sourceCode/VIs/Specific functions/fgt get inlet Pressure.vi b/LabVIEW/sourceCode/VIs/Specific functions/fgt get inlet Pressure.vi
new file mode 100644
index 0000000..32c38aa
Binary files /dev/null and b/LabVIEW/sourceCode/VIs/Specific functions/fgt get inlet Pressure.vi differ
diff --git a/LabVIEW/sourceCode/VIs/Specific functions/fgt get sensor Air Bubble Flag.vi b/LabVIEW/sourceCode/VIs/Specific functions/fgt get sensor Air Bubble Flag.vi
new file mode 100644
index 0000000..af336c8
Binary files /dev/null and b/LabVIEW/sourceCode/VIs/Specific functions/fgt get sensor Air Bubble Flag.vi differ
diff --git a/LabVIEW/sourceCode/VIs/Specific functions/fgt set digital Output.vi b/LabVIEW/sourceCode/VIs/Specific functions/fgt set digital Output.vi
new file mode 100644
index 0000000..984d3a3
Binary files /dev/null and b/LabVIEW/sourceCode/VIs/Specific functions/fgt set digital Output.vi differ
diff --git a/LabVIEW/sourceCode/fgt_SDK.lvlib b/LabVIEW/sourceCode/fgt_SDK.lvlib
index 4799c5b..5a737ad 100644
--- a/LabVIEW/sourceCode/fgt_SDK.lvlib
+++ b/LabVIEW/sourceCode/fgt_SDK.lvlib
@@ -17,6 +17,7 @@
+
@@ -26,6 +27,7 @@
-
+
@@ -60,6 +62,7 @@
+
-
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_get_inletPressure.m b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_get_inletPressure.m
new file mode 100644
index 0000000..20c4b30
--- /dev/null
+++ b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_get_inletPressure.m
@@ -0,0 +1,8 @@
+function [error_code, pressure] = fgt_get_inletPressure( pressureIndex )
+%FGT_GET_INLETPRESSURE Summary of this function goes here
+% Detailed explanation goes here
+load_fgt
+pressure = 0;
+[error_code, pressure] = calllib('fgt_sdk', 'fgt_get_inletPressure', pressureIndex, pressure);
+end
+
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_get_sensorAirBubbleFlag.m b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_get_sensorAirBubbleFlag.m
new file mode 100644
index 0000000..c56734b
--- /dev/null
+++ b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_get_sensorAirBubbleFlag.m
@@ -0,0 +1,9 @@
+function [error_code, bubble_flag] = fgt_get_sensorAirBubbleFlag( sensorIndex )
+%fgt_get_sensorAirBubbleFlag Summary of this function goes here
+% Detailed explanation goes here
+load_fgt
+bubble_flag = 0;
+[error_code, bubble_flag] = calllib('fgt_sdk', 'fgt_get_sensorAirBubbleFlag', sensorIndex, bubble_flag);
+
+end
+
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_set_digitalOutput.m b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_set_digitalOutput.m
new file mode 100644
index 0000000..7f3f09f
--- /dev/null
+++ b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/fgt_set_digitalOutput.m
@@ -0,0 +1,8 @@
+function [ error_code ] = fgt_set_digitalOutput( controllerIndex, port, state )
+%FGT_SET_DIGITALOUTPUT Summary of this function goes here
+% Detailed explanation goes here
+load_fgt
+[error_code] = calllib('fgt_sdk', 'fgt_set_digitalOutput', controllerIndex, port, state);
+
+end
+
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32.dll b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32.dll
index 223ddf1..ec669e0 100644
Binary files a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32.dll and b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32.dll differ
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32_prototype.m b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32_prototype.m
index bf74dd0..028cfec 100644
--- a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32_prototype.m
+++ b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_32_prototype.m
@@ -1,7 +1,7 @@
function [methodinfo,structs,enuminfo,ThunkLibName]=fgt_SDK_32_prototype
%FGT_SDK_32_PROTOTYPE Create structures to define interfaces found in 'fgt_SDK'.
-%This function was generated by loadlibrary.m parser version on Thu Dec 9 17:17:20 2021
+%This function was generated by loadlibrary.m parser version on Fri Apr 1 14:11:51 2022
%perl options:'fgt_SDK.i -outfile=fgt_SDK_32_prototype.m'
ival={cell(1,0)}; % change 0 to the actual number of functions to preallocate the data.
structs=[];enuminfo=[];fcnNum=1;
@@ -49,6 +49,8 @@
fcns.name{fcnNum}='fgt_get_sensorValue'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'singlePtr'};fcnNum=fcnNum+1;
% unsigned char _stdcall fgt_get_sensorValueEx ( unsigned int sensorIndex , float * value , unsigned short * timeStamp );
fcns.name{fcnNum}='fgt_get_sensorValueEx'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'singlePtr', 'uint16Ptr'};fcnNum=fcnNum+1;
+% unsigned char _stdcall fgt_get_sensorAirBubbleFlag ( unsigned int sensorIndex , unsigned char * detected );
+fcns.name{fcnNum}='fgt_get_sensorAirBubbleFlag'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'uint8Ptr'};fcnNum=fcnNum+1;
% unsigned char _stdcall fgt_get_valvePosition ( unsigned int valveIndex , int * position );
fcns.name{fcnNum}='fgt_get_valvePosition'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'int32Ptr'};fcnNum=fcnNum+1;
% unsigned char _stdcall fgt_set_valvePosition ( unsigned int valveIndex , int position , fgt_switch_direction_t direction , int wait );
@@ -107,6 +109,10 @@
fcns.name{fcnNum}='fgt_set_purge'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'uint8'};fcnNum=fcnNum+1;
% unsigned char _stdcall fgt_set_manual ( unsigned int pressureIndex , float value );
fcns.name{fcnNum}='fgt_set_manual'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'single'};fcnNum=fcnNum+1;
+% unsigned char _stdcall fgt_set_digitalOutput ( unsigned int controllerIndex , unsigned char port , unsigned char state );
+fcns.name{fcnNum}='fgt_set_digitalOutput'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'uint8', 'uint8'};fcnNum=fcnNum+1;
+% unsigned char _stdcall fgt_get_inletPressure ( unsigned int pressureIndex , float * pressure );
+fcns.name{fcnNum}='fgt_get_inletPressure'; fcns.calltype{fcnNum}='stdcall'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'singlePtr'};fcnNum=fcnNum+1;
structs.fgt_CHANNEL_INFO.members=struct('ControllerSN', 'uint16', 'firmware', 'uint16', 'DeviceSN', 'uint16', 'position', 'uint32', 'index', 'uint32', 'indexID', 'uint32', 'InstrType', 'int32');
structs.fgt_CONTROLLER_INFO.members=struct('SN', 'uint16', 'Firmware', 'uint16', 'id', 'uint32', 'InstrType', 'int32');
methodinfo=fcns;
\ No newline at end of file
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64.dll b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64.dll
index 56d89cd..767ea89 100644
Binary files a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64.dll and b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64.dll differ
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64_prototype.m b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64_prototype.m
index a1f690b..7dd301a 100644
--- a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64_prototype.m
+++ b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_SDK_64_prototype.m
@@ -1,7 +1,7 @@
function [methodinfo,structs,enuminfo,ThunkLibName]=fgt_SDK_64_prototype
%FGT_SDK_64_PROTOTYPE Create structures to define interfaces found in 'fgt_SDK'.
-%This function was generated by loadlibrary.m parser version on Thu Dec 9 17:17:20 2021
+%This function was generated by loadlibrary.m parser version on Fri Apr 1 14:11:51 2022
%perl options:'fgt_SDK.i -outfile=fgt_SDK_64_prototype.m -thunkfile=fgt_sdk_thunk_pcwin64.c -header=fgt_SDK.h'
ival={cell(1,0)}; % change 0 to the actual number of functions to preallocate the data.
structs=[];enuminfo=[];fcnNum=1;
@@ -50,6 +50,8 @@
fcns.thunkname{fcnNum}='uint8uint32voidPtrThunk';fcns.name{fcnNum}='fgt_get_sensorValue'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'singlePtr'};fcnNum=fcnNum+1;
% unsigned char __stdcall fgt_get_sensorValueEx ( unsigned int sensorIndex , float * value , unsigned short * timeStamp );
fcns.thunkname{fcnNum}='uint8uint32voidPtrvoidPtrThunk';fcns.name{fcnNum}='fgt_get_sensorValueEx'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'singlePtr', 'uint16Ptr'};fcnNum=fcnNum+1;
+% unsigned char __stdcall fgt_get_sensorAirBubbleFlag ( unsigned int sensorIndex , unsigned char * detected );
+fcns.thunkname{fcnNum}='uint8uint32voidPtrThunk';fcns.name{fcnNum}='fgt_get_sensorAirBubbleFlag'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'uint8Ptr'};fcnNum=fcnNum+1;
% unsigned char __stdcall fgt_get_valvePosition ( unsigned int valveIndex , int * position );
fcns.thunkname{fcnNum}='uint8uint32voidPtrThunk';fcns.name{fcnNum}='fgt_get_valvePosition'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'int32Ptr'};fcnNum=fcnNum+1;
% unsigned char __stdcall fgt_set_valvePosition ( unsigned int valveIndex , int position , fgt_switch_direction_t direction , int wait );
@@ -108,6 +110,10 @@
fcns.thunkname{fcnNum}='uint8uint32uint8Thunk';fcns.name{fcnNum}='fgt_set_purge'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'uint8'};fcnNum=fcnNum+1;
% unsigned char __stdcall fgt_set_manual ( unsigned int pressureIndex , float value );
fcns.thunkname{fcnNum}='uint8uint32floatThunk';fcns.name{fcnNum}='fgt_set_manual'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'single'};fcnNum=fcnNum+1;
+% unsigned char __stdcall fgt_set_digitalOutput ( unsigned int controllerIndex , unsigned char port , unsigned char state );
+fcns.thunkname{fcnNum}='uint8uint32uint8uint8Thunk';fcns.name{fcnNum}='fgt_set_digitalOutput'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'uint8', 'uint8'};fcnNum=fcnNum+1;
+% unsigned char __stdcall fgt_get_inletPressure ( unsigned int pressureIndex , float * pressure );
+fcns.thunkname{fcnNum}='uint8uint32voidPtrThunk';fcns.name{fcnNum}='fgt_get_inletPressure'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='uint8'; fcns.RHS{fcnNum}={'uint32', 'singlePtr'};fcnNum=fcnNum+1;
structs.fgt_CHANNEL_INFO.members=struct('ControllerSN', 'uint16', 'firmware', 'uint16', 'DeviceSN', 'uint16', 'position', 'uint32', 'index', 'uint32', 'indexID', 'uint32', 'InstrType', 'int32');
structs.fgt_CONTROLLER_INFO.members=struct('SN', 'uint16', 'Firmware', 'uint16', 'id', 'uint32', 'InstrType', 'int32');
methodinfo=fcns;
\ No newline at end of file
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.dll b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.dll
index 46f27df..a640bb2 100644
Binary files a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.dll and b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.dll differ
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.exp b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.exp
index 2290e6d..b245a53 100644
Binary files a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.exp and b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.exp differ
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.lib b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.lib
index aac1582..7d07f3d 100644
Binary files a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.lib and b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.lib differ
diff --git a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.obj b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.obj
index f4f7a8f..a461df7 100644
Binary files a/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.obj and b/MATLAB/Toolbox/SDK/Fluigent/+LowLevel/private/fgt_sdk_thunk_pcwin64.obj differ
diff --git a/MATLAB/Toolbox/SDK/Fluigent/Contents.m b/MATLAB/Toolbox/SDK/Fluigent/Contents.m
index 22b453e..1625c41 100644
--- a/MATLAB/Toolbox/SDK/Fluigent/Contents.m
+++ b/MATLAB/Toolbox/SDK/Fluigent/Contents.m
@@ -6,6 +6,7 @@
% fgt_SENSOR_CALIBRATION - Calibration table to be used by the sensor
% fgt_SENSOR_TYPE - Fluigent sensor available types and ranges
% fgt_TTL_MODE - TTL port direction and pulse type
+% fgt_VALVE_TYPE - Fluigent valve types
%
% Functions
% fgt_calibratePressure - Calibrate internal pressure sensor.
diff --git a/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_INSTRUMENT_TYPE.m b/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_INSTRUMENT_TYPE.m
index e1ede20..3f6b0a7 100644
--- a/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_INSTRUMENT_TYPE.m
+++ b/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_INSTRUMENT_TYPE.m
@@ -8,7 +8,8 @@
FRP (3),
LineUP (4),
IPS (5),
- ESS (6)
+ ESS (6),
+ F_OEM (7),
end
properties
diff --git a/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_SENSOR_TYPE.m b/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_SENSOR_TYPE.m
index e381b80..016445a 100644
--- a/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_SENSOR_TYPE.m
+++ b/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_SENSOR_TYPE.m
@@ -14,6 +14,8 @@
Pressure_S (9),
Pressure_M (10),
Pressure_XL (11),
+ Flow_M_plus_dual (12),
+ Flow_L_plus_dual (13),
end
properties
diff --git a/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_VALVE_TYPE.m b/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_VALVE_TYPE.m
index 6399487..7686517 100644
--- a/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_VALVE_TYPE.m
+++ b/MATLAB/Toolbox/SDK/Fluigent/enums/fgt_VALVE_TYPE.m
@@ -7,6 +7,9 @@
TwoSwitch (2),
LSwitch (3),
PSwitch (4),
+ M_X (5),
+ Two_X (6),
+ L_X(7),
end
properties
diff --git a/MATLAB/Toolbox/SDK/Fluigent/fgt_get_inletPressure.m b/MATLAB/Toolbox/SDK/Fluigent/fgt_get_inletPressure.m
new file mode 100644
index 0000000..bf5ec85
--- /dev/null
+++ b/MATLAB/Toolbox/SDK/Fluigent/fgt_get_inletPressure.m
@@ -0,0 +1,18 @@
+function varargout = fgt_get_inletPressure( pressureIndex )
+%FGT_GET_INLETPRESSURE Read the pressure measured at the device's inlet.
+%
+% This feature is only available on LineUP Flow EZ and FOEM Pressure
+% Module instruments.
+%
+% pressure = fgt_get_inletPressure( pressureIndex ) returns the channel's
+% inlet pressure in the selected unit, default is 'mbar'
+%
+% [pressure, error_code] = fgt_get_inletPressure( pressureIndex )
+% also returns the error code returned by the library function
+
+[error_code, pressure] = LowLevel.fgt_get_inletPressure(pressureIndex);
+manage_pressure_status('fgt_get_inletPressure', pressureIndex);
+error_code = fgt_ERROR_CODE(error_code);
+varargout = {pressure, error_code};
+end
+
diff --git a/MATLAB/Toolbox/SDK/Fluigent/fgt_get_sensorAirBubbleFlag.m b/MATLAB/Toolbox/SDK/Fluigent/fgt_get_sensorAirBubbleFlag.m
new file mode 100644
index 0000000..8e99816
--- /dev/null
+++ b/MATLAB/Toolbox/SDK/Fluigent/fgt_get_sensorAirBubbleFlag.m
@@ -0,0 +1,15 @@
+function varargout = fgt_get_sensorAirBubbleFlag( sensorIndex )
+%FGT_GET_SENSORAIRBUBBLEFLAG Read the air bubble detected flag from a Flow Unit
+%
+% flag = fgt_get_sensorAirBubbleFlag( sensorIndex ) 1 if an air bubble was
+% detected, 0 otherwise. Only available for Flow Unit ranges M+ and L+.
+%
+% [flag, error_code] = fgt_get_sensorAirBubbleFlag( sensorIndex )
+% also returns the error code returned by the library function.
+
+[error_code, bubble_flag] = LowLevel.fgt_get_sensorAirBubbleFlag(sensorIndex);
+manage_sensor_status('fgt_get_sensorAirBubbleFlag', sensorIndex);
+error_code = fgt_ERROR_CODE(error_code);
+varargout = {bubble_flag, error_code};
+end
+
diff --git a/MATLAB/Toolbox/SDK/Fluigent/fgt_set_digitalOutput.m b/MATLAB/Toolbox/SDK/Fluigent/fgt_set_digitalOutput.m
new file mode 100644
index 0000000..962e1f0
--- /dev/null
+++ b/MATLAB/Toolbox/SDK/Fluigent/fgt_set_digitalOutput.m
@@ -0,0 +1,20 @@
+function varargout = fgt_set_digitalOutput( controllerIndex, port, state )
+%FGT_SET_DIGITALOUTPUT Turns the digital output on or off
+%
+% fgt_set_digitalOutput(controllerIndex, port, state) turns the digital
+% output ON if state is 1 and OFF if state is 0.
+%
+% error_code = fgt_set_digitalOutput(controllerIndex, port, state) also
+% returns the error code returned by the library function.
+%
+% This feature is only available on F-OEM devices.
+% On the F-OEM, port 0 corresponds to the pump output, and port 1
+% corresponds to the LED
+
+error_code = LowLevel.fgt_set_digitalOutput( controllerIndex, port, state );
+manage_generic_status('fgt_set_digitalOutput', error_code);
+if nargout > 0
+ varargout = {fgt_ERROR_CODE(error_code)};
+end
+end
+
diff --git a/Python/Fluigent/SDK/__init__.py b/Python/Fluigent/SDK/__init__.py
index 6a18291..320b94b 100644
--- a/Python/Fluigent/SDK/__init__.py
+++ b/Python/Fluigent/SDK/__init__.py
@@ -5,7 +5,7 @@
from . import low_level
from . import exceptions
-__version__ = "21.4.0"
+__version__ = "22.0.0"
# Enums
class fgt_ERROR(low_level.fgt_ERROR):
@@ -974,7 +974,23 @@ def fgt_set_manual(pressure_index, voltage):
c_error, = low_level_function(pressure_index, voltage)
exceptions.manage_pressure_status(low_level_function.__name__, pressure_index)
return fgt_ERROR(c_error)
+
+def fgt_set_digitalOutput(controller_index, port, state):
+ """Activate/deactivate purge function.
+ This feature is only available on F-OEM devices.
+
+ Args:
+ controller_index: Index of controller or unique ID
+ port: Address of the digital output to toggle. For F-OEM: 0: Pump, 1: LED
+ state 0: OFF, 1:ON
+ """
+ controller_index = int(controller_index)
+ low_level_function = low_level.fgt_set_digitalOutput
+ c_error, = low_level_function(controller_index, port, state)
+ exceptions.manage_generic_status(low_level_function.__name__, c_error)
+ return fgt_ERROR(c_error)
+
def fgt_detect():
"""Detect all connected Fluigent instruments.
@@ -989,6 +1005,44 @@ def fgt_detect():
n_instruments, serial_numbers, instr_types = low_level_function()
return serial_numbers, [fgt_INSTRUMENT_TYPE(i) for i in instr_types]
+def fgt_get_inletPressure(pressure_index, get_error = _get_error):
+ """Returns the pressure measured at the device's inlet.
+ This feature is only available on LineUP Flow EZ and FOEM Pressure Module
+ instruments.
+
+ Args:
+ pressure_index: Index of pressure channel or unique ID
+
+ Returns:
+ pressure Inlet pressure value in selected unit, default is "mbar"
+
+ See also:
+ fgt_get_pressureStatus
+ """
+ pressure_index = int(pressure_index)
+ c_error, pressure = low_level.fgt_get_inletPressure(pressure_index)
+ exceptions.manage_pressure_status("fgt_get_inletPressure", pressure_index)
+ c_error = fgt_ERROR(c_error)
+ return (c_error, pressure) if get_error else pressure
+
+def fgt_get_sensorAirBubbleFlag(sensor_index, get_error = _get_error):
+ """Read the flag indicating whether the flow rate sensor detects an air bubble. Only
+ available on Flow Unit sensor ranges M+ and L+.
+
+ Args:
+ sensor_index Index of sensor channel or unique ID
+
+ Returns
+ 0: no air bubble is detected
+ 1: an air bubble is detected
+ """
+ sensor_index = int(sensor_index)
+ low_level_function = low_level.fgt_get_sensorAirBubbleFlag
+ c_error, bubble_detected = low_level_function(sensor_index)
+ exceptions.manage_sensor_status(low_level_function.__name__, sensor_index)
+ c_error = fgt_ERROR(c_error)
+ return (c_error, bubble_detected) if get_error else bubble_detected
+
def fgt_set_errorReportMode(mode):
"""Sets a flag that defines how SDK errors should be reported.
diff --git a/Python/Fluigent/SDK/low_level.py b/Python/Fluigent/SDK/low_level.py
index 27483e6..13eadb4 100644
--- a/Python/Fluigent/SDK/low_level.py
+++ b/Python/Fluigent/SDK/low_level.py
@@ -130,16 +130,17 @@ def make_enum(className, *sequential, **named):
"NONE", "Flow_XS_single", "Flow_S_single",
"Flow_S_dual", "Flow_M_single", "Flow_M_dual",
"Flow_L_single", "Flow_L_dual", "Flow_XL_single",
- "Pressure_S", "Pressure_M", "Pressure_XL")
+ "Pressure_S", "Pressure_M", "Pressure_XL",
+ "Flow_M_plus_dual", "Flow_L_plus_dual")
fgt_INSTRUMENT_TYPE = make_enum("fgt_INSTRUMENT_TYPE",
- "NONE","MFCS","MFCS_EZ","FRP","LineUP", "IPS", "ESS")
+ "NONE","MFCS","MFCS_EZ","FRP","LineUP", "IPS", "ESS", "F_OEM")
fgt_SENSOR_CALIBRATION = make_enum("fgt_SENSOR_CALIBRATION",
"NONE", "H2O", "IPA", "HFE", "FC40",
"OIL")
-fgt_VALVE_TYPE = make_enum("fgt_VALVE_TYPE", "NONE", "MSwitch", "TwoSwitch", "LSwitch", "PSwitch")
+fgt_VALVE_TYPE = make_enum("fgt_VALVE_TYPE", "NONE", "MSwitch", "TwoSwitch", "LSwitch", "PSwitch", "M_X", "Two_X", "L_X")
fgt_SWITCH_DIRECTION = make_enum("fgt_SWITCH_DIRECTION", "Shortest", "Anticlockwise", "Clockwise")
@@ -233,10 +234,13 @@ class fgt_CONTROLLER_INFO(fgt_STRUCT):
lib.fgt_trigger_Ttl.argtypes = [c_uint]
lib.fgt_set_purge.argtypes = [c_uint, c_ubyte]
lib.fgt_set_manual.argtypes = [c_uint, c_float]
+lib.fgt_set_digitalOutput.argtypes = [c_uint, c_ubyte, c_ubyte]
lib.fgt_detect.argtypes = [POINTER(c_ushort), POINTER(c_int)]
lib.fgt_get_valvePosition.argtypes = [c_uint, POINTER(c_int)]
lib.fgt_set_valvePosition.argtypes = [c_uint, c_int, c_int, c_int]
lib.fgt_set_allValves.argtypes = [c_uint, c_uint, c_int]
+lib.fgt_get_inletPressure.argtypes = [c_uint, POINTER(c_float)]
+lib.fgt_get_sensorAirBubbleFlag.argtypes = [c_uint, POINTER(c_ubyte)]
# Wrappers
@@ -565,6 +569,12 @@ def fgt_set_manual(pressure_index, voltage):
c_error = c_ubyte(lib.fgt_set_manual(c_uint(pressure_index), c_float(voltage)))
return c_error.value,
+def fgt_set_digitalOutput(controller_index, port, state):
+ """Sets the digital output on or off on the specified controller.
+ Only available on F-OEM"""
+ c_error = c_ubyte(lib.fgt_set_digitalOutput(c_uint(controller_index), c_ubyte(port), c_ubyte(state)))
+ return c_error.value,
+
def fgt_detect():
"""Returns a list containing the serial numbers of all detected
instruments and another list containing their types"""
@@ -586,3 +596,15 @@ def fgt_set_valvePosition(valve_index, position, direction, wait):
def fgt_set_allValves(controller_index, module_index, position):
c_error = c_ubyte(lib.fgt_set_allValves(c_uint(controller_index),c_uint(module_index), c_int(position)))
return c_error.value,
+
+def fgt_get_inletPressure(pressure_index):
+ """Returns the supply pressure on the specified channel, if available"""
+ pressure = c_float(0)
+ c_error = c_ubyte(lib.fgt_get_inletPressure(c_uint(pressure_index), byref(pressure)))
+ return c_error.value, pressure.value
+
+def fgt_get_sensorAirBubbleFlag(sensor_index):
+ """RRead the flag indicating whether the flow rate sensor detects an air bubble."""
+ bubble_detected = c_ubyte(0)
+ c_error = c_ubyte(lib.fgt_get_sensorAirBubbleFlag(c_uint(sensor_index), byref(bubble_detected)))
+ return c_error.value, bubble_detected.value
diff --git a/Python/Fluigent/SDK/shared/linux/arm/libfgt_SDK.so b/Python/Fluigent/SDK/shared/linux/arm/libfgt_SDK.so
index 39bf48a..56f4351 100644
Binary files a/Python/Fluigent/SDK/shared/linux/arm/libfgt_SDK.so and b/Python/Fluigent/SDK/shared/linux/arm/libfgt_SDK.so differ
diff --git a/Python/Fluigent/SDK/shared/linux/arm64/libfgt_SDK.so b/Python/Fluigent/SDK/shared/linux/arm64/libfgt_SDK.so
index 8f43043..173cdbd 100644
Binary files a/Python/Fluigent/SDK/shared/linux/arm64/libfgt_SDK.so and b/Python/Fluigent/SDK/shared/linux/arm64/libfgt_SDK.so differ
diff --git a/Python/Fluigent/SDK/shared/linux/x64/libfgt_SDK.so b/Python/Fluigent/SDK/shared/linux/x64/libfgt_SDK.so
index 914e8b8..7d85643 100644
Binary files a/Python/Fluigent/SDK/shared/linux/x64/libfgt_SDK.so and b/Python/Fluigent/SDK/shared/linux/x64/libfgt_SDK.so differ
diff --git a/Python/Fluigent/SDK/shared/mac/x64/libfgt_SDK.dylib b/Python/Fluigent/SDK/shared/mac/x64/libfgt_SDK.dylib
index 9883b6e..09f2006 100644
Binary files a/Python/Fluigent/SDK/shared/mac/x64/libfgt_SDK.dylib and b/Python/Fluigent/SDK/shared/mac/x64/libfgt_SDK.dylib differ
diff --git a/Python/Fluigent/SDK/shared/windows/x64/fgt_SDK.dll b/Python/Fluigent/SDK/shared/windows/x64/fgt_SDK.dll
index 56d89cd..767ea89 100644
Binary files a/Python/Fluigent/SDK/shared/windows/x64/fgt_SDK.dll and b/Python/Fluigent/SDK/shared/windows/x64/fgt_SDK.dll differ
diff --git a/Python/Fluigent/SDK/shared/windows/x86/fgt_SDK.dll b/Python/Fluigent/SDK/shared/windows/x86/fgt_SDK.dll
index 223ddf1..ec669e0 100644
Binary files a/Python/Fluigent/SDK/shared/windows/x86/fgt_SDK.dll and b/Python/Fluigent/SDK/shared/windows/x86/fgt_SDK.dll differ
diff --git a/README.md b/README.md
index 12a3690..c1c51a6 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Fluigent Software Developement Kit - version 21.4.0
+# Fluigent Software Developement Kit - version 22.0.0
# Overview
The Fluigent Software Development Kit (SDK) allows you to fully integrate Fluigent devices in your application;
diff --git a/Shared/fgt_SDK.h b/Shared/fgt_SDK.h
index 084a5fc..e53327b 100644
--- a/Shared/fgt_SDK.h
+++ b/Shared/fgt_SDK.h
@@ -1,13 +1,13 @@
/*============================================================================
* Fluigent Software Developement Kit
*----------------------------------------------------------------------------
-* Copyright (c) Fluigent 2021. All Rights Reserved.
+* Copyright (c) Fluigent 2022. All Rights Reserved.
*----------------------------------------------------------------------------
*
* Title: fgt_SDK.h
* Purpose: Functions API for Fluigent instruments
-* Version: 21.4.0.0
-* Date: 12/2021
+* Version: 22.0.0.0
+* Date: 04/2022
*============================================================================*/
#ifndef _FGT_SDK_H
@@ -71,13 +71,15 @@ extern "C"
};
/** @Description Instrument controller type */
- enum class fgt_INSTRUMENT_TYPE { None, MFCS, MFCS_EZ, FRP, LineUP, IPS, ESS };
+ enum class fgt_INSTRUMENT_TYPE { None, MFCS, MFCS_EZ, FRP, LineUP, IPS, ESS, F_OEM };
/** @Description Sensor type */
enum class fgt_SENSOR_TYPE {
None,
Flow_XS_single, Flow_S_single, Flow_S_dual, Flow_M_single, Flow_M_dual, Flow_L_single, Flow_L_dual, Flow_XL_single,
- Pressure_S, Pressure_M, Pressure_XL };
+ Pressure_S, Pressure_M, Pressure_XL,
+ Flow_M_plus_dual, Flow_L_plus_dual,
+ };
/** @Description Sensor calibration table */
enum class fgt_SENSOR_CALIBRATION { None, H2O, IPA, HFE, FC40, OIL };
@@ -92,7 +94,7 @@ extern "C"
enum class fgt_LINK_MODULE { None, FlowEZ, PSwitch = 3, SwitchEZ = 4 };
/** @Description Valve type */
- enum class fgt_VALVE_TYPE { None, MSwitch, TwoSwitch, LSwitch, PSwitch };
+ enum class fgt_VALVE_TYPE { None, MSwitch, TwoSwitch, LSwitch, PSwitch, M_X, Two_X, L_X };
/** @Description Switch direction type */
enum class fgt_SWITCH_DIRECTION { Shortest, Anticlockwise, Clockwise };
@@ -351,6 +353,16 @@ typedef struct
*/
unsigned char FGT_API fgt_get_sensorValueEx(unsigned int sensorIndex, float* value, unsigned short* timeStamp);
+ /**
+ * @Description Read the flag indicating whether the flow rate sensor detects an air bubble. Only
+ available on Flow Unit sensor ranges M+ and L+.
+ * @param sensorIndex Index of sensor channel or unique ID
+ * @out detected 1 if an air bubble was detected, 0 otherwise.
+ * @return fgt_ERROR_CODE
+ * @see fgt_get_sensorStatus
+ */
+ unsigned char FGT_API fgt_get_sensorAirBubbleFlag(unsigned int sensorIndex, unsigned char* detected);
+
/**
* @Description Read the position of a specific valve channel.
* @param valveIndex Index of valve channel
@@ -660,6 +672,24 @@ typedef struct
*/
unsigned char FGT_API fgt_set_manual(unsigned int pressureIndex, float value);
+ /**
+ * @Description Set the digital output ON or OFF on a controller
+ * This feature is only available on the F-OEM device.
+ * @param controllerIndex Index of controller or unique ID
+ * @param port Address of the digital output to toggle. For F-OEM: 0: Pump, 1: LED
+ * @param state 0: OFF, 1:ON
+ * @return fgt_ERROR_CODE
+ */
+ unsigned char FGT_API fgt_set_digitalOutput(unsigned int controllerIndex, unsigned char port, unsigned char state);
+
+ /**
+ * @Description Returns the pressure measured at the device's inlet.
+ * This feature is only available on LineUP Flow EZ and FOEM Pressure Module instruments.
+ * @param pressureIndex Index of pressure channel or unique ID
+ * @out pressure Inlet pressure value in selected unit, default is "mbar"
+ * @return fgt_ERROR_CODE
+ */
+ unsigned char FGT_API fgt_get_inletPressure(unsigned int pressureIndex, float* pressure);
#ifdef __cplusplus
}
diff --git a/Shared/fgt_SDK_32.dll b/Shared/fgt_SDK_32.dll
index 223ddf1..ec669e0 100644
Binary files a/Shared/fgt_SDK_32.dll and b/Shared/fgt_SDK_32.dll differ
diff --git a/Shared/fgt_SDK_64.dll b/Shared/fgt_SDK_64.dll
index 56d89cd..767ea89 100644
Binary files a/Shared/fgt_SDK_64.dll and b/Shared/fgt_SDK_64.dll differ
diff --git a/Shared/linux/arm/libfgt_SDK.so b/Shared/linux/arm/libfgt_SDK.so
index 39bf48a..56f4351 100644
Binary files a/Shared/linux/arm/libfgt_SDK.so and b/Shared/linux/arm/libfgt_SDK.so differ
diff --git a/Shared/linux/arm64/libfgt_SDK.so b/Shared/linux/arm64/libfgt_SDK.so
index 8f43043..173cdbd 100644
Binary files a/Shared/linux/arm64/libfgt_SDK.so and b/Shared/linux/arm64/libfgt_SDK.so differ
diff --git a/Shared/linux/x64/libfgt_SDK.so b/Shared/linux/x64/libfgt_SDK.so
index 914e8b8..7d85643 100644
Binary files a/Shared/linux/x64/libfgt_SDK.so and b/Shared/linux/x64/libfgt_SDK.so differ
diff --git a/Shared/mac/x64/libfgt_SDK.dylib b/Shared/mac/x64/libfgt_SDK.dylib
index 9883b6e..09f2006 100644
Binary files a/Shared/mac/x64/libfgt_SDK.dylib and b/Shared/mac/x64/libfgt_SDK.dylib differ
diff --git a/Shared/windows/x64/fgt_SDK.dll b/Shared/windows/x64/fgt_SDK.dll
index 56d89cd..767ea89 100644
Binary files a/Shared/windows/x64/fgt_SDK.dll and b/Shared/windows/x64/fgt_SDK.dll differ
diff --git a/Shared/windows/x64/fgt_SDK.lib b/Shared/windows/x64/fgt_SDK.lib
index 97e5643..032a6d2 100644
Binary files a/Shared/windows/x64/fgt_SDK.lib and b/Shared/windows/x64/fgt_SDK.lib differ
diff --git a/Shared/windows/x86/fgt_SDK.dll b/Shared/windows/x86/fgt_SDK.dll
index 223ddf1..ec669e0 100644
Binary files a/Shared/windows/x86/fgt_SDK.dll and b/Shared/windows/x86/fgt_SDK.dll differ
diff --git a/Shared/windows/x86/fgt_SDK.lib b/Shared/windows/x86/fgt_SDK.lib
index e5a30aa..c2feace 100644
Binary files a/Shared/windows/x86/fgt_SDK.lib and b/Shared/windows/x86/fgt_SDK.lib differ
diff --git a/linux-udev.sh b/linux-udev.sh
index 5868b1e..4d99be0 100644
--- a/linux-udev.sh
+++ b/linux-udev.sh
@@ -7,4 +7,5 @@ KERNEL==\"hidraw*\", ATTRS{idVendor}==\"04d8\", ATTRS{idProduct}==\"0002\", MODE
KERNEL==\"hidraw*\", ATTRS{idVendor}==\"04d8\", ATTRS{idProduct}==\"0003\", MODE=\"0666\"
KERNEL==\"hidraw*\", ATTRS{idVendor}==\"04d8\", ATTRS{idProduct}==\"0010\", MODE=\"0666\"
KERNEL==\"hidraw*\", ATTRS{idVendor}==\"04d8\", ATTRS{idProduct}==\"0012\", MODE=\"0666\"
+KERNEL==\"hidraw*\", ATTRS{idVendor}==\"04d8\", ATTRS{idProduct}==\"0017\", MODE=\"0666\"
" > /etc/udev/rules.d/99-fluigent.rules