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
e2cbe9cd
Commit
e2cbe9cd
authored
Feb 14, 2011
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'new_mbtcp'
parents
2b9e27eb
337de1f1
Hide whitespace changes
Inline
Side-by-side
Showing
157 changed files
with
877 additions
and
560 deletions
+877
-560
DBInterface.cc
Utilities/DBServer-MySQL/DBInterface.cc
+0
-1
DBInterface.h
Utilities/DBServer-MySQL/DBInterface.h
+0
-2
DBServer_MySQL.cc
Utilities/DBServer-MySQL/DBServer_MySQL.cc
+0
-1
DBServer_MySQL.h
Utilities/DBServer-MySQL/DBServer_MySQL.h
+0
-2
MBSlave.h
Utilities/MBTester/MBSlave.h
+0
-1
MBTCPServer.h
Utilities/MBTester/MBTCPServer.h
+0
-2
NullController.h
Utilities/NullController/NullController.h
+0
-1
TestGen.h
Utilities/codegen/tests/TestGen.h
+0
-1
TestGenAlone.h
Utilities/codegen/tests/TestGenAlone.h
+0
-1
ComediInterface.h
extensions/IOControl/ComediInterface.h
+0
-1
IOControl.h
extensions/IOControl/IOControl.h
+0
-1
MBTCPMaster.cc
extensions/MBTCPMaster/MBTCPMaster.cc
+686
-241
MBTCPMaster.h
extensions/MBTCPMaster/MBTCPMaster.h
+83
-23
Makefile.am
extensions/MBTCPMaster/Makefile.am
+1
-1
libUniSetMBTCPMaster.pc.in
extensions/MBTCPMaster/libUniSetMBTCPMaster.pc.in
+1
-1
RTUExchange.cc
extensions/RTUExchange/RTUExchange.cc
+1
-1
RTUStorage.h
extensions/RTUExchange/RTUStorage.h
+0
-2
SMViewer.h
extensions/SMViewer/SMViewer.h
+0
-1
SharedMemory.h
extensions/SharedMemory/SharedMemory.h
+0
-1
UDPPacket.h
extensions/UDPExchange/UDPPacket.h
+0
-1
UniExchange.h
extensions/UniNetwork/UniExchange.h
+0
-1
DigitalFilter.h
extensions/include/DigitalFilter.h
+0
-1
Extensions.h
extensions/include/Extensions.h
+0
-1
IOBase.h
extensions/include/IOBase.h
+0
-1
MTR.h
extensions/include/MTR.h
+0
-1
PID.h
extensions/include/PID.h
+0
-1
SMInterface.h
extensions/include/SMInterface.h
+2
-2
VTypes.h
extensions/include/VTypes.h
+0
-1
SMInterface.cc
extensions/lib/SMInterface.cc
+2
-0
CallBackTimer.h
include/CallBackTimer.h
+0
-2
CallBackTimer_template.h
include/CallBackTimer_template.h
+0
-2
Configuration.h
include/Configuration.h
+0
-2
DBServer.h
include/DBServer.h
+0
-2
DefaultMessageInterface.h
include/DefaultMessageInterface.h
+0
-3
IOController.h
include/IOController.h
+0
-2
IONotifyController.h
include/IONotifyController.h
+0
-2
IONotifyController_LT.h
include/IONotifyController_LT.h
+0
-2
IORFile.h
include/IORFile.h
+0
-2
DigitalCard.h
include/IOs/DigitalCard.h
+0
-2
DigitalCard_O5600.h
include/IOs/DigitalCard_O5600.h
+0
-2
IOAccess.h
include/IOs/IOAccess.h
+0
-4
IOAccessOld.h
include/IOs/IOAccessOld.h
+0
-2
ISRestorer.h
include/ISRestorer.h
+0
-4
InfoServer.h
include/InfoServer.h
+0
-2
LT_Object.h
include/LT_Object.h
+0
-2
MessageInterface.h
include/MessageInterface.h
+0
-2
MessageInterface_XML.h
include/MessageInterface_XML.h
+0
-3
MessageInterface_idXML.h
include/MessageInterface_idXML.h
+0
-2
MessageType.h
include/MessageType.h
+0
-2
Mutex.h
include/Mutex.h
+0
-4
NCRestorer.h
include/NCRestorer.h
+1
-1
ORepHelpers.h
include/ORepHelpers.h
+0
-2
ObjectIndex.h
include/ObjectIndex.h
+0
-2
ObjectIndex_Array.h
include/ObjectIndex_Array.h
+0
-2
ObjectIndex_XML.h
include/ObjectIndex_XML.h
+0
-2
ObjectIndex_idXML.h
include/ObjectIndex_idXML.h
+0
-1
ObjectRepository.h
include/ObjectRepository.h
+0
-2
ObjectRepositoryFactory.h
include/ObjectRepositoryFactory.h
+0
-2
ObjectsActivator.h
include/ObjectsActivator.h
+0
-2
ObjectsManager.h
include/ObjectsManager.h
+0
-2
ObjectsManager_LT.h
include/ObjectsManager_LT.h
+0
-2
OmniThreadCreator.h
include/OmniThreadCreator.h
+0
-2
PassiveObject.h
include/PassiveObject.h
+0
-2
PassiveTimer.h
include/PassiveTimer.h
+0
-10
PosixThread.h
include/PosixThread.h
+0
-2
ProxyManager.h
include/ProxyManager.h
+0
-2
Pulse.h
include/Pulse.h
+0
-2
RepositoryAgent.h
include/RepositoryAgent.h
+0
-2
Restorer.h
include/Restorer.h
+0
-2
RunLock.h
include/RunLock.h
+0
-2
SMonitor.h
include/SMonitor.h
+0
-2
SViewer.h
include/SViewer.h
+0
-3
SandClock.h
include/SandClock.h
+0
-1
StorageInterface.h
include/StorageInterface.h
+0
-3
Storages.h
include/Storages.h
+0
-2
SystemGuard.h
include/SystemGuard.h
+0
-2
TextDBIndex.h
include/TextDBIndex.h
+0
-2
TextFileIndex.h
include/TextFileIndex.h
+0
-2
TextIndex.h
include/TextIndex.h
+0
-2
ThreadCreator.h
include/ThreadCreator.h
+0
-2
TimerService.h
include/TimerService.h
+0
-2
Trigger.h
include/Trigger.h
+0
-2
TriggerAND.h
include/TriggerAND.h
+0
-2
TriggerAND_template.h
include/TriggerAND_template.h
+0
-2
TriggerOR.h
include/TriggerOR.h
+0
-2
TriggerOR_template.h
include/TriggerOR_template.h
+0
-2
TriggerOutput.h
include/TriggerOutput.h
+0
-2
TriggerOutput_template.h
include/TriggerOutput_template.h
+0
-2
UniSetObject.h
include/UniSetObject.h
+0
-2
UniSetObject_LT.h
include/UniSetObject_LT.h
+0
-2
UniSetObserver.h
include/UniSetObserver.h
+0
-2
UniSetTypes.h
include/UniSetTypes.h
+0
-2
UniXML.h
include/UniXML.h
+0
-2
UniversalInterface.h
include/UniversalInterface.h
+0
-2
WDTInterface.h
include/WDTInterface.h
+0
-1
ModbusClient.h
include/modbus/ModbusClient.h
+0
-1
ModbusHelpers.h
include/modbus/ModbusHelpers.h
+0
-1
ModbusRTUMaster.h
include/modbus/ModbusRTUMaster.h
+0
-1
ModbusRTUSlave.h
include/modbus/ModbusRTUSlave.h
+0
-1
ModbusRTUSlaveSlot.h
include/modbus/ModbusRTUSlaveSlot.h
+0
-1
ModbusServer.h
include/modbus/ModbusServer.h
+0
-1
ModbusServerSlot.h
include/modbus/ModbusServerSlot.h
+0
-1
ModbusTCPCore.h
include/modbus/ModbusTCPCore.h
+0
-1
ModbusTCPMaster.h
include/modbus/ModbusTCPMaster.h
+0
-2
ModbusTCPServer.h
include/modbus/ModbusTCPServer.h
+0
-1
ModbusTCPServerSlot.h
include/modbus/ModbusTCPServerSlot.h
+0
-1
ModbusTypes.h
include/modbus/ModbusTypes.h
+0
-1
ComPort.cc
src/Communications/ComPort.cc
+0
-1
ModbusTCPMaster.cc
src/Communications/Modbus/ModbusTCPMaster.cc
+83
-34
DigitalCard_O5600.cc
src/IOs/DigitalCard_O5600.cc
+0
-3
UniversalInterface.cc
src/Interfaces/UniversalInterface.cc
+0
-1
ORepHelpers.cc
src/ObjectRepository/ORepHelpers.cc
+0
-1
ObjectRepository.cc
src/ObjectRepository/ObjectRepository.cc
+0
-1
ObjectRepositoryFactory.cc
src/ObjectRepository/ObjectRepositoryFactory.cc
+0
-1
ObjectsActivator.cc
src/ObjectRepository/ObjectsActivator.cc
+0
-1
ObjectsManager.cc
src/ObjectRepository/ObjectsManager.cc
+0
-1
ObjectsManager_LT.cc
src/ObjectRepository/ObjectsManager_LT.cc
+0
-1
PassiveObject.cc
src/ObjectRepository/PassiveObject.cc
+0
-1
ProxyManager.cc
src/ObjectRepository/ProxyManager.cc
+0
-1
UniSetObject.cc
src/ObjectRepository/UniSetObject.cc
+0
-1
UniSetObject_LT.cc
src/ObjectRepository/UniSetObject_LT.cc
+0
-1
UniSetTypes.cc
src/ObjectRepository/UniSetTypes.cc
+0
-1
IOController.cc
src/Processes/IOController.cc
+0
-1
IONotifyController.cc
src/Processes/IONotifyController.cc
+0
-1
IONotifyController_LT.cc
src/Processes/IONotifyController_LT.cc
+0
-1
UniSetObserver.cc
src/Processes/UniSetObserver.cc
+0
-1
DBServer.cc
src/Services/DBServer.cc
+0
-1
InfoServer.cc
src/Services/InfoServer.cc
+0
-1
RepositoryAgent.cc
src/Services/RepositoryAgent.cc
+0
-1
TimerService.cc
src/Services/TimerService.cc
+0
-1
PosixThread.cc
src/Threads/PosixThread.cc
+0
-1
PassiveSysTimer.cc
src/Timers/PassiveSysTimer.cc
+0
-1
PassiveTimer.cc
src/Timers/PassiveTimer.cc
+0
-1
ThrPassiveTimer.cc
src/Timers/ThrPassiveTimer.cc
+0
-1
WaitingPassiveTimer.cc
src/Timers/WaitingPassiveTimer.cc
+0
-1
Configuration.cc
src/Various/Configuration.cc
+0
-1
CycleStorage.cc
src/Various/CycleStorage.cc
+0
-1
ISRestorer.cc
src/Various/ISRestorer.cc
+0
-1
ISRestorer_XML.cc
src/Various/ISRestorer_XML.cc
+0
-1
LT_Object.cc
src/Various/LT_Object.cc
+0
-1
MessageInterface_idXML.cc
src/Various/MessageInterface_idXML.cc
+0
-1
MessageType.cc
src/Various/MessageType.cc
+0
-1
Mutex.cc
src/Various/Mutex.cc
+0
-1
NCRestorer.cc
src/Various/NCRestorer.cc
+0
-1
NCRestorer_XML.cc
src/Various/NCRestorer_XML.cc
+16
-21
Restorer_XML.cc
src/Various/Restorer_XML.cc
+0
-1
RunLock.cc
src/Various/RunLock.cc
+0
-1
SViewer.cc
src/Various/SViewer.cc
+0
-1
SystemGuard.cc
src/Various/SystemGuard.cc
+0
-1
TableBlockStorage.cc
src/Various/TableBlockStorage.cc
+0
-1
TableStorage.cc
src/Various/TableStorage.cc
+0
-1
TextFileIndex.cc
src/Various/TextFileIndex.cc
+0
-1
TextIndex.cc
src/Various/TextIndex.cc
+0
-1
UniXML.cc
src/Various/UniXML.cc
+0
-2
JrnTest.cc
tests/JrnTests/JrnTest.cc
+0
-1
XmlTest.cc
tests/UniXmlTest/XmlTest.cc
+0
-1
passivetimer.cc
tests/passivetimer.cc
+1
-1
No files found.
Utilities/DBServer-MySQL/DBInterface.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:49 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
...
Utilities/DBServer-MySQL/DBInterface.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/08/28 20:55:53 $
* \version $Id: DBInterface.h,v 1.1 2005/08/28 20:55:53 vpashka Exp $
*/
*/
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
#ifndef DBInterface_H_
#ifndef DBInterface_H_
...
...
Utilities/DBServer-MySQL/DBServer_MySQL.cc
View file @
e2cbe9cd
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
/*! \file
/*! \file
* \brief файл реализации DB-сервера
* \brief файл реализации DB-сервера
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/02/26 19:55:37 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
Utilities/DBServer-MySQL/DBServer_MySQL.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/08/28 20:55:53 $
* \version $Id: DBServer_MySQL.h,v 1.1 2005/08/28 20:55:53 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef DBServer_MySQL_H_
#ifndef DBServer_MySQL_H_
...
...
Utilities/MBTester/MBSlave.h
View file @
e2cbe9cd
/*! $Id: MBSlave.h,v 1.6 2009/02/24 20:27:24 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef MBSlave_H_
#ifndef MBSlave_H_
#define MBSlave_H_
#define MBSlave_H_
...
...
Utilities/MBTester/MBTCPServer.h
View file @
e2cbe9cd
/*! $Id: MBTCPServer.h,v 1.1 2008/11/22 23:22:23 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef MBTCPServer_H_
#ifndef MBTCPServer_H_
#define MBTCPServer_H_
#define MBTCPServer_H_
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
...
Utilities/NullController/NullController.h
View file @
e2cbe9cd
// $Id: NullController.h,v 1.11 2008/02/10 03:21:41 vpashka Exp $
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef NullController_H_
#ifndef NullController_H_
#define NullController_H_
#define NullController_H_
...
...
Utilities/codegen/tests/TestGen.h
View file @
e2cbe9cd
// $Id$
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef TestGen_H_
#ifndef TestGen_H_
#define TestGen_H_
#define TestGen_H_
...
...
Utilities/codegen/tests/TestGenAlone.h
View file @
e2cbe9cd
// $Id$
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef TestGenAlone_H_
#ifndef TestGenAlone_H_
#define TestGenAlone_H_
#define TestGenAlone_H_
...
...
extensions/IOControl/ComediInterface.h
View file @
e2cbe9cd
// $Id: ComediInterface.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef ComediInterface_H_
#ifndef ComediInterface_H_
#define ComediInterface_H_
#define ComediInterface_H_
...
...
extensions/IOControl/IOControl.h
View file @
e2cbe9cd
// $Id: IOControl.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef IOControl_H_
#ifndef IOControl_H_
#define IOControl_H_
#define IOControl_H_
...
...
extensions/MBTCPMaster/MBTCPMaster.cc
View file @
e2cbe9cd
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#include <cmath>
#include <cmath>
#include <limits>
#include <sstream>
#include <sstream>
#include <Exceptions.h>
#include <Exceptions.h>
#include <extensions/Extensions.h>
#include <extensions/Extensions.h>
...
@@ -12,6 +13,7 @@ using namespace UniSetExtensions;
...
@@ -12,6 +13,7 @@ using namespace UniSetExtensions;
MBTCPMaster
::
MBTCPMaster
(
UniSetTypes
::
ObjectId
objId
,
UniSetTypes
::
ObjectId
shmId
,
MBTCPMaster
::
MBTCPMaster
(
UniSetTypes
::
ObjectId
objId
,
UniSetTypes
::
ObjectId
shmId
,
SharedMemory
*
ic
,
const
std
::
string
prefix
)
:
SharedMemory
*
ic
,
const
std
::
string
prefix
)
:
UniSetObject_LT
(
objId
),
UniSetObject_LT
(
objId
),
allInitOK
(
false
),
mb
(
0
),
mb
(
0
),
shm
(
0
),
shm
(
0
),
initPause
(
0
),
initPause
(
0
),
...
@@ -20,11 +22,11 @@ force_out(false),
...
@@ -20,11 +22,11 @@ force_out(false),
mbregFromID
(
false
),
mbregFromID
(
false
),
activated
(
false
),
activated
(
false
),
noQueryOptimization
(
false
),
noQueryOptimization
(
false
),
force_disconnect
(
false
),
force_disconnect
(
true
),
allNotRespond
(
false
),
prefix
(
prefix
),
prefix
(
prefix
),
no_extimer
(
false
),
no_extimer
(
false
),
poll_count
(
0
)
poll_count
(
0
),
pollThread
(
0
)
{
{
// cout << "$ $" << endl;
// cout << "$ $" << endl;
...
@@ -64,10 +66,10 @@ poll_count(0)
...
@@ -64,10 +66,10 @@ poll_count(0)
throw
UniSetTypes
::
SystemError
(
myname
+
"(MBMaster): Unknown inet port...(Use: "
+
tmp
+
")"
);
throw
UniSetTypes
::
SystemError
(
myname
+
"(MBMaster): Unknown inet port...(Use: "
+
tmp
+
")"
);
recv_timeout
=
conf
->
getArgPInt
(
"--"
+
prefix
+
"-recv-timeout"
,
it
.
getProp
(
"recv_timeout"
),
50
);
recv_timeout
=
conf
->
getArgPInt
(
"--"
+
prefix
+
"-recv-timeout"
,
it
.
getProp
(
"recv_timeout"
),
50
0
);
int
alltout
=
conf
->
getArgPInt
(
"--"
+
prefix
+
"-all-timeout"
,
it
.
getProp
(
"all_timeout"
),
2
000
);
int
tout
=
conf
->
getArgPInt
(
"--"
+
prefix
+
"-timeout"
,
it
.
getProp
(
"timeout"
),
5
000
);
pt
AllNotRespond
.
setTiming
(
all
tout
);
pt
Timeout
.
setTiming
(
tout
);
noQueryOptimization
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-no-query-optimization"
,
it
.
getProp
(
"no_query_optimization"
));
noQueryOptimization
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-no-query-optimization"
,
it
.
getProp
(
"no_query_optimization"
));
...
@@ -80,7 +82,9 @@ poll_count(0)
...
@@ -80,7 +82,9 @@ poll_count(0)
force
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-force"
,
it
.
getProp
(
"force"
));
force
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-force"
,
it
.
getProp
(
"force"
));
force_out
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-force-out"
,
it
.
getProp
(
"force_out"
));
force_out
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-force-out"
,
it
.
getProp
(
"force_out"
));
force_disconnect
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-force-disconnect"
,
it
.
getProp
(
"force_disconnect"
));
force_disconnect
=
conf
->
getArgInt
(
"--"
+
prefix
+
"-persistent-connection"
,
it
.
getProp
(
"persistent_connection"
))
?
false
:
true
;
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(init): persisten-connection="
<<
(
!
force_disconnect
)
<<
endl
;
if
(
shm
->
isLocalwork
()
)
if
(
shm
->
isLocalwork
()
)
{
{
...
@@ -135,6 +139,8 @@ poll_count(0)
...
@@ -135,6 +139,8 @@ poll_count(0)
// abort();
// abort();
poll_count
=
-
1
;
poll_count
=
-
1
;
pollThread
=
new
ThreadCreator
<
MBTCPMaster
>
(
this
,
&
MBTCPMaster
::
poll_thread
);
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
MBTCPMaster
::~
MBTCPMaster
()
MBTCPMaster
::~
MBTCPMaster
()
...
@@ -147,7 +153,8 @@ MBTCPMaster::~MBTCPMaster()
...
@@ -147,7 +153,8 @@ MBTCPMaster::~MBTCPMaster()
delete
it1
->
second
;
delete
it1
->
second
;
}
}
delete
pollThread
;
delete
mb
;
delete
mb
;
delete
shm
;
delete
shm
;
}
}
...
@@ -190,6 +197,8 @@ void MBTCPMaster::initMB( bool reopen )
...
@@ -190,6 +197,8 @@ void MBTCPMaster::initMB( bool reopen )
delete
mb
;
delete
mb
;
mb
=
0
;
mb
=
0
;
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
waitSMReady
()
void
MBTCPMaster
::
waitSMReady
()
...
@@ -223,11 +232,8 @@ void MBTCPMaster::timerInfo( TimerMessage *tm )
...
@@ -223,11 +232,8 @@ void MBTCPMaster::timerInfo( TimerMessage *tm )
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
step
()
void
MBTCPMaster
::
step
()
{
{
{
updateRespondSensors
();
uniset_mutex_lock
l
(
pollMutex
,
2000
);
poll
();
}
if
(
!
activated
)
if
(
!
activated
)
return
;
return
;
...
@@ -247,30 +253,121 @@ void MBTCPMaster::step()
...
@@ -247,30 +253,121 @@ void MBTCPMaster::step()
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
poll
()
void
MBTCPMaster
::
updateRespondSensors
()
{
{
if
(
trAllNotRespond
.
hi
(
allNotRespond
)
)
bool
tcpIsTimeout
=
false
;
ptAllNotRespond
.
reset
();
if
(
allNotRespond
&&
mb
&&
ptAllNotRespond
.
checkTime
()
)
{
{
ptAllNotRespond
.
reset
(
);
uniset_mutex_lock
l
(
tcpMutex
);
// initMB(true
);
tcpIsTimeout
=
pollActivated
&&
ptTimeout
.
checkTime
(
);
}
}
if
(
dlog
.
debugging
(
Debug
::
LEVEL4
)
)
dlog
[
Debug
::
LEVEL4
]
<<
myname
<<
": tcpTimeout="
<<
tcpIsTimeout
<<
endl
;
for
(
MBTCPMaster
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
{
RTUDevice
*
d
(
it1
->
second
);
if
(
tcpIsTimeout
)
d
->
resp_real
=
false
;
if
(
dlog
.
debugging
(
Debug
::
LEVEL4
)
)
{
dlog
[
Debug
::
LEVEL4
]
<<
myname
<<
": check respond addr="
<<
ModbusRTU
::
addr2str
(
d
->
mbaddr
)
<<
" respond_id="
<<
d
->
resp_id
<<
" real="
<<
d
->
resp_real
<<
" state="
<<
d
->
resp_state
<<
endl
;
}
if
(
d
->
checkRespond
()
&&
d
->
resp_id
!=
DefaultObjectId
)
{
try
{
bool
set
=
d
->
resp_invert
?
!
d
->
resp_state
:
d
->
resp_state
;
shm
->
localSaveState
(
d
->
resp_dit
,
d
->
resp_id
,
set
,
getId
());
}
catch
(
Exception
&
ex
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(step): (respond) "
<<
ex
<<
std
::
endl
;
}
}
}
}
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
poll_thread
()
{
cerr
<<
"*********** polling starting.."
<<
endl
;
{
uniset_mutex_lock
l
(
pollMutex
,
300
);
ptTimeout
.
reset
();
}
while
(
checkProcActive
()
)
{
try
{
poll
();
}
catch
(...){}
if
(
!
checkProcActive
()
)
break
;
msleep
(
polltime
);
}
cerr
<<
"*********** polling finished.."
<<
endl
;
}
// -----------------------------------------------------------------------------
bool
MBTCPMaster
::
checkProcActive
()
{
uniset_mutex_lock
l
(
actMutex
,
300
);
return
activated
;
}
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
setProcActive
(
bool
st
)
{
uniset_mutex_lock
l
(
actMutex
,
400
);
activated
=
st
;
}
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
poll
()
{
if
(
!
mb
)
if
(
!
mb
)
{
{
initMB
(
false
);
if
(
!
mb
)
{
{
for
(
MBTCPMaster
::
RTUDeviceMap
::
iterator
it
=
rmap
.
begin
();
it
!=
rmap
.
end
();
++
it
)
uniset_mutex_lock
l
(
pollMutex
,
300
);
it
->
second
->
resp_real
=
false
;
pollActivated
=
false
;
initMB
(
false
);
if
(
!
mb
)
{
for
(
MBTCPMaster
::
RTUDeviceMap
::
iterator
it
=
rmap
.
begin
();
it
!=
rmap
.
end
();
++
it
)
it
->
second
->
resp_real
=
false
;
}
}
}
if
(
!
checkProcActive
()
)
return
;
updateSM
();
updateSM
();
allInitOK
=
false
;
return
;
return
;
}
}
{
uniset_mutex_lock
l
(
pollMutex
);
pollActivated
=
true
;
ptTimeout
.
reset
();
}
if
(
!
allInitOK
)
firstInitRegisters
();
if
(
!
checkProcActive
()
)
return
;
for
(
MBTCPMaster
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
for
(
MBTCPMaster
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
{
{
RTUDevice
*
d
(
it1
->
second
);
RTUDevice
*
d
(
it1
->
second
);
...
@@ -282,6 +379,9 @@ void MBTCPMaster::poll()
...
@@ -282,6 +379,9 @@ void MBTCPMaster::poll()
d
->
resp_real
=
false
;
d
->
resp_real
=
false
;
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
{
{
if
(
!
checkProcActive
()
)
return
;
try
try
{
{
if
(
d
->
dtype
==
MBTCPMaster
::
dtRTU
||
d
->
dtype
==
MBTCPMaster
::
dtMTR
)
if
(
d
->
dtype
==
MBTCPMaster
::
dtRTU
||
d
->
dtype
==
MBTCPMaster
::
dtMTR
)
...
@@ -304,12 +404,19 @@ void MBTCPMaster::poll()
...
@@ -304,12 +404,19 @@ void MBTCPMaster::poll()
// }
// }
// d->resp_real = false;
// d->resp_real = false;
if
(
!
d
->
ask_every_reg
)
if
(
ex
.
err
==
ModbusRTU
::
erTimeOut
&&
!
d
->
ask_every_reg
)
break
;
break
;
// если контроллер хоть что-то ответил, то вроде как связь есть..
if
(
ex
.
err
!=
ModbusRTU
::
erTimeOut
)
d
->
resp_real
=
true
;
}
}
if
(
it
==
d
->
regmap
.
end
()
)
if
(
it
==
d
->
regmap
.
end
()
)
break
;
break
;
if
(
!
checkProcActive
()
)
return
;
}
}
if
(
stat_time
>
0
)
if
(
stat_time
>
0
)
...
@@ -326,6 +433,14 @@ void MBTCPMaster::poll()
...
@@ -326,6 +433,14 @@ void MBTCPMaster::poll()
// mb->disconnect();
// mb->disconnect();
}
}
{
uniset_mutex_lock
l
(
pollMutex
);
pollActivated
=
false
;
}
if
(
!
checkProcActive
()
)
return
;
// update SharedMemory...
// update SharedMemory...
updateSM
();
updateSM
();
...
@@ -335,6 +450,9 @@ void MBTCPMaster::poll()
...
@@ -335,6 +450,9 @@ void MBTCPMaster::poll()
RTUDevice
*
d
(
it1
->
second
);
RTUDevice
*
d
(
it1
->
second
);
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
{
{
if
(
!
checkProcActive
()
)
return
;
RegInfo
*
r
(
it
->
second
);
RegInfo
*
r
(
it
->
second
);
for
(
PList
::
iterator
i
=
r
->
slst
.
begin
();
i
!=
r
->
slst
.
end
();
++
i
)
for
(
PList
::
iterator
i
=
r
->
slst
.
begin
();
i
!=
r
->
slst
.
end
();
++
i
)
IOBase
::
processingThreshold
(
&
(
*
i
),
shm
,
force
);
IOBase
::
processingThreshold
(
&
(
*
i
),
shm
,
force
);
...
@@ -353,10 +471,11 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -353,10 +471,11 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(pollRTU): poll "
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(pollRTU): poll "
<<
" mbaddr="
<<
ModbusRTU
::
addr2str
(
dev
->
mbaddr
)
<<
" mbaddr="
<<
ModbusRTU
::
addr2str
(
dev
->
mbaddr
)
<<
" mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
<<
" mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
<<
" mboffset="
<<
p
->
offset
<<
" mbfunc="
<<
p
->
mbfunc
<<
" mbfunc="
<<
p
->
mbfunc
<<
" q_count="
<<
p
->
q_count
<<
" q_count="
<<
p
->
q_count
<<
" mb_init="
<<
p
->
mb_init
<<
" mb_initOK="
<<
p
->
mb_initOK
<<
" sm_initOK="
<<
p
->
sm_initOK
<<
" mbval="
<<
p
->
mbval
<<
endl
;
<<
endl
;
if
(
p
->
q_count
>
ModbusRTU
::
MAXDATALEN
)
if
(
p
->
q_count
>
ModbusRTU
::
MAXDATALEN
)
...
@@ -381,7 +500,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -381,7 +500,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
{
{
case
ModbusRTU
:
:
fnReadInputRegisters
:
case
ModbusRTU
:
:
fnReadInputRegisters
:
{
{
ModbusRTU
::
ReadInputRetMessage
ret
=
mb
->
read04
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
ModbusRTU
::
ReadInputRetMessage
ret
=
mb
->
read04
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
q_count
);
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
it
->
second
->
mbval
=
ret
.
data
[
i
];
it
->
second
->
mbval
=
ret
.
data
[
i
];
it
--
;
it
--
;
...
@@ -390,7 +509,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -390,7 +509,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
case
ModbusRTU
:
:
fnReadOutputRegisters
:
case
ModbusRTU
:
:
fnReadOutputRegisters
:
{
{
ModbusRTU
::
ReadOutputRetMessage
ret
=
mb
->
read03
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
ModbusRTU
::
ReadOutputRetMessage
ret
=
mb
->
read03
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
q_count
);
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
it
->
second
->
mbval
=
ret
.
data
[
i
];
it
->
second
->
mbval
=
ret
.
data
[
i
];
it
--
;
it
--
;
...
@@ -399,7 +518,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -399,7 +518,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
case
ModbusRTU
:
:
fnReadInputStatus
:
case
ModbusRTU
:
:
fnReadInputStatus
:
{
{
ModbusRTU
::
ReadInputStatusRetMessage
ret
=
mb
->
read02
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
ModbusRTU
::
ReadInputStatusRetMessage
ret
=
mb
->
read02
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
q_count
);
int
m
=
0
;
int
m
=
0
;
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
{
{
...
@@ -413,7 +532,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -413,7 +532,7 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
case
ModbusRTU
:
:
fnReadCoilStatus
:
case
ModbusRTU
:
:
fnReadCoilStatus
:
{
{
ModbusRTU
::
ReadCoilRetMessage
ret
=
mb
->
read01
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
ModbusRTU
::
ReadCoilRetMessage
ret
=
mb
->
read01
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
q_count
);
int
m
=
0
;
int
m
=
0
;
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
{
{
...
@@ -434,39 +553,33 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -434,39 +553,33 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
return
false
;
return
false
;
}
}
if
(
!
p
->
mb_init
)
if
(
!
p
->
sm_initOK
)
{
{
// cerr << "******* mb_init: mbreg=" << ModbusRTU::dat2str(p->mbreg) << endl;
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
ModbusRTU
::
ReadInputRetMessage
ret1
=
mb
->
read04
(
dev
->
mbaddr
,
p
->
mb_init_mbreg
,
1
);
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
p
->
mbval
=
ret1
.
data
[
0
];
<<
" IGNORE...(sm_initOK=false)"
<<
endl
;
p
->
sm_init
=
true
;
return
true
;
return
true
;
}
}
// cerr << "**** mbreg=" << ModbusRTU::dat2str(p->mbreg) << " val=" << ModbusRTU::dat2str(p->mbval) << endl;
// cerr << "**** mbreg=" << ModbusRTU::dat2str(p->mbreg) << " val=" << ModbusRTU::dat2str(p->mbval) << endl;
ModbusRTU
::
WriteSingleOutputRetMessage
ret
=
mb
->
write06
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
mbval
);
ModbusRTU
::
WriteSingleOutputRetMessage
ret
=
mb
->
write06
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
mbval
);
}
}
break
;
break
;
case
ModbusRTU
:
:
fnWriteOutputRegisters
:
case
ModbusRTU
:
:
fnWriteOutputRegisters
:
{
{
ModbusRTU
::
WriteOutputMessage
msg
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
);
if
(
!
p
->
sm_initOK
)
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
{
{
if
(
!
it
->
second
->
mb_init
)
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
// cerr << "******* mb_init: mbreg=" << ModbusRTU::dat2str(it->second->mbreg)
<<
" IGNORE...(sm_initOK=false)"
<<
endl
;
// << " mb_init mbreg=" << ModbusRTU::dat2str(it->second->mb_init_mbreg) << endl;
return
true
;
ModbusRTU
::
ReadOutputRetMessage
ret1
=
mb
->
read03
(
dev
->
mbaddr
,
it
->
second
->
mb_init_mbreg
,
1
);
}
// cerr << "******* mb_init: mbreg=" << ModbusRTU::dat2str(it->second->mbreg)
// << " mb_init mbreg=" << ModbusRTU::dat2str(it->second->mb_init_mbreg)
ModbusRTU
::
WriteOutputMessage
msg
(
dev
->
mbaddr
,
p
->
mbreg
);
// << " mbval=" << ret1.data[0] << endl;
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
it
->
second
->
mbval
=
ret1
.
data
[
0
];
it
->
second
->
sm_init
=
true
;
}
msg
.
addData
(
it
->
second
->
mbval
);
msg
.
addData
(
it
->
second
->
mbval
);
}
it
--
;
it
--
;
ModbusRTU
::
WriteOutputRetMessage
ret
=
mb
->
write10
(
msg
);
ModbusRTU
::
WriteOutputRetMessage
ret
=
mb
->
write10
(
msg
);
}
}
...
@@ -480,57 +593,30 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -480,57 +593,30 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
<<
" IGNORE FORCE SINGLE COIL (0x05) q_count="
<<
p
->
q_count
<<
" ..."
<<
endl
;
<<
" IGNORE FORCE SINGLE COIL (0x05) q_count="
<<
p
->
q_count
<<
" ..."
<<
endl
;
return
false
;
return
false
;
}
}
if
(
!
p
->
sm_initOK
)
if
(
!
p
->
mb_init
)
{
{
// cerr << "******* mb_init: mbreg=" << ModbusRTU::dat2str(p->mbreg)
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
// << " init mbreg=" << ModbusRTU::dat2str(p->mb_init_mbreg) << endl;
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
ModbusRTU
::
ReadInputStatusRetMessage
ret1
=
mb
->
read02
(
dev
->
mbaddr
,
p
->
mb_init_mbreg
,
1
);
<<
" IGNORE...(sm_initOK=false)"
<<
endl
;
ModbusRTU
::
DataBits
b
(
ret1
.
data
[
0
]);
// cerr << "******* mb_init_mbreg=" << ModbusRTU::dat2str(p->mb_init_mbreg)
// << " read val=" << (int)b[0] << endl;
p
->
mbval
=
b
[
0
];
p
->
sm_init
=
true
;
return
true
;
return
true
;
}
}
// cerr << "****(coil) mbreg=" << ModbusRTU::dat2str(p->mbreg) << " val=" << ModbusRTU::dat2str(p->mbval) << endl;
// cerr << "****(coil) mbreg=" << ModbusRTU::dat2str(p->mbreg) << " val=" << ModbusRTU::dat2str(p->mbval) << endl;
ModbusRTU
::
ForceSingleCoilRetMessage
ret
=
mb
->
write05
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
mbval
);
ModbusRTU
::
ForceSingleCoilRetMessage
ret
=
mb
->
write05
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
mbval
);
}
}
break
;
break
;
case
ModbusRTU
:
:
fnForceMultipleCoils
:
case
ModbusRTU
:
:
fnForceMultipleCoils
:
{
{
if
(
!
p
->
mb_init
)
if
(
!
p
->
sm_initOK
)
{
{
// every register ask... (for mb_init_mbreg no some)
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
{
<<
" IGNORE...(sm_initOK=false)"
<<
endl
;
ModbusRTU
::
ReadInputStatusRetMessage
ret1
=
mb
->
read02
(
dev
->
mbaddr
,
it
->
second
->
mb_init_mbreg
,
1
);
ModbusRTU
::
DataBits
b
(
ret1
.
data
[
0
]);
it
->
second
->
mbval
=
b
[
0
]
?
1
:
0
;
it
->
second
->
sm_init
=
true
;
}
/*
// alone query for all register (if mb_init_mbreg ++ )
ModbusRTU::ReadInputStatusRetMessage ret1 = mb->read02(dev->mbaddr,p->mb_init_mbreg,p->q_count);
int m=0;
for( int i=0; i<ret1.bcnt; i++ )
{
ModbusRTU::DataBits b(ret1.data[i]);
for( int k=0;k<ModbusRTU::BitsPerByte && m<p->q_count; k++,it++,m++ )
{
it->second->mbval = b[k] ? 1 : 0;
it->second->sm_init = true;
}
}
*/
p
->
sm_init
=
true
;
it
--
;
return
true
;
return
true
;
}
}
ModbusRTU
::
ForceCoilsMessage
msg
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
);
ModbusRTU
::
ForceCoilsMessage
msg
(
dev
->
mbaddr
,
p
->
mbreg
);
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
msg
.
addBit
(
(
it
->
second
->
mbval
?
true
:
false
)
);
msg
.
addBit
(
(
it
->
second
->
mbval
?
true
:
false
)
);
...
@@ -553,9 +639,259 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -553,9 +639,259 @@ bool MBTCPMaster::pollRTU( RTUDevice* dev, RegMap::iterator& it )
return
true
;
return
true
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
firstInitRegisters
()
{
// если все вернут TRUE, значит OK.
allInitOK
=
true
;
for
(
InitList
::
iterator
it
=
initRegList
.
begin
();
it
!=
initRegList
.
end
();
++
it
)
{
try
{
it
->
initOK
=
preInitRead
(
it
);
allInitOK
=
it
->
initOK
;
}
catch
(
ModbusRTU
::
mbException
&
ex
)
{
allInitOK
=
false
;
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(preInitRead): FAILED ask addr="
<<
ModbusRTU
::
addr2str
(
it
->
dev
->
mbaddr
)
<<
" reg="
<<
ModbusRTU
::
dat2str
(
it
->
mbreg
)
<<
" err: "
<<
ex
<<
endl
;
}
if
(
!
it
->
dev
->
ask_every_reg
)
break
;
}
}
}
// -----------------------------------------------------------------------------
bool
MBTCPMaster
::
preInitRead
(
InitList
::
iterator
&
p
)
{
if
(
p
->
initOK
)
return
true
;
RTUDevice
*
dev
=
p
->
dev
;
int
q_count
=
p
->
p
.
rnum
;
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(preInitRead): poll "
<<
" mbaddr="
<<
ModbusRTU
::
addr2str
(
dev
->
mbaddr
)
<<
" mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
<<
" mbfunc="
<<
p
->
mbfunc
<<
" q_count="
<<
q_count
<<
endl
;
if
(
q_count
>
ModbusRTU
::
MAXDATALEN
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(preInitRead): count("
<<
q_count
<<
") > MAXDATALEN("
<<
ModbusRTU
::
MAXDATALEN
<<
" ..ignore..."
<<
endl
;
}
}
switch
(
p
->
mbfunc
)
{
case
ModbusRTU
:
:
fnReadOutputRegisters
:
{
ModbusRTU
::
ReadOutputRetMessage
ret
=
mb
->
read03
(
dev
->
mbaddr
,
p
->
mbreg
,
q_count
);
p
->
initOK
=
initSMValue
(
ret
.
data
,
ret
.
count
,
&
(
p
->
p
));
}
break
;
case
ModbusRTU
:
:
fnReadInputRegisters
:
{
ModbusRTU
::
ReadInputRetMessage
ret1
=
mb
->
read04
(
dev
->
mbaddr
,
p
->
mbreg
,
q_count
);
p
->
initOK
=
initSMValue
(
ret1
.
data
,
ret1
.
count
,
&
(
p
->
p
));
}
break
;
case
ModbusRTU
:
:
fnReadInputStatus
:
{
ModbusRTU
::
ReadInputStatusRetMessage
ret
=
mb
->
read02
(
dev
->
mbaddr
,
p
->
mbreg
,
q_count
);
ModbusRTU
::
ModbusData
*
dat
=
new
ModbusRTU
::
ModbusData
[
q_count
];
int
m
=
0
;
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
{
ModbusRTU
::
DataBits
b
(
ret
.
data
[
i
]);
for
(
int
k
=
0
;
k
<
ModbusRTU
::
BitsPerByte
&&
m
<
q_count
;
k
++
,
m
++
)
dat
[
m
]
=
b
[
k
];
}
p
->
initOK
=
initSMValue
(
dat
,
q_count
,
&
(
p
->
p
));
delete
[]
dat
;
}
break
;
case
ModbusRTU
:
:
fnReadCoilStatus
:
{
ModbusRTU
::
ReadCoilRetMessage
ret
=
mb
->
read01
(
dev
->
mbaddr
,
p
->
mbreg
,
q_count
);
ModbusRTU
::
ModbusData
*
dat
=
new
ModbusRTU
::
ModbusData
[
q_count
];
int
m
=
0
;
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
{
ModbusRTU
::
DataBits
b
(
ret
.
data
[
i
]);
for
(
int
k
=
0
;
k
<
ModbusRTU
::
BitsPerByte
&&
m
<
q_count
;
k
++
,
m
++
)
dat
[
m
]
=
b
[
k
];
}
p
->
initOK
=
initSMValue
(
dat
,
q_count
,
&
(
p
->
p
));
delete
[]
dat
;
}
break
;
default
:
p
->
initOK
=
false
;
break
;
}
if
(
p
->
initOK
)
{
p
->
ri
->
mb_initOK
=
true
;
p
->
ri
->
sm_initOK
=
false
;
bool
f_out
=
force_out
;
// выставляем флаг принудительного обновления
force_out
=
true
;
updateRTU
(
p
->
ri
->
rit
);
force_out
=
f_out
;
}
return
p
->
initOK
;
}
// -----------------------------------------------------------------------------
bool
MBTCPMaster
::
initSMValue
(
ModbusRTU
::
ModbusData
*
data
,
int
count
,
RSProperty
*
p
)
{
using
namespace
ModbusRTU
;
try
{
if
(
p
->
vType
==
VTypes
::
vtUnknown
)
{
ModbusRTU
::
DataBits16
b
(
data
[
0
]);
if
(
p
->
nbit
>=
0
)
{
bool
set
=
b
[
p
->
nbit
];
IOBase
::
processingAsDI
(
p
,
set
,
shm
,
force
);
return
true
;
}
if
(
p
->
rnum
<=
1
)
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
p
->
stype
==
UniversalIO
::
DigitalOutput
)
{
IOBase
::
processingAsDI
(
p
,
data
[
0
],
shm
,
force
);
}
else
IOBase
::
processingAsAI
(
p
,
(
signed
short
)(
data
[
0
]),
shm
,
force
);
return
true
;
}
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(initSMValue): IGNORE item: rnum="
<<
p
->
rnum
<<
" > 1 ?!! for id="
<<
p
->
si
.
id
<<
endl
;
return
false
;
}
else
if
(
p
->
vType
==
VTypes
::
vtSigned
)
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
p
->
stype
==
UniversalIO
::
DigitalOutput
)
{
IOBase
::
processingAsDI
(
p
,
data
[
0
],
shm
,
force
);
}
else
IOBase
::
processingAsAI
(
p
,
(
signed
short
)(
data
[
0
]),
shm
,
force
);
return
true
;
}
else
if
(
p
->
vType
==
VTypes
::
vtUnsigned
)
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
p
->
stype
==
UniversalIO
::
DigitalOutput
)
{
IOBase
::
processingAsDI
(
p
,
data
[
0
],
shm
,
force
);
}
else
IOBase
::
processingAsAI
(
p
,
(
unsigned
short
)
data
[
0
],
shm
,
force
);
return
true
;
}
else
if
(
p
->
vType
==
VTypes
::
vtByte
)
{
if
(
p
->
nbyte
<=
0
||
p
->
nbyte
>
VTypes
::
Byte
::
bsize
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(initSMValue): IGNORE item: sid="
<<
ModbusRTU
::
dat2str
(
p
->
si
.
id
)
<<
" vtype="
<<
p
->
vType
<<
" but nbyte="
<<
p
->
nbyte
<<
endl
;
return
false
;
}
VTypes
::
Byte
b
(
data
[
0
]);
IOBase
::
processingAsAI
(
p
,
b
.
raw
.
b
[
p
->
nbyte
-
1
],
shm
,
force
);
return
true
;
}
else
if
(
p
->
vType
==
VTypes
::
vtF2
)
{
VTypes
::
F2
f
(
data
,
VTypes
::
F2
::
wsize
());
IOBase
::
processingFasAI
(
p
,
(
float
)
f
,
shm
,
force
);
}
else
if
(
p
->
vType
==
VTypes
::
vtF4
)
{
VTypes
::
F4
f
(
data
,
VTypes
::
F4
::
wsize
());
IOBase
::
processingFasAI
(
p
,
(
float
)
f
,
shm
,
force
);
}
else
if
(
p
->
vType
==
VTypes
::
vtI2
)
{
VTypes
::
I2
i2
(
data
,
VTypes
::
I2
::
wsize
());
IOBase
::
processingAsAI
(
p
,
(
int
)
i2
,
shm
,
force
);
}
else
if
(
p
->
vType
==
VTypes
::
vtU2
)
{
VTypes
::
U2
u2
(
data
,
VTypes
::
U2
::
wsize
());
IOBase
::
processingAsAI
(
p
,
(
unsigned
int
)
u2
,
shm
,
force
);
}
return
true
;
}
catch
(
IOController_i
::
NameNotFound
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(initSMValue):(NameNotFound) "
<<
ex
.
err
<<
endl
;
}
catch
(
IOController_i
::
IOBadParam
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(initSMValue):(IOBadParam) "
<<
ex
.
err
<<
endl
;
}
catch
(
IONotifyController_i
::
BadRange
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(initSMValue): (BadRange)..."
<<
endl
;
}
catch
(
Exception
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(initSMValue): "
<<
ex
<<
endl
;
}
catch
(
CORBA
::
SystemException
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(initSMValue): CORBA::SystemException: "
<<
ex
.
NP_minorString
()
<<
endl
;
}
catch
(...)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(initSMValue): catch ..."
<<
endl
;
}
return
false
;
}
// -----------------------------------------------------------------------------
bool
MBTCPMaster
::
RTUDevice
::
checkRespond
()
bool
MBTCPMaster
::
RTUDevice
::
checkRespond
()
{
{
bool
prev
=
resp_state
;
bool
prev
=
resp_state
;
if
(
resp_ptTimeout
.
getInterval
()
<=
0
)
{
resp_state
=
resp_real
;
return
(
prev
!=
resp_state
);
}
if
(
resp_trTimeout
.
hi
(
resp_real
)
)
if
(
resp_trTimeout
.
hi
(
resp_real
)
)
{
{
if
(
resp_real
)
if
(
resp_real
)
...
@@ -582,38 +918,13 @@ bool MBTCPMaster::RTUDevice::checkRespond()
...
@@ -582,38 +918,13 @@ bool MBTCPMaster::RTUDevice::checkRespond()
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
updateSM
()
void
MBTCPMaster
::
updateSM
()
{
{
allNotRespond
=
true
;
for
(
MBTCPMaster
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
for
(
MBTCPMaster
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
{
{
RTUDevice
*
d
(
it1
->
second
);
RTUDevice
*
d
(
it1
->
second
);
if
(
dlog
.
debugging
(
Debug
::
LEVEL4
)
)
{
dlog
[
Debug
::
LEVEL4
]
<<
"check respond addr="
<<
ModbusRTU
::
addr2str
(
d
->
mbaddr
)
<<
" respond="
<<
d
->
resp_id
<<
" real="
<<
d
->
resp_real
<<
" state="
<<
d
->
resp_state
<<
endl
;
}
if
(
d
->
resp_real
)
allNotRespond
=
false
;
// update respond sensors...
if
(
d
->
checkRespond
()
&&
d
->
resp_id
!=
DefaultObjectId
)
{
try
{
bool
set
=
d
->
resp_invert
?
!
d
->
resp_state
:
d
->
resp_state
;
shm
->
localSaveState
(
d
->
resp_dit
,
d
->
resp_id
,
set
,
getId
());
}
catch
(
Exception
&
ex
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(step): (respond) "
<<
ex
<<
std
::
endl
;
}
}
// cerr << "*********** allNotRespond=" << allNotRespond << endl;
// обновление датчиков связи происходит в другом потоке
// чтобы не зависеть от TCP таймаутов
// см. updateRespondSensors()
// update values...
// update values...
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
...
@@ -746,15 +1057,8 @@ void MBTCPMaster::sysCommand( UniSetTypes::SystemMessage *sm )
...
@@ -746,15 +1057,8 @@ void MBTCPMaster::sysCommand( UniSetTypes::SystemMessage *sm )
initOutput
();
initOutput
();
}
}
// начальная инициализация
if
(
!
force
)
{
uniset_mutex_lock
l
(
pollMutex
,
2000
);
force
=
true
;
poll
();
force
=
false
;
}
askTimer
(
tmExchange
,
polltime
);
askTimer
(
tmExchange
,
polltime
);
pollThread
->
start
();
break
;
break
;
}
}
...
@@ -881,14 +1185,14 @@ void MBTCPMaster::sensorInfo( UniSetTypes::SensorMessage* sm )
...
@@ -881,14 +1185,14 @@ void MBTCPMaster::sensorInfo( UniSetTypes::SensorMessage* sm )
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(sensorInfo): si.id="
<<
sm
->
id
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(sensorInfo): si.id="
<<
sm
->
id
<<
" reg="
<<
ModbusRTU
::
dat2str
(
i
->
reg
->
mbreg
)
<<
" reg="
<<
ModbusRTU
::
dat2str
(
i
->
reg
->
mbreg
)
<<
" val="
<<
sm
->
value
<<
" val="
<<
sm
->
value
<<
" mb_init
="
<<
i
->
reg
->
mb_init
<<
endl
;
<<
" mb_init
OK="
<<
i
->
reg
->
mb_initOK
<<
endl
;
}
}
if
(
!
i
->
reg
->
mb_init
)
if
(
!
i
->
reg
->
mb_init
OK
)
continue
;
continue
;
i
->
value
=
sm
->
value
;
i
->
value
=
sm
->
value
;
updateRSProperty
(
&
(
*
i
),
true
);
updateRSProperty
(
&
(
*
i
),
true
);
return
;
return
;
}
}
}
}
...
@@ -902,13 +1206,13 @@ bool MBTCPMaster::activateObject()
...
@@ -902,13 +1206,13 @@ bool MBTCPMaster::activateObject()
// пока не пройдёт инициализация датчиков
// пока не пройдёт инициализация датчиков
// см. sysCommand()
// см. sysCommand()
{
{
activated
=
false
;
setProcActive
(
false
)
;
UniSetTypes
::
uniset_mutex_lock
l
(
mutex_start
,
5000
);
UniSetTypes
::
uniset_mutex_lock
l
(
mutex_start
,
5000
);
UniSetObject_LT
::
activateObject
();
UniSetObject_LT
::
activateObject
();
if
(
!
shm
->
isLocalwork
()
)
if
(
!
shm
->
isLocalwork
()
)
rtuQueryOptimization
(
rmap
);
rtuQueryOptimization
(
rmap
);
initIterators
();
initIterators
();
activated
=
true
;
setProcActive
(
true
)
;
}
}
return
true
;
return
true
;
...
@@ -917,7 +1221,7 @@ bool MBTCPMaster::activateObject()
...
@@ -917,7 +1221,7 @@ bool MBTCPMaster::activateObject()
void
MBTCPMaster
::
sigterm
(
int
signo
)
void
MBTCPMaster
::
sigterm
(
int
signo
)
{
{
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
activated
=
false
;
setProcActive
(
false
)
;
/*! \todo Доделать выставление безопасного состояния на выходы.
/*! \todo Доделать выставление безопасного состояния на выходы.
И нужно ли это. Ведь может не хватить времени на "обмен"
И нужно ли это. Ведь может не хватить времени на "обмен"
...
@@ -961,7 +1265,7 @@ void MBTCPMaster::readConfiguration()
...
@@ -961,7 +1265,7 @@ void MBTCPMaster::readConfiguration()
UniXML_iterator
it
(
root
);
UniXML_iterator
it
(
root
);
if
(
!
it
.
goChildren
()
)
if
(
!
it
.
goChildren
()
)
{
{
std
::
cerr
<<
myname
<<
"(readConfiguration): раздел <sensors> не содержит секций ?!!
\n
"
;
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(readConfiguration): раздел <sensors> не содержит секций ?!!
\n
"
;
return
;
return
;
}
}
...
@@ -1032,23 +1336,23 @@ MBTCPMaster::RTUDevice* MBTCPMaster::addDev( RTUDeviceMap& mp, ModbusRTU::Modbus
...
@@ -1032,23 +1336,23 @@ MBTCPMaster::RTUDevice* MBTCPMaster::addDev( RTUDeviceMap& mp, ModbusRTU::Modbus
return
d
;
return
d
;
}
}
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
MBTCPMaster
::
RegInfo
*
MBTCPMaster
::
addReg
(
RegMap
&
mp
,
ModbusRTU
::
ModbusData
r
,
MBTCPMaster
::
RegInfo
*
MBTCPMaster
::
addReg
(
RegMap
&
mp
,
RegID
id
,
ModbusRTU
::
ModbusData
r
,
UniXML_iterator
&
xmlit
,
MBTCPMaster
::
RTUDevice
*
dev
,
UniXML_iterator
&
xmlit
,
MBTCPMaster
::
RTUDevice
*
dev
,
MBTCPMaster
::
RegInfo
*
rcopy
)
MBTCPMaster
::
RegInfo
*
rcopy
)
{
{
RegMap
::
iterator
it
=
mp
.
find
(
r
);
RegMap
::
iterator
it
=
mp
.
find
(
id
);
if
(
it
!=
mp
.
end
()
)
if
(
it
!=
mp
.
end
()
)
{
{
if
(
!
it
->
second
->
dev
)
if
(
!
it
->
second
->
dev
)
{
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(addReg): for
reg="
<<
ModbusRTU
::
dat2str
(
r
)
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(addReg): for
"
<<
xmlit
.
getProp
(
"name"
)
<<
" dev=0!!!! "
<<
endl
;
<<
" dev=0!!!! "
<<
endl
;
return
0
;
return
0
;
}
}
if
(
it
->
second
->
dev
->
dtype
!=
dev
->
dtype
)
if
(
it
->
second
->
dev
->
dtype
!=
dev
->
dtype
)
{
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(addReg): OTHER mbtype="
<<
dev
->
dtype
<<
" for
reg="
<<
ModbusRTU
::
dat2str
(
r
)
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(addReg): OTHER mbtype="
<<
dev
->
dtype
<<
" for
"
<<
xmlit
.
getProp
(
"name"
)
<<
". Already used devtype="
<<
it
->
second
->
dev
->
dtype
<<
" for "
<<
it
->
second
->
dev
<<
endl
;
<<
". Already used devtype="
<<
it
->
second
->
dev
->
dtype
<<
" for "
<<
it
->
second
->
dev
<<
endl
;
return
0
;
return
0
;
}
}
...
@@ -1080,9 +1384,11 @@ MBTCPMaster::RegInfo* MBTCPMaster::addReg( RegMap& mp, ModbusRTU::ModbusData r,
...
@@ -1080,9 +1384,11 @@ MBTCPMaster::RegInfo* MBTCPMaster::addReg( RegMap& mp, ModbusRTU::ModbusData r,
}
}
ri
->
mbreg
=
r
;
ri
->
mbreg
=
r
;
}
}
ri
->
id
=
id
;
mp
.
insert
(
RegMap
::
value_type
(
r
,
ri
));
mp
.
insert
(
RegMap
::
value_type
(
id
,
ri
));
ri
->
rit
=
mp
.
find
(
r
);
ri
->
rit
=
mp
.
find
(
id
);
return
ri
;
return
ri
;
}
}
...
@@ -1190,8 +1496,6 @@ bool MBTCPMaster::initRegInfo( RegInfo* r, UniXML_iterator& it, MBTCPMaster::RT
...
@@ -1190,8 +1496,6 @@ bool MBTCPMaster::initRegInfo( RegInfo* r, UniXML_iterator& it, MBTCPMaster::RT
{
{
r
->
dev
=
dev
;
r
->
dev
=
dev
;
r
->
mbval
=
it
.
getIntProp
(
"default"
);
r
->
mbval
=
it
.
getIntProp
(
"default"
);
r
->
offset
=
it
.
getIntProp
(
"tcp_mboffset"
);
r
->
mb_init
=
it
.
getIntProp
(
"tcp_mbinit"
);
if
(
dev
->
dtype
==
MBTCPMaster
::
dtRTU
)
if
(
dev
->
dtype
==
MBTCPMaster
::
dtRTU
)
{
{
...
@@ -1228,19 +1532,6 @@ bool MBTCPMaster::initRegInfo( RegInfo* r, UniXML_iterator& it, MBTCPMaster::RT
...
@@ -1228,19 +1532,6 @@ bool MBTCPMaster::initRegInfo( RegInfo* r, UniXML_iterator& it, MBTCPMaster::RT
r
->
mbreg
=
ModbusRTU
::
str2mbData
(
sr
);
r
->
mbreg
=
ModbusRTU
::
str2mbData
(
sr
);
}
}
{
string
sr
=
it
.
getProp
(
"tcp_init_mbreg"
);
if
(
sr
==
"-1"
)
{
r
->
mb_init
=
true
;
// OFF mb_init
r
->
sm_init
=
true
;
}
else
if
(
sr
.
empty
()
)
r
->
mb_init_mbreg
=
r
->
mbreg
;
else
r
->
mb_init_mbreg
=
ModbusRTU
::
str2mbData
(
sr
);
}
r
->
mbfunc
=
ModbusRTU
::
fnUnknown
;
r
->
mbfunc
=
ModbusRTU
::
fnUnknown
;
string
f
=
it
.
getProp
(
"tcp_mbfunc"
);
string
f
=
it
.
getProp
(
"tcp_mbfunc"
);
if
(
!
f
.
empty
()
)
if
(
!
f
.
empty
()
)
...
@@ -1253,7 +1544,7 @@ bool MBTCPMaster::initRegInfo( RegInfo* r, UniXML_iterator& it, MBTCPMaster::RT
...
@@ -1253,7 +1544,7 @@ bool MBTCPMaster::initRegInfo( RegInfo* r, UniXML_iterator& it, MBTCPMaster::RT
return
false
;
return
false
;
}
}
}
}
return
true
;
return
true
;
}
}
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
...
@@ -1294,7 +1585,15 @@ bool MBTCPMaster::initRTUDevice( RTUDevice* d, UniXML_iterator& it )
...
@@ -1294,7 +1585,15 @@ bool MBTCPMaster::initRTUDevice( RTUDevice* d, UniXML_iterator& it )
return
true
;
return
true
;
}
}
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
MBTCPMaster
::
RegID
MBTCPMaster
::
genRegID
(
const
ModbusRTU
::
ModbusData
mbreg
,
const
int
fn
)
{
// формула для вычисления ID
// требования:
// - ID > диапазона возможных регитров
// - разные функции должны давать разный ID
return
numeric_limits
<
ModbusRTU
::
ModbusData
>::
max
()
+
mbreg
+
fn
;
}
// ------------------------------------------------------------------------------------------
bool
MBTCPMaster
::
initItem
(
UniXML_iterator
&
it
)
bool
MBTCPMaster
::
initItem
(
UniXML_iterator
&
it
)
{
{
RSProperty
p
;
RSProperty
p
;
...
@@ -1304,7 +1603,7 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
...
@@ -1304,7 +1603,7 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
string
addr
=
it
.
getProp
(
"tcp_mbaddr"
);
string
addr
=
it
.
getProp
(
"tcp_mbaddr"
);
if
(
addr
.
empty
()
)
if
(
addr
.
empty
()
)
{
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(initItem): Unknown mbaddr='"
<<
addr
<<
" for "
<<
it
.
getProp
(
"name"
)
<<
endl
;
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(initItem): Unknown mbaddr='"
<<
addr
<<
"
'
for "
<<
it
.
getProp
(
"name"
)
<<
endl
;
return
false
;
return
false
;
}
}
...
@@ -1332,7 +1631,15 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
...
@@ -1332,7 +1631,15 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
mbreg
=
ModbusRTU
::
str2mbData
(
reg
);
mbreg
=
ModbusRTU
::
str2mbData
(
reg
);
}
}
RegInfo
*
ri
=
addReg
(
dev
->
regmap
,
mbreg
,
it
,
dev
);
int
fn
=
it
.
getIntProp
(
"tcp_mbfunc"
);
// формула для вычисления ID
// требования:
// - ID > диапазона возможных регитров
// - разные функции должны давать разный ID
RegID
rID
=
genRegID
(
mbreg
,
fn
);
RegInfo
*
ri
=
addReg
(
dev
->
regmap
,
rID
,
mbreg
,
it
,
dev
);
if
(
dev
->
dtype
==
dtMTR
)
if
(
dev
->
dtype
==
dtMTR
)
{
{
...
@@ -1349,16 +1656,16 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
...
@@ -1349,16 +1656,16 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
ri
->
dev
=
dev
;
ri
->
dev
=
dev
;
//
п÷п═п·п▓п•п═п п░
!
//
ПРОВЕРКА
!
// п╣я│п╩п╦ я└я┐п╫п╨я├п╦я▐ п╫п╟ п╥п╟п©п╦я│я▄, я┌п╬ п╫п╟п╢п╬ п©я─п╬п╡п╣я─п╦я┌я▄
// если функция на запись, то надо проверить
// я┤я┌п╬ п╬п╢п╦п╫ п╦ я┌п╬я┌п╤п╣ я─п╣пЁп╦я│я┌я─ п╫п╣ п©п╣я─п╣п╥п╟п©п╦я┬я┐я┌ п╫п╣я│п╨п╬п╩я▄п╨п╬ п╢п╟я┌я┤п╦п╨п╬п╡
// что один и тотже регистр не перезапишут несколько датчиков
// я█я┌п╬ п╡п╬п╥п╪п╬п╤п╫п╬ я┌п╬п╩я▄п╨п╬, п╣я│п╩п╦ п╬п╫п╦ п©п╦я┬я┐я┌ п╠п╦я┌я▀
!!
// это возможно только, если они пишут биты
!!
// п≤п╒п·п⌠
:
// ИТОГ
:
// п•я│п╩п╦ п╢п╩я▐ я└я┐п╫п╨я├п╦п╧ п╥п╟п©п╦я│п╦ я│п©п╦я│п╬п╨ п╢п╟я┌я┤п╦п╨п╬п╡ п╫п╟ п╬п╢п╦п╫ я─п╣пЁп╦я│я┌я─
> 1
// Если для функций записи список датчиков для регистра
> 1
// п╥п╫п╟я┤п╦я┌ п╡ я│п©п╦я│п╨п╣ п╪п╬пЁя┐я┌ п╠я▀я┌я▄ я┌п╬п╩я▄п╨п╬ п╠п╦я┌п╬п╡я▀п╣ п╢п╟я┌я┤п╦п╨п╦
// значит в списке могут быть только битовые датчики
// п╦ п╣я│п╩п╦ п╦п╢я▒я┌ п©п╬п©я▀я┌п╨п╟ п╡п╫п╣я│я┌п╦ п╡ я│п©п╦я│п╬п╨ п╫п╣ п╠п╦я┌п╬п╡я▀п╧ п╢п╟я┌я┤п╦п╨ я┌п╬ п·п╗п≤п▒п п░
!
// и если идёт попытка внести в список не битовый датчик то ОШИБКА
!
// п≤ п╫п╟п╬п╠п╬я─п╬я┌: п╣я│п╩п╦ п╦п╢я▒я┌ п©п╬п©я▀я┌п╨п╟ п╡п╫п╣я│я┌п╦ п╠п╦я┌п╬п╡я▀п╧ п╢п╟я┌я┤п╦п╨, п╟ п╡ я│п©п╦я│п╨п╣
// И наоборот: если идёт попытка внести битовый датчик, а в списке
// я┐п╤п╣ я│п╦п╢п╦я┌ п╢п╟я┌я┤п╦п╨ п╥п╟п╫п╦п╪п╟я▌я┴п╦п╧ я├п╣п╩я▀п╧ я─п╣пЁп╦я│я┌я─, я┌п╬ я┌п╬п╤п╣ п·п╗п≤п▒п п░
!
// уже сидит датчик занимающий целый регистр, то тоже ОШИБКА
!
if
(
ModbusRTU
::
isWriteFunction
(
ri
->
mbfunc
)
)
if
(
ModbusRTU
::
isWriteFunction
(
ri
->
mbfunc
)
)
{
{
if
(
p
.
nbit
<
0
&&
ri
->
slst
.
size
()
>
1
)
if
(
p
.
nbit
<
0
&&
ri
->
slst
.
size
()
>
1
)
...
@@ -1383,7 +1690,20 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
...
@@ -1383,7 +1690,20 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
return
false
;
return
false
;
}
}
}
}
// Раз это регистр для записи, то как минимум надо сперва
// инициализировать значением из SM
ri
->
sm_initOK
=
it
.
getIntProp
(
"tcp_sm_initOK"
);
ri
->
mb_initOK
=
true
;
// может быть переопределён если будет указан tcp_preinit="1" (см. ниже)
}
}
else
{
// Если это регистр для чтения, то сразу можно работать
// инициализировать не надо
ri
->
mb_initOK
=
true
;
ri
->
sm_initOK
=
true
;
}
RSProperty
*
p1
=
addProp
(
ri
->
slst
,
p
);
RSProperty
*
p1
=
addProp
(
ri
->
slst
,
p
);
if
(
!
p1
)
if
(
!
p1
)
...
@@ -1395,9 +1715,67 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
...
@@ -1395,9 +1715,67 @@ bool MBTCPMaster::initItem( UniXML_iterator& it )
{
{
for
(
int
i
=
1
;
i
<
p1
->
rnum
;
i
++
)
for
(
int
i
=
1
;
i
<
p1
->
rnum
;
i
++
)
{
{
MBTCPMaster
::
RegInfo
*
ri1
=
addReg
(
dev
->
regmap
,
mbreg
+
i
,
it
,
dev
,
ri
);
RegID
id1
=
genRegID
(
mbreg
+
i
,
fn
);
ri1
->
mb_init_mbreg
=
ri
->
mb_init_mbreg
+
i
;
addReg
(
dev
->
regmap
,
id1
,
mbreg
+
i
,
it
,
dev
,
ri
);
}
}
// Фомируем список инициализации
bool
need_init
=
it
.
getIntProp
(
"tcp_preinit"
);
if
(
need_init
&&
ModbusRTU
::
isWriteFunction
(
ri
->
mbfunc
)
)
{
InitRegInfo
ii
;
ii
.
p
=
p
;
ii
.
dev
=
dev
;
ii
.
ri
=
ri
;
string
s_reg
(
it
.
getProp
(
"tcp_init_mbreg"
));
if
(
!
s_reg
.
empty
()
)
ii
.
mbreg
=
ModbusRTU
::
str2mbData
(
s_reg
);
else
ii
.
mbreg
=
ri
->
mbreg
;
string
s_mbfunc
(
it
.
getProp
(
"tcp_init_mbfunc"
));
if
(
!
s_mbfunc
.
empty
()
)
{
ii
.
mbfunc
=
(
ModbusRTU
::
SlaveFunctionCode
)
UniSetTypes
::
uni_atoi
(
s_mbfunc
);
if
(
ii
.
mbfunc
==
ModbusRTU
::
fnUnknown
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(initItem): Unknown tcp_init_mbfunc ='"
<<
s_mbfunc
<<
"' for "
<<
it
.
getProp
(
"name"
)
<<
endl
;
return
false
;
}
}
else
{
switch
(
ri
->
mbfunc
)
{
case
ModbusRTU
:
:
fnWriteOutputSingleRegister
:
ii
.
mbfunc
=
ModbusRTU
::
fnReadOutputRegisters
;
break
;
case
ModbusRTU
:
:
fnForceSingleCoil
:
ii
.
mbfunc
=
ModbusRTU
::
fnReadCoilStatus
;
break
;
case
ModbusRTU
:
:
fnWriteOutputRegisters
:
ii
.
mbfunc
=
ModbusRTU
::
fnReadOutputRegisters
;
break
;
case
ModbusRTU
:
:
fnForceMultipleCoils
:
ii
.
mbfunc
=
ModbusRTU
::
fnReadCoilStatus
;
break
;
default
:
ii
.
mbfunc
=
ModbusRTU
::
fnReadOutputRegisters
;
break
;
}
}
}
initRegList
.
push_back
(
ii
);
ri
->
mb_initOK
=
false
;
ri
->
sm_initOK
=
false
;
}
}
return
true
;
return
true
;
...
@@ -1441,15 +1819,29 @@ void MBTCPMaster::initIterators()
...
@@ -1441,15 +1819,29 @@ void MBTCPMaster::initIterators()
void
MBTCPMaster
::
help_print
(
int
argc
,
const
char
*
const
*
argv
)
void
MBTCPMaster
::
help_print
(
int
argc
,
const
char
*
const
*
argv
)
{
{
cout
<<
"Default: prefix='mbtcp'"
<<
endl
;
cout
<<
"Default: prefix='mbtcp'"
<<
endl
;
cout
<<
"--prefix-polltime msec - Пауза между опросаом карт. По умолчанию 200 мсек."
<<
endl
;
cout
<<
"--prefix-name name - ObjectId (имя) процесса. По умолчанию: MBTCPMaster1"
<<
endl
;
cout
<<
"--prefix-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком."
<<
endl
;
cout
<<
"--prefix-confnode name - Настроечная секция в конф. файле <name>. "
<<
endl
;
cout
<<
"--prefix-heartbeat-max - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10."
<<
endl
;
cout
<<
"--prefix-polltime msec - Пауза между опросаом карт. По умолчанию 200 мсек."
<<
endl
;
cout
<<
"--prefix-ready-timeout - Время ожидания готовности SM к работе, мсек. (-1 - ждать 'вечно')"
<<
endl
;
cout
<<
"--prefix-heartbeat-id name - Данный процесс связан с указанным аналоговым heartbeat-дачиком."
<<
endl
;
cout
<<
"--prefix-force - Сохранять значения в SM, независимо от, того менялось ли значение"
<<
endl
;
cout
<<
"--prefix-heartbeat-max val - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10."
<<
endl
;
cout
<<
"--prefix-initPause - Задержка перед инициализацией (время на активизация процесса)"
<<
endl
;
cout
<<
"--prefix-ready-timeout msec - Время ожидания готовности SM к работе, мсек. (-1 - ждать 'вечно')"
<<
endl
;
cout
<<
"--prefix-force 0,1 - Сохранять значения в SM, независимо от, того менялось ли значение"
<<
endl
;
cout
<<
"--prefix-force-out 0,1 - Считывать значения 'выходов' кажый раз SM (а не по изменению)"
<<
endl
;
cout
<<
"--prefix-initPause msec - Задержка перед инициализацией (время на активизация процесса)"
<<
endl
;
cout
<<
"--prefix-no-query-optimization 0,1 - Не оптимизировать запросы (не объединять соседние регистры в один запрос)"
<<
endl
;
cout
<<
"--prefix-reg-from-id 0,1 - Использовать в качестве регистра sensor ID"
<<
endl
;
cout
<<
"--prefix-filter-field name - Считывать список опрашиваемых датчиков, только у которых есть поле field"
<<
endl
;
cout
<<
"--prefix-filter-value val - Считывать список опрашиваемых датчиков, только у которых field=value"
<<
endl
;
cout
<<
"--prefix-statistic-sec sec - Выводить статистику опроса каждые sec секунд"
<<
endl
;
// ---------- init MBTCP ----------
// cout << "--prefix-sm-ready-timeout - время на ожидание старта SM" << endl;
// cout << "--prefix-sm-ready-timeout - время на ожидание старта SM" << endl;
cout
<<
" Настройки протокола TCP: "
<<
endl
;
cout
<<
" Настройки протокола TCP: "
<<
endl
;
cout
<<
"--prefix-recv-timeout - Таймаут на ожидание ответа."
<<
endl
;
cout
<<
"--prefix-gateway hostname,IP - IP опрашиваемого узла"
<<
endl
;
cout
<<
"--prefix-gateway-port num - port на опрашиваемом узле"
<<
endl
;
cout
<<
"--prefix-recv-timeout msec - Таймаут на приём одного сообщения."
<<
endl
;
cout
<<
"--prefix-timeout msec - Таймаут для определения отсутсвия соединения.в"
<<
endl
;
cout
<<
"--prefix-persistent-connection 0,1 - Не закрывать соединение на каждом цикле опроса"
<<
endl
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
MBTCPMaster
*
MBTCPMaster
::
init_mbmaster
(
int
argc
,
const
char
*
const
*
argv
,
UniSetTypes
::
ObjectId
icID
,
SharedMemory
*
ic
,
MBTCPMaster
*
MBTCPMaster
::
init_mbmaster
(
int
argc
,
const
char
*
const
*
argv
,
UniSetTypes
::
ObjectId
icID
,
SharedMemory
*
ic
,
...
@@ -1562,12 +1954,12 @@ bool MBTCPMaster::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
...
@@ -1562,12 +1954,12 @@ bool MBTCPMaster::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
}
}
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(initDeviceInfo): add addr="
<<
ModbusRTU
::
addr2str
(
a
)
<<
endl
;
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(initDeviceInfo): add addr="
<<
ModbusRTU
::
addr2str
(
a
)
<<
endl
;
int
tout
=
it
.
getPIntProp
(
"timeout"
,
UniSetTimer
::
WaitUpTime
);
int
tout
=
it
.
getPIntProp
(
"timeout"
,
5000
);
d
->
second
->
resp_ptTimeout
.
setTiming
(
tout
);
d
->
second
->
resp_ptTimeout
.
setTiming
(
tout
);
d
->
second
->
resp_invert
=
it
.
getIntProp
(
"invert"
);
d
->
second
->
resp_invert
=
it
.
getIntProp
(
"invert"
);
// d->second->no_clean_input = it.getIntProp("no_clean_input");
// d->second->no_clean_input = it.getIntProp("no_clean_input");
//
dlog[Debug::INFO] << myname << "(initDeviceInfo): add " << d->second << endl;
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(initDeviceInfo): add "
<<
d
->
second
<<
endl
;
return
true
;
return
true
;
}
}
...
@@ -1611,7 +2003,8 @@ std::ostream& operator<<( std::ostream& os, MBTCPMaster::RTUDevice& d )
...
@@ -1611,7 +2003,8 @@ std::ostream& operator<<( std::ostream& os, MBTCPMaster::RTUDevice& d )
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
MBTCPMaster
::
RegInfo
&
r
)
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
MBTCPMaster
::
RegInfo
&
r
)
{
{
os
<<
" mbreg="
<<
ModbusRTU
::
dat2str
(
r
.
mbreg
)
os
<<
" id="
<<
r
.
id
<<
" mbreg="
<<
ModbusRTU
::
dat2str
(
r
.
mbreg
)
<<
" mbfunc="
<<
r
.
mbfunc
<<
" mbfunc="
<<
r
.
mbfunc
<<
" q_num="
<<
r
.
q_num
<<
" q_num="
<<
r
.
q_num
<<
" q_count="
<<
r
.
q_count
<<
" q_count="
<<
r
.
q_count
...
@@ -1638,14 +2031,14 @@ void MBTCPMaster::rtuQueryOptimization( RTUDeviceMap& m )
...
@@ -1638,14 +2031,14 @@ void MBTCPMaster::rtuQueryOptimization( RTUDeviceMap& m )
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
for
(
MBTCPMaster
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
{
{
MBTCPMaster
::
RegMap
::
iterator
beg
=
it
;
MBTCPMaster
::
RegMap
::
iterator
beg
=
it
;
ModbusRTU
::
ModbusData
reg
=
it
->
second
->
mbreg
+
it
->
second
->
offset
;
ModbusRTU
::
ModbusData
reg
=
it
->
second
->
mbreg
;
beg
->
second
->
q_num
=
1
;
beg
->
second
->
q_num
=
1
;
beg
->
second
->
q_count
=
1
;
beg
->
second
->
q_count
=
1
;
it
++
;
it
++
;
for
(
;
it
!=
d
->
regmap
.
end
();
++
it
)
for
(
;
it
!=
d
->
regmap
.
end
();
++
it
)
{
{
if
(
(
it
->
second
->
mbreg
+
it
->
second
->
offset
-
reg
)
>
1
)
if
(
(
it
->
second
->
mbreg
-
reg
)
>
1
)
break
;
break
;
if
(
beg
->
second
->
mbfunc
!=
it
->
second
->
mbfunc
)
if
(
beg
->
second
->
mbfunc
!=
it
->
second
->
mbfunc
)
...
@@ -1656,7 +2049,7 @@ void MBTCPMaster::rtuQueryOptimization( RTUDeviceMap& m )
...
@@ -1656,7 +2049,7 @@ void MBTCPMaster::rtuQueryOptimization( RTUDeviceMap& m )
if
(
beg
->
second
->
q_count
>=
ModbusRTU
::
MAXDATALEN
)
if
(
beg
->
second
->
q_count
>=
ModbusRTU
::
MAXDATALEN
)
break
;
break
;
reg
=
it
->
second
->
mbreg
+
it
->
second
->
offset
;
reg
=
it
->
second
->
mbreg
;
it
->
second
->
q_num
=
beg
->
second
->
q_count
;
it
->
second
->
q_num
=
beg
->
second
->
q_count
;
it
->
second
->
q_count
=
0
;
it
->
second
->
q_count
=
0
;
}
}
...
@@ -1697,8 +2090,6 @@ void MBTCPMaster::updateRTU( RegMap::iterator& rit )
...
@@ -1697,8 +2090,6 @@ void MBTCPMaster::updateRTU( RegMap::iterator& rit )
for
(
PList
::
iterator
it
=
r
->
slst
.
begin
();
it
!=
r
->
slst
.
end
();
++
it
)
for
(
PList
::
iterator
it
=
r
->
slst
.
begin
();
it
!=
r
->
slst
.
end
();
++
it
)
updateRSProperty
(
&
(
*
it
),
false
);
updateRSProperty
(
&
(
*
it
),
false
);
if
(
r
->
sm_init
)
r
->
mb_init
=
true
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
updateRSProperty
(
RSProperty
*
p
,
bool
write_only
)
void
MBTCPMaster
::
updateRSProperty
(
RSProperty
*
p
,
bool
write_only
)
...
@@ -1711,6 +2102,11 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1711,6 +2102,11 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
if
(
!
save
&&
write_only
)
if
(
!
save
&&
write_only
)
return
;
return
;
// если требуется инициализация и она ещё не произведена,
// то игнорируем
if
(
save
&&
!
r
->
mb_initOK
)
return
;
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
if
(
dlog
.
debugging
(
Debug
::
LEVEL3
)
)
dlog
[
Debug
::
LEVEL3
]
<<
"updateP: sid="
<<
p
->
si
.
id
dlog
[
Debug
::
LEVEL3
]
<<
"updateP: sid="
<<
p
->
si
.
id
<<
" mbval="
<<
r
->
mbval
<<
" mbval="
<<
r
->
mbval
...
@@ -1719,7 +2115,8 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1719,7 +2115,8 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
<<
" nbit="
<<
p
->
nbit
<<
" nbit="
<<
p
->
nbit
<<
" save="
<<
save
<<
" save="
<<
save
<<
" ioype="
<<
p
->
stype
<<
" ioype="
<<
p
->
stype
<<
" mb_init="
<<
r
->
mb_init
<<
" mb_initOK="
<<
r
->
mb_initOK
<<
" sm_initOK="
<<
r
->
sm_initOK
<<
endl
;
<<
endl
;
try
try
...
@@ -1729,11 +2126,15 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1729,11 +2126,15 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
ModbusRTU
::
DataBits16
b
(
r
->
mbval
);
ModbusRTU
::
DataBits16
b
(
r
->
mbval
);
if
(
p
->
nbit
>=
0
)
if
(
p
->
nbit
>=
0
)
{
{
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
bool
set
=
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
if
(
r
->
mb_initOK
)
b
.
set
(
p
->
nbit
,
set
);
{
r
->
mbval
=
b
.
mdata
();
bool
set
=
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
b
.
set
(
p
->
nbit
,
set
);
r
->
mbval
=
b
.
mdata
();
r
->
sm_initOK
=
true
;
}
}
}
else
else
{
{
...
@@ -1746,15 +2147,20 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1746,15 +2147,20 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
if
(
p
->
rnum
<=
1
)
if
(
p
->
rnum
<=
1
)
{
{
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
if
(
r
->
mb_initOK
)
p
->
stype
==
UniversalIO
::
DigitalOutput
)
{
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
r
->
mbval
=
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
p
->
stype
==
UniversalIO
::
DigitalOutput
)
}
{
else
r
->
mbval
=
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
r
->
mbval
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
}
else
r
->
mbval
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
r
->
sm_initOK
=
true
;
}
}
}
else
else
{
{
...
@@ -1766,6 +2172,7 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1766,6 +2172,7 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
else
else
IOBase
::
processingAsAI
(
p
,
(
signed
short
)(
r
->
mbval
),
shm
,
force
);
IOBase
::
processingAsAI
(
p
,
(
signed
short
)(
r
->
mbval
),
shm
,
force
);
}
}
return
;
return
;
}
}
...
@@ -1775,15 +2182,20 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1775,15 +2182,20 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
}
}
else
if
(
p
->
vType
==
VTypes
::
vtSigned
)
else
if
(
p
->
vType
==
VTypes
::
vtSigned
)
{
{
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
if
(
r
->
mb_initOK
)
p
->
stype
==
UniversalIO
::
DigitalOutput
)
{
{
r
->
mbval
=
(
signed
short
)
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
p
->
stype
==
UniversalIO
::
DigitalOutput
)
{
r
->
mbval
=
(
signed
short
)
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
}
else
r
->
mbval
=
(
signed
short
)
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
r
->
sm_initOK
=
true
;
}
}
else
r
->
mbval
=
(
signed
short
)
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
}
}
else
else
{
{
...
@@ -1801,15 +2213,20 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1801,15 +2213,20 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
}
}
else
if
(
p
->
vType
==
VTypes
::
vtUnsigned
)
else
if
(
p
->
vType
==
VTypes
::
vtUnsigned
)
{
{
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
if
(
r
->
mb_initOK
)
p
->
stype
==
UniversalIO
::
DigitalOutput
)
{
{
if
(
p
->
stype
==
UniversalIO
::
DigitalInput
||
r
->
mbval
=
(
unsigned
short
)
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
p
->
stype
==
UniversalIO
::
DigitalOutput
)
}
{
else
r
->
mbval
=
(
unsigned
short
)
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
r
->
mbval
=
(
unsigned
short
)
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
}
else
r
->
mbval
=
(
unsigned
short
)
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
r
->
sm_initOK
=
true
;
}
}
}
else
else
{
{
...
@@ -1834,12 +2251,16 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1834,12 +2251,16 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
return
;
return
;
}
}
if
(
save
&&
r
->
mb_init
)
if
(
save
&&
r
->
sm_initOK
)
{
{
long
v
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
if
(
r
->
mb_initOK
)
VTypes
::
Byte
b
(
r
->
mbval
);
{
b
.
raw
.
b
[
p
->
nbyte
-
1
]
=
v
;
long
v
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
r
->
mbval
=
b
.
raw
.
w
;
VTypes
::
Byte
b
(
r
->
mbval
);
b
.
raw
.
b
[
p
->
nbyte
-
1
]
=
v
;
r
->
mbval
=
b
.
raw
.
w
;
r
->
sm_initOK
=
true
;
}
}
}
else
else
{
{
...
@@ -1852,12 +2273,17 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1852,12 +2273,17 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
else
if
(
p
->
vType
==
VTypes
::
vtF2
)
else
if
(
p
->
vType
==
VTypes
::
vtF2
)
{
{
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
float
f
=
IOBase
::
processingFasAO
(
p
,
shm
,
force_out
);
if
(
r
->
mb_initOK
)
VTypes
::
F2
f2
(
f
);
{
for
(
int
k
=
0
;
k
<
VTypes
::
F2
::
wsize
();
k
++
,
i
++
)
float
f
=
IOBase
::
processingFasAO
(
p
,
shm
,
force_out
);
i
->
second
->
mbval
=
f2
.
raw
.
v
[
k
];
VTypes
::
F2
f2
(
f
);
for
(
int
k
=
0
;
k
<
VTypes
::
F2
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
f2
.
raw
.
v
[
k
];
r
->
sm_initOK
=
true
;
}
}
}
else
else
{
{
...
@@ -1874,12 +2300,15 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1874,12 +2300,15 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
else
if
(
p
->
vType
==
VTypes
::
vtF4
)
else
if
(
p
->
vType
==
VTypes
::
vtF4
)
{
{
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
float
f
=
IOBase
::
processingFasAO
(
p
,
shm
,
force_out
);
if
(
r
->
mb_initOK
)
VTypes
::
F4
f4
(
f
);
{
for
(
int
k
=
0
;
k
<
VTypes
::
F4
::
wsize
();
k
++
,
i
++
)
float
f
=
IOBase
::
processingFasAO
(
p
,
shm
,
force_out
);
i
->
second
->
mbval
=
f4
.
raw
.
v
[
k
];
VTypes
::
F4
f4
(
f
);
for
(
int
k
=
0
;
k
<
VTypes
::
F4
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
f4
.
raw
.
v
[
k
];
}
}
}
else
else
{
{
...
@@ -1896,12 +2325,17 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1896,12 +2325,17 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
else
if
(
p
->
vType
==
VTypes
::
vtI2
)
else
if
(
p
->
vType
==
VTypes
::
vtI2
)
{
{
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
long
v
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
if
(
r
->
mb_initOK
)
VTypes
::
I2
i2
(
v
);
{
for
(
int
k
=
0
;
k
<
VTypes
::
I2
::
wsize
();
k
++
,
i
++
)
long
v
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
i
->
second
->
mbval
=
i2
.
raw
.
v
[
k
];
VTypes
::
I2
i2
(
v
);
for
(
int
k
=
0
;
k
<
VTypes
::
I2
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
i2
.
raw
.
v
[
k
];
r
->
sm_initOK
=
true
;
}
}
}
else
else
{
{
...
@@ -1918,12 +2352,17 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1918,12 +2352,17 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
else
if
(
p
->
vType
==
VTypes
::
vtU2
)
else
if
(
p
->
vType
==
VTypes
::
vtU2
)
{
{
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
if
(
save
&&
r
->
mb_init
)
if
(
save
)
{
{
long
v
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
if
(
r
->
mb_initOK
)
VTypes
::
U2
u2
(
v
);
{
for
(
int
k
=
0
;
k
<
VTypes
::
U2
::
wsize
();
k
++
,
i
++
)
long
v
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
i
->
second
->
mbval
=
u2
.
raw
.
v
[
k
];
VTypes
::
U2
u2
(
v
);
for
(
int
k
=
0
;
k
<
VTypes
::
U2
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
u2
.
raw
.
v
[
k
];
r
->
sm_initOK
=
true
;
}
}
}
else
else
{
{
...
@@ -1937,6 +2376,8 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1937,6 +2376,8 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
IOBase
::
processingAsAI
(
p
,
(
unsigned
int
)
u2
,
shm
,
force
);
IOBase
::
processingAsAI
(
p
,
(
unsigned
int
)
u2
,
shm
,
force
);
}
}
}
}
return
;
}
}
catch
(
IOController_i
::
NameNotFound
&
ex
)
catch
(
IOController_i
::
NameNotFound
&
ex
)
{
{
...
@@ -1963,6 +2404,10 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1963,6 +2404,10 @@ void MBTCPMaster::updateRSProperty( RSProperty* p, bool write_only )
{
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateRSProperty): catch ..."
<<
endl
;
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateRSProperty): catch ..."
<<
endl
;
}
}
// Если SM стала (или была) недоступна
// то флаг инициализации надо сбросить
r
->
sm_initOK
=
false
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
MBTCPMaster
::
updateMTR
(
RegMap
::
iterator
&
rit
)
void
MBTCPMaster
::
updateMTR
(
RegMap
::
iterator
&
rit
)
...
...
extensions/MBTCPMaster/MBTCPMaster.h
View file @
e2cbe9cd
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
#include "Calibration.h"
#include "Calibration.h"
#include "SMInterface.h"
#include "SMInterface.h"
#include "SharedMemory.h"
#include "SharedMemory.h"
#include "ThreadCreator.h"
#include "IOBase.h"
#include "IOBase.h"
#include "VTypes.h"
#include "VTypes.h"
#include "MTR.h"
#include "MTR.h"
...
@@ -68,10 +69,11 @@
...
@@ -68,10 +69,11 @@
Порт задаётся в конфигурационном файле параметром \b gateway_port или
Порт задаётся в конфигурационном файле параметром \b gateway_port или
параметром командной строки \b --xxx-gateway-port. По умолчанию используется порт \b 502.
параметром командной строки \b --xxx-gateway-port. По умолчанию используется порт \b 502.
\b --xxx-recv-timeout или \b recv_timeout msec - таймаут на приём
сообщений. По умолчанию 20
00 мсек.
\b --xxx-recv-timeout или \b recv_timeout msec - таймаут на приём
одного сообщения. По умолчанию 1
00 мсек.
\b --xxx-
all-timeout или \b all_timeout msec - таймаут на определение отсутсвия связи
\b --xxx-
timeout или \b timeout msec - таймаут на определение отсутсвия связи
(после этого идёт попытка реинициализировать соединение)
(после этого идёт попытка реинициализировать соединение)
По умолчанию 5000 мсек.
\b --xxx-no-query-optimization или \b no_query_optimization - [1|0] отключить оптимизацию запросов
\b --xxx-no-query-optimization или \b no_query_optimization - [1|0] отключить оптимизацию запросов
...
@@ -87,7 +89,7 @@
...
@@ -87,7 +89,7 @@
- 1 - перечитывать значения входов из SharedMemory на каждом цикле
- 1 - перечитывать значения входов из SharedMemory на каждом цикле
- 0 - обновлять значения только по изменению
- 0 - обновлять значения только по изменению
\b --xxx-
force-disconnect или \b force_disconnect -
закрывать соединение после каждого запроса.
\b --xxx-
persistent-connection или \b persistent_connection - НЕ
закрывать соединение после каждого запроса.
\b --xxx-force-out или \b force_out [1|0]
\b --xxx-force-out или \b force_out [1|0]
- 1 - перечитывать значения выходов из SharedMemory на каждом цикле
- 1 - перечитывать значения выходов из SharedMemory на каждом цикле
...
@@ -137,7 +139,7 @@
...
@@ -137,7 +139,7 @@
Помимо этого можно задавать следующие параметры:
Помимо этого можно задавать следующие параметры:
- \b tcp_vtype - тип переменной. см VTypes::VType.
- \b tcp_vtype - тип переменной. см VTypes::VType.
- \b tcp_rawdata - [
1|0
] - игнорировать или нет параметры калибровки
- \b tcp_rawdata - [
0|1
] - игнорировать или нет параметры калибровки
- \b tcp_iotype - [DI,DO,AI,AO] - переназначить тип датчика. По умолчанию используется поле iotype.
- \b tcp_iotype - [DI,DO,AI,AO] - переназначить тип датчика. По умолчанию используется поле iotype.
- \b tcp_nbit - номер бита в слове. Используется для DI,DO в случае когда для опроса используется
- \b tcp_nbit - номер бита в слове. Используется для DI,DO в случае когда для опроса используется
функция читающая слова (03
функция читающая слова (03
...
@@ -145,13 +147,31 @@
...
@@ -145,13 +147,31 @@
- \b tcp_mboffset - "сдвиг"(может быть отрицательным) при опросе/записи.
- \b tcp_mboffset - "сдвиг"(может быть отрицательным) при опросе/записи.
Т.е. фактически будет опрошен/записан регистр "mbreg+mboffset".
Т.е. фактически будет опрошен/записан регистр "mbreg+mboffset".
Для инициализации "выходов" (регистров которые пишутся) можно использовать поля:
- \b tcp_preinit - [0|1] считать регистр перед использованием (при запуске процесса)
- \b tcp_init_mbfunc - Номер функции для инициализации. Если не указана, будет определена автоматически исходя из tcp_mbfunc.
- \b tcp_init_mbreg - Номер регистра откуда считывать значение для инициализации. Если это поле не указано используется tcp_mbreg.
Если указано tcp_preinit="1", то прежде чем начать писать регистр в устройство, будет произведено его чтение.
По умолчанию все "записываемые" регистры инициализируются значением из SM. Т.е. пока не будет первый раз считано значение из SM,
регистры в устройство писатся не будут. Чтобы отключить это поведение, можно указать параметр
- \b tcp_sm_initOK - [0|1] Игнорировать начальную инициализацию из SM (сразу писать в устройство)
При этом будет записывыться значение "default".
\warning Регистр должен быть уникальным. И может повторятся только если указан параметр \a nbit или \a nbyte.
\warning Регистр должен быть уникальным. И может повторятся только если указан параметр \a nbit или \a nbyte.
*/
*/
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
/*!
/*!
Реализация Modbus TCP Master для обмена с многими ModbusRTU устройствами
\par
Реализация Modbus TCP Master для обмена с многими ModbusRTU устройствами
через один modbus tcp шлюз.
через один modbus tcp шлюз.
\par Чтобы не зависеть от таймаутов TCP соединений, которые могут неопределённо зависать
на создании соединения с недоступным хостом. Обмен вынесен в отдельный поток.
При этом в этом же потоке обновляются данные в SM. В свою очередь информация о датчиках
связи обновляется в основном потоке (чтобы не зависеть от TCP).
*/
*/
class
MBTCPMaster
:
class
MBTCPMaster
:
public
UniSetObject_LT
public
UniSetObject_LT
...
@@ -214,25 +234,25 @@ class MBTCPMaster:
...
@@ -214,25 +234,25 @@ class MBTCPMaster:
typedef
std
::
list
<
RSProperty
>
PList
;
typedef
std
::
list
<
RSProperty
>
PList
;
static
std
::
ostream
&
print_plist
(
std
::
ostream
&
os
,
PList
&
p
);
static
std
::
ostream
&
print_plist
(
std
::
ostream
&
os
,
PList
&
p
);
typedef
std
::
map
<
ModbusRTU
::
ModbusData
,
RegInfo
*>
RegMap
;
typedef
unsigned
long
RegID
;
typedef
std
::
map
<
RegID
,
RegInfo
*>
RegMap
;
struct
RegInfo
struct
RegInfo
{
{
RegInfo
()
:
RegInfo
()
:
mbval
(
0
),
mbreg
(
0
),
mbfunc
(
ModbusRTU
::
fnUnknown
),
mbval
(
0
),
mbreg
(
0
),
mbfunc
(
ModbusRTU
::
fnUnknown
),
dev
(
0
),
offset
(
0
),
mtrType
(
MTR
::
mtUnknown
),
id
(
0
),
dev
(
0
),
mtrType
(
MTR
::
mtUnknown
),
q_num
(
0
),
q_count
(
1
),
mb_init
(
false
),
sm_init
(
false
),
q_num
(
0
),
q_count
(
1
),
mb_initOK
(
true
),
sm_initOK
(
true
)
mb_init_mbreg
(
0
)
{}
{}
ModbusRTU
::
ModbusData
mbval
;
ModbusRTU
::
ModbusData
mbval
;
ModbusRTU
::
ModbusData
mbreg
;
/*!< регистр */
ModbusRTU
::
ModbusData
mbreg
;
/*!< регистр */
ModbusRTU
::
SlaveFunctionCode
mbfunc
;
/*!< функция для чтения/записи */
ModbusRTU
::
SlaveFunctionCode
mbfunc
;
/*!< функция для чтения/записи */
PList
slst
;
PList
slst
;
RegID
id
;
RTUDevice
*
dev
;
RTUDevice
*
dev
;
int
offset
;
// only for MTR
// only for MTR
MTR
::
MTRType
mtrType
;
/*!< тип регистра (согласно спецификации на MTR) */
MTR
::
MTRType
mtrType
;
/*!< тип регистра (согласно спецификации на MTR) */
...
@@ -241,9 +261,17 @@ class MBTCPMaster:
...
@@ -241,9 +261,17 @@ class MBTCPMaster:
int
q_count
;
/*!< count registers for query */
int
q_count
;
/*!< count registers for query */
RegMap
::
iterator
rit
;
RegMap
::
iterator
rit
;
bool
mb_init
;
/*!< init before use */
bool
sm_init
;
/*!< SM init value */
// начальная инициалиазция для "записываемых" регистров
ModbusRTU
::
ModbusData
mb_init_mbreg
;
/*!< mb_init register */
// Механизм:
// Если tcp_preinit="1", то сперва будет сделано чтение значения из устройства.
// при этом флаг mb_init=false пока не пройдёт успешной инициализации
// Если tcp_preinit="0", то флаг mb_init сразу выставляется в true.
bool
mb_initOK
;
/*!< инициализировалось ли значение из устройства */
// Флаг sm_init означает, что писать в устройство нельзя, т.к. значение в "карте регистров"
// ещё не инициализировано из SM
bool
sm_initOK
;
/*!< инициализировалось ли значение из SM */
};
};
friend
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
RegInfo
&
r
);
friend
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
RegInfo
&
r
);
...
@@ -293,9 +321,30 @@ class MBTCPMaster:
...
@@ -293,9 +321,30 @@ class MBTCPMaster:
void
printMap
(
RTUDeviceMap
&
d
);
void
printMap
(
RTUDeviceMap
&
d
);
// ----------------------------------
// ----------------------------------
protected
:
protected
:
struct
InitRegInfo
{
InitRegInfo
()
:
dev
(
0
),
mbreg
(
0
),
mbfunc
(
ModbusRTU
::
fnUnknown
),
initOK
(
false
),
ri
(
0
)
{}
RSProperty
p
;
RTUDevice
*
dev
;
ModbusRTU
::
ModbusData
mbreg
;
ModbusRTU
::
SlaveFunctionCode
mbfunc
;
bool
initOK
;
RegInfo
*
ri
;
};
typedef
std
::
list
<
InitRegInfo
>
InitList
;
void
firstInitRegisters
();
bool
preInitRead
(
InitList
::
iterator
&
p
);
bool
initSMValue
(
ModbusRTU
::
ModbusData
*
data
,
int
count
,
RSProperty
*
p
);
bool
allInitOK
;
RTUDeviceMap
rmap
;
RTUDeviceMap
rmap
;
InitList
initRegList
;
/*!< список регистров для инициализации */
ModbusTCPMaster
*
mb
;
ModbusTCPMaster
*
mb
;
UniSetTypes
::
uniset_mutex
mbMutex
;
UniSetTypes
::
uniset_mutex
mbMutex
;
std
::
string
iaddr
;
std
::
string
iaddr
;
...
@@ -310,6 +359,7 @@ class MBTCPMaster:
...
@@ -310,6 +359,7 @@ class MBTCPMaster:
SMInterface
*
shm
;
SMInterface
*
shm
;
void
step
();
void
step
();
void
poll_thread
();
void
poll
();
void
poll
();
bool
pollRTU
(
RTUDevice
*
dev
,
RegMap
::
iterator
&
it
);
bool
pollRTU
(
RTUDevice
*
dev
,
RegMap
::
iterator
&
it
);
...
@@ -317,6 +367,7 @@ class MBTCPMaster:
...
@@ -317,6 +367,7 @@ class MBTCPMaster:
void
updateRTU
(
RegMap
::
iterator
&
it
);
void
updateRTU
(
RegMap
::
iterator
&
it
);
void
updateMTR
(
RegMap
::
iterator
&
it
);
void
updateMTR
(
RegMap
::
iterator
&
it
);
void
updateRSProperty
(
RSProperty
*
p
,
bool
write_only
=
false
);
void
updateRSProperty
(
RSProperty
*
p
,
bool
write_only
=
false
);
void
updateRespondSensors
();
virtual
void
processingMessage
(
UniSetTypes
::
VoidMessage
*
msg
);
virtual
void
processingMessage
(
UniSetTypes
::
VoidMessage
*
msg
);
void
sysCommand
(
UniSetTypes
::
SystemMessage
*
msg
);
void
sysCommand
(
UniSetTypes
::
SystemMessage
*
msg
);
...
@@ -338,9 +389,9 @@ class MBTCPMaster:
...
@@ -338,9 +389,9 @@ class MBTCPMaster:
void
initDeviceList
();
void
initDeviceList
();
void
initOffsetList
();
void
initOffsetList
();
static
RegID
genRegID
(
const
ModbusRTU
::
ModbusData
r
,
const
int
fn
);
RTUDevice
*
addDev
(
RTUDeviceMap
&
dmap
,
ModbusRTU
::
ModbusAddr
a
,
UniXML_iterator
&
it
);
RTUDevice
*
addDev
(
RTUDeviceMap
&
dmap
,
ModbusRTU
::
ModbusAddr
a
,
UniXML_iterator
&
it
);
RegInfo
*
addReg
(
RegMap
&
rmap
,
ModbusRTU
::
ModbusData
r
,
UniXML_iterator
&
it
,
RegInfo
*
addReg
(
RegMap
&
rmap
,
RegID
id
,
ModbusRTU
::
ModbusData
r
,
UniXML_iterator
&
it
,
RTUDevice
*
dev
,
RegInfo
*
rcopy
=
0
);
RTUDevice
*
dev
,
RegInfo
*
rcopy
=
0
);
RSProperty
*
addProp
(
PList
&
plist
,
RSProperty
&
p
);
RSProperty
*
addProp
(
PList
&
plist
,
RSProperty
&
p
);
...
@@ -355,7 +406,10 @@ class MBTCPMaster:
...
@@ -355,7 +406,10 @@ class MBTCPMaster:
void
readConfiguration
();
void
readConfiguration
();
bool
check_item
(
UniXML_iterator
&
it
);
bool
check_item
(
UniXML_iterator
&
it
);
private
:
bool
checkProcActive
();
void
setProcActive
(
bool
st
);
private
:
MBTCPMaster
();
MBTCPMaster
();
bool
initPause
;
bool
initPause
;
UniSetTypes
::
uniset_mutex
mutex_start
;
UniSetTypes
::
uniset_mutex
mutex_start
;
...
@@ -371,17 +425,13 @@ class MBTCPMaster:
...
@@ -371,17 +425,13 @@ class MBTCPMaster:
IOController
::
AIOStateList
::
iterator
aitHeartBeat
;
IOController
::
AIOStateList
::
iterator
aitHeartBeat
;
UniSetTypes
::
ObjectId
test_id
;
UniSetTypes
::
ObjectId
test_id
;
UniSetTypes
::
uniset_mutex
pollMutex
;
UniSetTypes
::
uniset_mutex
actMutex
;
bool
activated
;
bool
activated
;
int
activateTimeout
;
int
activateTimeout
;
bool
noQueryOptimization
;
bool
noQueryOptimization
;
bool
force_disconnect
;
bool
force_disconnect
;
bool
allNotRespond
;
Trigger
trAllNotRespond
;
PassiveTimer
ptAllNotRespond
;
std
::
string
prefix
;
std
::
string
prefix
;
bool
no_extimer
;
bool
no_extimer
;
...
@@ -389,6 +439,16 @@ class MBTCPMaster:
...
@@ -389,6 +439,16 @@ class MBTCPMaster:
timeout_t
stat_time
;
/*!< время сбора статистики обмена */
timeout_t
stat_time
;
/*!< время сбора статистики обмена */
int
poll_count
;
int
poll_count
;
PassiveTimer
ptStatistic
;
/*!< таймер для сбора статистики обмена */
PassiveTimer
ptStatistic
;
/*!< таймер для сбора статистики обмена */
// т.к. TCP может "зависнуть" на подключении к недоступному узлу
// делаем опрос в отдельном потоке
ThreadCreator
<
MBTCPMaster
>*
pollThread
;
/*!< поток опроса */
bool
pollActivated
;
UniSetTypes
::
uniset_mutex
pollMutex
;
// определение timeout для соединения
PassiveTimer
ptTimeout
;
UniSetTypes
::
uniset_mutex
tcpMutex
;
};
};
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#endif // _MBTCPMaster_H_
#endif // _MBTCPMaster_H_
...
...
extensions/MBTCPMaster/Makefile.am
View file @
e2cbe9cd
bin_PROGRAMS
=
@PACKAGE@-mbtcpmaster
bin_PROGRAMS
=
@PACKAGE@-mbtcpmaster
# не забывайте править версию в pc-файле
# не забывайте править версию в pc-файле
UMBTCP_VER
=
@LIBVER@
UMBTCP_VER
=
1:1:0
lib_LTLIBRARIES
=
libUniSetMBTCPMaster.la
lib_LTLIBRARIES
=
libUniSetMBTCPMaster.la
libUniSetMBTCPMaster_la_LDFLAGS
=
-version-info
$(UMBTCP_VER)
libUniSetMBTCPMaster_la_LDFLAGS
=
-version-info
$(UMBTCP_VER)
...
...
extensions/MBTCPMaster/libUniSetMBTCPMaster.pc.in
View file @
e2cbe9cd
...
@@ -6,6 +6,6 @@ includedir=@includedir@
...
@@ -6,6 +6,6 @@ includedir=@includedir@
Name: libUniSetMBTCPMaster
Name: libUniSetMBTCPMaster
Description: Support library for UniSetModbusTCPMaster
Description: Support library for UniSetModbusTCPMaster
Requires: libUniSetExtensions libUniSetSharedMemory
Requires: libUniSetExtensions libUniSetSharedMemory
Version:
@VERSION@
Version:
1.1.0
Libs: -L${libdir} -lUniSetMBTCPMaster
Libs: -L${libdir} -lUniSetMBTCPMaster
Cflags: -I${includedir}/uniset
Cflags: -I${includedir}/uniset
extensions/RTUExchange/RTUExchange.cc
View file @
e2cbe9cd
...
@@ -607,7 +607,7 @@ void RTUExchange::updateSM()
...
@@ -607,7 +607,7 @@ void RTUExchange::updateSM()
if
(
dlog
.
debugging
(
Debug
::
LEVEL4
)
)
if
(
dlog
.
debugging
(
Debug
::
LEVEL4
)
)
{
{
dlog
[
Debug
::
LEVEL4
]
<<
"check respond addr="
<<
ModbusRTU
::
addr2str
(
d
->
mbaddr
)
dlog
[
Debug
::
LEVEL4
]
<<
"check respond addr="
<<
ModbusRTU
::
addr2str
(
d
->
mbaddr
)
<<
" respond="
<<
d
->
resp_id
<<
" respond
_id
="
<<
d
->
resp_id
<<
" real="
<<
d
->
resp_real
<<
" real="
<<
d
->
resp_real
<<
" state="
<<
d
->
resp_state
<<
" state="
<<
d
->
resp_state
<<
endl
;
<<
endl
;
...
...
extensions/RTUExchange/RTUStorage.h
View file @
e2cbe9cd
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//! \version $Id: RTUStorage.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef _RTUSTORAGE_H_
#ifndef _RTUSTORAGE_H_
#define _RTUSTORAGE_H_
#define _RTUSTORAGE_H_
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
...
...
extensions/SMViewer/SMViewer.h
View file @
e2cbe9cd
/*! $Id$ */
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
#ifndef _SMVIEWER_H
#ifndef _SMVIEWER_H
#define _SMVIEWER_H
#define _SMVIEWER_H
...
...
extensions/SharedMemory/SharedMemory.h
View file @
e2cbe9cd
/* $Id: SharedMemory.h,v 1.2 2009/01/22 02:11:24 vpashka Exp $ */
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef SharedMemory_H_
#ifndef SharedMemory_H_
#define SharedMemory_H_
#define SharedMemory_H_
...
...
extensions/UDPExchange/UDPPacket.h
View file @
e2cbe9cd
// $Id: UDPPacket.h,v 1.1 2009/02/10 20:38:27 vpashka Exp $
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef UDPPacket_H_
#ifndef UDPPacket_H_
#define UDPPacket_H_
#define UDPPacket_H_
...
...
extensions/UniNetwork/UniExchange.h
View file @
e2cbe9cd
// $Id: UniExchange.h,v 1.2 2009/04/07 16:11:23 pv Exp $
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef UniExchange_H_
#ifndef UniExchange_H_
#define UniExchange_H_
#define UniExchange_H_
...
...
extensions/include/DigitalFilter.h
View file @
e2cbe9cd
// $Id: DigitalFilter.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
// Цифровой фильтр с двумя (опционально) уровнями фильтрации сигнала
// Цифровой фильтр с двумя (опционально) уровнями фильтрации сигнала
// Первый уровень фильтра усредняет несколько значений, переданных через массив
// Первый уровень фильтра усредняет несколько значений, переданных через массив
...
...
extensions/include/Extensions.h
View file @
e2cbe9cd
// $Id: Extensions.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef Extensions_H_
#ifndef Extensions_H_
#define Extensions_H_
#define Extensions_H_
...
...
extensions/include/IOBase.h
View file @
e2cbe9cd
// $Id: IOBase.h,v 1.3 2009/01/23 23:56:54 vpashka Exp $
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef IOBase_H_
#ifndef IOBase_H_
#define IOBase_H_
#define IOBase_H_
...
...
extensions/include/MTR.h
View file @
e2cbe9cd
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//! \version $Id: MTR.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef _MTR_H_
#ifndef _MTR_H_
#define _MTR_H_
#define _MTR_H_
...
...
extensions/include/PID.h
View file @
e2cbe9cd
// $Id: PID.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#ifndef PID_H_
#ifndef PID_H_
#define PID_H_
#define PID_H_
...
...
extensions/include/SMInterface.h
View file @
e2cbe9cd
/* $Id: SMInterface.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $ */
//--------------------------------------------------------------------------
#ifndef SMInterface_H_
#ifndef SMInterface_H_
#define SMInterface_H_
#define SMInterface_H_
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
#include <string>
#include <string>
#include "UniSetTypes.h"
#include "UniSetTypes.h"
#include "Mutex.h"
#include "IONotifyController.h"
#include "IONotifyController.h"
#include "UniversalInterface.h"
#include "UniversalInterface.h"
class
SMInterface
class
SMInterface
...
@@ -89,6 +88,7 @@ class SMInterface
...
@@ -89,6 +88,7 @@ class SMInterface
CORBA
::
Object_var
oref
;
CORBA
::
Object_var
oref
;
UniSetTypes
::
ObjectId
shmID
;
UniSetTypes
::
ObjectId
shmID
;
UniSetTypes
::
ObjectId
myid
;
UniSetTypes
::
ObjectId
myid
;
UniSetTypes
::
uniset_mutex
shmMutex
;
};
};
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
...
...
extensions/include/VTypes.h
View file @
e2cbe9cd
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//! \version $Id: RTUTypes.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef _RTUTypes_H_
#ifndef _RTUTypes_H_
#define _RTUTypes_H_
#define _RTUTypes_H_
...
...
extensions/lib/SMInterface.cc
View file @
e2cbe9cd
...
@@ -10,6 +10,7 @@ using namespace UniSetTypes;
...
@@ -10,6 +10,7 @@ using namespace UniSetTypes;
#define BEG_FUNC(name) \
#define BEG_FUNC(name) \
try \
try \
{ \
{ \
uniset_mutex_lock l(shmMutex,500); \
IONotifyController_i_var shm;\
IONotifyController_i_var shm;\
for( unsigned int i=0; i<conf->getRepeatCount(); i++)\
for( unsigned int i=0; i<conf->getRepeatCount(); i++)\
{\
{\
...
@@ -32,6 +33,7 @@ using namespace UniSetTypes;
...
@@ -32,6 +33,7 @@ using namespace UniSetTypes;
#define BEG_FUNC1(name) \
#define BEG_FUNC1(name) \
try \
try \
{ \
{ \
uniset_mutex_lock l(shmMutex,500); \
if( true ) \
if( true ) \
{ \
{ \
try \
try \
...
...
include/CallBackTimer.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:20 $
* \version $Id: CallBackTimer.h,v 1.5 2005/01/28 20:52:20 vitlav Exp $
*/
*/
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
# ifndef CallBackTimer_H_
# ifndef CallBackTimer_H_
...
...
include/CallBackTimer_template.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/02/07 21:04:56 $
* \version $Id: CallBackTimer_template.h,v 1.6 2008/02/07 21:04:56 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
# ifndef CallBackTimer_TEMPLATE_H_
# ifndef CallBackTimer_TEMPLATE_H_
...
...
include/Configuration.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Класс работы с конфигурацией
* \brief Класс работы с конфигурацией
* \author Vitaly Lipatov, Pavel Vainerman
* \author Vitaly Lipatov, Pavel Vainerman
* \date $Date: 2008/02/21 19:59:57 $
* \version $Id: Configuration.h,v 1.25 2008/02/21 19:59:57 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef Configuration_H_
#ifndef Configuration_H_
...
...
include/DBServer.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: DBServer.h,v 1.8 2007/06/17 21:30:55 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef DBServer_H_
#ifndef DBServer_H_
...
...
include/DefaultMessageInterface.h
View file @
e2cbe9cd
...
@@ -20,9 +20,6 @@
...
@@ -20,9 +20,6 @@
/*! \file
/*! \file
* \brief "Пустая" реализация интерфейса работы с сообщениями
* \brief "Пустая" реализация интерфейса работы с сообщениями
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2006/12/22 13:37:48 $
* \version $Id: DefaultMessageInterface.h,v 1.3 2006/12/22 13:37:48 vpashka Exp $
*
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef DefaultMessageInterface_H_
#ifndef DefaultMessageInterface_H_
...
...
include/IOController.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Реализация IOController_i
* \brief Реализация IOController_i
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/11/29 21:24:25 $
* \version $Id: IOController.h,v 1.28 2008/11/29 21:24:25 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef IOController_H_
#ifndef IOController_H_
...
...
include/IONotifyController.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Реализация IONotifyController_i
* \brief Реализация IONotifyController_i
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/12/16 21:32:07 $
* \version $Id: IONotifyController.h,v 1.23 2007/12/16 21:32:07 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef IONotifyController_H_
#ifndef IONotifyController_H_
...
...
include/IONotifyController_LT.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/07/31 18:13:40 $
* \version $Id: IONotifyController_LT.h,v 1.4 2007/07/31 18:13:40 vpashka Exp $
*/
*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef IONotifyController_LT_H_
#ifndef IONotifyController_LT_H_
...
...
include/IORFile.h
View file @
e2cbe9cd
...
@@ -18,8 +18,6 @@
...
@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: IORFile.h,v 1.4 2007/11/15 20:55:26 vpashka Exp $
* \date $Date: 2007/11/15 20:55:26 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef IORFile_H_
#ifndef IORFile_H_
...
...
include/IOs/DigitalCard.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Заголовочный файл для организации низкоуровневого ввода-вывода.
* \brief Заголовочный файл для организации низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2005/11/01 21:44:53 $
* \version $Id: DigitalCard.h,v 1.4 2005/11/01 21:44:53 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef DIGITALCARD_H__
#ifndef DIGITALCARD_H__
...
...
include/IOs/DigitalCard_O5600.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Заголовочный файл для дискретной карты DIO5600
* \brief Заголовочный файл для дискретной карты DIO5600
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2005/01/28 20:52:53 $
* \version $Id: DigitalCard_O5600.h,v 1.3 2005/01/28 20:52:53 vitlav Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef __DIO5600_H_
#ifndef __DIO5600_H_
...
...
include/IOs/IOAccess.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Заголовочный файл для организации низкоуровневого ввода-вывода.
* \brief Заголовочный файл для организации низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2006/12/21 14:47:42 $
* \version $Id: IOAccess.h,v 1.5 2006/12/21 14:47:42 vpashka Exp $
* \par
* \par
* Этот файл предназначен для внутреннего использования в классах
* Этот файл предназначен для внутреннего использования в классах
* ввода-вывода
* ввода-вывода
...
@@ -39,8 +37,6 @@
...
@@ -39,8 +37,6 @@
/*! \class IOAccess
/*! \class IOAccess
* \brief Предоставление операций для низкоуровневого ввода-вывода.
* \brief Предоставление операций для низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2006/12/21 14:47:42 $
* \version $Id: IOAccess.h,v 1.5 2006/12/21 14:47:42 vpashka Exp $
* \par
* \par
* Этот класс предназначен для внутреннего использования в классах
* Этот класс предназначен для внутреннего использования в классах
* ввода-вывода
* ввода-вывода
...
...
include/IOs/IOAccessOld.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Предоставление операций для низкоуровневого ввода-вывода.
* \brief Предоставление операций для низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2006/12/19 15:46:14 $
* \version $Id: IOAccessOld.h,v 1.4 2006/12/19 15:46:14 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <unistd.h>
#include <unistd.h>
...
...
include/ISRestorer.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Интерфейс к объекту сохраняющему список заказчиков и сообщений для InfoServer-а
* \brief Интерфейс к объекту сохраняющему список заказчиков и сообщений для InfoServer-а
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: ISRestorer.h,v 1.9 2008/12/14 21:57:51 vpashka Exp $
* \date $Date: 2008/12/14 21:57:51 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ISRestorer_H_
#ifndef ISRestorer_H_
...
@@ -58,8 +56,6 @@ class ISRestorer
...
@@ -58,8 +56,6 @@ class ISRestorer
/*!
/*!
* \brief Реализация сохранения списка заказчиков в xml.
* \brief Реализация сохранения списка заказчиков в xml.
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: ISRestorer.h,v 1.9 2008/12/14 21:57:51 vpashka Exp $
* \date $Date: 2008/12/14 21:57:51 $
*
*
Реализует сохранение списка заказчиков в xml-файле.
Реализует сохранение списка заказчиков в xml-файле.
\sa ISRestorer
\sa ISRestorer
...
...
include/InfoServer.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/01/06 00:03:34 $
* \version $Id: InfoServer.h,v 1.11 2007/01/06 00:03:34 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef InfoServer_H_
#ifndef InfoServer_H_
...
...
include/LT_Object.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2006/12/20 10:39:01 $
* \version $Id: LT_Object.h,v 1.5 2006/12/20 10:39:01 vpashka Exp $
*/
*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef Object_LT_H_
#ifndef Object_LT_H_
...
...
include/MessageInterface.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Класс работы с сообщениями
* \brief Класс работы с сообщениями
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2006/12/22 13:37:48 $
* \version $Id: MessageInterface.h,v 1.7 2006/12/22 13:37:48 vpashka Exp $
*
*
* Получение сообщения по id
* Получение сообщения по id
*/
*/
...
...
include/MessageInterface_XML.h
View file @
e2cbe9cd
...
@@ -20,9 +20,6 @@
...
@@ -20,9 +20,6 @@
/*! \file
/*! \file
* \brief Реализация интерфейса работы с сообщениями на основе XML
* \brief Реализация интерфейса работы с сообщениями на основе XML
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/11/22 23:22:24 $
* \version $Id: MessageInterface_XML.h,v 1.7 2008/11/22 23:22:24 vpashka Exp $
*
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef __MESSAGEINTERFACE_XML_H__
#ifndef __MESSAGEINTERFACE_XML_H__
...
...
include/MessageInterface_idXML.h
View file @
e2cbe9cd
/*! \file
/*! \file
* \brief Класс работы с сообщениями
* \brief Класс работы с сообщениями
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/11/22 23:22:24 $
* \version $Id: MessageInterface_idXML.h,v 1.5 2008/11/22 23:22:24 vpashka Exp $
*/
*/
/**************************************************************************/
/**************************************************************************/
#ifndef MessageInterface_idXML_H_
#ifndef MessageInterface_idXML_H_
...
...
include/MessageType.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Базовые типы сообщений
* \brief Базовые типы сообщений
* \author Vitaly Lipatov, Pavel Vainerman
* \author Vitaly Lipatov, Pavel Vainerman
* \date $Date: 2008/12/14 21:57:51 $
* \version $Id: MessageType.h,v 1.14 2008/12/14 21:57:51 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef MessageType_H_
#ifndef MessageType_H_
...
...
include/Mutex.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
* \version $Id: Mutex.h,v 1.14 2007/11/18 19:13:35 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef UniSet_MUTEX_H_
#ifndef UniSet_MUTEX_H_
...
@@ -75,8 +73,6 @@ namespace UniSetTypes
...
@@ -75,8 +73,6 @@ namespace UniSetTypes
/*! \class uniset_mutex_lock
/*! \class uniset_mutex_lock
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
* \version $Id: Mutex.h,v 1.14 2007/11/18 19:13:35 vpashka Exp $
*
*
* Предназначен для блокирования совместного доступа. Как пользоваться см. \ref MutexHowToPage
* Предназначен для блокирования совместного доступа. Как пользоваться см. \ref MutexHowToPage
* \note Если ресурс уже занят, то lock ждет его освобождения...
* \note Если ресурс уже занят, то lock ждет его освобождения...
...
...
include/NCRestorer.h
View file @
e2cbe9cd
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
/*! \file
/*! \file
* \brief Интерфейс к объекту сохраняющему список заказчиков для NotifyController-ов
* \brief Интерфейс к объекту сохраняющему список заказчиков для NotifyController-ов
* \author Pavel Vainerman
* \author Pavel Vainerman
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef NCRestorer_H_
#ifndef NCRestorer_H_
#define NCRestorer_H_
#define NCRestorer_H_
...
...
include/ORepHelpers.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: ORepHelpers.h,v 1.9 2007/11/18 19:13:35 vpashka Exp $
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ORepHelpers_H_
#ifndef ORepHelpers_H_
...
...
include/ObjectIndex.h
View file @
e2cbe9cd
...
@@ -18,8 +18,6 @@
...
@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \version $Id: ObjectIndex.h,v 1.11 2008/11/22 23:22:24 vpashka Exp $
* \date $Date: 2008/11/22 23:22:24 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjcetIndex_H_
#ifndef ObjcetIndex_H_
...
...
include/ObjectIndex_Array.h
View file @
e2cbe9cd
...
@@ -18,8 +18,6 @@
...
@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \version $Id: ObjectIndex_Array.h,v 1.6 2008/11/22 23:22:24 vpashka Exp $
* \date $Date: 2008/11/22 23:22:24 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjectIndex_Array_H_
#ifndef ObjectIndex_Array_H_
...
...
include/ObjectIndex_XML.h
View file @
e2cbe9cd
...
@@ -18,8 +18,6 @@
...
@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \version $Id: ObjectIndex_XML.h,v 1.8 2008/11/22 23:22:24 vpashka Exp $
* \date $Date: 2008/11/22 23:22:24 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjectIndex_XML_H_
#ifndef ObjectIndex_XML_H_
...
...
include/ObjectIndex_idXML.h
View file @
e2cbe9cd
// $Id: ObjectIndex_idXML.h,v 1.6 2008/11/22 23:22:24 vpashka Exp $
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjectIndex_idXML_H_
#ifndef ObjectIndex_idXML_H_
#define ObjectIndex_idXML_H_
#define ObjectIndex_idXML_H_
...
...
include/ObjectRepository.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Интерфейсный класс для работы с репозитарием объектов
* \brief Интерфейсный класс для работы с репозитарием объектов
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
* \version $Id: ObjectRepository.h,v 1.9 2007/11/18 19:13:35 vpashka Exp $ *
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjectRepository_H_
#ifndef ObjectRepository_H_
...
...
include/ObjectRepositoryFactory.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Интерфейсный класс для создания структуры репозитария объектов
* \brief Интерфейсный класс для создания структуры репозитария объектов
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: ObjectRepositoryFactory.h,v 1.8 2007/07/07 18:58:42 vpashka Exp $
* \date $Date: 2007/07/07 18:58:42 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjectRepositoryFactory_H_
#ifndef ObjectRepositoryFactory_H_
...
...
include/ObjectsActivator.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Активатор объектов
* \brief Активатор объектов
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: ObjectsActivator.h,v 1.13 2007/06/17 21:30:55 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjectsActivator_H_
#ifndef ObjectsActivator_H_
...
...
include/ObjectsManager.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Реализация интерфейса менеджера объектов.
* \brief Реализация интерфейса менеджера объектов.
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/01/16 23:16:42 $
* \version $Id: ObjectsManager.h,v 1.13 2009/01/16 23:16:42 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ObjectsManager_H_
#ifndef ObjectsManager_H_
...
...
include/ObjectsManager_LT.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/07/31 18:13:40 $
* \version $Id: ObjectsManager_LT.h,v 1.4 2007/07/31 18:13:40 vpashka Exp $
*/
*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef ObjectsManager_LT_H_
#ifndef ObjectsManager_LT_H_
...
...
include/OmniThreadCreator.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Создатель потоков
* \brief Создатель потоков
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:21 $
* \version $Id: OmniThreadCreator.h,v 1.5 2005/01/28 20:52:21 vitlav Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef OmniThreadCreator_h_
#ifndef OmniThreadCreator_h_
...
...
include/PassiveObject.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/11/29 21:24:25 $
* \version $Id: PassiveObject.h,v 1.9 2008/11/29 21:24:25 vpashka Exp $
*/
*/
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef PassiveObject_H_
#ifndef PassiveObject_H_
...
...
include/PassiveTimer.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Vitaly Lipatov, Pavel Vainerman
* \author Vitaly Lipatov, Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
*/
*/
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
# ifndef PASSIVETIMER_H_
# ifndef PASSIVETIMER_H_
...
@@ -36,8 +34,6 @@
...
@@ -36,8 +34,6 @@
/*! \class UniSetTimer
/*! \class UniSetTimer
* \brief Базовый интерфейс пасивных таймеров
* \brief Базовый интерфейс пасивных таймеров
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
*/
*/
class
UniSetTimer
class
UniSetTimer
{
{
...
@@ -78,8 +74,6 @@ class UniSetTimer
...
@@ -78,8 +74,6 @@ class UniSetTimer
/*! \class PassiveTimer
/*! \class PassiveTimer
* \brief Пассивный таймер
* \brief Пассивный таймер
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
* \par
* \par
* Установив таймер в конструкторе или с помощью setTiming,
* Установив таймер в конструкторе или с помощью setTiming,
* можно с помощью checkTime проверять, не наступило ли нужное время
* можно с помощью checkTime проверять, не наступило ли нужное время
...
@@ -125,8 +119,6 @@ class omni_condition;
...
@@ -125,8 +119,6 @@ class omni_condition;
/*! \class ThrPassiveTimer
/*! \class ThrPassiveTimer
* \brief Пассивный таймер с режимом засыпания (ожидания)
* \brief Пассивный таймер с режимом засыпания (ожидания)
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
* \par
* \par
* Позволяет заснуть на заданное время wait(timeout_t timeMS).
* Позволяет заснуть на заданное время wait(timeout_t timeMS).
* Механизм работает на основе взаимных блокировок потоков (mutex и condition).
* Механизм работает на основе взаимных блокировок потоков (mutex и condition).
...
@@ -154,8 +146,6 @@ class ThrPassiveTimer:
...
@@ -154,8 +146,6 @@ class ThrPassiveTimer:
/*! \class PassiveSysTimer
/*! \class PassiveSysTimer
* \brief Пассивный таймер с режимом засыпания (ожидания)
* \brief Пассивный таймер с режимом засыпания (ожидания)
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
* \par
* \par
* Создан на основе сигнала (SIGALRM).
* Создан на основе сигнала (SIGALRM).
*/
*/
...
...
include/PosixThread.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Интефес для создания и управления потоками
* \brief Интефес для создания и управления потоками
* \author Anthony Korbin
* \author Anthony Korbin
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: PosixThread.h,v 1.7 2007/06/17 21:30:55 vpashka Exp $
*/
*/
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
#ifndef PosixThread_h_
#ifndef PosixThread_h_
...
...
include/ProxyManager.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2006/12/20 10:39:01 $
* \version $Id: ProxyManager.h,v 1.6 2006/12/20 10:39:01 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef ProxyManager_H_
#ifndef ProxyManager_H_
...
...
include/Pulse.h
View file @
e2cbe9cd
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//! \version $Id: Pulse.h,v 1.1 2008/12/14 21:57:51 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef Pulse_H_
#ifndef Pulse_H_
#define Pulse_H_
#define Pulse_H_
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
include/RepositoryAgent.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Реализация RepositoryAgent
* \brief Реализация RepositoryAgent
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:21 $
* \version $Id: RepositoryAgent.h,v 1.5 2005/01/28 20:52:21 vitlav Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef RepositoryAgent_H_
#ifndef RepositoryAgent_H_
...
...
include/Restorer.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Интерфейс к объекту сохраняющему список заказчиков и сообщений для InfoServer-а
* \brief Интерфейс к объекту сохраняющему список заказчиков и сообщений для InfoServer-а
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: Restorer.h,v 1.4 2007/11/18 19:13:35 vpashka Exp $
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef Restorer_H_
#ifndef Restorer_H_
...
...
include/RunLock.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Блокировка повторного запуска программы
* \brief Блокировка повторного запуска программы
* \author Ahton Korbin, Pavel Vainerman
* \author Ahton Korbin, Pavel Vainerman
* \date $Date: 2006/12/20 10:39:01 $
* \version $Id: RunLock.h,v 1.6 2006/12/20 10:39:01 vpashka Exp $
*/
*/
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
#ifndef RunLock_H_
#ifndef RunLock_H_
...
...
include/SMonitor.h
View file @
e2cbe9cd
// $Id: SMonitor.h,v 1.2 2007/12/17 22:51:00 vpashka Exp $
// ------------------------------------------------------------------------------------------
#ifndef SMonitor_H_
#ifndef SMonitor_H_
#define SMonitor_H_
#define SMonitor_H_
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
...
...
include/SViewer.h
View file @
e2cbe9cd
...
@@ -20,9 +20,6 @@
...
@@ -20,9 +20,6 @@
/*! \file
/*! \file
* \brief Программа просмотра состояния датчиков
* \brief Программа просмотра состояния датчиков
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: SViewer.h,v 1.11 2007/06/17 21:30:55 vpashka Exp $
* \par
*/
*/
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
#ifndef _SVIEWER_H
#ifndef _SVIEWER_H
...
...
include/SandClock.h
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
// idea: lav@etersoft.ru
// idea: lav@etersoft.ru
// realisation: pv@etersoft.ru, lav@etersoft.ru
// realisation: pv@etersoft.ru, lav@etersoft.ru
//! \version $Id: SandClock.h,v 1.1 2008/10/05 19:00:53 vpashka Exp $
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef SandClock_H_
#ifndef SandClock_H_
#define SandClock_H_
#define SandClock_H_
...
...
include/StorageInterface.h
View file @
e2cbe9cd
...
@@ -19,11 +19,8 @@
...
@@ -19,11 +19,8 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: StorageInterface.h,v 1.2 2006/12/20 10:39:01 vpashka Exp $
* \date $Date: 2006/12/20 10:39:01 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef StorageInterface_H_
#ifndef StorageInterface_H_
#define StorageInterface_H_
#define StorageInterface_H_
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
...
...
include/Storages.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Ivan Donchevskiy
* \author Ivan Donchevskiy
* \date $Date: 2009/07/15 15:55:00 $
* \version $Id: Jrn.h,v 1.0 2009/07/15 15:55:00 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
include/SystemGuard.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Реализация SystemGuard
* \brief Реализация SystemGuard
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: SystemGuard.h,v 1.9 2007/06/17 21:30:55 vpashka Exp $
*/
*/
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
#ifndef SystemGuard_H_
#ifndef SystemGuard_H_
...
...
include/TextDBIndex.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2007/01/02 22:30:48 $
* \version $Id: TextDBIndex.h,v 1.6 2007/01/02 22:30:48 vpashka Exp $
* \par
* \par
* Базовый класс получения строки по её индексу
* Базовый класс получения строки по её индексу
*/
*/
...
...
include/TextFileIndex.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2007/01/02 22:30:48 $
* \version $Id: TextFileIndex.h,v 1.7 2007/01/02 22:30:48 vpashka Exp $
* \par
* \par
* Базовый класс получения строки по её индексу
* Базовый класс получения строки по её индексу
*/
*/
...
...
include/TextIndex.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2007/01/02 22:30:48 $
* \version $Id: TextIndex.h,v 1.6 2007/01/02 22:30:48 vpashka Exp $
* \par
* \par
* Базовый класс получения строки по её индексу
* Базовый класс получения строки по её индексу
*/
*/
...
...
include/ThreadCreator.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Создатель потоков
* \brief Создатель потоков
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:21 $
* \version $Id: ThreadCreator.h,v 1.5 2005/01/28 20:52:21 vitlav Exp $
*/
*/
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
#ifndef ThreadCreator_h_
#ifndef ThreadCreator_h_
...
...
include/TimerService.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Реализация TimerService
* \brief Реализация TimerService
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:56 $
* \version $Id: TimerService.h,v 1.7 2007/06/17 21:30:56 vpashka Exp $
*/
*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef TimerService_H_
#ifndef TimerService_H_
...
...
include/Trigger.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Триггер, позволяющий красиво засекать изменения во флаге
* \brief Триггер, позволяющий красиво засекать изменения во флаге
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2006/11/18 14:53:58 $
* \version $Id: Trigger.h,v 1.1 2006/11/18 14:53:58 vpashka Exp $
*/
*/
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
#ifndef UNITRIGGER_H_
#ifndef UNITRIGGER_H_
...
...
include/TriggerAND.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief
* \brief
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerAND.h,v 1.7 2008/06/01 21:36:19 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
...
...
include/TriggerAND_template.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerAND_template.h,v 1.8 2008/06/01 21:36:19 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "TriggerAND.h"
#include "TriggerAND.h"
...
...
include/TriggerOR.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOR.h,v 1.7 2008/06/01 21:36:19 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
...
...
include/TriggerOR_template.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOR_template.h,v 1.8 2008/06/01 21:36:19 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "TriggerOR.h"
#include "TriggerOR.h"
...
...
include/TriggerOutput.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOutput.h,v 1.7 2008/06/01 21:36:19 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
...
...
include/TriggerOutput_template.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOutput_template.h,v 1.4 2008/06/01 21:36:19 vpashka Exp $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
include/UniSetObject.h
View file @
e2cbe9cd
...
@@ -21,8 +21,6 @@
...
@@ -21,8 +21,6 @@
* \brief Реализация базового(фундаментального) класса для объектов системы
* \brief Реализация базового(фундаментального) класса для объектов системы
* (процессов управления, элементов графического интерфейса и т.п.)
* (процессов управления, элементов графического интерфейса и т.п.)
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/01/16 23:16:42 $
* \version $Id: UniSetObject.h,v 1.19 2009/01/16 23:16:42 vpashka Exp $
*/
*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef UniSetObject_H_
#ifndef UniSetObject_H_
...
...
include/UniSetObject_LT.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/07/31 18:13:40 $
* \version $Id: UniSetObject_LT.h,v 1.5 2007/07/31 18:13:40 vpashka Exp $
*/
*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef UniSetObject_LT_H_
#ifndef UniSetObject_LT_H_
...
...
include/UniSetObserver.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Базовый класс для реализации шаблона "наблюдатель"
* \brief Базовый класс для реализации шаблона "наблюдатель"
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2006/12/20 10:39:04 $
* \version $Id: UniSetObserver.h,v 1.3 2006/12/20 10:39:04 vpashka Exp $
*/
*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef UniSetObserver_H_
#ifndef UniSetObserver_H_
...
...
include/UniSetTypes.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/01/16 23:16:42 $
* \version $Id: UniSetTypes.h,v 1.12 2009/01/16 23:16:42 vpashka Exp $
* \brief базовые типы библиотеки UniSet
* \brief базовые типы библиотеки UniSet
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
include/UniXML.h
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2006/12/20 10:39:04 $
* \version $Id: UniXML.h,v 1.9 2006/12/20 10:39:04 vpashka Exp $
* \par
* \par
* \bug НЕ РАБОТАЕТ функция findNode. (не ищет по полю name, если задать)
* \bug НЕ РАБОТАЕТ функция findNode. (не ищет по полю name, если задать)
...
...
include/UniversalInterface.h
View file @
e2cbe9cd
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
/*! \file
/*! \file
* \brief Универсальный интерфейс для взаимодействия с объектами системы
* \brief Универсальный интерфейс для взаимодействия с объектами системы
* \author Pavel Vainerman
* \author Pavel Vainerman
* \version $Id: UniversalInterface.h,v 1.24 2008/12/14 21:57:51 vpashka Exp $
* \date $Date: 2008/12/14 21:57:51 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef UniversalInterface_H_
#ifndef UniversalInterface_H_
...
...
include/WDTInterface.h
View file @
e2cbe9cd
/* $Id: WDTInterface.h,v 1.1 2008/12/14 21:57:51 vpashka Exp $ */
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
#ifndef WDTInterface_H_
#ifndef WDTInterface_H_
#define WDTInterface_H_
#define WDTInterface_H_
...
...
include/modbus/ModbusClient.h
View file @
e2cbe9cd
/*! $Id: ModbusClient.h,v 1.3 2009/01/11 19:08:46 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusClient_H_
#ifndef ModbusClient_H_
#define ModbusClient_H_
#define ModbusClient_H_
...
...
include/modbus/ModbusHelpers.h
View file @
e2cbe9cd
/*! $Id: ModbusHelpers.h,v 1.1 2009/01/12 20:40:11 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusHelpers_H_
#ifndef ModbusHelpers_H_
#define ModbusHelpers_H_
#define ModbusHelpers_H_
...
...
include/modbus/ModbusRTUMaster.h
View file @
e2cbe9cd
/*! $Id: ModbusRTUMaster.h,v 1.3 2009/02/24 20:27:25 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusRTUMaster_H_
#ifndef ModbusRTUMaster_H_
#define ModbusRTUMaster_H_
#define ModbusRTUMaster_H_
...
...
include/modbus/ModbusRTUSlave.h
View file @
e2cbe9cd
/*! $Id: ModbusRTUSlave.h,v 1.3 2009/02/24 20:27:25 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusRTUSlave_H_
#ifndef ModbusRTUSlave_H_
#define ModbusRTUSlave_H_
#define ModbusRTUSlave_H_
...
...
include/modbus/ModbusRTUSlaveSlot.h
View file @
e2cbe9cd
/*! $Id: ModbusRTUSlaveSlot.h,v 1.2 2009/02/24 20:27:25 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusRTUSlaveSlot_H_
#ifndef ModbusRTUSlaveSlot_H_
#define ModbusRTUSlaveSlot_H_
#define ModbusRTUSlaveSlot_H_
...
...
include/modbus/ModbusServer.h
View file @
e2cbe9cd
/*! $Id: ModbusServer.h,v 1.3 2009/01/11 19:08:46 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusServer_H_
#ifndef ModbusServer_H_
#define ModbusServer_H_
#define ModbusServer_H_
...
...
include/modbus/ModbusServerSlot.h
View file @
e2cbe9cd
/*! $Id: ModbusServerSlot.h,v 1.1 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusServerSlot_H_
#ifndef ModbusServerSlot_H_
#define ModbusServerSlot_H_
#define ModbusServerSlot_H_
...
...
include/modbus/ModbusTCPCore.h
View file @
e2cbe9cd
/*! $Id: ModbusTCPCore.h,v 1.1 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusTCPCore_H_
#ifndef ModbusTCPCore_H_
#define ModbusTCPCore_H_
#define ModbusTCPCore_H_
...
...
include/modbus/ModbusTCPMaster.h
View file @
e2cbe9cd
/*! $Id: ModbusTCPMaster.h,v 1.1 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusTCPMaster_H_
#ifndef ModbusTCPMaster_H_
#define ModbusTCPMaster_H_
#define ModbusTCPMaster_H_
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
...
include/modbus/ModbusTCPServer.h
View file @
e2cbe9cd
/*! $Id: ModbusTCPServer.h,v 1.2 2008/11/23 22:16:03 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusTCPServer_H_
#ifndef ModbusTCPServer_H_
#define ModbusTCPServer_H_
#define ModbusTCPServer_H_
...
...
include/modbus/ModbusTCPServerSlot.h
View file @
e2cbe9cd
/*! $Id: ModbusTCPServerSlot.h,v 1.1 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusTCPServerSlot_H_
#ifndef ModbusTCPServerSlot_H_
#define ModbusTCPServerSlot_H_
#define ModbusTCPServerSlot_H_
...
...
include/modbus/ModbusTypes.h
View file @
e2cbe9cd
/*! $Id: ModbusTypes.h,v 1.11 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef ModbusTypes_H_
#ifndef ModbusTypes_H_
#define ModbusTypes_H_
#define ModbusTypes_H_
...
...
src/Communications/ComPort.cc
View file @
e2cbe9cd
...
@@ -5,7 +5,6 @@
...
@@ -5,7 +5,6 @@
/*! \file
/*! \file
* \brief Обращения к последовательным интерфейсам
* \brief Обращения к последовательным интерфейсам
* \author Nick Lezzhov, Pavel Veynerman, Vitaly Lipatov
* \author Nick Lezzhov, Pavel Veynerman, Vitaly Lipatov
* \date $Date: 2009/02/24 20:27:25 $
*/
*/
/**************************************************************************/
/**************************************************************************/
#include <cstdlib>
#include <cstdlib>
...
...
src/Communications/Modbus/ModbusTCPMaster.cc
View file @
e2cbe9cd
...
@@ -14,7 +14,7 @@ ModbusTCPMaster::ModbusTCPMaster():
...
@@ -14,7 +14,7 @@ ModbusTCPMaster::ModbusTCPMaster():
tcp
(
0
),
tcp
(
0
),
nTransaction
(
0
),
nTransaction
(
0
),
iaddr
(
""
),
iaddr
(
""
),
force_disconnect
(
fals
e
)
force_disconnect
(
tru
e
)
{
{
setCRCNoCheckit
(
true
);
setCRCNoCheckit
(
true
);
}
}
...
@@ -45,34 +45,36 @@ mbErrCode ModbusTCPMaster::sendData( unsigned char* buf, int len )
...
@@ -45,34 +45,36 @@ mbErrCode ModbusTCPMaster::sendData( unsigned char* buf, int len )
mbErrCode
ModbusTCPMaster
::
query
(
ModbusAddr
addr
,
ModbusMessage
&
msg
,
mbErrCode
ModbusTCPMaster
::
query
(
ModbusAddr
addr
,
ModbusMessage
&
msg
,
ModbusMessage
&
reply
,
timeout_t
timeout
)
ModbusMessage
&
reply
,
timeout_t
timeout
)
{
{
if
(
iaddr
.
empty
()
)
try
{
{
dlog
[
Debug
::
WARN
]
<<
"(query): unknown ip address for server..."
<<
endl
;
if
(
iaddr
.
empty
()
)
return
erHardwareError
;
{
}
dlog
[
Debug
::
WARN
]
<<
"(query): unknown ip address for server..."
<<
endl
;
return
erHardwareError
;
}
if
(
!
isConnection
()
)
if
(
!
isConnection
()
)
{
{
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
dlog
[
Debug
::
INFO
]
<<
"(ModbusTCPMaster): no connection.. reconnnect..."
<<
endl
;
dlog
[
Debug
::
INFO
]
<<
"(ModbusTCPMaster): no connection.. reconnnect..."
<<
endl
;
reconnect
();
reconnect
();
}
}
if
(
!
isConnection
()
)
if
(
!
isConnection
()
)
{
{
dlog
[
Debug
::
WARN
]
<<
"(query): not connected to server..."
<<
endl
;
dlog
[
Debug
::
WARN
]
<<
"(query): not connected to server..."
<<
endl
;
return
erTimeOut
;
return
erTimeOut
;
}
}
assert
(
timeout
);
assert
(
timeout
);
ptTimeout
.
setTiming
(
timeout
);
ptTimeout
.
setTiming
(
timeout
);
tcp
->
setTimeout
(
timeout
);
tcp
->
setTimeout
(
timeout
);
// ost::Thread::setException(ost::Thread::throwException);
// ost::tpport_t port;
// cerr << "****** peer: " << tcp->getPeer(&port) << " err: " << tcp->getErrorNumber() << endl;
ost
::
Thread
::
setException
(
ost
::
Thread
::
throwException
);
try
{
if
(
nTransaction
>=
numeric_limits
<
ModbusRTU
::
ModbusData
>::
max
()
)
if
(
nTransaction
>=
numeric_limits
<
ModbusRTU
::
ModbusData
>::
max
()
)
nTransaction
=
0
;
nTransaction
=
0
;
...
@@ -136,6 +138,7 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
...
@@ -136,6 +138,7 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
while
(
!
qrecv
.
empty
()
)
while
(
!
qrecv
.
empty
()
)
qrecv
.
pop
();
qrecv
.
pop
();
tcp
->
sync
();
if
(
tcp
->
isPending
(
ost
::
Socket
::
pendingInput
,
timeout
)
)
if
(
tcp
->
isPending
(
ost
::
Socket
::
pendingInput
,
timeout
)
)
{
{
/*
/*
...
@@ -158,9 +161,14 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
...
@@ -158,9 +161,14 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
if
(
ret
<
(
int
)
sizeof
(
rmh
)
)
if
(
ret
<
(
int
)
sizeof
(
rmh
)
)
{
{
ost
::
tpport_t
port
;
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
dlog
[
Debug
::
INFO
]
<<
"(ModbusTCPMaster::query): ret="
<<
(
int
)
ret
dlog
[
Debug
::
INFO
]
<<
"(ModbusTCPMaster::query): ret="
<<
(
int
)
ret
<<
" < rmh="
<<
(
int
)
sizeof
(
rmh
)
<<
endl
;
<<
" < rmh="
<<
(
int
)
sizeof
(
rmh
)
<<
" err: "
<<
tcp
->
getErrorNumber
()
<<
" perr: "
<<
tcp
->
getPeer
(
&
port
)
<<
endl
;
disconnect
();
disconnect
();
return
erTimeOut
;
// return erHardwareError;
return
erTimeOut
;
// return erHardwareError;
}
}
...
@@ -211,17 +219,18 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
...
@@ -211,17 +219,18 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
{
{
dlog
[
Debug
::
WARN
]
<<
"(query): "
<<
ex
<<
endl
;
dlog
[
Debug
::
WARN
]
<<
"(query): "
<<
ex
<<
endl
;
}
}
catch
(
SystemError
&
err
)
catch
(
SystemError
&
err
)
{
{
dlog
[
Debug
::
WARN
]
<<
"(query): "
<<
err
<<
endl
;
dlog
[
Debug
::
WARN
]
<<
"(query): "
<<
err
<<
endl
;
}
}
catch
(
Exception
&
ex
)
catch
(
Exception
&
ex
)
{
{
dlog
[
Debug
::
WARN
]
<<
"(query): "
<<
ex
<<
endl
;
dlog
[
Debug
::
WARN
]
<<
"(query): "
<<
ex
<<
endl
;
}
}
catch
(
ost
::
SockException
&
e
)
catch
(
ost
::
SockException
&
e
)
{
{
dlog
[
Debug
::
WARN
]
<<
e
.
getString
()
<<
": "
<<
e
.
getSystemErrorString
()
<<
endl
;
dlog
[
Debug
::
WARN
]
<<
"(query): tcp error: "
<<
e
.
getString
()
<<
endl
;
return
erTimeOut
;
}
}
catch
(...)
catch
(...)
{
{
...
@@ -252,19 +261,42 @@ void ModbusTCPMaster::reconnect()
...
@@ -252,19 +261,42 @@ void ModbusTCPMaster::reconnect()
// cerr << "tcp diconnect..." << endl;
// cerr << "tcp diconnect..." << endl;
tcp
->
disconnect
();
tcp
->
disconnect
();
delete
tcp
;
delete
tcp
;
tcp
=
0
;
}
}
ost
::
Thread
::
setException
(
ost
::
Thread
::
throwException
);
ost
::
Thread
::
setException
(
ost
::
Thread
::
throwException
);
// cerr << "create new tcp..." << endl;
try
tcp
=
new
ost
::
TCPStream
(
iaddr
.
c_str
());
{
tcp
->
setTimeout
(
500
);
// TCPStream (const char *name, Family family=IPV4, unsigned mss=536, bool throwflag=false, timeout_t timer=0)
tcp
=
new
ost
::
TCPStream
(
iaddr
.
c_str
(),
ost
::
Socket
::
IPV4
,
536
,
true
,
500
);
tcp
->
setTimeout
(
replyTimeOut_ms
);
}
catch
(
ost
::
Socket
*
socket
)
{
ost
::
tpport_t
port
;
int
err
=
socket
->
getErrorNumber
();
ost
::
InetAddress
saddr
=
(
ost
::
InetAddress
)
socket
->
getPeer
(
&
port
);
dlog
[
Debug
::
CRIT
]
<<
"tcp error "
<<
saddr
.
getHostname
()
<<
":"
<<
port
<<
" = "
<<
err
<<
endl
;
}
catch
(
ost
::
SockException
&
e
)
{
dlog
[
Debug
::
CRIT
]
<<
"tcp error: "
<<
e
.
getString
()
<<
endl
;
}
catch
(...)
{
dlog
[
Debug
::
CRIT
]
<<
"create TCPStream["
<<
iaddr
<<
"] error..."
<<
endl
;
}
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ModbusTCPMaster
::
connect
(
ost
::
InetAddress
addr
,
int
port
)
void
ModbusTCPMaster
::
connect
(
ost
::
InetAddress
addr
,
int
port
)
{
{
if
(
tcp
)
if
(
tcp
)
{
disconnect
();
disconnect
();
delete
tcp
;
tcp
=
0
;
}
// if( !tcp )
// if( !tcp )
// {
// {
...
@@ -275,9 +307,26 @@ void ModbusTCPMaster::connect( ost::InetAddress addr, int port )
...
@@ -275,9 +307,26 @@ void ModbusTCPMaster::connect( ost::InetAddress addr, int port )
dlog
[
Debug
::
INFO
]
<<
"(ModbusTCPMaster): connect to "
<<
s
.
str
()
<<
endl
;
dlog
[
Debug
::
INFO
]
<<
"(ModbusTCPMaster): connect to "
<<
s
.
str
()
<<
endl
;
iaddr
=
s
.
str
();
iaddr
=
s
.
str
();
tcp
=
new
ost
::
TCPStream
(
iaddr
.
c_str
());
try
tcp
->
setTimeout
(
500
);
{
tcp
=
new
ost
::
TCPStream
(
iaddr
.
c_str
());
tcp
->
setTimeout
(
replyTimeOut_ms
);
}
catch
(
ost
::
Socket
*
socket
)
{
ost
::
tpport_t
port
;
int
err
=
socket
->
getErrorNumber
();
ost
::
InetAddress
saddr
=
(
ost
::
InetAddress
)
socket
->
getPeer
(
&
port
);
dlog
[
Debug
::
CRIT
]
<<
": tcp error "
<<
saddr
.
getHostname
()
<<
":"
<<
port
<<
" = "
<<
err
<<
endl
;
}
catch
(
ost
::
SockException
&
e
)
{
dlog
[
Debug
::
CRIT
]
<<
"tcp error: "
<<
e
.
getString
()
<<
endl
;
}
catch
(...)
{
dlog
[
Debug
::
CRIT
]
<<
"create TCPStream["
<<
iaddr
<<
"] error..."
<<
endl
;
}
// }
// }
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
...
src/IOs/DigitalCard_O5600.cc
View file @
e2cbe9cd
...
@@ -5,9 +5,6 @@
...
@@ -5,9 +5,6 @@
/*! \file
/*! \file
* \brief Класс для дискретной карты O5600
* \brief Класс для дискретной карты O5600
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2006/12/19 15:46:14 $
*
*
*/
*/
/**************************************************************************/
/**************************************************************************/
...
...
src/Interfaces/UniversalInterface.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/12/14 21:57:51 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <omniORB4/CORBA.h>
#include <omniORB4/CORBA.h>
...
...
src/ObjectRepository/ORepHelpers.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <omniORB4/CORBA.h>
#include <omniORB4/CORBA.h>
...
...
src/ObjectRepository/ObjectRepository.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/27 21:54:19 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <omniORB4/CORBA.h>
#include <omniORB4/CORBA.h>
...
...
src/ObjectRepository/ObjectRepositoryFactory.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <omniORB4/CORBA.h>
#include <omniORB4/CORBA.h>
...
...
src/ObjectRepository/ObjectsActivator.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/12/14 21:57:51 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/ObjectRepository/ObjectsManager.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/02/10 20:38:27 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <cstdlib>
#include <cstdlib>
...
...
src/ObjectRepository/ObjectsManager_LT.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 21:07:41 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "Exceptions.h"
#include "Exceptions.h"
...
...
src/ObjectRepository/PassiveObject.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/02/21 19:59:57 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/ObjectRepository/ProxyManager.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/11/29 21:24:25 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
...
src/ObjectRepository/UniSetObject.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/29 22:19:54 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <unistd.h>
#include <unistd.h>
...
...
src/ObjectRepository/UniSetObject_LT.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 21:07:41 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "Exceptions.h"
#include "Exceptions.h"
...
...
src/ObjectRepository/UniSetTypes.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/01/16 23:16:42 $
*/
*/
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#include <cmath>
#include <cmath>
...
...
src/Processes/IOController.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/02/07 13:25:59 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
//#include <stream.h>
//#include <stream.h>
...
...
src/Processes/IONotifyController.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/11/29 21:24:25 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Processes/IONotifyController_LT.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 21:09:33 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "Exceptions.h"
#include "Exceptions.h"
...
...
src/Processes/UniSetObserver.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 21:09:33 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Services/DBServer.cc
View file @
e2cbe9cd
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
/*! \file
/*! \file
* \brief файл реализации DB-сервера
* \brief файл реализации DB-сервера
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2006/12/20 13:43:41 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Services/InfoServer.cc
View file @
e2cbe9cd
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
/*! \file
/*! \file
* \brief файл реализации Info-сервера
* \brief файл реализации Info-сервера
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/01/17 23:33:41 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <string>
#include <string>
...
...
src/Services/RepositoryAgent.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 21:10:33 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Services/TimerService.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:58 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <unistd.h>
#include <unistd.h>
...
...
src/Threads/PosixThread.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Anthony Korbin
* \author Anthony Korbin
* \date $Date: 2005/10/06 21:47:42 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "PosixThread.h"
#include "PosixThread.h"
...
...
src/Timers/PassiveSysTimer.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 21:12:49 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Timers/PassiveTimer.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/29 22:19:54 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <time.h>
#include <time.h>
...
...
src/Timers/ThrPassiveTimer.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/08/02 22:52:28 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Timers/WaitingPassiveTimer.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/01/28 21:12:49 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/Configuration.cc
View file @
e2cbe9cd
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
/*! \file
/*! \file
* \brief Класс работы с конфигурацией
* \brief Класс работы с конфигурацией
* \author Vitaly Lipatov, Pavel Vainerman
* \author Vitaly Lipatov, Pavel Vainerman
* \date $Date: 2008/09/16 19:02:46 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/CycleStorage.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Ivan Donchevskiy
* \author Ivan Donchevskiy
* \date $Date: 2009/07/15 15:55:00 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/ISRestorer.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2005/07/21 17:41:43 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/ISRestorer_XML.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/12/14 21:57:51 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
...
src/Various/LT_Object.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
...
src/Various/MessageInterface_idXML.cc
View file @
e2cbe9cd
/*! \file
/*! \file
* \brief Класс работы с сообщениями
* \brief Класс работы с сообщениями
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2008/11/22 23:22:25 $
*/
*/
/**************************************************************************/
/**************************************************************************/
#include <sstream>
#include <sstream>
...
...
src/Various/MessageType.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:58 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/Mutex.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/15 23:53:36 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/NCRestorer.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/12/18 20:24:12 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/NCRestorer_XML.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2009/01/11 19:08:46 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
@@ -444,41 +443,37 @@ bool NCRestorer_XML::getConsumerList( UniXML& xml,xmlNode* node,
...
@@ -444,41 +443,37 @@ bool NCRestorer_XML::getConsumerList( UniXML& xml,xmlNode* node,
bool
NCRestorer_XML
::
getThresholdInfo
(
UniXML
&
xml
,
xmlNode
*
node
,
bool
NCRestorer_XML
::
getThresholdInfo
(
UniXML
&
xml
,
xmlNode
*
node
,
IONotifyController
::
ThresholdInfoExt
&
ti
)
IONotifyController
::
ThresholdInfoExt
&
ti
)
{
{
string
sid_name
=
xml
.
getProp
(
node
,
"sid"
);
UniXML_iterator
uit
(
node
);
string
sid_name
=
uit
.
getProp
(
"sid"
);
if
(
!
sid_name
.
empty
()
)
if
(
!
sid_name
.
empty
()
)
{
{
ti
.
sid
=
conf
->
getSensorID
(
sid_name
);
ti
.
sid
=
conf
->
getSensorID
(
sid_name
);
if
(
ti
.
sid
==
UniSetTypes
::
DefaultObjectId
)
if
(
ti
.
sid
==
UniSetTypes
::
DefaultObjectId
)
{
{
unideb
[
Debug
::
CRIT
]
<<
"(NCRestorer_XML:getThresholdInfo): "
unideb
[
Debug
::
CRIT
]
<<
"(NCRestorer_XML:getThresholdInfo): "
<<
" Неверно указан НАЗВАНИЕ датчика "
<<
sid_name
<<
" Not found ID for "
<<
sid_name
<<
endl
;
<<
" Не найден ID для данного дачика
\n
"
<<
flush
;
}
else
{
UniversalIO
::
IOTypes
iotype
=
conf
->
getIOType
(
sid_name
);
// Пока что IONotifyController поддерживает работу только с 'DI'.
if
(
iotype
!=
UniversalIO
::
DigitalInput
)
{
unideb
[
Debug
::
CRIT
]
<<
"(NCRestorer_XML:getThresholdInfo): "
<<
" Bad iotype for "
<<
sid_name
<<
". iotype must be 'DI'!"
<<
endl
;
return
false
;
}
}
}
}
}
UniXML_iterator
uit
(
node
);
ti
.
id
=
uit
.
getIntProp
(
"id"
);
ti
.
id
=
uit
.
getIntProp
(
"id"
);
ti
.
lowlimit
=
uit
.
getIntProp
(
"lowlimit"
);
ti
.
lowlimit
=
uit
.
getIntProp
(
"lowlimit"
);
ti
.
hilimit
=
uit
.
getIntProp
(
"hilimit"
);
ti
.
hilimit
=
uit
.
getIntProp
(
"hilimit"
);
ti
.
sensibility
=
uit
.
getIntProp
(
"sensibility"
);
ti
.
sensibility
=
uit
.
getIntProp
(
"sensibility"
);
ti
.
inverse
=
uit
.
getIntProp
(
"inverse"
);
ti
.
inverse
=
uit
.
getIntProp
(
"inverse"
);
ti
.
state
=
IONotifyController_i
::
NormalThreshold
;
ti
.
state
=
IONotifyController_i
::
NormalThreshold
;
if
(
ti
.
sid
==
UniSetTypes
::
DefaultObjectId
)
{
string
sid_name
(
uit
.
getProp
(
"sid"
));
if
(
!
sid_name
.
empty
()
)
{
ti
.
sid
=
conf
->
getSensorID
(
sid_name
);
if
(
ti
.
sid
==
UniSetTypes
::
DefaultObjectId
)
{
unideb
[
Debug
::
CRIT
]
<<
"(NCRestorer_XML:getThresholdInfo): "
<<
" Неверно указан НАЗВАНИЕ датчика "
<<
sid_name
<<
" Не найден ID для данного дачика
\n
"
<<
flush
;
}
}
}
return
true
;
return
true
;
}
}
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
...
...
src/Various/Restorer_XML.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
...
src/Various/RunLock.cc
View file @
e2cbe9cd
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
/*! \file
/*! \file
* \brief Блокировка повторного запуска программы
* \brief Блокировка повторного запуска программы
* \author Ahton Korbin<ahtoh>, Pavel Vainerman
* \author Ahton Korbin<ahtoh>, Pavel Vainerman
* \date $Date: 2006/12/20 13:43:41 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <dirent.h>
#include <dirent.h>
...
...
src/Various/SViewer.cc
View file @
e2cbe9cd
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
/*! \file
/*! \file
* \brief Программа просмотра состояния датчиков
* \brief Программа просмотра состояния датчиков
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
...
src/Various/SystemGuard.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Pavel Vainerman
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include <sstream>
...
...
src/Various/TableBlockStorage.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Ivan Donchevskiy
* \author Ivan Donchevskiy
* \date $Date: 2009/07/15 15:55:00 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/TableStorage.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Ivan Donchevskiy
* \author Ivan Donchevskiy
* \date $Date: 2009/07/15 15:55:00 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
src/Various/TextFileIndex.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2005/01/28 21:14:18 $
* \par
* \par
* Базовый класс получения строки по её индексу
* Базовый класс получения строки по её индексу
*/
*/
...
...
src/Various/TextIndex.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2005/01/28 21:14:18 $
* \par
* \par
* Базовый класс получения строки по её индексу
* Базовый класс получения строки по её индексу
*/
*/
...
...
src/Various/UniXML.cc
View file @
e2cbe9cd
...
@@ -19,8 +19,6 @@
...
@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Vitaly Lipatov
* \author Vitaly Lipatov
* \date $Date: 2006/12/20 13:43:41 $
* \par
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <unistd.h>
#include <unistd.h>
...
...
tests/JrnTests/JrnTest.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Ivan Donchevskiy
* \author Ivan Donchevskiy
* \date $Date: 2009/07/15 15:55:00 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
...
...
tests/UniXmlTest/XmlTest.cc
View file @
e2cbe9cd
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*! \file
/*! \file
* \author Ivan Donchevskiy
* \author Ivan Donchevskiy
* \date $Date: 2009/07/15 15:55:00 $
*/
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "stdio.h"
#include "stdio.h"
...
...
tests/passivetimer.cc
View file @
e2cbe9cd
...
@@ -10,7 +10,7 @@ PassiveTimer pt(1000);
...
@@ -10,7 +10,7 @@ PassiveTimer pt(1000);
int
main
()
int
main
()
{
{
PassiveTimer
pt1
(
5000
);
PassiveTimer
pt1
(
5000
);
cout
<<
" pt1.getInterval()="
<<
pt1
.
getInterval
()
<<
endl
;
cout
<<
" pt1.getInterval()="
<<
pt1
.
getInterval
()
<<
" TEST: "
<<
((
pt1
.
getInterval
()
==
5000
)
?
"OK"
:
"FAILED"
)
<<
endl
;
PassiveTimer
pt2
;
PassiveTimer
pt2
;
cout
<<
" pt2.getInterval()="
<<
pt2
.
getInterval
()
<<
endl
;
cout
<<
" pt2.getInterval()="
<<
pt2
.
getInterval
()
<<
endl
;
...
...
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