Skip to content

Commit 75b9e05

Browse files
committed
messages: default to async-methods in datastore access
allows datastore to imeplement async getValues/setValues to be used with modbus server
1 parent a6b43dd commit 75b9e05

File tree

4 files changed

+30
-17
lines changed

4 files changed

+30
-17
lines changed

pymodbus/bit_read_message.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,9 @@ def execute(self, context):
169169
return self.doException(merror.IllegalValue)
170170
if not context.validate(self.function_code, self.address, self.count):
171171
return self.doException(merror.IllegalAddress)
172-
values = context.getValues(self.function_code, self.address, self.count)
172+
values = await context.async_getValues(
173+
self.function_code, self.address, self.count
174+
)
173175
if isinstance(values, ExceptionResponse):
174176
return values
175177
return ReadCoilsResponse(values)
@@ -237,7 +239,9 @@ def execute(self, context):
237239
return self.doException(merror.IllegalValue)
238240
if not context.validate(self.function_code, self.address, self.count):
239241
return self.doException(merror.IllegalAddress)
240-
values = context.getValues(self.function_code, self.address, self.count)
242+
values = await context.async_getValues(
243+
self.function_code, self.address, self.count
244+
)
241245
if isinstance(values, ExceptionResponse):
242246
return values
243247
return ReadDiscreteInputsResponse(values)

pymodbus/bit_write_message.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,8 @@ def execute(self, context):
9090
if not context.validate(self.function_code, self.address, 1):
9191
return self.doException(merror.IllegalAddress)
9292

93-
context.setValues(self.function_code, self.address, [self.value])
94-
# result = context.setValues(self.function_code, self.address, [self.value])
95-
# if isinstance(result, ExceptionResponse):
96-
# return result
97-
values = context.getValues(self.function_code, self.address, 1)
93+
await context.async_setValues(self.function_code, self.address, [self.value])
94+
values = await context.async_getValues(self.function_code, self.address, 1)
9895
# if isinstance(values, ExceptionResponse):
9996
# return values
10097
return WriteSingleCoilResponse(self.address, values[0])
@@ -227,7 +224,9 @@ def execute(self, context):
227224
if not context.validate(self.function_code, self.address, count):
228225
return self.doException(merror.IllegalAddress)
229226

230-
result = context.setValues(self.function_code, self.address, self.values)
227+
result = await context.async_setValues(
228+
self.function_code, self.address, self.values
229+
)
231230
if isinstance(result, ExceptionResponse):
232231
return result
233232
return WriteMultipleCoilsResponse(self.address, count)

pymodbus/register_read_message.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ def execute(self, context):
149149
return self.doException(merror.IllegalValue)
150150
if not context.validate(self.function_code, self.address, self.count):
151151
return self.doException(merror.IllegalAddress)
152-
values = context.getValues(self.function_code, self.address, self.count)
152+
values = await context.async_getValues(
153+
self.function_code, self.address, self.count
154+
)
153155
if isinstance(values, ExceptionResponse):
154156
return values
155157

@@ -210,7 +212,9 @@ def execute(self, context):
210212
return self.doException(merror.IllegalValue)
211213
if not context.validate(self.function_code, self.address, self.count):
212214
return self.doException(merror.IllegalAddress)
213-
values = context.getValues(self.function_code, self.address, self.count)
215+
values = await context.async_getValues(
216+
self.function_code, self.address, self.count
217+
)
214218
if isinstance(values, ExceptionResponse):
215219
return values
216220
return ReadInputRegistersResponse(values)
@@ -328,12 +332,12 @@ def execute(self, context):
328332
return self.doException(merror.IllegalAddress)
329333
if not context.validate(self.function_code, self.read_address, self.read_count):
330334
return self.doException(merror.IllegalAddress)
331-
result = context.setValues(
335+
result = await context.async_setValues(
332336
self.function_code, self.write_address, self.write_registers
333337
)
334338
if isinstance(result, ExceptionResponse):
335339
return result
336-
registers = context.getValues(
340+
registers = await context.async_getValues(
337341
self.function_code, self.read_address, self.read_count
338342
)
339343
return ReadWriteMultipleRegistersResponse(registers)

pymodbus/register_write_message.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,12 @@ def execute(self, context):
6868
if not context.validate(self.function_code, self.address, 1):
6969
return self.doException(merror.IllegalAddress)
7070

71-
result = context.setValues(self.function_code, self.address, [self.value])
71+
result = await context.async_setValues(
72+
self.function_code, self.address, [self.value]
73+
)
7274
if isinstance(result, ExceptionResponse):
7375
return result
74-
values = context.getValues(self.function_code, self.address, 1)
76+
values = await context.async_getValues(self.function_code, self.address, 1)
7577
return WriteSingleRegisterResponse(self.address, values[0])
7678

7779
def get_response_pdu_size(self):
@@ -213,7 +215,9 @@ def execute(self, context):
213215
if not context.validate(self.function_code, self.address, self.count):
214216
return self.doException(merror.IllegalAddress)
215217

216-
result = context.setValues(self.function_code, self.address, self.values)
218+
result = await context.async_setValues(
219+
self.function_code, self.address, self.values
220+
)
217221
if isinstance(result, ExceptionResponse):
218222
return result
219223
return WriteMultipleRegistersResponse(self.address, self.count)
@@ -333,11 +337,13 @@ def execute(self, context):
333337
return self.doException(merror.IllegalValue)
334338
if not context.validate(self.function_code, self.address, 1):
335339
return self.doException(merror.IllegalAddress)
336-
values = context.getValues(self.function_code, self.address, 1)[0]
340+
values = (await context.async_getValues(self.function_code, self.address, 1))[0]
337341
if isinstance(values, ExceptionResponse):
338342
return values
339343
values = (values & self.and_mask) | (self.or_mask & ~self.and_mask)
340-
result = context.setValues(self.function_code, self.address, [values])
344+
result = await context.async_setValues(
345+
self.function_code, self.address, [values]
346+
)
341347
if isinstance(result, ExceptionResponse):
342348
return result
343349
return MaskWriteRegisterResponse(self.address, self.and_mask, self.or_mask)

0 commit comments

Comments
 (0)