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
e0efd2da
Commit
e0efd2da
authored
Jan 25, 2011
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Убрал всевозможные warning: где-то удалил за неактуальностью, где-то исправил,
где-то переделал в "todo".
parent
0e79082a
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
106 additions
and
65 deletions
+106
-65
IOControl.cc
extensions/IOControl/IOControl.cc
+1
-1
IOControl.h
extensions/IOControl/IOControl.h
+2
-2
iocalibr.cc
extensions/IOControl/iocalibr.cc
+3
-2
LProcessor.cc
extensions/LogicProcessor/LProcessor.cc
+2
-4
MBTCPMaster.cc
extensions/MBTCPMaster/MBTCPMaster.cc
+5
-3
MBSlave.cc
extensions/ModbusSlave/MBSlave.cc
+7
-0
RTUExchange.cc
extensions/RTUExchange/RTUExchange.cc
+2
-3
SharedMemory.cc
extensions/SharedMemory/SharedMemory.cc
+3
-10
UDPExchange.cc
extensions/UDPExchange/UDPExchange.cc
+1
-3
UDPSender.cc
extensions/UDPExchange/UDPSender.cc
+1
-3
UniExchange.cc
extensions/UniNetwork/UniExchange.cc
+0
-2
UniExchange.h
extensions/UniNetwork/UniExchange.h
+1
-1
MTR.h
extensions/include/MTR.h
+1
-1
IOBase.cc
extensions/lib/IOBase.cc
+2
-4
MTR.cc
extensions/lib/MTR.cc
+1
-1
ModbusRTUSlave.h
include/modbus/ModbusRTUSlave.h
+2
-0
ModbusRTUSlaveSlot.h
include/modbus/ModbusRTUSlaveSlot.h
+3
-1
ModbusServer.h
include/modbus/ModbusServer.h
+1
-0
ModbusServerSlot.h
include/modbus/ModbusServerSlot.h
+2
-0
ModbusTCPServer.h
include/modbus/ModbusTCPServer.h
+3
-0
ModbusTCPServerSlot.h
include/modbus/ModbusTCPServerSlot.h
+3
-1
ComPort485F.cc
src/Communications/ComPort485F.cc
+3
-2
ModbusClient.cc
src/Communications/Modbus/ModbusClient.cc
+3
-2
ModbusRTUSlave.cc
src/Communications/Modbus/ModbusRTUSlave.cc
+8
-0
ModbusRTUSlaveSlot.cc
src/Communications/Modbus/ModbusRTUSlaveSlot.cc
+9
-0
ModbusServer.cc
src/Communications/Modbus/ModbusServer.cc
+5
-7
ModbusTCPServer.cc
src/Communications/Modbus/ModbusTCPServer.cc
+10
-0
ModbusTCPServerSlot.cc
src/Communications/Modbus/ModbusTCPServerSlot.cc
+9
-0
ModbusTCPTypes.cc
src/Communications/Modbus/ModbusTCPTypes.cc
+4
-4
ModbusTypes.cc
src/Communications/Modbus/ModbusTypes.cc
+5
-5
UniXML.cc
src/Various/UniXML.cc
+2
-1
Makefile.am
tests/Makefile.am
+2
-2
No files found.
extensions/IOControl/IOControl.cc
View file @
e0efd2da
...
@@ -1592,7 +1592,7 @@ void IOControl::buildCardsList()
...
@@ -1592,7 +1592,7 @@ void IOControl::buildCardsList()
return
;
return
;
}
}
in
t
lastnum
=
0
;
size_
t
lastnum
=
0
;
for
(
;
lastnum
<
cards
.
size
();
lastnum
++
)
for
(
;
lastnum
<
cards
.
size
();
lastnum
++
)
{
{
if
(
cards
[
lastnum
]
==
0
)
if
(
cards
[
lastnum
]
==
0
)
...
...
extensions/IOControl/IOControl.h
View file @
e0efd2da
...
@@ -150,7 +150,7 @@
...
@@ -150,7 +150,7 @@
"5" - Режим "только выходы"
"5" - Режим "только выходы"
*/
*/
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#warning Сделать обработку сигналов завершения....
/*! \todo (IOControl): Сделать обработку сигналов завершения */
class
CardList
:
class
CardList
:
public
std
::
vector
<
ComediInterface
*>
public
std
::
vector
<
ComediInterface
*>
...
@@ -324,7 +324,7 @@ class IOControl:
...
@@ -324,7 +324,7 @@ class IOControl:
std
::
string
s_field
;
std
::
string
s_field
;
std
::
string
s_fvalue
;
std
::
string
s_fvalue
;
SMInterface
*
shm
;
SMInterface
*
shm
;
UniversalInterface
ui
;
UniversalInterface
ui
;
UniSetTypes
::
ObjectId
myid
;
UniSetTypes
::
ObjectId
myid
;
std
::
string
prefix
;
std
::
string
prefix
;
...
...
extensions/IOControl/iocalibr.cc
View file @
e0efd2da
...
@@ -33,7 +33,7 @@ void openXML();
...
@@ -33,7 +33,7 @@ void openXML();
void
dispDiagram
();
void
dispDiagram
();
void
sortData
(
bool
rise
,
bool
cal
);
void
sortData
(
bool
rise
,
bool
cal
);
static
void
insn_config
(
comedi_t
*
card
,
int
subdev
,
int
channel
,
lsampl_t
iotype
,
int
range
,
int
aref
);
//
static void insn_config( comedi_t* card, int subdev, int channel, lsampl_t iotype, int range, int aref );
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
char
buf
[
5
];
char
buf
[
5
];
...
@@ -275,6 +275,7 @@ int main(int argc, char* argv[])
...
@@ -275,6 +275,7 @@ int main(int argc, char* argv[])
}
}
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
/*
void insn_config( comedi_t* card, int subdev, int channel, lsampl_t iotype, int range, int aref )
void insn_config( comedi_t* card, int subdev, int channel, lsampl_t iotype, int range, int aref )
{
{
comedi_insn insn;
comedi_insn insn;
...
@@ -290,7 +291,7 @@ void insn_config( comedi_t* card, int subdev, int channel, lsampl_t iotype, int
...
@@ -290,7 +291,7 @@ void insn_config( comedi_t* card, int subdev, int channel, lsampl_t iotype, int
exit(EXIT_FAILURE);
exit(EXIT_FAILURE);
}
}
}
}
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
void
readCalibr
(
int
fixed
)
void
readCalibr
(
int
fixed
)
{
{
...
...
extensions/LogicProcessor/LProcessor.cc
View file @
e0efd2da
...
@@ -66,8 +66,7 @@ void LProcessor::build( const string& lfile )
...
@@ -66,8 +66,7 @@ void LProcessor::build( const string& lfile )
ei
.
sid
=
sid
;
ei
.
sid
=
sid
;
ei
.
state
=
false
;
ei
.
state
=
false
;
ei
.
lnk
=
&
(
*
it
);
ei
.
lnk
=
&
(
*
it
);
#warning Пока тип сделан принудительно
ei
.
iotype
=
UniversalIO
::
UnknownIOType
;
ei
.
iotype
=
UniversalIO
::
DigitalInput
;
extInputs
.
push_front
(
ei
);
extInputs
.
push_front
(
ei
);
}
}
...
@@ -83,8 +82,7 @@ void LProcessor::build( const string& lfile )
...
@@ -83,8 +82,7 @@ void LProcessor::build( const string& lfile )
EXTOutInfo
ei
;
EXTOutInfo
ei
;
ei
.
sid
=
sid
;
ei
.
sid
=
sid
;
ei
.
lnk
=
&
(
*
it
);
ei
.
lnk
=
&
(
*
it
);
#warning Пока тип сделан принудительно
ei
.
iotype
=
UniversalIO
::
UnknownIOType
;
ei
.
iotype
=
UniversalIO
::
DigitalOutput
;
extOuts
.
push_front
(
ei
);
extOuts
.
push_front
(
ei
);
}
}
...
...
extensions/MBTCPMaster/MBTCPMaster.cc
View file @
e0efd2da
...
@@ -918,7 +918,11 @@ void MBTCPMaster::sigterm( int signo )
...
@@ -918,7 +918,11 @@ void MBTCPMaster::sigterm( int signo )
{
{
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
activated
=
false
;
activated
=
false
;
#warning Доделать...
/*! \todo Доделать выставление безопасного состояния на выходы.
И нужно ли это. Ведь может не хватить времени на "обмен"
*/
// выставление безопасного состояния на выходы....
// выставление безопасного состояния на выходы....
/*
/*
RSMap::iterator it=rsmap.begin();
RSMap::iterator it=rsmap.begin();
...
@@ -945,8 +949,6 @@ void MBTCPMaster::sigterm( int signo )
...
@@ -945,8 +949,6 @@ void MBTCPMaster::sigterm( int signo )
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
void
MBTCPMaster
::
readConfiguration
()
void
MBTCPMaster
::
readConfiguration
()
{
{
#warning Сделать сортировку по диапазонам адресов!!!
// чтобы запрашивать одним запросом, сразу несколько входов...
// readconf_ok = false;
// readconf_ok = false;
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
if
(
!
root
)
if
(
!
root
)
...
...
extensions/ModbusSlave/MBSlave.cc
View file @
e0efd2da
...
@@ -633,6 +633,13 @@ void MBSlave::sigterm( int signo )
...
@@ -633,6 +633,13 @@ void MBSlave::sigterm( int signo )
{
{
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
activated
=
false
;
activated
=
false
;
try
{
if
(
mbslot
)
mbslot
->
sigterm
(
signo
);
}
catch
(...){}
UniSetObject_LT
::
sigterm
(
signo
);
UniSetObject_LT
::
sigterm
(
signo
);
}
}
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
...
...
extensions/RTUExchange/RTUExchange.cc
View file @
e0efd2da
...
@@ -935,7 +935,8 @@ void RTUExchange::sigterm( int signo )
...
@@ -935,7 +935,8 @@ void RTUExchange::sigterm( int signo )
{
{
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
cerr
<<
myname
<<
": ********* SIGTERM("
<<
signo
<<
") ********"
<<
endl
;
activated
=
false
;
activated
=
false
;
#warning Доделать...
/*! \todo Нужно ли выставлять безопасное состояние. МОжно ведь не успеть совершить "обемен" */
// выставление безопасного состояния на выходы....
// выставление безопасного состояния на выходы....
/*
/*
RSMap::iterator it=rsmap.begin();
RSMap::iterator it=rsmap.begin();
...
@@ -962,8 +963,6 @@ void RTUExchange::sigterm( int signo )
...
@@ -962,8 +963,6 @@ void RTUExchange::sigterm( int signo )
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
void
RTUExchange
::
readConfiguration
()
void
RTUExchange
::
readConfiguration
()
{
{
#warning Сделать сортировку по диапазонам адресов!!!
// чтобы запрашивать одним запросом, сразу несколько входов...
// readconf_ok = false;
// readconf_ok = false;
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
if
(
!
root
)
if
(
!
root
)
...
...
extensions/SharedMemory/SharedMemory.cc
View file @
e0efd2da
...
@@ -53,12 +53,6 @@ SharedMemory::SharedMemory( ObjectId id, string datafile ):
...
@@ -53,12 +53,6 @@ SharedMemory::SharedMemory( ObjectId id, string datafile ):
heartbeatCheckTime
=
conf
->
getArgInt
(
"--heartbeat-check-time"
,
"1000"
);
heartbeatCheckTime
=
conf
->
getArgInt
(
"--heartbeat-check-time"
,
"1000"
);
// rxml->setSensorFilter(s_filterField, s_filterValue);
//#warning Намеренно отключаем обработку списка заказчиков (в данном проекте)...
// для отключения просто укажем несуществующие поля для фильтра
// rxml->setConsumerFilter("dummy","yes");
rxml
->
setItemFilter
(
s_field
,
s_fvalue
);
rxml
->
setItemFilter
(
s_field
,
s_fvalue
);
rxml
->
setConsumerFilter
(
c_field
,
c_fvalue
);
rxml
->
setConsumerFilter
(
c_field
,
c_fvalue
);
rxml
->
setDependsFilter
(
d_field
,
d_fvalue
);
rxml
->
setDependsFilter
(
d_field
,
d_fvalue
);
...
@@ -456,10 +450,6 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
...
@@ -456,10 +450,6 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
ostringstream
msg
;
ostringstream
msg
;
msg
<<
"(SharedMemory::readItem): дискретный датчик (heartbeat_ds_name) связанный с "
<<
it
.
getProp
(
"name"
);
msg
<<
"(SharedMemory::readItem): дискретный датчик (heartbeat_ds_name) связанный с "
<<
it
.
getProp
(
"name"
);
dlog
[
Debug
::
WARN
]
<<
msg
.
str
()
<<
endl
;
dlog
[
Debug
::
WARN
]
<<
msg
.
str
()
<<
endl
;
#warning Делать обязательным?!
// dlog[Debug::CRIT] << msg.str() << endl;
// kill(getpid(),SIGTERM);
// throw NameNotFound(msg.str());
}
}
}
}
else
else
...
@@ -469,6 +459,9 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
...
@@ -469,6 +459,9 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
{
{
ostringstream
msg
;
ostringstream
msg
;
msg
<<
"(SharedMemory::readItem): Не найден ID для дискретного датчика (heartbeat_ds_name) связанного с "
<<
it
.
getProp
(
"name"
);
msg
<<
"(SharedMemory::readItem): Не найден ID для дискретного датчика (heartbeat_ds_name) связанного с "
<<
it
.
getProp
(
"name"
);
// Если уж задали имя для датчика, то он должен существовать..
// поэтому завершаем процесс, если не нашли..
dlog
[
Debug
::
CRIT
]
<<
msg
.
str
()
<<
endl
;
dlog
[
Debug
::
CRIT
]
<<
msg
.
str
()
<<
endl
;
kill
(
getpid
(),
SIGTERM
);
kill
(
getpid
(),
SIGTERM
);
// throw NameNotFound(msg.str());
// throw NameNotFound(msg.str());
...
...
extensions/UDPExchange/UDPExchange.cc
View file @
e0efd2da
...
@@ -238,7 +238,7 @@ void UDPExchange::send()
...
@@ -238,7 +238,7 @@ void UDPExchange::send()
return;
return;
}
}
*/
*/
#warning use mutex for list!!!
/*! \todo Подумать нужен ли здесь mutex */
UniSetUDP
::
UDPMessage
::
UDPDataList
::
iterator
it
=
mypack
.
dlist
.
begin
();
UniSetUDP
::
UDPMessage
::
UDPDataList
::
iterator
it
=
mypack
.
dlist
.
begin
();
for
(
;
it
!=
mypack
.
dlist
.
end
();
++
it
)
for
(
;
it
!=
mypack
.
dlist
.
end
();
++
it
)
...
@@ -446,8 +446,6 @@ void UDPExchange::sigterm( int signo )
...
@@ -446,8 +446,6 @@ void UDPExchange::sigterm( int signo )
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
void
UDPExchange
::
readConfiguration
()
void
UDPExchange
::
readConfiguration
()
{
{
#warning Сделать сортировку по диапазонам адресов!!!
// чтобы запрашивать одним запросом, сразу несколько входов...
// readconf_ok = false;
// readconf_ok = false;
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
if
(
!
root
)
if
(
!
root
)
...
...
extensions/UDPExchange/UDPSender.cc
View file @
e0efd2da
...
@@ -230,7 +230,7 @@ void UDPSender::send()
...
@@ -230,7 +230,7 @@ void UDPSender::send()
return
;
return
;
}
}
#warning use mutex for list!!!
/*! \todo Подумать нужен ли здесь mutex */
UniSetUDP
::
UDPMessage
::
UDPDataList
::
iterator
it
=
mypack
.
dlist
.
begin
();
UniSetUDP
::
UDPMessage
::
UDPDataList
::
iterator
it
=
mypack
.
dlist
.
begin
();
for
(
;
it
!=
mypack
.
dlist
.
end
();
++
it
)
for
(
;
it
!=
mypack
.
dlist
.
end
();
++
it
)
{
{
...
@@ -431,8 +431,6 @@ void UDPSender::sigterm( int signo )
...
@@ -431,8 +431,6 @@ void UDPSender::sigterm( int signo )
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
void
UDPSender
::
readConfiguration
()
void
UDPSender
::
readConfiguration
()
{
{
#warning Сделать сортировку по диапазонам адресов!!!
// чтобы запрашивать одним запросом, сразу несколько входов...
// readconf_ok = false;
// readconf_ok = false;
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
if
(
!
root
)
if
(
!
root
)
...
...
extensions/UniNetwork/UniExchange.cc
View file @
e0efd2da
...
@@ -407,8 +407,6 @@ UniExchange* UniExchange::init_exchange( int argc, const char* const* argv,
...
@@ -407,8 +407,6 @@ UniExchange* UniExchange::init_exchange( int argc, const char* const* argv,
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
UniExchange
::
readConfiguration
()
void
UniExchange
::
readConfiguration
()
{
{
#warning Сделать сортировку по диапазонам адресов!!!
// чтобы запрашивать одним запросом, сразу несколько входов...
// readconf_ok = false;
// readconf_ok = false;
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
xmlNode
*
root
=
conf
->
getXMLSensorsSection
();
if
(
!
root
)
if
(
!
root
)
...
...
extensions/UniNetwork/UniExchange.h
View file @
e0efd2da
...
@@ -91,7 +91,7 @@ class UniExchange:
...
@@ -91,7 +91,7 @@ class UniExchange:
bool
init_ok
;
bool
init_ok
;
SList
mymap
;
SList
mymap
;
in
t
maxIndex
;
size_
t
maxIndex
;
int
smReadyTimeout
;
int
smReadyTimeout
;
private
:
private
:
...
...
extensions/include/MTR.h
View file @
e0efd2da
...
@@ -95,7 +95,7 @@ namespace MTR
...
@@ -95,7 +95,7 @@ namespace MTR
//
//
typedef
std
::
list
<
ModbusRTU
::
ModbusData
>
DataList
;
typedef
std
::
list
<
ModbusRTU
::
ModbusData
>
DataList
;
typedef
std
::
map
<
ModbusRTU
::
ModbusData
,
DataList
>
DataMap
;
typedef
std
::
map
<
ModbusRTU
::
ModbusData
,
DataList
>
DataMap
;
static
int
attempts
=
3
;
//
const
int
attempts
=
3
;
//
static
const
ModbusRTU
::
ModbusData
skip
[]
=
{
48
,
49
,
59
};
// registers which should not write
static
const
ModbusRTU
::
ModbusData
skip
[]
=
{
48
,
49
,
59
};
// registers which should not write
...
...
extensions/lib/IOBase.cc
View file @
e0efd2da
...
@@ -285,7 +285,8 @@ long IOBase::processingAsAO( IOBase* it, SMInterface* shm, bool force )
...
@@ -285,7 +285,8 @@ long IOBase::processingAsAO( IOBase* it, SMInterface* shm, bool force )
}
}
else
else
val
=
it
->
value
;
val
=
it
->
value
;
#warning Precision!!!
/*! \todo Разобратся, нужно ли здесь учитывать Precision! */
// if( it->cal.precision > 0 )
// if( it->cal.precision > 0 )
// val = it->value / lround(pow10(it->cal.precision));
// val = it->value / lround(pow10(it->cal.precision));
}
}
...
@@ -482,10 +483,7 @@ bool IOBase::initItem( IOBase* b, UniXML_iterator& it, SMInterface* shm,
...
@@ -482,10 +483,7 @@ bool IOBase::initItem( IOBase* b, UniXML_iterator& it, SMInterface* shm,
if
(
f_iir
>
0
)
if
(
f_iir
>
0
)
b
->
f_filter_iir
=
true
;
b
->
f_filter_iir
=
true
;
if
(
!
it
.
getProp
(
"filtersize"
).
empty
()
)
if
(
!
it
.
getProp
(
"filtersize"
).
empty
()
)
{
#warning "почему здесь 0, хотя f_size инициализируется def_filtersize?"
f_size
=
it
.
getPIntProp
(
"filtersize"
,
def_filtersize
);
f_size
=
it
.
getPIntProp
(
"filtersize"
,
def_filtersize
);
}
}
}
if
(
!
it
.
getProp
(
"filterT"
).
empty
()
)
if
(
!
it
.
getProp
(
"filterT"
).
empty
()
)
...
...
extensions/lib/MTR.cc
View file @
e0efd2da
...
@@ -269,7 +269,7 @@ DataMap read_confile( const std::string f )
...
@@ -269,7 +269,7 @@ DataMap read_confile( const std::string f )
DataList
dlst
;
DataList
dlst
;
int
k
=
0
;
int
k
=
0
;
std
::
vector
<
unsigned
char
>
v
(
4
);
std
::
vector
<
unsigned
char
>
v
(
4
);
for
(
in
t
i
=
0
;
i
<
s_data
.
size
();
i
++
)
for
(
size_
t
i
=
0
;
i
<
s_data
.
size
();
i
++
)
{
{
v
[
k
++
]
=
s_data
[
i
];
v
[
k
++
]
=
s_data
[
i
];
if
(
k
>
3
)
if
(
k
>
3
)
...
...
include/modbus/ModbusRTUSlave.h
View file @
e0efd2da
...
@@ -35,6 +35,8 @@ class ModbusRTUSlave:
...
@@ -35,6 +35,8 @@ class ModbusRTUSlave:
virtual
ModbusRTU
::
mbErrCode
receive
(
ModbusRTU
::
ModbusAddr
addr
,
timeout_t
msecTimeout
);
virtual
ModbusRTU
::
mbErrCode
receive
(
ModbusRTU
::
ModbusAddr
addr
,
timeout_t
msecTimeout
);
virtual
void
cleanupChannel
(){
if
(
port
)
port
->
cleanupChannel
();
}
virtual
void
cleanupChannel
(){
if
(
port
)
port
->
cleanupChannel
();
}
virtual
void
terminate
();
protected
:
protected
:
...
...
include/modbus/ModbusRTUSlaveSlot.h
View file @
e0efd2da
...
@@ -21,7 +21,9 @@ class ModbusRTUSlaveSlot:
...
@@ -21,7 +21,9 @@ class ModbusRTUSlaveSlot:
ModbusRTUSlaveSlot
(
ComPort
*
com
);
ModbusRTUSlaveSlot
(
ComPort
*
com
);
ModbusRTUSlaveSlot
(
const
std
::
string
dev
,
bool
use485
=
false
,
bool
tr_ctl
=
false
);
ModbusRTUSlaveSlot
(
const
std
::
string
dev
,
bool
use485
=
false
,
bool
tr_ctl
=
false
);
virtual
~
ModbusRTUSlaveSlot
();
virtual
~
ModbusRTUSlaveSlot
();
virtual
void
sigterm
(
int
signo
);
protected
:
protected
:
virtual
ModbusRTU
::
mbErrCode
readCoilStatus
(
ModbusRTU
::
ReadCoilMessage
&
query
,
virtual
ModbusRTU
::
mbErrCode
readCoilStatus
(
ModbusRTU
::
ReadCoilMessage
&
query
,
...
...
include/modbus/ModbusServer.h
View file @
e0efd2da
...
@@ -69,6 +69,7 @@ class ModbusServer
...
@@ -69,6 +69,7 @@ class ModbusServer
DebugStream
*
dlog
=
0
);
DebugStream
*
dlog
=
0
);
virtual
void
cleanupChannel
(){}
virtual
void
cleanupChannel
(){}
virtual
void
terminate
(){}
protected
:
protected
:
...
...
include/modbus/ModbusServerSlot.h
View file @
e0efd2da
...
@@ -98,6 +98,8 @@ class ModbusServerSlot
...
@@ -98,6 +98,8 @@ class ModbusServerSlot
/*! подключение обработчика 'передача файла' 0x66 */
/*! подключение обработчика 'передача файла' 0x66 */
void
connectFileTransfer
(
FileTransferSlot
sl
);
void
connectFileTransfer
(
FileTransferSlot
sl
);
virtual
void
sigterm
(
int
signo
){}
protected
:
protected
:
ReadCoilSlot
slReadCoil
;
ReadCoilSlot
slReadCoil
;
ReadInputStatusSlot
slReadInputStatus
;
ReadInputStatusSlot
slReadInputStatus
;
...
...
include/modbus/ModbusTCPServer.h
View file @
e0efd2da
...
@@ -30,6 +30,9 @@ class ModbusTCPServer:
...
@@ -30,6 +30,9 @@ class ModbusTCPServer:
void
cleanInputStream
();
void
cleanInputStream
();
virtual
void
cleanupChannel
(){
cleanInputStream
();
}
virtual
void
cleanupChannel
(){
cleanInputStream
();
}
virtual
void
terminate
();
protected
:
protected
:
virtual
ModbusRTU
::
mbErrCode
pre_send_request
(
ModbusRTU
::
ModbusMessage
&
request
);
virtual
ModbusRTU
::
mbErrCode
pre_send_request
(
ModbusRTU
::
ModbusMessage
&
request
);
...
...
include/modbus/ModbusTCPServerSlot.h
View file @
e0efd2da
...
@@ -16,7 +16,9 @@ class ModbusTCPServerSlot:
...
@@ -16,7 +16,9 @@ class ModbusTCPServerSlot:
public
:
public
:
ModbusTCPServerSlot
(
ost
::
InetAddress
&
ia
,
int
port
=
502
);
ModbusTCPServerSlot
(
ost
::
InetAddress
&
ia
,
int
port
=
502
);
virtual
~
ModbusTCPServerSlot
();
virtual
~
ModbusTCPServerSlot
();
virtual
void
sigterm
(
int
signo
);
protected
:
protected
:
virtual
ModbusRTU
::
mbErrCode
readCoilStatus
(
ModbusRTU
::
ReadCoilMessage
&
query
,
virtual
ModbusRTU
::
mbErrCode
readCoilStatus
(
ModbusRTU
::
ReadCoilMessage
&
query
,
...
...
src/Communications/ComPort485F.cc
View file @
e0efd2da
...
@@ -61,9 +61,10 @@ static void setRTS(int fd, int state)
...
@@ -61,9 +61,10 @@ static void setRTS(int fd, int state)
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
ComPort485F
::
ComPort485F
(
string
dev
,
int
gpio_num
,
bool
tmit_ctrl
)
:
ComPort485F
::
ComPort485F
(
string
dev
,
int
gpio_num
,
bool
tmit_ctrl
)
:
ComPort
(
dev
,
false
),
ComPort
(
dev
,
false
),
gpio_num
(
gpio_num
)
gpio_num
(
gpio_num
),
tmit_ctrl_on
(
tmit_ctrl
)
{
{
if
(
tmit_ctrl_on
=
tmit_ctrl
)
if
(
tmit_ctrl_on
)
{
{
iopl
(
3
);
iopl
(
3
);
gpio_low_out_en
(
gpio_num
);
gpio_low_out_en
(
gpio_num
);
...
...
src/Communications/Modbus/ModbusClient.cc
View file @
e0efd2da
...
@@ -298,8 +298,9 @@ mbErrCode ModbusClient::recv( ModbusAddr addr, ModbusByte qfunc,
...
@@ -298,8 +298,9 @@ mbErrCode ModbusClient::recv( ModbusAddr addr, ModbusByte qfunc,
if
(
!
begin
)
if
(
!
begin
)
return
erTimeOut
;
return
erTimeOut
;
#warning Может стоит всё-таки получать весь пакет, а проверять кому он адресован на уровне выше?!
/*! \todo Подумать Может стоит всё-таки получать весь пакет, а проверять кому он адресован на уровне выше?!
// Lav: конечно стоит, нам же надо буфер чистить
// Lav: конечно стоит, нам же надо буфер чистить
*/
// Проверка кому адресован пакет...
// Проверка кому адресован пакет...
if
(
rbuf
.
addr
!=
addr
&&
rbuf
.
addr
!=
BroadcastAddr
)
if
(
rbuf
.
addr
!=
addr
&&
rbuf
.
addr
!=
BroadcastAddr
)
{
{
...
...
src/Communications/Modbus/ModbusRTUSlave.cc
View file @
e0efd2da
...
@@ -148,3 +148,10 @@ mbErrCode ModbusRTUSlave::sendData( unsigned char* buf, int len )
...
@@ -148,3 +148,10 @@ mbErrCode ModbusRTUSlave::sendData( unsigned char* buf, int len )
return
erNoError
;
return
erNoError
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ModbusRTUSlave
::
terminate
()
{
try
{
}
catch
(...){}
}
\ No newline at end of file
src/Communications/Modbus/ModbusRTUSlaveSlot.cc
View file @
e0efd2da
...
@@ -137,3 +137,12 @@ ModbusRTU::mbErrCode ModbusRTUSlaveSlot::fileTransfer( ModbusRTU::FileTransferMe
...
@@ -137,3 +137,12 @@ ModbusRTU::mbErrCode ModbusRTUSlaveSlot::fileTransfer( ModbusRTU::FileTransferMe
return
slFileTransfer
(
query
,
reply
);
return
slFileTransfer
(
query
,
reply
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ModbusRTUSlaveSlot
::
sigterm
(
int
signo
)
{
try
{
terminate
();
}
catch
(...){}
}
// -------------------------------------------------------------------------
src/Communications/Modbus/ModbusServer.cc
View file @
e0efd2da
...
@@ -476,9 +476,9 @@ mbErrCode ModbusServer::recv( ModbusRTU::ModbusAddr addr, ModbusMessage& rbuf, t
...
@@ -476,9 +476,9 @@ mbErrCode ModbusServer::recv( ModbusRTU::ModbusAddr addr, ModbusMessage& rbuf, t
if
(
!
begin
)
if
(
!
begin
)
return
erTimeOut
;
return
erTimeOut
;
/*! \todo Подумать Может стоит всё-таки получать весь пакет, а проверять кому он адресован на уровне выше?!
#warning Может стоит всё-таки получать весь пакет, а проверять кому он адресован на уровне выше?!
// Lav: конечно стоит, нам же надо буфер чистить
// Lav: конечно стоит, нам же надо буфер чистить
*/
// Проверка кому адресован пакет...
// Проверка кому адресован пакет...
if
(
rbuf
.
addr
!=
addr
&&
rbuf
.
addr
!=
BroadcastAddr
)
if
(
rbuf
.
addr
!=
addr
&&
rbuf
.
addr
!=
BroadcastAddr
)
{
{
...
@@ -755,7 +755,6 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
...
@@ -755,7 +755,6 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
}
}
}
}
#warning Стоит ли здесь проверять
if
(
!
mWrite
.
checkFormat
()
)
if
(
!
mWrite
.
checkFormat
()
)
{
{
dlog
[
Debug
::
WARN
]
<<
"(0x0F): ("
<<
rbuf
.
func
dlog
[
Debug
::
WARN
]
<<
"(0x0F): ("
<<
rbuf
.
func
...
@@ -814,7 +813,6 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
...
@@ -814,7 +813,6 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
}
}
}
}
#warning Стоит ли здесь проверять
if
(
!
mWrite
.
checkFormat
()
)
if
(
!
mWrite
.
checkFormat
()
)
{
{
dlog
[
Debug
::
WARN
]
<<
"(0x10): ("
<<
rbuf
.
func
dlog
[
Debug
::
WARN
]
<<
"(0x10): ("
<<
rbuf
.
func
...
@@ -872,7 +870,7 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
...
@@ -872,7 +870,7 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
return
erBadCheckSum
;
return
erBadCheckSum
;
}
}
}
}
#warning Стоит ли здесь проверять
if
(
!
mWrite
.
checkFormat
()
)
if
(
!
mWrite
.
checkFormat
()
)
{
{
dlog
[
Debug
::
WARN
]
<<
"(0x05): ("
<<
rbuf
.
func
dlog
[
Debug
::
WARN
]
<<
"(0x05): ("
<<
rbuf
.
func
...
@@ -930,7 +928,7 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
...
@@ -930,7 +928,7 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
return
erBadCheckSum
;
return
erBadCheckSum
;
}
}
}
}
#warning Стоит ли здесь проверять
if
(
!
mWrite
.
checkFormat
()
)
if
(
!
mWrite
.
checkFormat
()
)
{
{
dlog
[
Debug
::
WARN
]
<<
"(0x06): ("
<<
rbuf
.
func
dlog
[
Debug
::
WARN
]
<<
"(0x06): ("
<<
rbuf
.
func
...
...
src/Communications/Modbus/ModbusTCPServer.cc
View file @
e0efd2da
...
@@ -19,6 +19,7 @@ ModbusTCPServer::ModbusTCPServer( ost::InetAddress &ia, int port ):
...
@@ -19,6 +19,7 @@ ModbusTCPServer::ModbusTCPServer( ost::InetAddress &ia, int port ):
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
ModbusTCPServer
::~
ModbusTCPServer
()
ModbusTCPServer
::~
ModbusTCPServer
()
{
{
terminate
();
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
mbErrCode
ModbusTCPServer
::
receive
(
ModbusRTU
::
ModbusAddr
addr
,
timeout_t
timeout
)
mbErrCode
ModbusTCPServer
::
receive
(
ModbusRTU
::
ModbusAddr
addr
,
timeout_t
timeout
)
...
@@ -235,3 +236,12 @@ void ModbusTCPServer::cleanInputStream()
...
@@ -235,3 +236,12 @@ void ModbusTCPServer::cleanInputStream()
while
(
ret
>
0
);
while
(
ret
>
0
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ModbusTCPServer
::
terminate
()
{
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
dlog
[
Debug
::
INFO
]
<<
"(ModbusTCPServer): terminate..."
<<
endl
;
if
(
tcp
&&
tcp
.
isConnected
()
)
tcp
.
disconnect
();
}
// -------------------------------------------------------------------------
src/Communications/Modbus/ModbusTCPServerSlot.cc
View file @
e0efd2da
...
@@ -131,3 +131,12 @@ ModbusRTU::mbErrCode ModbusTCPServerSlot::fileTransfer( ModbusRTU::FileTransferM
...
@@ -131,3 +131,12 @@ ModbusRTU::mbErrCode ModbusTCPServerSlot::fileTransfer( ModbusRTU::FileTransferM
return
slFileTransfer
(
query
,
reply
);
return
slFileTransfer
(
query
,
reply
);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
void
ModbusTCPServerSlot
::
sigterm
(
int
signo
)
{
try
{
terminate
();
}
catch
(...){}
}
// -------------------------------------------------------------------------
src/Communications/Modbus/ModbusTCPTypes.cc
View file @
e0efd2da
...
@@ -1390,7 +1390,7 @@ void ForceCoilsRetMessage::init( ModbusMessage& m )
...
@@ -1390,7 +1390,7 @@ void ForceCoilsRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (WriteOutputRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (WriteOutputRetMessage): необходимо встроить проверку на корректность данных */
// Сперва переворачиваем обратно слова
// Сперва переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
@@ -1647,7 +1647,7 @@ void WriteOutputRetMessage::init( ModbusMessage& m )
...
@@ -1647,7 +1647,7 @@ void WriteOutputRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (WriteOutputRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (WriteOutputRetMessage): необходимо встроить проверку на корректность данных */
// Сперва переворачиваем обратно слова
// Сперва переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
@@ -1819,7 +1819,7 @@ void ForceSingleCoilRetMessage::init( ModbusMessage& m )
...
@@ -1819,7 +1819,7 @@ void ForceSingleCoilRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (ForceSingleCoilRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (ForceSingleCoilRetMessage): необходимо встроить проверку на корректность данных */
// переворачиваем обратно слова
// переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
@@ -1995,7 +1995,7 @@ void WriteSingleOutputRetMessage::init( ModbusMessage& m )
...
@@ -1995,7 +1995,7 @@ void WriteSingleOutputRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (WriteSingleOutputRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (WriteSingleOutputRetMessage): необходимо встроить проверку на корректность данных */
// переворачиваем обратно слова
// переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
...
src/Communications/Modbus/ModbusTypes.cc
View file @
e0efd2da
...
@@ -1122,7 +1122,7 @@ void ReadInputRetMessage::init( ModbusMessage& m )
...
@@ -1122,7 +1122,7 @@ void ReadInputRetMessage::init( ModbusMessage& m )
void
ReadInputRetMessage
::
swapData
()
void
ReadInputRetMessage
::
swapData
()
{
{
// переворачиваем данные
// переворачиваем данные
for
(
unsigned
int
i
=
0
;
i
<
count
;
i
++
)
for
(
int
i
=
0
;
i
<
count
;
i
++
)
data
[
i
]
=
SWAPSHORT
(
data
[
i
]);
data
[
i
]
=
SWAPSHORT
(
data
[
i
]);
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
...
@@ -1428,7 +1428,7 @@ void ForceCoilsRetMessage::init( ModbusMessage& m )
...
@@ -1428,7 +1428,7 @@ void ForceCoilsRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (WriteOutputRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (WriteOutputRetMessage): необходимо встроить проверку на корректность данных */
// Сперва переворачиваем обратно слова
// Сперва переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
@@ -1685,7 +1685,7 @@ void WriteOutputRetMessage::init( ModbusMessage& m )
...
@@ -1685,7 +1685,7 @@ void WriteOutputRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (WriteOutputRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (WriteOutputRetMessage): необходимо встроить проверку на корректность данных */
// Сперва переворачиваем обратно слова
// Сперва переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
@@ -1857,7 +1857,7 @@ void ForceSingleCoilRetMessage::init( ModbusMessage& m )
...
@@ -1857,7 +1857,7 @@ void ForceSingleCoilRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (ForceSingleCoilRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (ForceSingleCoilRetMessage): необходимо встроить проверку на корректность данных */
// переворачиваем обратно слова
// переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
@@ -2033,7 +2033,7 @@ void WriteSingleOutputRetMessage::init( ModbusMessage& m )
...
@@ -2033,7 +2033,7 @@ void WriteSingleOutputRetMessage::init( ModbusMessage& m )
// copy not include CRC
// copy not include CRC
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
memcpy
(
this
,
&
m
,
szModbusHeader
+
m
.
len
);
#warning (WriteSingleOutputRetMessage): необходимо встроить проверку на корректность данных
/*! \todo (WriteSingleOutputRetMessage): необходимо встроить проверку на корректность данных */
// переворачиваем обратно слова
// переворачиваем обратно слова
start
=
SWAPSHORT
(
start
);
start
=
SWAPSHORT
(
start
);
...
...
src/Various/UniXML.cc
View file @
e0efd2da
...
@@ -176,8 +176,9 @@ xmlNode* UniXML::copyNode(xmlNode* node, int recursive)
...
@@ -176,8 +176,9 @@ xmlNode* UniXML::copyNode(xmlNode* node, int recursive)
- при указании NULL нормально работает
- при указании NULL нормально работает
- при указании copynode - проблеммы с русским при сохранении
- при указании copynode - проблеммы с русским при сохранении
- при указании node - SEGFAULT при попытке удалить исходный(node) узел
- при указании node - SEGFAULT при попытке удалить исходный(node) узел
\todo "Нужно тест написать на copyNode"
*/
*/
#warning "Нужно тест написать на copyNode"
copynode
->
properties
=
::
xmlCopyPropList
(
NULL
,
node
->
properties
);
copynode
->
properties
=
::
xmlCopyPropList
(
NULL
,
node
->
properties
);
if
(
copynode
!=
0
&&
node
->
parent
)
if
(
copynode
!=
0
&&
node
->
parent
)
{
{
...
...
tests/Makefile.am
View file @
e0efd2da
...
@@ -11,8 +11,8 @@ passivetimer_LDADD = $(top_builddir)/lib/libUniSet.la
...
@@ -11,8 +11,8 @@ passivetimer_LDADD = $(top_builddir)/lib/libUniSet.la
passivetimer_CPPFLAGS
=
-I
$(top_builddir)
/include
passivetimer_CPPFLAGS
=
-I
$(top_builddir)
/include
unixml_SOURCES
=
unixml.cc
unixml_SOURCES
=
unixml.cc
unixml_LDADD
=
$(top_builddir)
/lib/libUniSet.la
unixml_LDADD
=
$(top_builddir)
/lib/libUniSet.la
${
SIGC_LIBS
}
unixml_CPPFLAGS
=
-I
$(top_builddir)
/include
unixml_CPPFLAGS
=
-I
$(top_builddir)
/include
${
SIGC_CFLAGS
}
ui_SOURCES
=
ui.cc
ui_SOURCES
=
ui.cc
ui_LDADD
=
$(top_builddir)
/lib/libUniSet.la
ui_LDADD
=
$(top_builddir)
/lib/libUniSet.la
...
...
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