Skip to content

Commit 8f1b610

Browse files
authored
Add Shunt Cal API support for nidaqmx-python (#469)
* add shunt cal api support for nidaqmx python * fix lint error * modify to support _ex variant only * update modified functions.py and enums.py and its generated files * remove not _ex methods * Address comments on enums and doc * Add nidaqmx.ptoto and generated files * Address comments * add grpc_xfail * update CHANGELOG.md * fix lint error * fix lint * Address comments
1 parent 275944c commit 8f1b610

File tree

15 files changed

+1942
-988
lines changed

15 files changed

+1942
-988
lines changed

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@
2020
All notable changes to this project will be documented in this file.
2121

2222
## 0.9.1
23-
2423
* ### Merged Pull Requests
2524
* ...
2625
* ### Major Changes
27-
* ...
26+
* Add support for strain calibration (offset nulling and shunt calibration)
27+
* Fix naming issues:
28+
* Rename `ShuntCalSelect.AAND_B` to `A_AND_B`.
2829
* ### Known Issues
2930
* ...
3031

generated/nidaqmx/_base_interpreter.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,6 +1140,21 @@ def is_task_done(self, task):
11401140
def load_task(self, session_name):
11411141
raise NotImplementedError
11421142

1143+
@abc.abstractmethod
1144+
def perform_bridge_shunt_cal_ex(
1145+
self, task, channel, shunt_resistor_value,
1146+
shunt_resistor_location, shunt_resistor_select,
1147+
shunt_resistor_source, bridge_resistance,
1148+
skip_unsupported_channels):
1149+
raise NotImplementedError
1150+
1151+
@abc.abstractmethod
1152+
def perform_strain_shunt_cal_ex(
1153+
self, task, channel, shunt_resistor_value,
1154+
shunt_resistor_location, shunt_resistor_select,
1155+
shunt_resistor_source, skip_unsupported_channels):
1156+
raise NotImplementedError
1157+
11431158
@abc.abstractmethod
11441159
def read_analog_f64(
11451160
self, task, num_samps_per_chan, timeout, fill_mode, read_array):

generated/nidaqmx/_grpc_interpreter.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2260,6 +2260,36 @@ def load_task(self, session_name):
22602260
metadata=metadata)
22612261
return response.task, response.new_session_initialized
22622262

2263+
def perform_bridge_shunt_cal_ex(
2264+
self, task, channel, shunt_resistor_value,
2265+
shunt_resistor_location, shunt_resistor_select,
2266+
shunt_resistor_source, bridge_resistance,
2267+
skip_unsupported_channels):
2268+
response = self._invoke(
2269+
self._client.PerformBridgeShuntCalEx,
2270+
grpc_types.PerformBridgeShuntCalExRequest(
2271+
task=task, channel=channel,
2272+
shunt_resistor_value=shunt_resistor_value,
2273+
shunt_resistor_location_raw=shunt_resistor_location,
2274+
shunt_resistor_select_raw=shunt_resistor_select,
2275+
shunt_resistor_source_raw=shunt_resistor_source,
2276+
bridge_resistance=bridge_resistance,
2277+
skip_unsupported_channels=skip_unsupported_channels))
2278+
2279+
def perform_strain_shunt_cal_ex(
2280+
self, task, channel, shunt_resistor_value,
2281+
shunt_resistor_location, shunt_resistor_select,
2282+
shunt_resistor_source, skip_unsupported_channels):
2283+
response = self._invoke(
2284+
self._client.PerformStrainShuntCalEx,
2285+
grpc_types.PerformStrainShuntCalExRequest(
2286+
task=task, channel=channel,
2287+
shunt_resistor_value=shunt_resistor_value,
2288+
shunt_resistor_location_raw=shunt_resistor_location,
2289+
shunt_resistor_select_raw=shunt_resistor_select,
2290+
shunt_resistor_source_raw=shunt_resistor_source,
2291+
skip_unsupported_channels=skip_unsupported_channels))
2292+
22632293
def read_analog_f64(
22642294
self, task, num_samps_per_chan, timeout, fill_mode, read_array):
22652295
_validate_array_dtype(read_array, numpy.float64)

generated/nidaqmx/_library_interpreter.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3877,6 +3877,45 @@ def load_task(self, session_name):
38773877
self.check_for_error(error_code)
38783878
return task, new_session_initialized
38793879

3880+
def perform_bridge_shunt_cal_ex(
3881+
self, task, channel, shunt_resistor_value,
3882+
shunt_resistor_location, shunt_resistor_select,
3883+
shunt_resistor_source, bridge_resistance,
3884+
skip_unsupported_channels):
3885+
cfunc = lib_importer.windll.DAQmxPerformBridgeShuntCalEx
3886+
if cfunc.argtypes is None:
3887+
with cfunc.arglock:
3888+
if cfunc.argtypes is None:
3889+
cfunc.argtypes = [
3890+
lib_importer.task_handle, ctypes_byte_str,
3891+
ctypes.c_double, ctypes.c_int, ctypes.c_int,
3892+
ctypes.c_int, ctypes.c_double, c_bool32]
3893+
3894+
error_code = cfunc(
3895+
task, channel, shunt_resistor_value, shunt_resistor_location,
3896+
shunt_resistor_select, shunt_resistor_source, bridge_resistance,
3897+
skip_unsupported_channels)
3898+
self.check_for_error(error_code)
3899+
3900+
def perform_strain_shunt_cal_ex(
3901+
self, task, channel, shunt_resistor_value,
3902+
shunt_resistor_location, shunt_resistor_select,
3903+
shunt_resistor_source, skip_unsupported_channels):
3904+
cfunc = lib_importer.windll.DAQmxPerformStrainShuntCalEx
3905+
if cfunc.argtypes is None:
3906+
with cfunc.arglock:
3907+
if cfunc.argtypes is None:
3908+
cfunc.argtypes = [
3909+
lib_importer.task_handle, ctypes_byte_str,
3910+
ctypes.c_double, ctypes.c_int, ctypes.c_int,
3911+
ctypes.c_int, c_bool32]
3912+
3913+
error_code = cfunc(
3914+
task, channel, shunt_resistor_value, shunt_resistor_location,
3915+
shunt_resistor_select, shunt_resistor_source,
3916+
skip_unsupported_channels)
3917+
self.check_for_error(error_code)
3918+
38803919
def read_analog_f64(
38813920
self, task, num_samps_per_chan, timeout, fill_mode, read_array):
38823921
samps_per_chan_read = ctypes.c_int()

generated/nidaqmx/_stubs/nidaqmx_pb2.py

Lines changed: 993 additions & 979 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

generated/nidaqmx/_stubs/nidaqmx_pb2.pyi

Lines changed: 196 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6411,6 +6411,67 @@ SAVE_OPTIONS_ALLOW_INTERACTIVE_EDITING: SaveOptions.ValueType # 2
64116411
SAVE_OPTIONS_ALLOW_INTERACTIVE_DELETION: SaveOptions.ValueType # 4
64126412
global___SaveOptions = SaveOptions
64136413

6414+
class _ShuntCalSelect:
6415+
ValueType = typing.NewType("ValueType", builtins.int)
6416+
V: typing_extensions.TypeAlias = ValueType
6417+
6418+
class _ShuntCalSelectEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ShuntCalSelect.ValueType], builtins.type):
6419+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
6420+
SHUNT_CAL_SELECT_UNSPECIFIED: _ShuntCalSelect.ValueType # 0
6421+
SHUNT_CAL_SELECT_A: _ShuntCalSelect.ValueType # 12513
6422+
SHUNT_CAL_SELECT_B: _ShuntCalSelect.ValueType # 12514
6423+
SHUNT_CAL_SELECT_A_AND_B: _ShuntCalSelect.ValueType # 12515
6424+
6425+
class ShuntCalSelect(_ShuntCalSelect, metaclass=_ShuntCalSelectEnumTypeWrapper): ...
6426+
6427+
SHUNT_CAL_SELECT_UNSPECIFIED: ShuntCalSelect.ValueType # 0
6428+
SHUNT_CAL_SELECT_A: ShuntCalSelect.ValueType # 12513
6429+
SHUNT_CAL_SELECT_B: ShuntCalSelect.ValueType # 12514
6430+
SHUNT_CAL_SELECT_A_AND_B: ShuntCalSelect.ValueType # 12515
6431+
global___ShuntCalSelect = ShuntCalSelect
6432+
6433+
class _ShuntCalSource:
6434+
ValueType = typing.NewType("ValueType", builtins.int)
6435+
V: typing_extensions.TypeAlias = ValueType
6436+
6437+
class _ShuntCalSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ShuntCalSource.ValueType], builtins.type):
6438+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
6439+
SHUNT_CAL_SOURCE_UNSPECIFIED: _ShuntCalSource.ValueType # 0
6440+
SHUNT_CAL_SOURCE_DEFAULT: _ShuntCalSource.ValueType # -1
6441+
SHUNT_CAL_SOURCE_BUILT_IN: _ShuntCalSource.ValueType # 10200
6442+
SHUNT_CAL_SOURCE_USER_PROVIDED: _ShuntCalSource.ValueType # 10167
6443+
6444+
class ShuntCalSource(_ShuntCalSource, metaclass=_ShuntCalSourceEnumTypeWrapper): ...
6445+
6446+
SHUNT_CAL_SOURCE_UNSPECIFIED: ShuntCalSource.ValueType # 0
6447+
SHUNT_CAL_SOURCE_DEFAULT: ShuntCalSource.ValueType # -1
6448+
SHUNT_CAL_SOURCE_BUILT_IN: ShuntCalSource.ValueType # 10200
6449+
SHUNT_CAL_SOURCE_USER_PROVIDED: ShuntCalSource.ValueType # 10167
6450+
global___ShuntCalSource = ShuntCalSource
6451+
6452+
class _ShuntElementLocation:
6453+
ValueType = typing.NewType("ValueType", builtins.int)
6454+
V: typing_extensions.TypeAlias = ValueType
6455+
6456+
class _ShuntElementLocationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ShuntElementLocation.ValueType], builtins.type):
6457+
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
6458+
SHUNT_ELEMENT_LOCATION_UNSPECIFIED: _ShuntElementLocation.ValueType # 0
6459+
SHUNT_ELEMENT_LOCATION_R1: _ShuntElementLocation.ValueType # 12465
6460+
SHUNT_ELEMENT_LOCATION_R2: _ShuntElementLocation.ValueType # 12466
6461+
SHUNT_ELEMENT_LOCATION_R3: _ShuntElementLocation.ValueType # 12467
6462+
SHUNT_ELEMENT_LOCATION_R4: _ShuntElementLocation.ValueType # 14813
6463+
SHUNT_ELEMENT_LOCATION_NONE: _ShuntElementLocation.ValueType # 10230
6464+
6465+
class ShuntElementLocation(_ShuntElementLocation, metaclass=_ShuntElementLocationEnumTypeWrapper): ...
6466+
6467+
SHUNT_ELEMENT_LOCATION_UNSPECIFIED: ShuntElementLocation.ValueType # 0
6468+
SHUNT_ELEMENT_LOCATION_R1: ShuntElementLocation.ValueType # 12465
6469+
SHUNT_ELEMENT_LOCATION_R2: ShuntElementLocation.ValueType # 12466
6470+
SHUNT_ELEMENT_LOCATION_R3: ShuntElementLocation.ValueType # 12467
6471+
SHUNT_ELEMENT_LOCATION_R4: ShuntElementLocation.ValueType # 14813
6472+
SHUNT_ELEMENT_LOCATION_NONE: ShuntElementLocation.ValueType # 10230
6473+
global___ShuntElementLocation = ShuntElementLocation
6474+
64146475
class _Signal:
64156476
ValueType = typing.NewType("ValueType", builtins.int)
64166477
V: typing_extensions.TypeAlias = ValueType
@@ -7301,7 +7362,7 @@ class _ChannelInt32AttributeValuesEnumTypeWrapper(google.protobuf.internal.enum_
73017362
CHANNEL_INT32_SENSOR_POWER_TYPE_BIPOLAR_DC: _ChannelInt32AttributeValues.ValueType # 16147
73027363
CHANNEL_INT32_SHUNT_CAL_SELECT_A: _ChannelInt32AttributeValues.ValueType # 12513
73037364
CHANNEL_INT32_SHUNT_CAL_SELECT_B: _ChannelInt32AttributeValues.ValueType # 12514
7304-
CHANNEL_INT32_SHUNT_CAL_SELECT_AAND_B: _ChannelInt32AttributeValues.ValueType # 12515
7365+
CHANNEL_INT32_SHUNT_CAL_SELECT_A_AND_B: _ChannelInt32AttributeValues.ValueType # 12515
73057366
CHANNEL_INT32_SOUND_PRESSURE_UNITS1_PASCALS: _ChannelInt32AttributeValues.ValueType # 10081
73067367
CHANNEL_INT32_SOUND_PRESSURE_UNITS1_FROM_CUSTOM_SCALE: _ChannelInt32AttributeValues.ValueType # 10065
73077368
CHANNEL_INT32_SOURCE_SELECTION_INTERNAL: _ChannelInt32AttributeValues.ValueType # 10200
@@ -7682,7 +7743,7 @@ CHANNEL_INT32_SENSOR_POWER_TYPE_AC: ChannelInt32AttributeValues.ValueType # 100
76827743
CHANNEL_INT32_SENSOR_POWER_TYPE_BIPOLAR_DC: ChannelInt32AttributeValues.ValueType # 16147
76837744
CHANNEL_INT32_SHUNT_CAL_SELECT_A: ChannelInt32AttributeValues.ValueType # 12513
76847745
CHANNEL_INT32_SHUNT_CAL_SELECT_B: ChannelInt32AttributeValues.ValueType # 12514
7685-
CHANNEL_INT32_SHUNT_CAL_SELECT_AAND_B: ChannelInt32AttributeValues.ValueType # 12515
7746+
CHANNEL_INT32_SHUNT_CAL_SELECT_A_AND_B: ChannelInt32AttributeValues.ValueType # 12515
76867747
CHANNEL_INT32_SOUND_PRESSURE_UNITS1_PASCALS: ChannelInt32AttributeValues.ValueType # 10081
76877748
CHANNEL_INT32_SOUND_PRESSURE_UNITS1_FROM_CUSTOM_SCALE: ChannelInt32AttributeValues.ValueType # 10065
76887749
CHANNEL_INT32_SOURCE_SELECTION_INTERNAL: ChannelInt32AttributeValues.ValueType # 10200
@@ -21203,6 +21264,139 @@ class LoadTaskResponse(google.protobuf.message.Message):
2120321264

2120421265
global___LoadTaskResponse = LoadTaskResponse
2120521266

21267+
@typing_extensions.final
21268+
class PerformBridgeShuntCalExRequest(google.protobuf.message.Message):
21269+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
21270+
21271+
TASK_FIELD_NUMBER: builtins.int
21272+
CHANNEL_FIELD_NUMBER: builtins.int
21273+
SHUNT_RESISTOR_VALUE_FIELD_NUMBER: builtins.int
21274+
SHUNT_RESISTOR_LOCATION_FIELD_NUMBER: builtins.int
21275+
SHUNT_RESISTOR_LOCATION_RAW_FIELD_NUMBER: builtins.int
21276+
SHUNT_RESISTOR_SELECT_FIELD_NUMBER: builtins.int
21277+
SHUNT_RESISTOR_SELECT_RAW_FIELD_NUMBER: builtins.int
21278+
SHUNT_RESISTOR_SOURCE_FIELD_NUMBER: builtins.int
21279+
SHUNT_RESISTOR_SOURCE_RAW_FIELD_NUMBER: builtins.int
21280+
BRIDGE_RESISTANCE_FIELD_NUMBER: builtins.int
21281+
SKIP_UNSUPPORTED_CHANNELS_FIELD_NUMBER: builtins.int
21282+
@property
21283+
def task(self) -> session_pb2.Session: ...
21284+
channel: builtins.str
21285+
shunt_resistor_value: builtins.float
21286+
shunt_resistor_location: global___ShuntElementLocation.ValueType
21287+
shunt_resistor_location_raw: builtins.int
21288+
shunt_resistor_select: global___ShuntCalSelect.ValueType
21289+
shunt_resistor_select_raw: builtins.int
21290+
shunt_resistor_source: global___ShuntCalSource.ValueType
21291+
shunt_resistor_source_raw: builtins.int
21292+
bridge_resistance: builtins.float
21293+
skip_unsupported_channels: builtins.bool
21294+
def __init__(
21295+
self,
21296+
*,
21297+
task: session_pb2.Session | None = ...,
21298+
channel: builtins.str = ...,
21299+
shunt_resistor_value: builtins.float = ...,
21300+
shunt_resistor_location: global___ShuntElementLocation.ValueType = ...,
21301+
shunt_resistor_location_raw: builtins.int = ...,
21302+
shunt_resistor_select: global___ShuntCalSelect.ValueType = ...,
21303+
shunt_resistor_select_raw: builtins.int = ...,
21304+
shunt_resistor_source: global___ShuntCalSource.ValueType = ...,
21305+
shunt_resistor_source_raw: builtins.int = ...,
21306+
bridge_resistance: builtins.float = ...,
21307+
skip_unsupported_channels: builtins.bool = ...,
21308+
) -> None: ...
21309+
def HasField(self, field_name: typing_extensions.Literal["shunt_resistor_location", b"shunt_resistor_location", "shunt_resistor_location_enum", b"shunt_resistor_location_enum", "shunt_resistor_location_raw", b"shunt_resistor_location_raw", "shunt_resistor_select", b"shunt_resistor_select", "shunt_resistor_select_enum", b"shunt_resistor_select_enum", "shunt_resistor_select_raw", b"shunt_resistor_select_raw", "shunt_resistor_source", b"shunt_resistor_source", "shunt_resistor_source_enum", b"shunt_resistor_source_enum", "shunt_resistor_source_raw", b"shunt_resistor_source_raw", "task", b"task"]) -> builtins.bool: ...
21310+
def ClearField(self, field_name: typing_extensions.Literal["bridge_resistance", b"bridge_resistance", "channel", b"channel", "shunt_resistor_location", b"shunt_resistor_location", "shunt_resistor_location_enum", b"shunt_resistor_location_enum", "shunt_resistor_location_raw", b"shunt_resistor_location_raw", "shunt_resistor_select", b"shunt_resistor_select", "shunt_resistor_select_enum", b"shunt_resistor_select_enum", "shunt_resistor_select_raw", b"shunt_resistor_select_raw", "shunt_resistor_source", b"shunt_resistor_source", "shunt_resistor_source_enum", b"shunt_resistor_source_enum", "shunt_resistor_source_raw", b"shunt_resistor_source_raw", "shunt_resistor_value", b"shunt_resistor_value", "skip_unsupported_channels", b"skip_unsupported_channels", "task", b"task"]) -> None: ...
21311+
@typing.overload
21312+
def WhichOneof(self, oneof_group: typing_extensions.Literal["shunt_resistor_location_enum", b"shunt_resistor_location_enum"]) -> typing_extensions.Literal["shunt_resistor_location", "shunt_resistor_location_raw"] | None: ...
21313+
@typing.overload
21314+
def WhichOneof(self, oneof_group: typing_extensions.Literal["shunt_resistor_select_enum", b"shunt_resistor_select_enum"]) -> typing_extensions.Literal["shunt_resistor_select", "shunt_resistor_select_raw"] | None: ...
21315+
@typing.overload
21316+
def WhichOneof(self, oneof_group: typing_extensions.Literal["shunt_resistor_source_enum", b"shunt_resistor_source_enum"]) -> typing_extensions.Literal["shunt_resistor_source", "shunt_resistor_source_raw"] | None: ...
21317+
21318+
global___PerformBridgeShuntCalExRequest = PerformBridgeShuntCalExRequest
21319+
21320+
@typing_extensions.final
21321+
class PerformBridgeShuntCalExResponse(google.protobuf.message.Message):
21322+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
21323+
21324+
STATUS_FIELD_NUMBER: builtins.int
21325+
status: builtins.int
21326+
def __init__(
21327+
self,
21328+
*,
21329+
status: builtins.int = ...,
21330+
) -> None: ...
21331+
def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ...
21332+
21333+
global___PerformBridgeShuntCalExResponse = PerformBridgeShuntCalExResponse
21334+
21335+
@typing_extensions.final
21336+
class PerformStrainShuntCalExRequest(google.protobuf.message.Message):
21337+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
21338+
21339+
TASK_FIELD_NUMBER: builtins.int
21340+
CHANNEL_FIELD_NUMBER: builtins.int
21341+
SHUNT_RESISTOR_VALUE_FIELD_NUMBER: builtins.int
21342+
SHUNT_RESISTOR_LOCATION_FIELD_NUMBER: builtins.int
21343+
SHUNT_RESISTOR_LOCATION_RAW_FIELD_NUMBER: builtins.int
21344+
SHUNT_RESISTOR_SELECT_FIELD_NUMBER: builtins.int
21345+
SHUNT_RESISTOR_SELECT_RAW_FIELD_NUMBER: builtins.int
21346+
SHUNT_RESISTOR_SOURCE_FIELD_NUMBER: builtins.int
21347+
SHUNT_RESISTOR_SOURCE_RAW_FIELD_NUMBER: builtins.int
21348+
SKIP_UNSUPPORTED_CHANNELS_FIELD_NUMBER: builtins.int
21349+
@property
21350+
def task(self) -> session_pb2.Session: ...
21351+
channel: builtins.str
21352+
shunt_resistor_value: builtins.float
21353+
shunt_resistor_location: global___ShuntElementLocation.ValueType
21354+
shunt_resistor_location_raw: builtins.int
21355+
shunt_resistor_select: global___ShuntCalSelect.ValueType
21356+
shunt_resistor_select_raw: builtins.int
21357+
shunt_resistor_source: global___ShuntCalSource.ValueType
21358+
shunt_resistor_source_raw: builtins.int
21359+
skip_unsupported_channels: builtins.bool
21360+
def __init__(
21361+
self,
21362+
*,
21363+
task: session_pb2.Session | None = ...,
21364+
channel: builtins.str = ...,
21365+
shunt_resistor_value: builtins.float = ...,
21366+
shunt_resistor_location: global___ShuntElementLocation.ValueType = ...,
21367+
shunt_resistor_location_raw: builtins.int = ...,
21368+
shunt_resistor_select: global___ShuntCalSelect.ValueType = ...,
21369+
shunt_resistor_select_raw: builtins.int = ...,
21370+
shunt_resistor_source: global___ShuntCalSource.ValueType = ...,
21371+
shunt_resistor_source_raw: builtins.int = ...,
21372+
skip_unsupported_channels: builtins.bool = ...,
21373+
) -> None: ...
21374+
def HasField(self, field_name: typing_extensions.Literal["shunt_resistor_location", b"shunt_resistor_location", "shunt_resistor_location_enum", b"shunt_resistor_location_enum", "shunt_resistor_location_raw", b"shunt_resistor_location_raw", "shunt_resistor_select", b"shunt_resistor_select", "shunt_resistor_select_enum", b"shunt_resistor_select_enum", "shunt_resistor_select_raw", b"shunt_resistor_select_raw", "shunt_resistor_source", b"shunt_resistor_source", "shunt_resistor_source_enum", b"shunt_resistor_source_enum", "shunt_resistor_source_raw", b"shunt_resistor_source_raw", "task", b"task"]) -> builtins.bool: ...
21375+
def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "shunt_resistor_location", b"shunt_resistor_location", "shunt_resistor_location_enum", b"shunt_resistor_location_enum", "shunt_resistor_location_raw", b"shunt_resistor_location_raw", "shunt_resistor_select", b"shunt_resistor_select", "shunt_resistor_select_enum", b"shunt_resistor_select_enum", "shunt_resistor_select_raw", b"shunt_resistor_select_raw", "shunt_resistor_source", b"shunt_resistor_source", "shunt_resistor_source_enum", b"shunt_resistor_source_enum", "shunt_resistor_source_raw", b"shunt_resistor_source_raw", "shunt_resistor_value", b"shunt_resistor_value", "skip_unsupported_channels", b"skip_unsupported_channels", "task", b"task"]) -> None: ...
21376+
@typing.overload
21377+
def WhichOneof(self, oneof_group: typing_extensions.Literal["shunt_resistor_location_enum", b"shunt_resistor_location_enum"]) -> typing_extensions.Literal["shunt_resistor_location", "shunt_resistor_location_raw"] | None: ...
21378+
@typing.overload
21379+
def WhichOneof(self, oneof_group: typing_extensions.Literal["shunt_resistor_select_enum", b"shunt_resistor_select_enum"]) -> typing_extensions.Literal["shunt_resistor_select", "shunt_resistor_select_raw"] | None: ...
21380+
@typing.overload
21381+
def WhichOneof(self, oneof_group: typing_extensions.Literal["shunt_resistor_source_enum", b"shunt_resistor_source_enum"]) -> typing_extensions.Literal["shunt_resistor_source", "shunt_resistor_source_raw"] | None: ...
21382+
21383+
global___PerformStrainShuntCalExRequest = PerformStrainShuntCalExRequest
21384+
21385+
@typing_extensions.final
21386+
class PerformStrainShuntCalExResponse(google.protobuf.message.Message):
21387+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
21388+
21389+
STATUS_FIELD_NUMBER: builtins.int
21390+
status: builtins.int
21391+
def __init__(
21392+
self,
21393+
*,
21394+
status: builtins.int = ...,
21395+
) -> None: ...
21396+
def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ...
21397+
21398+
global___PerformStrainShuntCalExResponse = PerformStrainShuntCalExResponse
21399+
2120621400
@typing_extensions.final
2120721401
class ReadAnalogF64Request(google.protobuf.message.Message):
2120821402
DESCRIPTOR: google.protobuf.descriptor.Descriptor

0 commit comments

Comments
 (0)