Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
bb43c2e0
Commit
bb43c2e0
authored
Jul 20, 2016
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(ModbusTypes): расставил const где встретил
parent
4814b885
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
211 additions
and
216 deletions
+211
-216
ModbusTypes.h
include/modbus/ModbusTypes.h
+103
-98
ModbusTypes.cc
src/Communications/Modbus/ModbusTypes.cc
+108
-118
No files found.
include/modbus/ModbusTypes.h
View file @
bb43c2e0
...
@@ -172,6 +172,12 @@ namespace ModbusRTU
...
@@ -172,6 +172,12 @@ namespace ModbusRTU
public
ModbusHeader
public
ModbusHeader
{
{
ModbusMessage
();
ModbusMessage
();
ModbusMessage
(
ModbusMessage
&&
)
=
default
;
ModbusMessage
&
operator
=
(
ModbusMessage
&&
)
=
default
;
ModbusMessage
(
const
ModbusMessage
&
)
=
default
;
ModbusMessage
&
operator
=
(
const
ModbusMessage
&
)
=
default
;
ModbusByte
data
[
MAXLENPACKET
+
szCRC
];
/*!< данные */
ModbusByte
data
[
MAXLENPACKET
+
szCRC
];
/*!< данные */
// Это поле вспомогательное и игнорируется при пересылке
// Это поле вспомогательное и игнорируется при пересылке
...
@@ -189,9 +195,9 @@ namespace ModbusRTU
...
@@ -189,9 +195,9 @@ namespace ModbusRTU
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- from slave -------
// ------- from slave -------
ErrorRetMessage
(
ModbusMessage
&
m
);
ErrorRetMessage
(
const
ModbusMessage
&
m
);
ErrorRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ErrorRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
// ------- to master -------
// ------- to master -------
ErrorRetMessage
(
ModbusAddr
_from
,
ModbusByte
_func
,
ModbusByte
ecode
);
ErrorRetMessage
(
ModbusAddr
_from
,
ModbusByte
_func
,
ModbusByte
ecode
);
...
@@ -277,9 +283,9 @@ namespace ModbusRTU
...
@@ -277,9 +283,9 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
ReadCoilMessage
(
ModbusMessage
&
m
);
ReadCoilMessage
(
const
ModbusMessage
&
m
);
ReadCoilMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadCoilMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
inline
static
size_t
szData
()
inline
static
size_t
szData
()
...
@@ -302,9 +308,9 @@ namespace ModbusRTU
...
@@ -302,9 +308,9 @@ namespace ModbusRTU
ModbusByte
data
[
MAXLENPACKET
];
/*!< данные */
ModbusByte
data
[
MAXLENPACKET
];
/*!< данные */
// ------- from slave -------
// ------- from slave -------
ReadCoilRetMessage
(
ModbusMessage
&
m
);
ReadCoilRetMessage
(
const
ModbusMessage
&
m
);
ReadCoilRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadCoilRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
*/
*/
...
@@ -314,7 +320,7 @@ namespace ModbusRTU
...
@@ -314,7 +320,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- to master -------
// ------- to master -------
...
@@ -376,9 +382,9 @@ namespace ModbusRTU
...
@@ -376,9 +382,9 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
ReadInputStatusMessage
(
ModbusMessage
&
m
);
ReadInputStatusMessage
(
const
ModbusMessage
&
m
);
ReadInputStatusMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadInputStatusMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
inline
static
size_t
szData
()
inline
static
size_t
szData
()
...
@@ -399,9 +405,9 @@ namespace ModbusRTU
...
@@ -399,9 +405,9 @@ namespace ModbusRTU
ModbusByte
data
[
MAXLENPACKET
];
/*!< данные */
ModbusByte
data
[
MAXLENPACKET
];
/*!< данные */
// ------- from slave -------
// ------- from slave -------
ReadInputStatusRetMessage
(
ModbusMessage
&
m
);
ReadInputStatusRetMessage
(
const
ModbusMessage
&
m
);
ReadInputStatusRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadInputStatusRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
*/
*/
...
@@ -411,7 +417,7 @@ namespace ModbusRTU
...
@@ -411,7 +417,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- to master -------
// ------- to master -------
...
@@ -474,9 +480,9 @@ namespace ModbusRTU
...
@@ -474,9 +480,9 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
ReadOutputMessage
(
ModbusMessage
&
m
);
ReadOutputMessage
(
const
ModbusMessage
&
m
);
ReadOutputMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadOutputMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
inline
static
size_t
szData
()
inline
static
size_t
szData
()
...
@@ -497,9 +503,9 @@ namespace ModbusRTU
...
@@ -497,9 +503,9 @@ namespace ModbusRTU
ModbusData
data
[
MAXLENPACKET
/
sizeof
(
ModbusData
)];
/*!< данные */
ModbusData
data
[
MAXLENPACKET
/
sizeof
(
ModbusData
)];
/*!< данные */
// ------- from slave -------
// ------- from slave -------
ReadOutputRetMessage
(
ModbusMessage
&
m
);
ReadOutputRetMessage
(
const
ModbusMessage
&
m
);
ReadOutputRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadOutputRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
*/
*/
...
@@ -510,7 +516,7 @@ namespace ModbusRTU
...
@@ -510,7 +516,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- to master -------
// ------- to master -------
...
@@ -562,9 +568,9 @@ namespace ModbusRTU
...
@@ -562,9 +568,9 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
ReadInputMessage
(
ModbusMessage
&
m
);
ReadInputMessage
(
const
ModbusMessage
&
m
);
ReadInputMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadInputMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
inline
static
size_t
szData
()
inline
static
size_t
szData
()
...
@@ -586,9 +592,9 @@ namespace ModbusRTU
...
@@ -586,9 +592,9 @@ namespace ModbusRTU
ModbusData
data
[
MAXLENPACKET
/
sizeof
(
ModbusData
)];
/*!< данные */
ModbusData
data
[
MAXLENPACKET
/
sizeof
(
ModbusData
)];
/*!< данные */
// ------- from slave -------
// ------- from slave -------
ReadInputRetMessage
(
ModbusMessage
&
m
);
ReadInputRetMessage
(
const
ModbusMessage
&
m
);
ReadInputRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadInputRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
*/
*/
...
@@ -599,7 +605,7 @@ namespace ModbusRTU
...
@@ -599,7 +605,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- to master -------
// ------- to master -------
...
@@ -689,9 +695,9 @@ namespace ModbusRTU
...
@@ -689,9 +695,9 @@ namespace ModbusRTU
}
}
// ------- from master -------
// ------- from master -------
ForceCoilsMessage
(
ModbusMessage
&
m
);
ForceCoilsMessage
(
const
ModbusMessage
&
m
);
ForceCoilsMessage
&
operator
=
(
ModbusMessage
&
m
);
ForceCoilsMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
size_t
szData
();
size_t
szData
();
...
@@ -706,7 +712,7 @@ namespace ModbusRTU
...
@@ -706,7 +712,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
/*! проверка корректности данных
/*! проверка корректности данных
что quant и bcnt - совпадают...
что quant и bcnt - совпадают...
...
@@ -727,9 +733,9 @@ namespace ModbusRTU
...
@@ -727,9 +733,9 @@ namespace ModbusRTU
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- from slave -------
// ------- from slave -------
ForceCoilsRetMessage
(
ModbusMessage
&
m
);
ForceCoilsRetMessage
(
const
ModbusMessage
&
m
);
ForceCoilsRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ForceCoilsRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
// ------- to master -------
// ------- to master -------
/*!
/*!
...
@@ -782,9 +788,9 @@ namespace ModbusRTU
...
@@ -782,9 +788,9 @@ namespace ModbusRTU
}
}
// ------- from master -------
// ------- from master -------
WriteOutputMessage
(
ModbusMessage
&
m
);
WriteOutputMessage
(
const
ModbusMessage
&
m
);
WriteOutputMessage
&
operator
=
(
ModbusMessage
&
m
);
WriteOutputMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
size_t
szData
();
size_t
szData
();
...
@@ -799,7 +805,7 @@ namespace ModbusRTU
...
@@ -799,7 +805,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
/*! проверка корректности данных
/*! проверка корректности данных
что quant и bcnt - совпадают...
что quant и bcnt - совпадают...
...
@@ -820,9 +826,9 @@ namespace ModbusRTU
...
@@ -820,9 +826,9 @@ namespace ModbusRTU
ModbusData
quant
=
{
0
};
/*!< количество записанных слов данных */
ModbusData
quant
=
{
0
};
/*!< количество записанных слов данных */
// ------- from slave -------
// ------- from slave -------
WriteOutputRetMessage
(
ModbusMessage
&
m
);
WriteOutputRetMessage
(
const
ModbusMessage
&
m
);
WriteOutputRetMessage
&
operator
=
(
ModbusMessage
&
m
);
WriteOutputRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- to master -------
// ------- to master -------
...
@@ -865,16 +871,15 @@ namespace ModbusRTU
...
@@ -865,16 +871,15 @@ namespace ModbusRTU
return
(
data
&
0xFF00
);
return
(
data
&
0xFF00
);
}
}
// ------- to slave -------
// ------- to slave -------
ForceSingleCoilMessage
(
ModbusAddr
addr
,
ModbusData
reg
,
bool
state
);
ForceSingleCoilMessage
(
ModbusAddr
addr
,
ModbusData
reg
,
bool
state
);
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
ForceSingleCoilMessage
(
ModbusMessage
&
m
);
ForceSingleCoilMessage
(
const
ModbusMessage
&
m
);
ForceSingleCoilMessage
&
operator
=
(
ModbusMessage
&
m
);
ForceSingleCoilMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
size_t
szData
();
size_t
szData
();
...
@@ -890,7 +895,7 @@ namespace ModbusRTU
...
@@ -890,7 +895,7 @@ namespace ModbusRTU
/*! узнать длину данных следующий за
/*! узнать длину данных следующий за
предварительным заголовком ( в байтах )
предварительным заголовком ( в байтах )
*/
*/
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
/*! проверка корректности данных
/*! проверка корректности данных
что quant и bcnt - совпадают...
что quant и bcnt - совпадают...
...
@@ -918,9 +923,9 @@ namespace ModbusRTU
...
@@ -918,9 +923,9 @@ namespace ModbusRTU
}
}
// ------- from slave -------
// ------- from slave -------
ForceSingleCoilRetMessage
(
ModbusMessage
&
m
);
ForceSingleCoilRetMessage
(
const
ModbusMessage
&
m
);
ForceSingleCoilRetMessage
&
operator
=
(
ModbusMessage
&
m
);
ForceSingleCoilRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
// ------- to master -------
// ------- to master -------
/*!
/*!
...
@@ -963,9 +968,9 @@ namespace ModbusRTU
...
@@ -963,9 +968,9 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
WriteSingleOutputMessage
(
ModbusMessage
&
m
);
WriteSingleOutputMessage
(
const
ModbusMessage
&
m
);
WriteSingleOutputMessage
&
operator
=
(
ModbusMessage
&
m
);
WriteSingleOutputMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
size_t
szData
();
size_t
szData
();
...
@@ -981,7 +986,7 @@ namespace ModbusRTU
...
@@ -981,7 +986,7 @@ namespace ModbusRTU
/*! узнать длину данных следующий за
/*! узнать длину данных следующий за
предварительным заголовком ( в байтах )
предварительным заголовком ( в байтах )
*/
*/
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
/*! проверка корректности данных
/*! проверка корректности данных
что quant и bcnt - совпадают...
что quant и bcnt - совпадают...
...
@@ -1004,9 +1009,9 @@ namespace ModbusRTU
...
@@ -1004,9 +1009,9 @@ namespace ModbusRTU
// ------- from slave -------
// ------- from slave -------
WriteSingleOutputRetMessage
(
ModbusMessage
&
m
);
WriteSingleOutputRetMessage
(
const
ModbusMessage
&
m
);
WriteSingleOutputRetMessage
&
operator
=
(
ModbusMessage
&
m
);
WriteSingleOutputRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
// ------- to master -------
// ------- to master -------
/*!
/*!
...
@@ -1041,9 +1046,9 @@ namespace ModbusRTU
...
@@ -1041,9 +1046,9 @@ namespace ModbusRTU
ModbusData
data
[
MAXLENPACKET
/
sizeof
(
ModbusData
)];
/*!< данные */
ModbusData
data
[
MAXLENPACKET
/
sizeof
(
ModbusData
)];
/*!< данные */
// ------- from slave -------
// ------- from slave -------
DiagnosticMessage
(
ModbusMessage
&
m
);
DiagnosticMessage
(
const
ModbusMessage
&
m
);
DiagnosticMessage
&
operator
=
(
ModbusMessage
&
m
);
DiagnosticMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
*/
*/
...
@@ -1053,7 +1058,7 @@ namespace ModbusRTU
...
@@ -1053,7 +1058,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
size_t
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// ------- to master -------
// ------- to master -------
...
@@ -1086,7 +1091,7 @@ namespace ModbusRTU
...
@@ -1086,7 +1091,7 @@ namespace ModbusRTU
// преобразовании в ModbusMessage.
// преобразовании в ModbusMessage.
// Делать что-типа memcpy(buf,this,sizeof(*this)); будет не верно.
// Делать что-типа memcpy(buf,this,sizeof(*this)); будет не верно.
// Используйте специальную функцию transport_msg()
// Используйте специальную функцию transport_msg()
int
count
=
{
0
};
/*!< фактическое количество данных в сообщении */
size_t
count
=
{
0
};
/*!< фактическое количество данных в сообщении */
};
};
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DiagnosticMessage
&
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DiagnosticMessage
&
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DiagnosticMessage
*
m
);
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
DiagnosticMessage
*
m
);
...
@@ -1095,8 +1100,8 @@ namespace ModbusRTU
...
@@ -1095,8 +1100,8 @@ namespace ModbusRTU
struct
DiagnosticRetMessage
:
struct
DiagnosticRetMessage
:
public
DiagnosticMessage
public
DiagnosticMessage
{
{
DiagnosticRetMessage
(
ModbusMessage
&
m
);
DiagnosticRetMessage
(
const
ModbusMessage
&
m
);
DiagnosticRetMessage
(
DiagnosticMessage
&
m
);
DiagnosticRetMessage
(
const
DiagnosticMessage
&
m
);
DiagnosticRetMessage
(
ModbusAddr
a
,
DiagnosticsSubFunction
subf
,
ModbusData
d
=
0
);
DiagnosticRetMessage
(
ModbusAddr
a
,
DiagnosticsSubFunction
subf
,
ModbusData
d
=
0
);
};
};
...
@@ -1119,9 +1124,9 @@ namespace ModbusRTU
...
@@ -1119,9 +1124,9 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
MEIMessageRDI
(
ModbusMessage
&
m
);
MEIMessageRDI
(
const
ModbusMessage
&
m
);
MEIMessageRDI
&
operator
=
(
ModbusMessage
&
m
);
MEIMessageRDI
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер предварительного заголовка
/*! размер предварительного заголовка
* (после основного до фактических данных)
* (после основного до фактических данных)
...
@@ -1150,7 +1155,7 @@ namespace ModbusRTU
...
@@ -1150,7 +1155,7 @@ namespace ModbusRTU
{
{
RDIObjectInfo
()
:
id
(
0
),
val
(
""
)
{}
RDIObjectInfo
()
:
id
(
0
),
val
(
""
)
{}
RDIObjectInfo
(
ModbusByte
id
,
const
std
::
string
&
v
)
:
id
(
id
),
val
(
v
)
{}
RDIObjectInfo
(
ModbusByte
id
,
const
std
::
string
&
v
)
:
id
(
id
),
val
(
v
)
{}
RDIObjectInfo
(
ModbusByte
id
,
ModbusByte
*
dat
,
ModbusByte
len
);
RDIObjectInfo
(
ModbusByte
id
,
const
ModbusByte
*
dat
,
ModbusByte
len
);
ModbusByte
id
;
ModbusByte
id
;
std
::
string
val
;
std
::
string
val
;
...
@@ -1174,12 +1179,12 @@ namespace ModbusRTU
...
@@ -1174,12 +1179,12 @@ namespace ModbusRTU
// ------- from slave -------
// ------- from slave -------
MEIMessageRetRDI
();
MEIMessageRetRDI
();
MEIMessageRetRDI
(
ModbusMessage
&
m
);
MEIMessageRetRDI
(
const
ModbusMessage
&
m
);
MEIMessageRetRDI
&
operator
=
(
ModbusMessage
&
m
);
MEIMessageRetRDI
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
// предварительная инициализации, только заголовочной части, без данных
// предварительная инициализации, только заголовочной части, без данных
void
pre_init
(
ModbusMessage
&
m
);
void
pre_init
(
const
ModbusMessage
&
m
);
/*! размер предварительного заголовка (после основного до фактических данных) */
/*! размер предварительного заголовка (после основного до фактических данных) */
static
inline
size_t
szHead
()
static
inline
size_t
szHead
()
...
@@ -1234,8 +1239,8 @@ namespace ModbusRTU
...
@@ -1234,8 +1239,8 @@ namespace ModbusRTU
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
// -------------
// -------------
JournalCommandMessage
(
ModbusMessage
&
m
);
JournalCommandMessage
(
const
ModbusMessage
&
m
);
JournalCommandMessage
&
operator
=
(
ModbusMessage
&
m
);
JournalCommandMessage
&
operator
=
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
inline
static
size_t
szData
()
inline
static
size_t
szData
()
...
@@ -1333,8 +1338,8 @@ namespace ModbusRTU
...
@@ -1333,8 +1338,8 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
// ------- from master -------
// ------- from master -------
SetDateTimeMessage
(
ModbusMessage
&
m
);
SetDateTimeMessage
(
const
ModbusMessage
&
m
);
SetDateTimeMessage
&
operator
=
(
ModbusMessage
&
m
);
SetDateTimeMessage
&
operator
=
(
const
ModbusMessage
&
m
);
SetDateTimeMessage
();
SetDateTimeMessage
();
bool
checkFormat
();
bool
checkFormat
();
...
@@ -1357,14 +1362,14 @@ namespace ModbusRTU
...
@@ -1357,14 +1362,14 @@ namespace ModbusRTU
{
{
// ------- from slave -------
// ------- from slave -------
SetDateTimeRetMessage
(
ModbusMessage
&
m
);
SetDateTimeRetMessage
(
const
ModbusMessage
&
m
);
SetDateTimeRetMessage
&
operator
=
(
ModbusMessage
&
m
);
SetDateTimeRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
// ------- to master -------
// ------- to master -------
SetDateTimeRetMessage
(
ModbusAddr
_from
);
SetDateTimeRetMessage
(
ModbusAddr
_from
);
SetDateTimeRetMessage
(
const
SetDateTimeMessage
&
query
);
SetDateTimeRetMessage
(
const
SetDateTimeMessage
&
query
);
static
void
cpy
(
SetDateTimeRetMessage
&
reply
,
SetDateTimeMessage
&
query
);
static
void
cpy
(
SetDateTimeRetMessage
&
reply
,
const
SetDateTimeMessage
&
query
);
/*! преобразование для посылки в сеть */
/*! преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
ModbusMessage
transport_msg
();
...
@@ -1382,9 +1387,9 @@ namespace ModbusRTU
...
@@ -1382,9 +1387,9 @@ namespace ModbusRTU
ModbusCRC
crc
=
{
0
};
/*!< контрольная сумма */
ModbusCRC
crc
=
{
0
};
/*!< контрольная сумма */
// -----------
// -----------
RemoteServiceMessage
(
ModbusMessage
&
m
);
RemoteServiceMessage
(
const
ModbusMessage
&
m
);
RemoteServiceMessage
&
operator
=
(
ModbusMessage
&
m
);
RemoteServiceMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
size_t
szData
();
size_t
szData
();
...
@@ -1398,7 +1403,7 @@ namespace ModbusRTU
...
@@ -1398,7 +1403,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
}
__attribute__
((
packed
));
}
__attribute__
((
packed
));
...
@@ -1462,9 +1467,9 @@ namespace ModbusRTU
...
@@ -1462,9 +1467,9 @@ namespace ModbusRTU
ModbusCRC
crc
=
{
0
};
/*!< контрольная сумма */
ModbusCRC
crc
=
{
0
};
/*!< контрольная сумма */
// -----------
// -----------
ReadFileRecordMessage
(
ModbusMessage
&
m
);
ReadFileRecordMessage
(
const
ModbusMessage
&
m
);
ReadFileRecordMessage
&
operator
=
(
ModbusMessage
&
m
);
ReadFileRecordMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
size_t
szData
();
size_t
szData
();
...
@@ -1478,7 +1483,7 @@ namespace ModbusRTU
...
@@ -1478,7 +1483,7 @@ namespace ModbusRTU
}
}
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
/*! узнать длину данных следующий за предварительным заголовком ( в байтах ) */
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
/*! проверка корректности данных */
/*! проверка корректности данных */
bool
checkFormat
();
bool
checkFormat
();
...
@@ -1503,9 +1508,9 @@ namespace ModbusRTU
...
@@ -1503,9 +1508,9 @@ namespace ModbusRTU
ModbusMessage
transport_msg
();
/*!< преобразование для посылки в сеть */
ModbusMessage
transport_msg
();
/*!< преобразование для посылки в сеть */
// ------- from master -------
// ------- from master -------
FileTransferMessage
(
ModbusMessage
&
m
);
FileTransferMessage
(
const
ModbusMessage
&
m
);
FileTransferMessage
&
operator
=
(
ModbusMessage
&
m
);
FileTransferMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
/*! размер данных(после заголовка) у данного типа сообщения */
/*! размер данных(после заголовка) у данного типа сообщения */
static
inline
size_t
szData
()
static
inline
size_t
szData
()
...
@@ -1535,15 +1540,15 @@ namespace ModbusRTU
...
@@ -1535,15 +1540,15 @@ namespace ModbusRTU
// ------- from slave -------
// ------- from slave -------
FileTransferRetMessage
(
ModbusMessage
&
m
);
FileTransferRetMessage
(
const
ModbusMessage
&
m
);
FileTransferRetMessage
&
operator
=
(
ModbusMessage
&
m
);
FileTransferRetMessage
&
operator
=
(
const
ModbusMessage
&
m
);
void
init
(
ModbusMessage
&
m
);
void
init
(
const
ModbusMessage
&
m
);
ModbusCRC
crc
=
{
0
};
ModbusCRC
crc
=
{
0
};
static
size_t
szHead
()
static
size_t
szHead
()
{
{
return
sizeof
(
ModbusByte
);
return
sizeof
(
ModbusByte
);
}
}
static
int
getDataLen
(
ModbusMessage
&
m
);
static
size_t
getDataLen
(
const
ModbusMessage
&
m
);
// ------- to master -------
// ------- to master -------
FileTransferRetMessage
(
ModbusAddr
_from
);
FileTransferRetMessage
(
ModbusAddr
_from
);
...
...
src/Communications/Modbus/ModbusTypes.cc
View file @
bb43c2e0
...
@@ -229,7 +229,7 @@ ModbusMessage::ModbusMessage():
...
@@ -229,7 +229,7 @@ ModbusMessage::ModbusMessage():
func
=
0
;
func
=
0
;
memset
(
data
,
0
,
sizeof
(
data
));
memset
(
data
,
0
,
sizeof
(
data
));
}
}
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
const
ModbusMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
const
ModbusMessage
&
m
)
{
{
return
mbPrintMessage
(
os
,
(
ModbusByte
*
)(
&
m
),
szModbusHeader
+
m
.
len
);
return
mbPrintMessage
(
os
,
(
ModbusByte
*
)(
&
m
),
szModbusHeader
+
m
.
len
);
...
@@ -240,18 +240,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, const ModbusMessage* m )
...
@@ -240,18 +240,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, const ModbusMessage* m )
return
os
<<
(
*
m
);
return
os
<<
(
*
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ErrorRetMessage
::
ErrorRetMessage
(
ModbusMessage
&
m
)
ErrorRetMessage
::
ErrorRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ErrorRetMessage
&
ErrorRetMessage
::
operator
=
(
ModbusMessage
&
m
)
ErrorRetMessage
&
ErrorRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ErrorRetMessage
::
init
(
ModbusMessage
&
m
)
void
ErrorRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
memcpy
(
this
,
&
m
,
szModbusHeader
);
memcpy
(
this
,
&
m
,
szModbusHeader
);
...
@@ -339,19 +339,19 @@ ModbusMessage ReadCoilMessage::transport_msg()
...
@@ -339,19 +339,19 @@ ModbusMessage ReadCoilMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadCoilMessage
::
ReadCoilMessage
(
ModbusMessage
&
m
)
ReadCoilMessage
::
ReadCoilMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadCoilMessage
&
ReadCoilMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadCoilMessage
&
ReadCoilMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadCoilMessage
::
init
(
ModbusMessage
&
m
)
void
ReadCoilMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadCoilStatus
);
assert
(
m
.
func
==
fnReadCoilStatus
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -495,18 +495,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DataBits16* d )
...
@@ -495,18 +495,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DataBits16* d )
return
os
<<
(
*
d
);
return
os
<<
(
*
d
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadCoilRetMessage
::
ReadCoilRetMessage
(
ModbusMessage
&
m
)
ReadCoilRetMessage
::
ReadCoilRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadCoilRetMessage
&
ReadCoilRetMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadCoilRetMessage
&
ReadCoilRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadCoilRetMessage
::
init
(
ModbusMessage
&
m
)
void
ReadCoilRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadCoilStatus
);
assert
(
m
.
func
==
fnReadCoilStatus
);
...
@@ -523,7 +523,7 @@ void ReadCoilRetMessage::init( ModbusMessage& m )
...
@@ -523,7 +523,7 @@ void ReadCoilRetMessage::init( ModbusMessage& m )
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ReadCoilRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
ReadCoilRetMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
...
@@ -658,19 +658,19 @@ ModbusMessage ReadInputStatusMessage::transport_msg()
...
@@ -658,19 +658,19 @@ ModbusMessage ReadInputStatusMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputStatusMessage
::
ReadInputStatusMessage
(
ModbusMessage
&
m
)
ReadInputStatusMessage
::
ReadInputStatusMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputStatusMessage
&
ReadInputStatusMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadInputStatusMessage
&
ReadInputStatusMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadInputStatusMessage
::
init
(
ModbusMessage
&
m
)
void
ReadInputStatusMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadInputStatus
);
assert
(
m
.
func
==
fnReadInputStatus
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -697,18 +697,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadInputStatusMessage* m
...
@@ -697,18 +697,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadInputStatusMessage* m
return
os
<<
(
*
m
);
return
os
<<
(
*
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputStatusRetMessage
::
ReadInputStatusRetMessage
(
ModbusMessage
&
m
)
ReadInputStatusRetMessage
::
ReadInputStatusRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputStatusRetMessage
&
ReadInputStatusRetMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadInputStatusRetMessage
&
ReadInputStatusRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadInputStatusRetMessage
::
init
(
ModbusMessage
&
m
)
void
ReadInputStatusRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadInputStatus
);
assert
(
m
.
func
==
fnReadInputStatus
);
...
@@ -725,7 +725,7 @@ void ReadInputStatusRetMessage::init( ModbusMessage& m )
...
@@ -725,7 +725,7 @@ void ReadInputStatusRetMessage::init( ModbusMessage& m )
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ReadInputStatusRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
ReadInputStatusRetMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
...
@@ -733,7 +733,7 @@ int ReadInputStatusRetMessage::getDataLen( ModbusMessage& m )
...
@@ -733,7 +733,7 @@ int ReadInputStatusRetMessage::getDataLen( ModbusMessage& m )
return
m
.
data
[
0
];
return
m
.
data
[
0
];
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputStatusRetMessage
::
ReadInputStatusRetMessage
(
ModbusAddr
_addr
)
:
ReadInputStatusRetMessage
::
ReadInputStatusRetMessage
(
const
ModbusAddr
_addr
)
:
bcnt
(
0
)
bcnt
(
0
)
{
{
addr
=
_addr
;
addr
=
_addr
;
...
@@ -863,19 +863,19 @@ ModbusMessage ReadOutputMessage::transport_msg()
...
@@ -863,19 +863,19 @@ ModbusMessage ReadOutputMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadOutputMessage
::
ReadOutputMessage
(
ModbusMessage
&
m
)
ReadOutputMessage
::
ReadOutputMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadOutputMessage
&
ReadOutputMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadOutputMessage
&
ReadOutputMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadOutputMessage
::
init
(
ModbusMessage
&
m
)
void
ReadOutputMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadOutputRegisters
);
assert
(
m
.
func
==
fnReadOutputRegisters
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -903,18 +903,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadOutputMessage* m )
...
@@ -903,18 +903,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadOutputMessage* m )
return
os
<<
(
*
m
);
return
os
<<
(
*
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadOutputRetMessage
::
ReadOutputRetMessage
(
ModbusMessage
&
m
)
ReadOutputRetMessage
::
ReadOutputRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadOutputRetMessage
&
ReadOutputRetMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadOutputRetMessage
&
ReadOutputRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadOutputRetMessage
::
init
(
ModbusMessage
&
m
)
void
ReadOutputRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadOutputRegisters
);
assert
(
m
.
func
==
fnReadOutputRegisters
);
...
@@ -943,19 +943,15 @@ void ReadOutputRetMessage::init( ModbusMessage& m )
...
@@ -943,19 +943,15 @@ void ReadOutputRetMessage::init( ModbusMessage& m )
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
memcpy
(
&
crc
,
&
(
m
.
data
[
bcnt
+
1
]),
szCRC
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ReadOutputRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
ReadOutputRetMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
return
m
.
data
[
0
];
return
m
.
data
[
0
];
/*
ReadOutputMessage rm(m);
return (int)(rm.bcnt);
*/
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadOutputRetMessage
::
ReadOutputRetMessage
(
ModbusAddr
_addr
)
:
ReadOutputRetMessage
::
ReadOutputRetMessage
(
const
ModbusAddr
_addr
)
:
bcnt
(
0
),
bcnt
(
0
),
count
(
0
)
count
(
0
)
{
{
...
@@ -1080,19 +1076,19 @@ ModbusMessage ReadInputMessage::transport_msg()
...
@@ -1080,19 +1076,19 @@ ModbusMessage ReadInputMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputMessage
::
ReadInputMessage
(
ModbusMessage
&
m
)
ReadInputMessage
::
ReadInputMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputMessage
&
ReadInputMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadInputMessage
&
ReadInputMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadInputMessage
::
init
(
ModbusMessage
&
m
)
void
ReadInputMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadInputRegisters
);
assert
(
m
.
func
==
fnReadInputRegisters
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -1120,18 +1116,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadInputMessage* m )
...
@@ -1120,18 +1116,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ReadInputMessage* m )
return
os
<<
(
*
m
);
return
os
<<
(
*
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputRetMessage
::
ReadInputRetMessage
(
ModbusMessage
&
m
)
ReadInputRetMessage
::
ReadInputRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadInputRetMessage
&
ReadInputRetMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadInputRetMessage
&
ReadInputRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadInputRetMessage
::
init
(
ModbusMessage
&
m
)
void
ReadInputRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadInputRegisters
);
assert
(
m
.
func
==
fnReadInputRegisters
);
...
@@ -1162,7 +1158,7 @@ void ReadInputRetMessage::swapData()
...
@@ -1162,7 +1158,7 @@ void ReadInputRetMessage::swapData()
data
[
i
]
=
SWAPSHORT
(
data
[
i
]);
data
[
i
]
=
SWAPSHORT
(
data
[
i
]);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ReadInputRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
ReadInputRetMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
...
@@ -1362,18 +1358,18 @@ ModbusMessage ForceCoilsMessage::transport_msg()
...
@@ -1362,18 +1358,18 @@ ModbusMessage ForceCoilsMessage::transport_msg()
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ForceCoilsMessage
::
ForceCoilsMessage
(
ModbusMessage
&
m
)
ForceCoilsMessage
::
ForceCoilsMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
ForceCoilsMessage
&
ForceCoilsMessage
::
operator
=
(
ModbusMessage
&
m
)
ForceCoilsMessage
&
ForceCoilsMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ForceCoilsMessage
::
init
(
ModbusMessage
&
m
)
void
ForceCoilsMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnForceMultipleCoils
);
assert
(
m
.
func
==
fnForceMultipleCoils
);
...
@@ -1417,13 +1413,13 @@ size_t ForceCoilsMessage::szData()
...
@@ -1417,13 +1413,13 @@ size_t ForceCoilsMessage::szData()
return
szHead
()
+
bcnt
+
szCRC
;
return
szHead
()
+
bcnt
+
szCRC
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ForceCoilsMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
ForceCoilsMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
ForceCoilsMessage
wm
(
m
);
ForceCoilsMessage
wm
(
m
);
return
(
int
)(
wm
.
bcnt
)
;
return
wm
.
bcnt
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ForceCoilsMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ForceCoilsMessage
&
m
)
...
@@ -1448,18 +1444,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceCoilsMessage* m )
...
@@ -1448,18 +1444,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceCoilsMessage* m )
return
os
<<
(
*
m
);
return
os
<<
(
*
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ForceCoilsRetMessage
::
ForceCoilsRetMessage
(
ModbusMessage
&
m
)
ForceCoilsRetMessage
::
ForceCoilsRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ForceCoilsRetMessage
&
ForceCoilsRetMessage
::
operator
=
(
ModbusMessage
&
m
)
ForceCoilsRetMessage
&
ForceCoilsRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ForceCoilsRetMessage
::
init
(
ModbusMessage
&
m
)
void
ForceCoilsRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnForceMultipleCoils
);
assert
(
m
.
func
==
fnForceMultipleCoils
);
...
@@ -1605,18 +1601,18 @@ ModbusMessage WriteOutputMessage::transport_msg()
...
@@ -1605,18 +1601,18 @@ ModbusMessage WriteOutputMessage::transport_msg()
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
WriteOutputMessage
::
WriteOutputMessage
(
ModbusMessage
&
m
)
WriteOutputMessage
::
WriteOutputMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
WriteOutputMessage
&
WriteOutputMessage
::
operator
=
(
ModbusMessage
&
m
)
WriteOutputMessage
&
WriteOutputMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
WriteOutputMessage
::
init
(
ModbusMessage
&
m
)
void
WriteOutputMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnWriteOutputRegisters
);
assert
(
m
.
func
==
fnWriteOutputRegisters
);
...
@@ -1666,7 +1662,7 @@ size_t WriteOutputMessage::szData()
...
@@ -1666,7 +1662,7 @@ size_t WriteOutputMessage::szData()
return
szHead
()
+
bcnt
+
szCRC
;
return
szHead
()
+
bcnt
+
szCRC
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
WriteOutputMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
WriteOutputMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
...
@@ -1707,18 +1703,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteOutputMessage* m )
...
@@ -1707,18 +1703,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteOutputMessage* m )
return
os
<<
(
*
m
);
return
os
<<
(
*
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
WriteOutputRetMessage
::
WriteOutputRetMessage
(
ModbusMessage
&
m
)
WriteOutputRetMessage
::
WriteOutputRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
WriteOutputRetMessage
&
WriteOutputRetMessage
::
operator
=
(
ModbusMessage
&
m
)
WriteOutputRetMessage
&
WriteOutputRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
WriteOutputRetMessage
::
init
(
ModbusMessage
&
m
)
void
WriteOutputRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnWriteOutputRegisters
);
assert
(
m
.
func
==
fnWriteOutputRegisters
);
...
@@ -1815,18 +1811,18 @@ ModbusMessage ForceSingleCoilMessage::transport_msg()
...
@@ -1815,18 +1811,18 @@ ModbusMessage ForceSingleCoilMessage::transport_msg()
}
}
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
ForceSingleCoilMessage
::
ForceSingleCoilMessage
(
ModbusMessage
&
m
)
ForceSingleCoilMessage
::
ForceSingleCoilMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ForceSingleCoilMessage
&
ForceSingleCoilMessage
::
operator
=
(
ModbusMessage
&
m
)
ForceSingleCoilMessage
&
ForceSingleCoilMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ForceSingleCoilMessage
::
init
(
ModbusMessage
&
m
)
void
ForceSingleCoilMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnForceSingleCoil
);
assert
(
m
.
func
==
fnForceSingleCoil
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -1861,7 +1857,7 @@ size_t ForceSingleCoilMessage::szData()
...
@@ -1861,7 +1857,7 @@ size_t ForceSingleCoilMessage::szData()
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ForceSingleCoilMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
ForceSingleCoilMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
...
@@ -1882,18 +1878,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceSingleCoilMessage* m
...
@@ -1882,18 +1878,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, ForceSingleCoilMessage* m
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ForceSingleCoilRetMessage
::
ForceSingleCoilRetMessage
(
ModbusMessage
&
m
)
ForceSingleCoilRetMessage
::
ForceSingleCoilRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ForceSingleCoilRetMessage
&
ForceSingleCoilRetMessage
::
operator
=
(
ModbusMessage
&
m
)
ForceSingleCoilRetMessage
&
ForceSingleCoilRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ForceSingleCoilRetMessage
::
init
(
ModbusMessage
&
m
)
void
ForceSingleCoilRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -1986,18 +1982,18 @@ ModbusMessage WriteSingleOutputMessage::transport_msg()
...
@@ -1986,18 +1982,18 @@ ModbusMessage WriteSingleOutputMessage::transport_msg()
}
}
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
WriteSingleOutputMessage
::
WriteSingleOutputMessage
(
ModbusMessage
&
m
)
WriteSingleOutputMessage
::
WriteSingleOutputMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
WriteSingleOutputMessage
&
WriteSingleOutputMessage
::
operator
=
(
ModbusMessage
&
m
)
WriteSingleOutputMessage
&
WriteSingleOutputMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
WriteSingleOutputMessage
::
init
(
ModbusMessage
&
m
)
void
WriteSingleOutputMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnWriteOutputSingleRegister
);
assert
(
m
.
func
==
fnWriteOutputSingleRegister
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -2033,7 +2029,7 @@ size_t WriteSingleOutputMessage::szData()
...
@@ -2033,7 +2029,7 @@ size_t WriteSingleOutputMessage::szData()
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
return
szHead
()
+
sizeof
(
ModbusData
)
+
szCRC
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
WriteSingleOutputMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
WriteSingleOutputMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
...
@@ -2059,18 +2055,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteSingleOutputMessage*
...
@@ -2059,18 +2055,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, WriteSingleOutputMessage*
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
WriteSingleOutputRetMessage
::
WriteSingleOutputRetMessage
(
ModbusMessage
&
m
)
WriteSingleOutputRetMessage
::
WriteSingleOutputRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
WriteSingleOutputRetMessage
&
WriteSingleOutputRetMessage
::
operator
=
(
ModbusMessage
&
m
)
WriteSingleOutputRetMessage
&
WriteSingleOutputRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
WriteSingleOutputRetMessage
::
init
(
ModbusMessage
&
m
)
void
WriteSingleOutputRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -2190,18 +2186,18 @@ ssize_t ModbusRTU::szRequestDiagnosticData( DiagnosticsSubFunction f )
...
@@ -2190,18 +2186,18 @@ ssize_t ModbusRTU::szRequestDiagnosticData( DiagnosticsSubFunction f )
return
-
1
;
return
-
1
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
DiagnosticMessage
::
DiagnosticMessage
(
ModbusMessage
&
m
)
DiagnosticMessage
::
DiagnosticMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
DiagnosticMessage
&
DiagnosticMessage
::
operator
=
(
ModbusMessage
&
m
)
DiagnosticMessage
&
DiagnosticMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
DiagnosticMessage
::
init
(
ModbusMessage
&
m
)
void
DiagnosticMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnDiagnostics
);
assert
(
m
.
func
==
fnDiagnostics
);
...
@@ -2225,13 +2221,13 @@ void DiagnosticMessage::init( ModbusMessage& m )
...
@@ -2225,13 +2221,13 @@ void DiagnosticMessage::init( ModbusMessage& m )
last
+=
sizeof
(
ModbusData
)
*
count
;
last
+=
sizeof
(
ModbusData
)
*
count
;
// переворачиваем данные
// переворачиваем данные
for
(
s
s
ize_t
i
=
0
;
i
<
count
;
i
++
)
for
(
size_t
i
=
0
;
i
<
count
;
i
++
)
data
[
i
]
=
SWAPSHORT
(
data
[
i
]);
data
[
i
]
=
SWAPSHORT
(
data
[
i
]);
memcpy
(
&
crc
,
&
(
m
.
data
[
last
]),
szCRC
);
memcpy
(
&
crc
,
&
(
m
.
data
[
last
]),
szCRC
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
size_t
DiagnosticMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
DiagnosticMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
...
@@ -2294,7 +2290,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
...
@@ -2294,7 +2290,7 @@ ModbusMessage DiagnosticMessage::transport_msg()
// Создаём временно массив, переворачиваем байты
// Создаём временно массив, переворачиваем байты
ModbusData
*
dtmp
=
new
ModbusData
[
count
];
ModbusData
*
dtmp
=
new
ModbusData
[
count
];
for
(
s
s
ize_t
i
=
0
;
i
<
count
;
i
++
)
for
(
size_t
i
=
0
;
i
<
count
;
i
++
)
dtmp
[
i
]
=
SWAPSHORT
(
data
[
i
]);
dtmp
[
i
]
=
SWAPSHORT
(
data
[
i
]);
// копируем
// копируем
...
@@ -2323,12 +2319,12 @@ size_t DiagnosticMessage::szData()
...
@@ -2323,12 +2319,12 @@ size_t DiagnosticMessage::szData()
return
sizeof
(
subf
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
return
sizeof
(
subf
)
+
count
*
sizeof
(
ModbusData
)
+
szCRC
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
DiagnosticRetMessage
::
DiagnosticRetMessage
(
ModbusMessage
&
m
)
:
DiagnosticRetMessage
::
DiagnosticRetMessage
(
const
ModbusMessage
&
m
)
:
DiagnosticMessage
(
m
)
DiagnosticMessage
(
m
)
{
{
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
DiagnosticRetMessage
::
DiagnosticRetMessage
(
DiagnosticMessage
&
m
)
:
DiagnosticRetMessage
::
DiagnosticRetMessage
(
const
DiagnosticMessage
&
m
)
:
DiagnosticMessage
(
m
)
DiagnosticMessage
(
m
)
{
{
...
@@ -2346,7 +2342,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DiagnosticMessage& m )
...
@@ -2346,7 +2342,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DiagnosticMessage& m )
<<
" subf="
<<
dat2str
(
m
.
subf
)
<<
" subf="
<<
dat2str
(
m
.
subf
)
<<
" data["
<<
m
.
count
<<
"]={"
;
<<
" data["
<<
m
.
count
<<
"]={"
;
for
(
s
s
ize_t
i
=
0
;
i
<
m
.
count
;
i
++
)
for
(
size_t
i
=
0
;
i
<
m
.
count
;
i
++
)
os
<<
dat2str
(
m
.
data
[
i
])
<<
" "
;
os
<<
dat2str
(
m
.
data
[
i
])
<<
" "
;
os
<<
"}"
;
os
<<
"}"
;
...
@@ -2366,7 +2362,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DiagnosticRetMessage& m )
...
@@ -2366,7 +2362,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, DiagnosticRetMessage& m )
<<
" subf="
<<
dat2str
(
m
.
subf
)
<<
" subf="
<<
dat2str
(
m
.
subf
)
<<
" data["
<<
m
.
count
<<
"]={"
;
<<
" data["
<<
m
.
count
<<
"]={"
;
for
(
s
s
ize_t
i
=
0
;
i
<
m
.
count
;
i
++
)
for
(
size_t
i
=
0
;
i
<
m
.
count
;
i
++
)
os
<<
dat2str
(
m
.
data
[
i
])
<<
" "
;
os
<<
dat2str
(
m
.
data
[
i
])
<<
" "
;
os
<<
"}"
;
os
<<
"}"
;
...
@@ -2414,18 +2410,18 @@ ModbusMessage MEIMessageRDI::transport_msg()
...
@@ -2414,18 +2410,18 @@ ModbusMessage MEIMessageRDI::transport_msg()
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
MEIMessageRDI
::
MEIMessageRDI
(
ModbusMessage
&
m
)
MEIMessageRDI
::
MEIMessageRDI
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
MEIMessageRDI
&
MEIMessageRDI
::
operator
=
(
ModbusMessage
&
m
)
MEIMessageRDI
&
MEIMessageRDI
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
MEIMessageRDI
::
init
(
ModbusMessage
&
m
)
void
MEIMessageRDI
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnMEI
);
assert
(
m
.
func
==
fnMEI
);
...
@@ -2468,7 +2464,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, MEIMessageRDI* m )
...
@@ -2468,7 +2464,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, MEIMessageRDI* m )
return
os
<<
(
*
m
);
return
os
<<
(
*
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
MEIMessageRetRDI
::
MEIMessageRetRDI
(
ModbusMessage
&
m
)
:
MEIMessageRetRDI
::
MEIMessageRetRDI
(
const
ModbusMessage
&
m
)
:
type
(
0
),
type
(
0
),
devID
(
0
),
devID
(
0
),
conformity
(
0
),
conformity
(
0
),
...
@@ -2480,13 +2476,13 @@ MEIMessageRetRDI::MEIMessageRetRDI( ModbusMessage& m ):
...
@@ -2480,13 +2476,13 @@ MEIMessageRetRDI::MEIMessageRetRDI( ModbusMessage& m ):
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
MEIMessageRetRDI
&
MEIMessageRetRDI
::
operator
=
(
ModbusMessage
&
m
)
MEIMessageRetRDI
&
MEIMessageRetRDI
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
RDIObjectInfo
::
RDIObjectInfo
(
ModbusByte
id
,
ModbusByte
*
dat
,
ModbusByte
len
)
:
RDIObjectInfo
::
RDIObjectInfo
(
ModbusByte
id
,
const
ModbusByte
*
dat
,
ModbusByte
len
)
:
id
(
id
),
id
(
id
),
val
(
""
)
val
(
""
)
{
{
...
@@ -2496,7 +2492,7 @@ RDIObjectInfo::RDIObjectInfo( ModbusByte id, ModbusByte* dat, ModbusByte len ):
...
@@ -2496,7 +2492,7 @@ RDIObjectInfo::RDIObjectInfo( ModbusByte id, ModbusByte* dat, ModbusByte len ):
val
.
push_back
(
(
char
)
dat
[
i
]
);
val
.
push_back
(
(
char
)
dat
[
i
]
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
MEIMessageRetRDI
::
pre_init
(
ModbusMessage
&
m
)
void
MEIMessageRetRDI
::
pre_init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnMEI
);
assert
(
m
.
func
==
fnMEI
);
...
@@ -2518,7 +2514,7 @@ void MEIMessageRetRDI::pre_init( ModbusMessage& m )
...
@@ -2518,7 +2514,7 @@ void MEIMessageRetRDI::pre_init( ModbusMessage& m )
objNum
=
m
.
data
[
5
];
objNum
=
m
.
data
[
5
];
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
MEIMessageRetRDI
::
init
(
ModbusMessage
&
m
)
void
MEIMessageRetRDI
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnMEI
);
assert
(
m
.
func
==
fnMEI
);
...
@@ -2550,7 +2546,7 @@ void MEIMessageRetRDI::init( ModbusMessage& m )
...
@@ -2550,7 +2546,7 @@ void MEIMessageRetRDI::init( ModbusMessage& m )
while
(
i
<
m
.
len
&&
dlist
.
size
()
<
objNum
)
while
(
i
<
m
.
len
&&
dlist
.
size
()
<
objNum
)
{
{
ModbusByte
id
=
m
.
data
[
i
];
ModbusByte
id
=
m
.
data
[
i
];
in
t
dlen
=
(
int
)(
m
.
data
[
i
+
1
]);
size_
t
dlen
=
(
int
)(
m
.
data
[
i
+
1
]);
if
(
m
.
len
<
(
i
+
1
+
dlen
)
)
if
(
m
.
len
<
(
i
+
1
+
dlen
)
)
throw
mbException
(
erInvalidFormat
);
throw
mbException
(
erInvalidFormat
);
...
@@ -2699,7 +2695,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, RDIObjectList* l )
...
@@ -2699,7 +2695,7 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, RDIObjectList* l )
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
JournalCommandMessage
::
JournalCommandMessage
(
ModbusMessage
&
m
)
JournalCommandMessage
::
JournalCommandMessage
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnJournalCommand
);
assert
(
m
.
func
==
fnJournalCommand
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -2710,7 +2706,7 @@ JournalCommandMessage::JournalCommandMessage( ModbusMessage& m )
...
@@ -2710,7 +2706,7 @@ JournalCommandMessage::JournalCommandMessage( ModbusMessage& m )
num
=
SWAPSHORT
(
num
);
num
=
SWAPSHORT
(
num
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
JournalCommandMessage
&
JournalCommandMessage
::
operator
=
(
ModbusMessage
&
m
)
JournalCommandMessage
&
JournalCommandMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnJournalCommand
);
assert
(
m
.
func
==
fnJournalCommand
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -2963,14 +2959,14 @@ std::string ModbusRTU::mbErr2Str( ModbusRTU::mbErrCode e )
...
@@ -2963,14 +2959,14 @@ std::string ModbusRTU::mbErr2Str( ModbusRTU::mbErrCode e )
}
}
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
SetDateTimeMessage
::
SetDateTimeMessage
(
ModbusMessage
&
m
)
SetDateTimeMessage
::
SetDateTimeMessage
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnSetDateTime
);
assert
(
m
.
func
==
fnSetDateTime
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
memcpy
(
this
,
&
m
,
sizeof
(
*
this
));
// m.len
memcpy
(
this
,
&
m
,
sizeof
(
*
this
));
// m.len
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
SetDateTimeMessage
&
SetDateTimeMessage
::
operator
=
(
ModbusMessage
&
m
)
SetDateTimeMessage
&
SetDateTimeMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnSetDateTime
);
assert
(
m
.
func
==
fnSetDateTime
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -3059,18 +3055,18 @@ ModbusMessage SetDateTimeMessage::transport_msg()
...
@@ -3059,18 +3055,18 @@ ModbusMessage SetDateTimeMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
SetDateTimeRetMessage
::
SetDateTimeRetMessage
(
ModbusMessage
&
m
)
SetDateTimeRetMessage
::
SetDateTimeRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
SetDateTimeRetMessage
&
SetDateTimeRetMessage
::
operator
=
(
ModbusMessage
&
m
)
SetDateTimeRetMessage
&
SetDateTimeRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
SetDateTimeRetMessage
::
init
(
ModbusMessage
&
m
)
void
SetDateTimeRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnSetDateTime
);
assert
(
m
.
func
==
fnSetDateTime
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -3099,7 +3095,7 @@ SetDateTimeRetMessage::SetDateTimeRetMessage( const SetDateTimeMessage& query )
...
@@ -3099,7 +3095,7 @@ SetDateTimeRetMessage::SetDateTimeRetMessage( const SetDateTimeMessage& query )
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
SetDateTimeRetMessage
::
cpy
(
SetDateTimeRetMessage
&
reply
,
void
SetDateTimeRetMessage
::
cpy
(
SetDateTimeRetMessage
&
reply
,
SetDateTimeMessage
&
query
)
const
SetDateTimeMessage
&
query
)
{
{
reply
=
query
;
reply
=
query
;
}
}
...
@@ -3136,18 +3132,18 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
...
@@ -3136,18 +3132,18 @@ ModbusMessage SetDateTimeRetMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
RemoteServiceMessage
::
RemoteServiceMessage
(
ModbusMessage
&
m
)
RemoteServiceMessage
::
RemoteServiceMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
RemoteServiceMessage
&
RemoteServiceMessage
::
operator
=
(
ModbusMessage
&
m
)
RemoteServiceMessage
&
RemoteServiceMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
RemoteServiceMessage
::
init
(
ModbusMessage
&
m
)
void
RemoteServiceMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnRemoteService
);
assert
(
m
.
func
==
fnRemoteService
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -3164,15 +3160,12 @@ size_t RemoteServiceMessage::szData()
...
@@ -3164,15 +3160,12 @@ size_t RemoteServiceMessage::szData()
return
szHead
()
+
bcnt
+
szCRC
;
return
szHead
()
+
bcnt
+
szCRC
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
RemoteServiceMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
RemoteServiceMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
// RemoteServiceMessage wm(m);
return
(
size_t
)(
m
.
data
[
0
]);
// return (int)(wm.bcnt);
return
(
int
)(
m
.
data
[
0
]);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
RemoteServiceMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
RemoteServiceMessage
&
m
)
...
@@ -3258,12 +3251,12 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
...
@@ -3258,12 +3251,12 @@ ModbusMessage RemoteServiceRetMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadFileRecordMessage
::
ReadFileRecordMessage
(
ModbusMessage
&
m
)
ReadFileRecordMessage
::
ReadFileRecordMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ReadFileRecordMessage
&
ReadFileRecordMessage
::
operator
=
(
ModbusMessage
&
m
)
ReadFileRecordMessage
&
ReadFileRecordMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
...
@@ -3274,7 +3267,7 @@ bool ReadFileRecordMessage::checkFormat()
...
@@ -3274,7 +3267,7 @@ bool ReadFileRecordMessage::checkFormat()
return
(
bcnt
>=
0x07
&&
bcnt
<=
0xF5
);
return
(
bcnt
>=
0x07
&&
bcnt
<=
0xF5
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ReadFileRecordMessage
::
init
(
ModbusMessage
&
m
)
void
ReadFileRecordMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnReadFileRecord
);
assert
(
m
.
func
==
fnReadFileRecord
);
...
@@ -3313,15 +3306,12 @@ size_t ReadFileRecordMessage::szData()
...
@@ -3313,15 +3306,12 @@ size_t ReadFileRecordMessage::szData()
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
SubRequest
)
+
szCRC
;
return
sizeof
(
bcnt
)
+
count
*
sizeof
(
SubRequest
)
+
szCRC
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
int
ReadFileRecordMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
ReadFileRecordMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
if
(
m
.
len
==
0
)
if
(
m
.
len
==
0
)
return
0
;
return
0
;
return
(
int
)(
m
.
data
[
0
]);
return
(
size_t
)(
m
.
data
[
0
]);
// ReadFileRecordMessage rfm(m); // может просто смотреть m.data[0] ?!
// return (int)(rfm.bcnt);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ReadFileRecordMessage
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
ReadFileRecordMessage
&
m
)
...
@@ -3365,18 +3355,18 @@ ModbusMessage FileTransferMessage::transport_msg()
...
@@ -3365,18 +3355,18 @@ ModbusMessage FileTransferMessage::transport_msg()
return
std
::
move
(
mm
);
return
std
::
move
(
mm
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
FileTransferMessage
::
FileTransferMessage
(
ModbusMessage
&
m
)
FileTransferMessage
::
FileTransferMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
FileTransferMessage
&
FileTransferMessage
::
operator
=
(
ModbusMessage
&
m
)
FileTransferMessage
&
FileTransferMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
void
FileTransferMessage
::
init
(
ModbusMessage
&
m
)
void
FileTransferMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnFileTransfer
);
assert
(
m
.
func
==
fnFileTransfer
);
...
@@ -3404,18 +3394,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, FileTransferMessage* m )
...
@@ -3404,18 +3394,18 @@ std::ostream& ModbusRTU::operator<<(std::ostream& os, FileTransferMessage* m )
<<
" numpacket="
<<
m
->
numpacket
;
<<
" numpacket="
<<
m
->
numpacket
;
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
FileTransferRetMessage
::
FileTransferRetMessage
(
ModbusMessage
&
m
)
FileTransferRetMessage
::
FileTransferRetMessage
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
FileTransferRetMessage
&
FileTransferRetMessage
::
operator
=
(
ModbusMessage
&
m
)
FileTransferRetMessage
&
FileTransferRetMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
init
(
m
);
init
(
m
);
return
*
this
;
return
*
this
;
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
void
FileTransferRetMessage
::
init
(
ModbusMessage
&
m
)
void
FileTransferRetMessage
::
init
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
func
==
fnFileTransfer
);
assert
(
m
.
func
==
fnFileTransfer
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
...
@@ -3473,9 +3463,9 @@ void FileTransferRetMessage::clear()
...
@@ -3473,9 +3463,9 @@ void FileTransferRetMessage::clear()
packet
=
0
;
packet
=
0
;
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
int
FileTransferRetMessage
::
getDataLen
(
ModbusMessage
&
m
)
size_t
FileTransferRetMessage
::
getDataLen
(
const
ModbusMessage
&
m
)
{
{
return
m
.
data
[
0
];
return
(
size_t
)
m
.
data
[
0
];
}
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
size_t
FileTransferRetMessage
::
szData
()
size_t
FileTransferRetMessage
::
szData
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment