@@ -28,12 +28,14 @@ mbClientRunMessage::mbClientRunMessage(mbClientRunItem *item, uint16_t maxCount,
2828 : QObject{parent}
2929{
3030 // m_refCount = 0; // Note: g++ initialize it incorrectly using default constructor somehow (detected for Ubuntu 22.04, 64 bit)
31+ m_maxCount = maxCount;
3132 m_offset = item->offset ();
3233 m_count = item->count ();
34+ if (m_count > m_maxCount)
35+ m_count = m_maxCount;
3336 m_writeOffset = 0 ;
3437 m_writeCount = 0 ;
3538 m_period = item->period ();
36- m_maxCount = maxCount;
3739 m_status = Modbus::Status_Uncertain;
3840 m_timestamp = 0 ;
3941 addItemPrivate (item);
@@ -46,8 +48,11 @@ mbClientRunMessage::mbClientRunMessage(uint16_t offset, uint16_t count, uint16_t
4648 : QObject{parent}
4749{
4850 // m_refCount = 0; // Note: g++ initialize it incorrectly using default constructor somehow (detected for Ubuntu 22.04, 64 bit)
51+ m_maxCount = maxCount;
4952 m_offset = offset;
5053 m_count = count;
54+ if (m_count > m_maxCount)
55+ m_count = m_maxCount;
5156 m_writeOffset = 0 ;
5257 m_writeCount = 0 ;
5358 m_period = 0 ;
@@ -67,25 +72,55 @@ mbClientRunMessage::~mbClientRunMessage()
6772 qDeleteAll (m_items);
6873}
6974
70- uint16_t mbClientRunMessage::offset () const { return m_offset; }
75+ uint16_t mbClientRunMessage::offset () const
76+ {
77+ return m_offset;
78+ }
7179
72- uint16_t mbClientRunMessage::count () const { return m_count; }
80+ uint16_t mbClientRunMessage::count () const
81+ {
82+ return m_count;
83+ }
7384
74- uint16_t mbClientRunMessage::maxCount () const { return m_maxCount; }
85+ uint16_t mbClientRunMessage::maxCount () const
86+ {
87+ return m_maxCount;
88+ }
7589
76- uint32_t mbClientRunMessage::period () const { return m_period; }
90+ uint32_t mbClientRunMessage::period () const
91+ {
92+ return m_period;
93+ }
7794
78- void *mbClientRunMessage::innerBuffer () { return m_buff; }
95+ void *mbClientRunMessage::innerBuffer ()
96+ {
97+ return m_buff;
98+ }
7999
80- int mbClientRunMessage::innerBufferSize () const { return MB_MAX_BYTES; }
100+ int mbClientRunMessage::innerBufferSize () const
101+ {
102+ return MB_MAX_BYTES;
103+ }
81104
82- int mbClientRunMessage::innerBufferBitSize () const { return innerBufferSize () * MB_BYTE_SZ_BITES; }
105+ int mbClientRunMessage::innerBufferBitSize () const
106+ {
107+ return innerBufferSize () * MB_BYTE_SZ_BITES;
108+ }
83109
84- int mbClientRunMessage::innerBufferRegSize () const { return innerBufferSize () / MB_REGE_SZ_BYTES; }
110+ int mbClientRunMessage::innerBufferRegSize () const
111+ {
112+ return innerBufferSize () / MB_REGE_SZ_BYTES;
113+ }
85114
86- Modbus::StatusCode mbClientRunMessage::status () const { return m_status; }
115+ Modbus::StatusCode mbClientRunMessage::status () const
116+ {
117+ return m_status;
118+ }
87119
88- mb::Timestamp_t mbClientRunMessage::timestamp () const { return m_timestamp; }
120+ mb::Timestamp_t mbClientRunMessage::timestamp () const
121+ {
122+ return m_timestamp;
123+ }
89124
90125bool mbClientRunMessage::addItem (mbClientRunItem *item)
91126{
@@ -127,14 +162,14 @@ void mbClientRunMessage::setDeleteItems(bool del)
127162 m_deleteItems = del;
128163}
129164
130- bool mbClientRunMessage::getData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , void * /* buff*/ ) const
165+ Modbus::StatusCode mbClientRunMessage::getData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , void * /* buff*/ ) const
131166{
132- return false ;
167+ return Modbus::Status_Bad ;
133168}
134169
135- bool mbClientRunMessage::setData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , const void * /* buff*/ )
170+ Modbus::StatusCode mbClientRunMessage::setData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , const void * /* buff*/ )
136171{
137- return false ;
172+ return Modbus::Status_Bad ;
138173}
139174
140175void mbClientRunMessage::prepareToSend ()
@@ -257,135 +292,147 @@ void mbClientRunMessageWrite::prepareToSend()
257292// ---------------------------------------------- READ_COILS ----------------------------------------------
258293// --------------------------------------------------------------------------------------------------------
259294
260- bool mbClientRunMessageReadCoils::getData (uint16_t innerOffset, uint16_t count, void *buff) const
295+ Modbus::StatusCode mbClientRunMessageReadCoils::getData (uint16_t innerOffset, uint16_t count, void *buff) const
261296{
262- return Modbus::StatusIsGood (Modbus::readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize ()));
297+ uint32_t c;
298+ return Modbus::readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize (), &c);
263299}
264300
265- bool mbClientRunMessageReadCoils::setData (uint16_t innerOffset, uint16_t count, const void *buff)
301+ Modbus::StatusCode mbClientRunMessageReadCoils::setData (uint16_t innerOffset, uint16_t count, const void *buff)
266302{
267- return Modbus::StatusIsGood (Modbus::writeMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize ()));
303+ uint32_t c;
304+ return Modbus::writeMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize (), &c);
268305}
269306
270307
271308// --------------------------------------------------------------------------------------------------------
272309// ----------------------------------------- READ_DISCRETE_INPUTS ----------------------------------------
273310// --------------------------------------------------------------------------------------------------------
274311
275- bool mbClientRunMessageReadDiscreteInputs::getData (uint16_t innerOffset, uint16_t count, void *buff) const
312+ Modbus::StatusCode mbClientRunMessageReadDiscreteInputs::getData (uint16_t innerOffset, uint16_t count, void *buff) const
276313{
277- return Modbus::StatusIsGood (Modbus::readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize ()));
314+ uint32_t c;
315+ return Modbus::readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize (), &c);
278316}
279317
280- bool mbClientRunMessageReadDiscreteInputs::setData (uint16_t innerOffset, uint16_t count, const void *buff)
318+ Modbus::StatusCode mbClientRunMessageReadDiscreteInputs::setData (uint16_t innerOffset, uint16_t count, const void *buff)
281319{
282- return Modbus::StatusIsGood (Modbus::writeMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize ()));
320+ uint32_t c;
321+ return Modbus::writeMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize (), &c);
283322}
284323
285324
286325// --------------------------------------------------------------------------------------------------------
287326// ---------------------------------------- READ_HOLDING_REGISTERS ----------------------------------------
288327// --------------------------------------------------------------------------------------------------------
289328
290- bool mbClientRunMessageReadHoldingRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
329+ Modbus::StatusCode mbClientRunMessageReadHoldingRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
291330{
292- return Modbus::StatusIsGood (Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
331+ uint32_t c;
332+ return Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
293333}
294334
295- bool mbClientRunMessageReadHoldingRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
335+ Modbus::StatusCode mbClientRunMessageReadHoldingRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
296336{
297- return Modbus::StatusIsGood (Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
337+ uint32_t c;
338+ return Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
298339}
299340
300341
301342// --------------------------------------------------------------------------------------------------------
302343// ----------------------------------------- READ_INPUT_REGISTERS -----------------------------------------
303344// --------------------------------------------------------------------------------------------------------
304345
305- bool mbClientRunMessageReadInputRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
346+ Modbus::StatusCode mbClientRunMessageReadInputRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
306347{
307- return Modbus::StatusIsGood (Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
348+ uint32_t c;
349+ return Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
308350}
309351
310- bool mbClientRunMessageReadInputRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
352+ Modbus::StatusCode mbClientRunMessageReadInputRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
311353{
312- return Modbus::StatusIsGood (Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
354+ uint32_t c;
355+ return Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
313356}
314357
315358
316359// --------------------------------------------------------------------------------------------------------
317360// ------------------------------------------- WRITE_SINGLE_COIL ------------------------------------------
318361// --------------------------------------------------------------------------------------------------------
319362
320- bool mbClientRunMessageWriteSingleCoil::getData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , void *buff) const
363+ Modbus::StatusCode mbClientRunMessageWriteSingleCoil::getData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , void *buff) const
321364{
322365 // ignoring offset and count
323366 reinterpret_cast <uint8_t *>(buff)[0 ] = m_buff[0 ];
324- return true ;
367+ return Modbus::Status_Good ;
325368}
326369
327- bool mbClientRunMessageWriteSingleCoil::setData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , const void *buff)
370+ Modbus::StatusCode mbClientRunMessageWriteSingleCoil::setData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , const void *buff)
328371{
329372 // ignoring offset and count
330373 m_buff[0 ] = reinterpret_cast <const uint8_t *>(buff)[0 ];
331- return true ;
374+ return Modbus::Status_Good ;
332375}
333376
334377
335378// --------------------------------------------------------------------------------------------------------
336379// ----------------------------------------- WRITE_SINGLE_REGISTER ----------------------------------------
337380// --------------------------------------------------------------------------------------------------------
338381
339- bool mbClientRunMessageWriteSingleRegister::getData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , void *buff) const
382+ Modbus::StatusCode mbClientRunMessageWriteSingleRegister::getData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , void *buff) const
340383{
341384 // ignoring offset and count
342385 reinterpret_cast <uint16_t *>(buff)[0 ] = reinterpret_cast <const uint16_t *>(m_buff)[0 ];
343- return true ;
386+ return Modbus::Status_Good ;
344387}
345388
346- bool mbClientRunMessageWriteSingleRegister::setData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , const void *buff)
389+ Modbus::StatusCode mbClientRunMessageWriteSingleRegister::setData (uint16_t /* innerOffset*/ , uint16_t /* count*/ , const void *buff)
347390{
348391 // ignoring offset and count
349392 reinterpret_cast <uint16_t *>(m_buff)[0 ] = reinterpret_cast <const uint16_t *>(buff)[0 ];
350- return true ;
393+ return Modbus::Status_Good ;
351394}
352395
353396// --------------------------------------------------------------------------------------------------------
354397// ----------------------------------------- READ_EXCEPTION_STATUS ----------------------------------------
355398// --------------------------------------------------------------------------------------------------------
356399
357- bool mbClientRunMessageReadExceptionStatus::getData (uint16_t innerOffset, uint16_t count, void *buff) const
400+ Modbus::StatusCode mbClientRunMessageReadExceptionStatus::getData (uint16_t innerOffset, uint16_t count, void *buff) const
358401{
359- return Modbus::StatusIsGood ( Modbus:: readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize () ));
402+ return Modbus::readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize ());
360403}
361404
362405// --------------------------------------------------------------------------------------------------------
363406// ----------------------------------------- WRITE_MULTIPLE_COILS -----------------------------------------
364407// --------------------------------------------------------------------------------------------------------
365408
366- bool mbClientRunMessageWriteMultipleCoils::getData (uint16_t innerOffset, uint16_t count, void *buff) const
409+ Modbus::StatusCode mbClientRunMessageWriteMultipleCoils::getData (uint16_t innerOffset, uint16_t count, void *buff) const
367410{
368- return Modbus::StatusIsGood (Modbus::readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize ()));
411+ uint32_t c;
412+ return Modbus::readMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize (), &c);
369413}
370414
371- bool mbClientRunMessageWriteMultipleCoils::setData (uint16_t innerOffset, uint16_t count, const void *buff)
415+ Modbus::StatusCode mbClientRunMessageWriteMultipleCoils::setData (uint16_t innerOffset, uint16_t count, const void *buff)
372416{
373- return Modbus::StatusIsGood (Modbus::writeMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize ()));
417+ uint32_t c;
418+ return Modbus::writeMemBits (innerOffset, count, buff, m_buff, innerBufferBitSize (), &c);
374419}
375420
376421
377422// --------------------------------------------------------------------------------------------------------
378423// --------------------------------------- WRITE_MULTIPLE_REGISTERS ---------------------------------------
379424// --------------------------------------------------------------------------------------------------------
380425
381- bool mbClientRunMessageWriteMultipleRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
426+ Modbus::StatusCode mbClientRunMessageWriteMultipleRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
382427{
383- return Modbus::StatusIsGood (Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
428+ uint32_t c;
429+ return Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
384430}
385431
386- bool mbClientRunMessageWriteMultipleRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
432+ Modbus::StatusCode mbClientRunMessageWriteMultipleRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
387433{
388- return Modbus::StatusIsGood (Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
434+ uint32_t c;
435+ return Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
389436}
390437
391438
@@ -397,14 +444,16 @@ mbClientRunMessageMaskWriteRegister::mbClientRunMessageMaskWriteRegister(uint16_
397444{
398445}
399446
400- bool mbClientRunMessageMaskWriteRegister::getData (uint16_t innerOffset, uint16_t count, void *buff) const
447+ Modbus::StatusCode mbClientRunMessageMaskWriteRegister::getData (uint16_t innerOffset, uint16_t count, void *buff) const
401448{
402- return Modbus::StatusIsGood (Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
449+ uint32_t c;
450+ return Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
403451}
404452
405- bool mbClientRunMessageMaskWriteRegister::setData (uint16_t innerOffset, uint16_t count, const void *buff)
453+ Modbus::StatusCode mbClientRunMessageMaskWriteRegister::setData (uint16_t innerOffset, uint16_t count, const void *buff)
406454{
407- return Modbus::StatusIsGood (Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
455+ uint32_t c;
456+ return Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
408457}
409458
410459
@@ -423,12 +472,14 @@ mbClientRunMessageReadWriteMultipleRegisters::mbClientRunMessageReadWriteMultipl
423472 m_writeCount = writeCount;
424473}
425474
426- bool mbClientRunMessageReadWriteMultipleRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
475+ Modbus::StatusCode mbClientRunMessageReadWriteMultipleRegisters::getData (uint16_t innerOffset, uint16_t count, void *buff) const
427476{
428- return Modbus::StatusIsGood (Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
477+ uint32_t c;
478+ return Modbus::readMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
429479}
430480
431- bool mbClientRunMessageReadWriteMultipleRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
481+ Modbus::StatusCode mbClientRunMessageReadWriteMultipleRegisters::setData (uint16_t innerOffset, uint16_t count, const void *buff)
432482{
433- return Modbus::StatusIsGood (Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize ()));
483+ uint32_t c;
484+ return Modbus::writeMemRegs (innerOffset, count, buff, m_buff, innerBufferRegSize (), &c);
434485}
0 commit comments