1414use ModbusTcpClient \Exception \InvalidArgumentException ;
1515use ModbusTcpClient \Packet \ModbusFunction \ReadHoldingRegistersRequest ;
1616use ModbusTcpClient \Packet \ModbusFunction \ReadInputRegistersRequest ;
17+ use ModbusTcpClient \Utils \Endian ;
1718
1819class ReadRegistersBuilder
1920{
@@ -109,6 +110,11 @@ public function fromArray(array $register): ReadRegistersBuilder
109110 throw new InvalidArgumentException ('empty or unknown type for address given ' );
110111 }
111112
113+ $ endian = $ register ['endian ' ] ?? null ;
114+ if ($ endian === null ) {
115+ $ endian = Endian::$ defaultEndian ;
116+ }
117+
112118 switch ($ addressType ) {
113119 case Address::TYPE_BIT :
114120 $ this ->bit ($ address , $ register ['bit ' ] ?? 0 , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
@@ -117,25 +123,25 @@ public function fromArray(array $register): ReadRegistersBuilder
117123 $ this ->byte ($ address , (bool )($ register ['firstByte ' ] ?? true ), $ register ['name ' ] ?? null , $ callback , $ errorCallback );
118124 break ;
119125 case Address::TYPE_INT16 :
120- $ this ->int16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
126+ $ this ->int16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
121127 break ;
122128 case Address::TYPE_UINT16 :
123- $ this ->uint16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
129+ $ this ->uint16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
124130 break ;
125131 case Address::TYPE_INT32 :
126- $ this ->int32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
132+ $ this ->int32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
127133 break ;
128134 case Address::TYPE_UINT32 :
129- $ this ->uint32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
135+ $ this ->uint32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
130136 break ;
131137 case Address::TYPE_INT64 :
132- $ this ->int64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
138+ $ this ->int64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
133139 break ;
134140 case Address::TYPE_UINT64 :
135- $ this ->uint64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
141+ $ this ->uint64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
136142 break ;
137143 case Address::TYPE_FLOAT :
138- $ this ->float ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
144+ $ this ->float ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
139145 break ;
140146 case Address::TYPE_STRING :
141147 $ byteLength = $ register ['length ' ] ?? null ;
@@ -161,39 +167,137 @@ public function byte(int $address, bool $firstByte = true, string $name = null,
161167 return $ this ->addAddress (new ByteReadRegisterAddress ($ address , $ firstByte , $ name , $ callback , $ errorCallback ));
162168 }
163169
164- public function int16 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
170+ public function int16 (
171+ int $ address ,
172+ string $ name = null ,
173+ callable $ callback = null ,
174+ callable $ errorCallback = null ,
175+ int $ endian = null
176+ ): ReadRegistersBuilder
165177 {
166- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_INT16 , $ name , $ callback , $ errorCallback ));
178+ $ r = new ReadRegisterAddress (
179+ $ address ,
180+ ReadRegisterAddress::TYPE_INT16 ,
181+ $ name ,
182+ $ callback ,
183+ $ errorCallback ,
184+ $ endian
185+ );
186+ return $ this ->addAddress ($ r );
167187 }
168188
169- public function uint16 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
189+ public function uint16 (
190+ int $ address ,
191+ string $ name = null ,
192+ callable $ callback = null ,
193+ callable $ errorCallback = null ,
194+ int $ endian = null
195+ ): ReadRegistersBuilder
170196 {
171- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_UINT16 , $ name , $ callback , $ errorCallback ));
197+ $ r = new ReadRegisterAddress (
198+ $ address ,
199+ ReadRegisterAddress::TYPE_UINT16 ,
200+ $ name ,
201+ $ callback ,
202+ $ errorCallback ,
203+ $ endian
204+ );
205+ return $ this ->addAddress ($ r );
172206 }
173207
174- public function int32 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
208+ public function int32 (
209+ int $ address ,
210+ string $ name = null ,
211+ callable $ callback = null ,
212+ callable $ errorCallback = null ,
213+ int $ endian = null
214+ ): ReadRegistersBuilder
175215 {
176- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_INT32 , $ name , $ callback , $ errorCallback ));
216+ $ r = new ReadRegisterAddress (
217+ $ address ,
218+ ReadRegisterAddress::TYPE_INT32 ,
219+ $ name ,
220+ $ callback ,
221+ $ errorCallback ,
222+ $ endian
223+ );
224+ return $ this ->addAddress ($ r );
177225 }
178226
179- public function uint32 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
227+ public function uint32 (
228+ int $ address ,
229+ string $ name = null ,
230+ callable $ callback = null ,
231+ callable $ errorCallback = null ,
232+ int $ endian = null
233+ ): ReadRegistersBuilder
180234 {
181- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_UINT32 , $ name , $ callback , $ errorCallback ));
235+ $ r = new ReadRegisterAddress (
236+ $ address ,
237+ ReadRegisterAddress::TYPE_UINT32 ,
238+ $ name ,
239+ $ callback ,
240+ $ errorCallback ,
241+ $ endian
242+ );
243+ return $ this ->addAddress ($ r );
182244 }
183245
184- public function uint64 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
246+ public function uint64 (
247+ int $ address ,
248+ string $ name = null ,
249+ callable $ callback = null ,
250+ callable $ errorCallback = null ,
251+ int $ endian = null
252+ ): ReadRegistersBuilder
185253 {
186- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_UINT64 , $ name , $ callback , $ errorCallback ));
254+ $ r = new ReadRegisterAddress (
255+ $ address ,
256+ ReadRegisterAddress::TYPE_UINT64 ,
257+ $ name ,
258+ $ callback ,
259+ $ errorCallback ,
260+ $ endian
261+ );
262+ return $ this ->addAddress ($ r );
187263 }
188264
189- public function int64 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
265+ public function int64 (
266+ int $ address ,
267+ string $ name = null ,
268+ callable $ callback = null ,
269+ callable $ errorCallback = null ,
270+ int $ endian = null
271+ ): ReadRegistersBuilder
190272 {
191- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_INT64 , $ name , $ callback , $ errorCallback ));
273+ $ r = new ReadRegisterAddress (
274+ $ address ,
275+ ReadRegisterAddress::TYPE_INT64 ,
276+ $ name ,
277+ $ callback ,
278+ $ errorCallback ,
279+ $ endian
280+ );
281+ return $ this ->addAddress ($ r );
192282 }
193283
194- public function float (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
284+ public function float (
285+ int $ address ,
286+ string $ name = null ,
287+ callable $ callback = null ,
288+ callable $ errorCallback = null ,
289+ int $ endian = null
290+ ): ReadRegistersBuilder
195291 {
196- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_FLOAT , $ name , $ callback , $ errorCallback ));
292+ $ r = new ReadRegisterAddress (
293+ $ address ,
294+ ReadRegisterAddress::TYPE_FLOAT ,
295+ $ name ,
296+ $ callback ,
297+ $ errorCallback ,
298+ $ endian
299+ );
300+ return $ this ->addAddress ($ r );
197301 }
198302
199303 public function string (int $ address , int $ byteLength , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
0 commit comments