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
75e7ac27
Commit
75e7ac27
authored
Jun 28, 2017
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixes afer coverity scan (
https://scan.coverity.com
)
parent
8abc23cb
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
74 additions
and
36 deletions
+74
-36
MBExchange.cc
extensions/ModbusMaster/MBExchange.cc
+1
-1
MBExchange.h
extensions/ModbusMaster/MBExchange.h
+3
-3
MBTCPMultiMaster.cc
extensions/ModbusMaster/MBTCPMultiMaster.cc
+22
-6
MBSlave.cc
extensions/ModbusSlave/MBSlave.cc
+10
-3
CallbackTimer.h
include/CallbackTimer.h
+2
-0
UConnector.cc
python/lib/pyUniSet/UConnector.cc
+1
-0
ModbusTypes.cc
src/Communications/Modbus/ModbusTypes.cc
+31
-20
UInterface.cc
src/Interfaces/UInterface.cc
+2
-2
MessageType.cc
src/Various/MessageType.cc
+2
-1
No files found.
extensions/ModbusMaster/MBExchange.cc
View file @
75e7ac27
...
@@ -2162,7 +2162,7 @@ namespace uniset
...
@@ -2162,7 +2162,7 @@ namespace uniset
{
{
p
.
nbyte
=
uniset
::
uni_atoi
(
sbyte
.
c_str
());
p
.
nbyte
=
uniset
::
uni_atoi
(
sbyte
.
c_str
());
if
(
p
.
nbyte
<
0
||
p
.
nbyte
>
VTypes
::
Byte
::
bsize
)
if
(
p
.
nbyte
>
VTypes
::
Byte
::
bsize
)
{
{
mbwarn
<<
myname
<<
"(initRSProperty): BAD nbyte="
<<
p
.
nbyte
mbwarn
<<
myname
<<
"(initRSProperty): BAD nbyte="
<<
p
.
nbyte
<<
". (0 >= nbyte < "
<<
VTypes
::
Byte
::
bsize
<<
")."
<<
endl
;
<<
". (0 >= nbyte < "
<<
VTypes
::
Byte
::
bsize
<<
")."
<<
endl
;
...
...
extensions/ModbusMaster/MBExchange.h
View file @
75e7ac27
...
@@ -95,10 +95,10 @@ namespace uniset
...
@@ -95,10 +95,10 @@ namespace uniset
public
IOBase
public
IOBase
{
{
// only for RTU
// only for RTU
short
nbit
;
/*!< bit number (-1 - not used) */
int16_t
nbit
;
/*!< bit number (-1 - not used) */
VTypes
::
VType
vType
;
/*!< type of value */
VTypes
::
VType
vType
;
/*!< type of value */
u
nsigned
shor
t
rnum
;
/*!< count of registers */
u
int16_
t
rnum
;
/*!< count of registers */
u
nsigned
shor
t
nbyte
;
/*!< byte number (1-2) */
u
int16_
t
nbyte
;
/*!< byte number (1-2) */
RSProperty
()
:
RSProperty
()
:
nbit
(
-
1
),
vType
(
VTypes
::
vtUnknown
),
nbit
(
-
1
),
vType
(
VTypes
::
vtUnknown
),
...
...
extensions/ModbusMaster/MBTCPMultiMaster.cc
View file @
75e7ac27
...
@@ -204,21 +204,36 @@ MBTCPMultiMaster::~MBTCPMultiMaster()
...
@@ -204,21 +204,36 @@ MBTCPMultiMaster::~MBTCPMultiMaster()
{
{
if
(
pollThread
)
if
(
pollThread
)
{
{
pollThread
->
stop
();
try
{
pollThread
->
stop
();
if
(
pollThread
->
isRunning
()
)
if
(
pollThread
->
isRunning
()
)
pollThread
->
join
();
pollThread
->
join
();
}
catch
(
Poco
::
NullPointerException
&
ex
)
{
}
}
}
if
(
checkThread
)
if
(
checkThread
)
{
{
checkThread
->
stop
();
try
{
checkThread
->
stop
();
if
(
checkThread
->
isRunning
()
)
if
(
checkThread
->
isRunning
()
)
checkThread
->
join
();
checkThread
->
join
();
}
catch
(
Poco
::
NullPointerException
&
ex
)
{
}
}
}
mbi
=
mblist
.
rend
();
mbi
=
mblist
.
rend
();
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
std
::
shared_ptr
<
ModbusClient
>
MBTCPMultiMaster
::
initMB
(
bool
reopen
)
std
::
shared_ptr
<
ModbusClient
>
MBTCPMultiMaster
::
initMB
(
bool
reopen
)
...
@@ -504,6 +519,7 @@ void MBTCPMultiMaster::check_thread()
...
@@ -504,6 +519,7 @@ void MBTCPMultiMaster::check_thread()
<<
" respond_id="
<<
it
->
respond_id
<<
" respond_id="
<<
it
->
respond_id
<<
" respond_force="
<<
it
->
respond_force
<<
" respond_force="
<<
it
->
respond_force
<<
" respond="
<<
it
->
respond
<<
" respond="
<<
it
->
respond
<<
" respond_invert="
<<
it
->
respond_invert
<<
" activated="
<<
checkProcActive
()
<<
" activated="
<<
checkProcActive
()
<<
" ]"
<<
" ]"
<<
endl
;
<<
endl
;
...
...
extensions/ModbusSlave/MBSlave.cc
View file @
75e7ac27
...
@@ -512,10 +512,17 @@ namespace uniset
...
@@ -512,10 +512,17 @@ namespace uniset
if
(
tcpserver
&&
tcpserver
->
isActive
()
)
if
(
tcpserver
&&
tcpserver
->
isActive
()
)
tcpserver
->
terminate
();
tcpserver
->
terminate
();
if
(
thr
&&
thr
->
isRunning
()
)
try
{
if
(
thr
&&
thr
->
isRunning
()
)
{
thr
->
stop
();
// thr->join();
}
}
catch
(
Poco
::
NullPointerException
&
ex
)
{
{
thr
->
stop
();
// thr->join();
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
...
...
include/CallbackTimer.h
View file @
75e7ac27
...
@@ -65,6 +65,8 @@ namespace uniset
...
@@ -65,6 +65,8 @@ namespace uniset
*
*
* \note Каждый экземпляр класса CallbackTimer создает поток, поэтому \b желательно не создавать больше одного экземпляра,
* \note Каждый экземпляр класса CallbackTimer создает поток, поэтому \b желательно не создавать больше одного экземпляра,
* для одного процесса (чтобы не порождать много потоков).
* для одного процесса (чтобы не порождать много потоков).
*
* \todo Можно уже переписать с использованием c++11 и далее..
*/
*/
template
<
class
Caller
>
template
<
class
Caller
>
class
CallbackTimer
class
CallbackTimer
...
...
python/lib/pyUniSet/UConnector.cc
View file @
75e7ac27
...
@@ -121,6 +121,7 @@ static UTypes::ShortIOInfo toUTypes( IOController_i::ShortIOInfo i )
...
@@ -121,6 +121,7 @@ static UTypes::ShortIOInfo toUTypes( IOController_i::ShortIOInfo i )
ret
.
tv_sec
=
i
.
tv_sec
;
ret
.
tv_sec
=
i
.
tv_sec
;
ret
.
tv_nsec
=
i
.
tv_nsec
;
ret
.
tv_nsec
=
i
.
tv_nsec
;
ret
.
supplier
=
i
.
supplier
;
ret
.
supplier
=
i
.
supplier
;
ret
.
supplier_node
=
UTypes
::
DefaultID
;
return
ret
;
return
ret
;
}
}
...
...
src/Communications/Modbus/ModbusTypes.cc
View file @
75e7ac27
...
@@ -215,14 +215,13 @@ namespace uniset
...
@@ -215,14 +215,13 @@ namespace uniset
DebugStream
::
IosFlagSaver
ifs
(
os
);
DebugStream
::
IosFlagSaver
ifs
(
os
);
// << setiosflags(ios::showbase) // для вывода в формате 0xNN
// << setiosflags(ios::showbase) // для вывода в формате 0xNN
os
<<
hex
<<
showbase
<<
setfill
(
'0'
);
// << showbase;
ostringstream
s
;
s
<<
hex
<<
showbase
<<
setfill
(
'0'
);
// << showbase;
for
(
size_t
i
=
0
;
i
<
len
;
i
++
)
for
(
size_t
i
=
0
;
i
<
len
;
i
++
)
os
<<
setw
(
2
)
<<
(
short
)(
m
[
i
])
<<
" "
;
s
<<
setw
(
2
)
<<
(
short
)(
m
[
i
])
<<
" "
;
// s << "<" << setw(2) << (int)(m[i]) << ">";
return
os
;
return
os
<<
s
.
str
()
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
const
ModbusHeader
&
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
const
ModbusHeader
&
m
)
...
@@ -495,7 +494,12 @@ namespace uniset
...
@@ -495,7 +494,12 @@ namespace uniset
{
{
os
<<
"["
;
os
<<
"["
;
for
(
size_t
i
=
d
.
b
.
size
()
-
1
;
i
>=
0
;
i
--
)
int
max
=
d
.
b
.
size
();
if
(
max
>
0
)
max
--
;
// вывод в обратном порядке
for
(
int
i
=
max
;
i
>=
0
;
i
--
)
os
<<
d
.
b
[
i
];
os
<<
d
.
b
[
i
];
os
<<
"]"
;
os
<<
"]"
;
...
@@ -556,7 +560,13 @@ namespace uniset
...
@@ -556,7 +560,13 @@ namespace uniset
{
{
os
<<
"["
;
os
<<
"["
;
for
(
size_t
i
=
d
.
b
.
size
()
-
1
;
i
>=
0
;
i
--
)
int
sz
=
d
.
b
.
size
();
if
(
sz
>
0
)
sz
--
;
// выводим в обратном порядке
for
(
int
i
=
sz
;
i
>=
0
;
i
--
)
os
<<
d
.
b
[
i
];
os
<<
d
.
b
[
i
];
os
<<
"]"
;
os
<<
"]"
;
...
@@ -1351,13 +1361,13 @@ namespace uniset
...
@@ -1351,13 +1361,13 @@ namespace uniset
DataBits
b
(
data
[
bcnt
-
1
]);
DataBits
b
(
data
[
bcnt
-
1
]);
b
.
b
[
qnum
]
=
state
;
b
.
b
[
qnum
]
=
state
;
data
[
bcnt
-
1
]
=
b
.
mbyte
();
data
[
bcnt
-
1
]
=
b
.
mbyte
();
quant
++
;
++
quant
;
return
(
quant
-
1
);
return
(
quant
-
1
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
bool
ForceCoilsMessage
::
setBit
(
uint8_t
nbit
,
bool
state
)
bool
ForceCoilsMessage
::
setBit
(
uint8_t
nbit
,
bool
state
)
{
{
if
(
nbit
<
0
||
nbit
>=
quant
)
if
(
nbit
>=
quant
)
return
false
;
return
false
;
size_t
bnum
=
nbit
/
BitsPerByte
;
size_t
bnum
=
nbit
/
BitsPerByte
;
...
@@ -2768,7 +2778,7 @@ namespace uniset
...
@@ -2768,7 +2778,7 @@ namespace uniset
{
{
assert
(
m
.
pduhead
.
func
==
fnJournalCommand
);
assert
(
m
.
pduhead
.
func
==
fnJournalCommand
);
//memset(this, 0, sizeof(*this));
//memset(this, 0, sizeof(*this));
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
*
this
));
// m.len
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
m
.
pduhead
));
// m.len
// переворачиваем слова
// переворачиваем слова
cmd
=
SWAPSHORT
(
cmd
);
cmd
=
SWAPSHORT
(
cmd
);
...
@@ -2779,7 +2789,7 @@ namespace uniset
...
@@ -2779,7 +2789,7 @@ namespace uniset
{
{
assert
(
m
.
pduhead
.
func
==
fnJournalCommand
);
assert
(
m
.
pduhead
.
func
==
fnJournalCommand
);
// memset(this, 0, sizeof(*this));
// memset(this, 0, sizeof(*this));
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
*
this
));
// m.len
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
m
.
pduhead
));
// m.len
// переворачиваем слова
// переворачиваем слова
cmd
=
SWAPSHORT
(
cmd
);
cmd
=
SWAPSHORT
(
cmd
);
...
@@ -3034,14 +3044,14 @@ namespace uniset
...
@@ -3034,14 +3044,14 @@ namespace uniset
{
{
assert
(
m
.
pduhead
.
func
==
fnSetDateTime
);
assert
(
m
.
pduhead
.
func
==
fnSetDateTime
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
*
this
));
// m.len
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
m
.
pduhead
));
// m.len
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
SetDateTimeMessage
&
SetDateTimeMessage
::
operator
=
(
const
ModbusMessage
&
m
)
SetDateTimeMessage
&
SetDateTimeMessage
::
operator
=
(
const
ModbusMessage
&
m
)
{
{
assert
(
m
.
pduhead
.
func
==
fnSetDateTime
);
assert
(
m
.
pduhead
.
func
==
fnSetDateTime
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
*
this
));
// m.len
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
m
.
pduhead
));
// m.len
return
*
this
;
return
*
this
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
@@ -3055,7 +3065,8 @@ namespace uniset
...
@@ -3055,7 +3065,8 @@ namespace uniset
{
{
DebugStream
::
IosFlagSaver
ifs
(
os
);
DebugStream
::
IosFlagSaver
ifs
(
os
);
os
<<
setfill
(
'0'
)
ostringstream
s
;
s
<<
setfill
(
'0'
)
<<
setw
(
2
)
<<
(
int
)
m
.
day
<<
"-"
<<
setw
(
2
)
<<
(
int
)
m
.
day
<<
"-"
<<
setw
(
2
)
<<
(
int
)
m
.
mon
<<
"-"
<<
setw
(
2
)
<<
(
int
)
m
.
mon
<<
"-"
<<
setw
(
2
)
<<
(
int
)
m
.
century
<<
setw
(
2
)
<<
(
int
)
m
.
century
...
@@ -3064,7 +3075,7 @@ namespace uniset
...
@@ -3064,7 +3075,7 @@ namespace uniset
<<
setw
(
2
)
<<
(
int
)
m
.
min
<<
":"
<<
setw
(
2
)
<<
(
int
)
m
.
min
<<
":"
<<
setw
(
2
)
<<
(
int
)
m
.
sec
;
<<
setw
(
2
)
<<
(
int
)
m
.
sec
;
return
os
;
return
os
<<
s
.
str
()
;
}
}
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
SetDateTimeMessage
*
m
)
std
::
ostream
&
ModbusRTU
::
operator
<<
(
std
::
ostream
&
os
,
SetDateTimeMessage
*
m
)
...
@@ -3102,7 +3113,7 @@ namespace uniset
...
@@ -3102,7 +3113,7 @@ namespace uniset
ModbusMessage
SetDateTimeMessage
::
transport_msg
()
ModbusMessage
SetDateTimeMessage
::
transport_msg
()
{
{
ModbusMessage
mm
;
ModbusMessage
mm
;
assert
(
sizeof
(
ModbusMessage
)
>=
(
unsigned
int
)
szModbusHeader
+
szData
()
);
assert
(
sizeof
(
ModbusMessage
)
>=
szModbusHeader
+
szData
()
);
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
...
@@ -3142,7 +3153,7 @@ namespace uniset
...
@@ -3142,7 +3153,7 @@ namespace uniset
{
{
assert
(
m
.
pduhead
.
func
==
fnSetDateTime
);
assert
(
m
.
pduhead
.
func
==
fnSetDateTime
);
memset
(
this
,
0
,
sizeof
(
*
this
));
memset
(
this
,
0
,
sizeof
(
*
this
));
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
*
this
));
// m.len
memcpy
(
this
,
&
m
.
pduhead
,
sizeof
(
m
.
pduhead
));
// m.len
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
SetDateTimeRetMessage
::
SetDateTimeRetMessage
(
ModbusAddr
_from
)
SetDateTimeRetMessage
::
SetDateTimeRetMessage
(
ModbusAddr
_from
)
...
@@ -3175,7 +3186,7 @@ namespace uniset
...
@@ -3175,7 +3186,7 @@ namespace uniset
ModbusMessage
SetDateTimeRetMessage
::
transport_msg
()
ModbusMessage
SetDateTimeRetMessage
::
transport_msg
()
{
{
ModbusMessage
mm
;
ModbusMessage
mm
;
assert
(
sizeof
(
ModbusMessage
)
>=
(
unsigned
int
)
szModbusHeader
+
szData
()
);
assert
(
sizeof
(
ModbusMessage
)
>=
szModbusHeader
+
szData
()
);
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
...
@@ -3290,7 +3301,7 @@ namespace uniset
...
@@ -3290,7 +3301,7 @@ namespace uniset
ModbusMessage
RemoteServiceRetMessage
::
transport_msg
()
ModbusMessage
RemoteServiceRetMessage
::
transport_msg
()
{
{
ModbusMessage
mm
;
ModbusMessage
mm
;
assert
(
sizeof
(
ModbusMessage
)
>=
(
unsigned
int
)
szModbusHeader
+
szData
()
);
assert
(
sizeof
(
ModbusMessage
)
>=
szModbusHeader
+
szData
()
);
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
...
@@ -3545,7 +3556,7 @@ namespace uniset
...
@@ -3545,7 +3556,7 @@ namespace uniset
ModbusMessage
FileTransferRetMessage
::
transport_msg
()
ModbusMessage
FileTransferRetMessage
::
transport_msg
()
{
{
ModbusMessage
mm
;
ModbusMessage
mm
;
assert
(
sizeof
(
ModbusMessage
)
>=
(
unsigned
int
)(
szModbusHeader
+
szData
())
);
assert
(
sizeof
(
ModbusMessage
)
>=
(
szModbusHeader
+
szData
())
);
// копируем заголовок и данные
// копируем заголовок и данные
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
memcpy
(
&
mm
.
pduhead
,
this
,
szModbusHeader
);
...
...
src/Interfaces/UInterface.cc
View file @
75e7ac27
...
@@ -1332,10 +1332,10 @@ namespace uniset
...
@@ -1332,10 +1332,10 @@ namespace uniset
void
UInterface
::
CacheOfResolve
::
erase
(
const
uniset
::
ObjectId
id
,
const
uniset
::
ObjectId
node
)
const
noexcept
void
UInterface
::
CacheOfResolve
::
erase
(
const
uniset
::
ObjectId
id
,
const
uniset
::
ObjectId
node
)
const
noexcept
{
{
uniset
::
uniset_rwmutex_wrlock
l
(
cmutex
);
try
try
{
{
uniset
::
uniset_rwmutex_wrlock
l
(
cmutex
);
auto
it
=
mcache
.
find
(
uniset
::
key
(
id
,
node
)
);
auto
it
=
mcache
.
find
(
uniset
::
key
(
id
,
node
)
);
if
(
it
!=
mcache
.
end
()
)
if
(
it
!=
mcache
.
end
()
)
...
...
src/Various/MessageType.cc
View file @
75e7ac27
...
@@ -116,7 +116,8 @@ namespace uniset
...
@@ -116,7 +116,8 @@ namespace uniset
}
}
SensorMessage
::
SensorMessage
(
int
dummy
)
noexcept
:
SensorMessage
::
SensorMessage
(
int
dummy
)
noexcept
:
Message
(
1
)
// вызываем dummy-конструктор, который не инициализирует данные (оптимизация)
Message
(
1
),
// вызываем dummy-конструктор, который не инициализирует данные (оптимизация)
ci
(
IOController_i
::
CalibrateInfo
())
{
{
type
=
Message
::
SensorInfo
;
type
=
Message
::
SensorInfo
;
}
}
...
...
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