Skip to content

Commit bf3b21e

Browse files
call async datastore from modbus server (#2144)
1 parent 39cc9ff commit bf3b21e

File tree

4 files changed

+31
-28
lines changed

4 files changed

+31
-28
lines changed

pymodbus/pdu/bit_read_message.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,9 @@ async 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 @@ async 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/pdu/bit_write_message.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import struct
1515

1616
from pymodbus.constants import ModbusStatus
17-
from pymodbus.pdu import ExceptionResponse, ModbusRequest, ModbusResponse
1817
from pymodbus.pdu import ModbusExceptions as merror
18+
from pymodbus.pdu import ModbusRequest, ModbusResponse
1919
from pymodbus.utilities import pack_bitstring, unpack_bitstring
2020

2121

@@ -90,11 +90,8 @@ async 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,9 +224,9 @@ async 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)
231-
if isinstance(result, ExceptionResponse):
232-
return result
227+
await context.async_setValues(
228+
self.function_code, self.address, self.values
229+
)
233230
return WriteMultipleCoilsResponse(self.address, count)
234231

235232
def __str__(self):

pymodbus/pdu/register_read_message.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ async 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 @@ async 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,10 @@ async 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+
await context.async_setValues(
332336
self.function_code, self.write_address, self.write_registers
333337
)
334-
if isinstance(result, ExceptionResponse):
335-
return result
336-
registers = context.getValues(
338+
registers = await context.async_getValues(
337339
self.function_code, self.read_address, self.read_count
338340
)
339341
return ReadWriteMultipleRegistersResponse(registers)

pymodbus/pdu/register_write_message.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ async 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])
72-
if isinstance(result, ExceptionResponse):
73-
return result
74-
values = context.getValues(self.function_code, self.address, 1)
71+
await context.async_setValues(
72+
self.function_code, self.address, [self.value]
73+
)
74+
values = await context.async_getValues(self.function_code, self.address, 1)
7575
return WriteSingleRegisterResponse(self.address, values[0])
7676

7777
def get_response_pdu_size(self):
@@ -213,9 +213,9 @@ async def execute(self, context):
213213
if not context.validate(self.function_code, self.address, self.count):
214214
return self.doException(merror.IllegalAddress)
215215

216-
result = context.setValues(self.function_code, self.address, self.values)
217-
if isinstance(result, ExceptionResponse):
218-
return result
216+
await context.async_setValues(
217+
self.function_code, self.address, self.values
218+
)
219219
return WriteMultipleRegistersResponse(self.address, self.count)
220220

221221
def get_response_pdu_size(self):
@@ -333,13 +333,13 @@ async def execute(self, context):
333333
return self.doException(merror.IllegalValue)
334334
if not context.validate(self.function_code, self.address, 1):
335335
return self.doException(merror.IllegalAddress)
336-
values = context.getValues(self.function_code, self.address, 1)[0]
336+
values = (await context.async_getValues(self.function_code, self.address, 1))[0]
337337
if isinstance(values, ExceptionResponse):
338338
return values
339339
values = (values & self.and_mask) | (self.or_mask & ~self.and_mask)
340-
result = context.setValues(self.function_code, self.address, [values])
341-
if isinstance(result, ExceptionResponse):
342-
return result
340+
await context.async_setValues(
341+
self.function_code, self.address, [values]
342+
)
343343
return MaskWriteRegisterResponse(self.address, self.and_mask, self.or_mask)
344344

345345

0 commit comments

Comments
 (0)