11"""Remote datastore."""
2+
23from pymodbus .datastore import ModbusBaseSlaveContext
34from pymodbus .exceptions import NotImplementedException
45from pymodbus .logging import Log
@@ -38,25 +39,37 @@ def validate(self, _fc_as_hex, _address, _count):
3839 """
3940 return True
4041
41- def getValues (self , fc_as_hex , _address , _count = 1 ):
42+ async def async_getValues (self , fc_as_hex , address , count = 1 ):
4243 """Get values from real call in validate."""
4344 if fc_as_hex in self ._write_fc :
4445 return [0 ]
4546 group_fx = self .decode (fc_as_hex )
4647 func_fc = self .__get_callbacks [group_fx ]
47- self .result = func_fc (_address , _count )
48+ kwargs = {}
49+ if self .slave :
50+ kwargs ["slave" ] = self .slave
51+ self .result = await getattr (self ._client , func_fc )(address , count , ** kwargs )
4852 return self .__extract_result (self .decode (fc_as_hex ), self .result )
4953
50- def setValues (self , fc_as_hex , address , values ):
54+ async def async_setValues (self , fc_as_hex , address , values ):
5155 """Set the datastore with the supplied values."""
5256 group_fx = self .decode (fc_as_hex )
5357 if fc_as_hex not in self ._write_fc :
54- raise ValueError (f"setValues() called with an non-write function code { fc_as_hex } " )
58+ raise ValueError (
59+ f"setValues() called with an non-write function code { fc_as_hex } "
60+ )
5561 func_fc = self .__set_callbacks [f"{ group_fx } { fc_as_hex } " ]
62+ kwargs = {}
63+ if self .slave :
64+ kwargs ["slave" ] = self .slave
5665 if fc_as_hex in {0x0F , 0x10 }: # Write Multiple Coils, Write Multiple Registers
57- self .result = func_fc (address , values )
66+ self .result = await getattr (self ._client , func_fc )(
67+ address , values , ** kwargs
68+ )
5869 else :
59- self .result = func_fc (address , values [0 ])
70+ self .result = await getattr (self ._client , func_fc )(
71+ address , values [0 ], ** kwargs
72+ )
6073 if self .result .isError ():
6174 return self .result
6275 return None
@@ -74,44 +87,20 @@ def __build_mapping(self):
7487 if self .slave :
7588 kwargs ["slave" ] = self .slave
7689 self .__get_callbacks = {
77- "d" : lambda a , c : self ._client .read_discrete_inputs (
78- a , c , ** kwargs
79- ),
80- "c" : lambda a , c : self ._client .read_coils (
81- a , c , ** kwargs
82- ),
83- "h" : lambda a , c : self ._client .read_holding_registers (
84- a , c , ** kwargs
85- ),
86- "i" : lambda a , c : self ._client .read_input_registers (
87- a , c , ** kwargs
88- ),
90+ "d" : "read_discrete_inputs" ,
91+ "c" : "read_coils" ,
92+ "h" : "read_holding_registers" ,
93+ "i" : "read_input_registers" ,
8994 }
9095 self .__set_callbacks = {
91- "d5" : lambda a , v : self ._client .write_coil (
92- a , v , ** kwargs
93- ),
94- "d15" : lambda a , v : self ._client .write_coils (
95- a , v , ** kwargs
96- ),
97- "c5" : lambda a , v : self ._client .write_coil (
98- a , v , ** kwargs
99- ),
100- "c15" : lambda a , v : self ._client .write_coils (
101- a , v , ** kwargs
102- ),
103- "h6" : lambda a , v : self ._client .write_register (
104- a , v , ** kwargs
105- ),
106- "h16" : lambda a , v : self ._client .write_registers (
107- a , v , ** kwargs
108- ),
109- "i6" : lambda a , v : self ._client .write_register (
110- a , v , ** kwargs
111- ),
112- "i16" : lambda a , v : self ._client .write_registers (
113- a , v , ** kwargs
114- ),
96+ "d5" : "write_coil" ,
97+ "d15" : "write_coils" ,
98+ "c5" : "write_coil" ,
99+ "c15" : "write_coils" ,
100+ "h6" : "write_register" ,
101+ "h16" : "write_registers" ,
102+ "i6" : "write_register" ,
103+ "i16" : "write_registers" ,
115104 }
116105 self ._write_fc = (0x05 , 0x06 , 0x0F , 0x10 )
117106
0 commit comments