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
5598a5d2
Commit
5598a5d2
authored
Jun 10, 2009
by
Pavel Vaynerman
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit 'server/master'
Conflicts: conf/uniset.spec
parents
cd2c6456
523ad82b
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
343 additions
and
141 deletions
+343
-141
TODO
TODO
+4
-6
create_links.sh
Utilities/Admin/create_links.sh
+1
-2
test.xml
conf/test.xml
+0
-0
uniset.spec
conf/uniset.spec
+2
-2
IOControl.cc
extentions/IOControl/IOControl.cc
+3
-0
MBMaster.cc
extentions/MBTCPMaster/MBMaster.cc
+3
-0
MBSlave.cc
extentions/ModbusSlave/MBSlave.cc
+6
-0
RTUExchange.cc
extentions/RTUExchange/RTUExchange.cc
+160
-97
RTUExchange.h
extentions/RTUExchange/RTUExchange.h
+11
-3
create_links.sh
extentions/RTUExchange/create_links.sh
+1
-2
start_fg.sh
extentions/RTUExchange/start_fg.sh
+6
-4
SharedMemory.cc
extentions/SharedMemory/SharedMemory.cc
+1
-1
create_links.sh
extentions/SharedMemory/create_links.sh
+1
-2
start_fg.sh
extentions/SharedMemory/start_fg.sh
+1
-1
IOBase.h
extentions/include/IOBase.h
+11
-1
VTypes.h
extentions/include/VTypes.h
+44
-1
IOBase.cc
extentions/lib/IOBase.cc
+76
-19
VTypes.cc
extentions/lib/VTypes.cc
+7
-0
DebugStream.cc
src/Various/DebugStream.cc
+5
-0
No files found.
TODO
View file @
5598a5d2
...
...
@@ -23,9 +23,6 @@
( ConsumerInfo ..). uniset-codegen,
SensorInfo ObjectId.
RTUExchange
==============
...
udev
----------
smonit: processing "precision"
admin: processing "precision"
\ No newline at end of file
Utilities/Admin/create_links.sh
View file @
5598a5d2
#!/bin/sh
ln
-s
-f
/usr/bin/uniset-stop.sh stop.sh
#ln -s -f ../../conf/test.xml test.xml
ln
-s
-f
./configure.xml test.xml
ln
-s
-f
../../conf/test.xml test.xml
conf/test.xml
View file @
5598a5d2
This source diff could not be displayed because it is too large. You can
view the blob
instead.
conf/uniset.spec
View file @
5598a5d2
...
...
@@ -2,7 +2,7 @@
Name: uniset
Version: 0.96
Release: eter2
4
Release: eter2
6
Summary: UniSet
License: GPL
Group: Development/C++
...
...
@@ -181,7 +181,7 @@ Libraries needed to develop for uniset extentions
%_bindir/%name-smviewer
%changelog
*
Tue Jun 09 2009 Pavel Vainerman <pv@etersoft.ru> 0.96-eter24
*
Mon Jun 08 2009 Pavel Vainerman <pv@aeu> 0.96-eter25
- new build
* Thu Jun 04 2009 Pavel Vainerman <pv@aeu> 0.96-eter23
...
...
extentions/IOControl/IOControl.cc
View file @
5598a5d2
...
...
@@ -492,6 +492,9 @@ void IOControl::iopoll()
unideb
[
Debug
::
LEVEL3
]
<<
myname
<<
"(iopoll): catch ..."
<<
endl
;
}
}
for
(
IOMap
::
iterator
it
=
iomap
.
begin
();
it
!=
iomap
.
end
();
++
it
)
IOBase
::
processingThreshold
(
&
(
*
it
),
shm
,
force
);
}
// --------------------------------------------------------------------------------
void
IOControl
::
readConfiguration
()
...
...
extentions/MBTCPMaster/MBMaster.cc
View file @
5598a5d2
...
...
@@ -298,6 +298,9 @@ void MBMaster::poll()
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(poll): catch ..."
<<
endl
;
}
}
for
(
MBMap
::
iterator
it
=
mbmap
.
begin
();
it
!=
mbmap
.
end
();
++
it
)
IOBase
::
processingThreshold
(
&
(
*
it
),
shm
,
force
);
}
// -----------------------------------------------------------------------------
long
MBMaster
::
readReg
(
MBMap
::
iterator
&
p
)
...
...
extentions/ModbusSlave/MBSlave.cc
View file @
5598a5d2
...
...
@@ -307,6 +307,9 @@ void MBSlave::execute_rtu()
<<
"(execute_rtu): (hb) "
<<
ex
<<
std
::
endl
;
}
}
for
(
IOMap
::
iterator
it
=
iomap
.
begin
();
it
!=
iomap
.
end
();
++
it
)
IOBase
::
processingThreshold
(
&
it
->
second
,
shm
,
force
);
}
catch
(...){}
}
...
...
@@ -355,6 +358,9 @@ void MBSlave::execute_tcp()
<<
"(execute_tcp): (hb) "
<<
ex
<<
std
::
endl
;
}
}
for
(
IOMap
::
iterator
it
=
iomap
.
begin
();
it
!=
iomap
.
end
();
++
it
)
IOBase
::
processingThreshold
(
&
it
->
second
,
shm
,
force
);
}
catch
(...){}
}
...
...
extentions/RTUExchange/RTUExchange.cc
View file @
5598a5d2
...
...
@@ -17,7 +17,9 @@ initPause(0),
force
(
false
),
force_out
(
false
),
mbregFromID
(
false
),
activated
(
false
)
activated
(
false
),
rs_pre_clean
(
false
),
noQueryOptimization
(
false
)
{
cout
<<
"$Id: RTUExchange.cc,v 1.4 2009/01/23 23:56:54 vpashka Exp $"
<<
endl
;
...
...
@@ -50,6 +52,11 @@ activated(false)
speed
=
"38400"
;
recv_timeout
=
atoi
(
conf
->
getArgParam
(
"--rs-recv-timeout"
,
it
.
getProp
(
"recv_timeout"
)).
c_str
());
if
(
recv_timeout
<=
0
)
recv_timeout
=
100
;
rs_pre_clean
=
atoi
(
conf
->
getArgParam
(
"--rs-pre-clean"
,
it
.
getProp
(
"pre_clean"
)).
c_str
());
noQueryOptimization
=
atoi
(
conf
->
getArgParam
(
"--rs-no-query-optimization"
,
it
.
getProp
(
"no_query_optimization"
)).
c_str
());
mbregFromID
=
atoi
(
conf
->
getArgParam
(
"--mbs-reg-from-id"
,
it
.
getProp
(
"reg_from_id"
)).
c_str
());
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(init): mbregFromID="
<<
mbregFromID
<<
endl
;
...
...
@@ -63,6 +70,7 @@ activated(false)
initPause
=
3000
;
force
=
atoi
(
conf
->
getArgParam
(
"--rs-force"
,
it
.
getProp
(
"force"
)).
c_str
());
force_out
=
atoi
(
conf
->
getArgParam
(
"--rs-force-out"
,
it
.
getProp
(
"force_out"
)).
c_str
());
if
(
shm
->
isLocalwork
()
)
{
...
...
@@ -260,8 +268,9 @@ void RTUExchange::poll()
try
{
//#warning For Debug
if
(
rs_pre_clean
)
mb
->
cleanupChannel
();
d
->
rtu
->
poll
(
mb
);
d
->
resp_real
=
true
;
}
...
...
@@ -283,6 +292,7 @@ void RTUExchange::poll()
{
if
(
d
->
dtype
==
RTUExchange
::
dtRTU
||
d
->
dtype
==
RTUExchange
::
dtMTR
)
{
if
(
rs_pre_clean
)
mb
->
cleanupChannel
();
if
(
pollRTU
(
d
,
it
)
)
d
->
resp_real
=
true
;
...
...
@@ -307,6 +317,18 @@ void RTUExchange::poll()
// update SharedMemory...
updateSM
();
// check thresholds
for
(
RTUExchange
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
{
RTUDevice
*
d
(
it1
->
second
);
for
(
RTUExchange
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
{
RegInfo
*
r
(
it
->
second
);
for
(
PList
::
iterator
i
=
r
->
slst
.
begin
();
i
!=
r
->
slst
.
end
();
++
i
)
IOBase
::
processingThreshold
(
&
(
*
i
),
shm
,
force
);
}
}
// printMap(rmap);
}
// -----------------------------------------------------------------------------
...
...
@@ -340,7 +362,6 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
ModbusRTU
::
ReadInputRetMessage
ret
=
mb
->
read04
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
it
->
second
->
mbval
=
ret
.
data
[
i
];
it
--
;
}
break
;
...
...
@@ -380,7 +401,6 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
<<
" IGNORE WRITE SINGLE REGISTER q_count="
<<
p
->
q_count
<<
" ..."
<<
endl
;
return
false
;
}
ModbusRTU
::
WriteSingleOutputRetMessage
ret
=
mb
->
write06
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
mbval
);
}
break
;
...
...
@@ -514,8 +534,8 @@ void RTUExchange::processingMessage(UniSetTypes::VoidMessage *msg)
{
TimerMessage
tm
(
msg
);
timerInfo
(
&
tm
);
break
;
}
break
;
case
Message
:
:
SensorInfo
:
{
...
...
@@ -551,7 +571,7 @@ void RTUExchange::sysCommand( UniSetTypes::SystemMessage *sm )
{
if
(
rmap
.
empty
()
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(sysCommand):
rmap EMPTY! terminated...
"
<<
endl
;
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(sysCommand):
************* rmap EMPTY! terminated... *************
"
<<
endl
;
raise
(
SIGTERM
);
return
;
}
...
...
@@ -585,8 +605,6 @@ void RTUExchange::sysCommand( UniSetTypes::SystemMessage *sm )
initOutput
();
}
askTimer
(
tmExchange
,
polltime
);
//
if
(
!
force
)
{
...
...
@@ -595,6 +613,7 @@ void RTUExchange::sysCommand( UniSetTypes::SystemMessage *sm )
poll
();
force
=
false
;
}
askTimer
(
tmExchange
,
polltime
);
break
;
}
...
...
@@ -669,55 +688,60 @@ void RTUExchange::askSensors( UniversalIO::UIOCommand cmd )
throw
SystemError
(
err
.
str
());
}
/*
RSMap::iterator it=rsmap.begin();
for( ; it!=rsmap.end(); ++it )
if
(
force_out
)
return
;
for
(
RTUExchange
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
{
RTUDevice
*
d
(
it1
->
second
);
for
(
RTUExchange
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
{
if( it->stype != UniversalIO::DigitalOutput && it->stype != UniversalIO::AnalogOutput )
if
(
it
->
second
->
mbfunc
!=
ModbusRTU
::
fnWriteOutputRegisters
&&
it
->
second
->
mbfunc
!=
ModbusRTU
::
fnWriteOutputSingleRegister
)
continue
;
// if( it->safety == NoSafetyState )
// continue;
for
(
PList
::
iterator
i
=
it
->
second
->
slst
.
begin
();
i
!=
it
->
second
->
slst
.
end
();
++
i
)
{
try
{
shm->askSensor(it
->si.id,cmd);
shm
->
askSensor
(
i
->
si
.
id
,
cmd
);
}
catch
(
UniSetTypes
::
Exception
&
ex
)
{
dlog
[
Debug
::
WARN
]
<<
myname
<<
"(askSensors): "
<<
ex
<<
std
::
endl
;
}
catch(...){}
catch
(...)
{
dlog
[
Debug
::
WARN
]
<<
myname
<<
"(askSensors): catch..."
<<
std
::
endl
;
}
}
}
}
*/
}
// ------------------------------------------------------------------------------------------
void
RTUExchange
::
sensorInfo
(
UniSetTypes
::
SensorMessage
*
sm
)
{
/*
RSMap::iterator it=rsmap.begin();
for( ; it!=rsmap.end(); ++it )
{
if( it->stype != UniversalIO::DigitalOutput && it->stype != UniversalIO::AnalogOutput )
continue;
if
(
force_out
)
return
;
if( it->si.id == sm->id
)
for
(
RTUExchange
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
{
if( it->stype == UniversalIO::DigitalOutput ) // || it->stype == UniversalIO::DigitalInput )
RTUDevice
*
d
(
it1
->
second
);
for
(
RTUExchange
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
{
uniset_spin_lock lock(it->val_lock);
it->value = sm->state ? 1 : 0;
}
else if( it->stype == UniversalIO::AnalogOutput ) // || it->stype == UniversalIO::AnalogInput )
if
(
it
->
second
->
mbfunc
!=
ModbusRTU
::
fnWriteOutputRegisters
&&
it
->
second
->
mbfunc
!=
ModbusRTU
::
fnWriteOutputSingleRegister
)
continue
;
for
(
PList
::
iterator
i
=
it
->
second
->
slst
.
begin
();
i
!=
it
->
second
->
slst
.
end
();
++
i
)
{
uniset_spin_lock lock(it->val_lock);
it->value = sm->value;
// cerr << myname << "(sensorInfo): ************ update si.id=" << sm->id
// << " reg=" << ModbusRTU::dat2str(i->reg->mbreg) << endl;
updateRSProperty
(
&
(
*
i
),
true
);
return
;
}
break;
}
}
*/
}
// ------------------------------------------------------------------------------------------
bool
RTUExchange
::
activateObject
()
...
...
@@ -875,9 +899,13 @@ RTUExchange::RegInfo* RTUExchange::addReg( RegMap& mp, ModbusRTU::ModbusData r,
return
0
;
}
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
{
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(addReg): reg="
<<
ModbusRTU
::
dat2str
(
r
)
<<
" already added. Ignore register params for "
<<
xmlit
.
getProp
(
"name"
)
<<
" ..."
<<
endl
;
}
it
->
second
->
rit
=
it
;
return
it
->
second
;
}
...
...
@@ -900,6 +928,8 @@ RTUExchange::RegInfo* RTUExchange::addReg( RegMap& mp, ModbusRTU::ModbusData r,
}
mp
.
insert
(
RegMap
::
value_type
(
r
,
ri
));
ri
->
rit
=
mp
.
find
(
r
);
return
ri
;
}
// ------------------------------------------------------------------------------------------
...
...
@@ -942,6 +972,18 @@ bool RTUExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
<<
" but iotype="
<<
p
.
stype
<<
" for "
<<
it
.
getProp
(
"name"
)
<<
endl
;
}
string
sbyte
(
it
.
getProp
(
"nbyte"
));
if
(
!
sbyte
.
empty
()
)
{
p
.
nbyte
=
UniSetTypes
::
uni_atoi
(
sbyte
.
c_str
());
if
(
p
.
nbyte
<
0
||
p
.
nbyte
>
VTypes
::
Byte
::
bsize
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(initRSProperty): BAD nbyte="
<<
p
.
nbyte
<<
". (0 >= nbyte < "
<<
VTypes
::
Byte
::
bsize
<<
")."
<<
endl
;
return
false
;
}
}
string
vt
(
it
.
getProp
(
"vtype"
));
if
(
vt
.
empty
()
)
{
...
...
@@ -1328,34 +1370,10 @@ std::ostream& operator<<( std::ostream& os, const RTUExchange::DeviceType& dt )
// -----------------------------------------------------------------------------
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
RTUExchange
::
RSProperty
&
p
)
{
// os << " mbaddr=(" << (int)p.mbaddr << ")" << ModbusRTU::addr2str(p.mbaddr)
// << " mbreg=" << ModbusRTU::dat2str(p.mbreg)
// << " mbfunc=" << p.mbfunc
// << " dtype=" << p.dtype;
/*
switch(p.dtype)
{
case RTUExchange::dtRTU:
os << " nbit=" << p.nbit;
break;
case RTUExchange::dtRTU188:
os << " jack=" << RTUStorage::j2s(p.rtuJack)
<< " chan=" << p.rtuChan;
break;
case RTUExchange::dtMTR:
os << " mtrType=" << MTR::type2str(p.mtrType);
break;
default:
os << "Unknown type parameters ???!!!" << endl;
break;
}
*/
os
<<
" sid="
<<
p
.
si
.
id
<<
" stype="
<<
p
.
stype
<<
" nbit="
<<
p
.
nbit
<<
" nbyte="
<<
p
.
nbyte
<<
" rnum="
<<
p
.
rnum
<<
" safety="
<<
p
.
safety
<<
" invert="
<<
p
.
invert
;
...
...
@@ -1484,6 +1502,9 @@ std::ostream& operator<<( std::ostream& os, RTUExchange::RegInfo& r )
// -----------------------------------------------------------------------------
void
RTUExchange
::
rtuQueryOptimization
(
RTUDeviceMap
&
m
)
{
if
(
noQueryOptimization
)
return
;
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(rtuQueryOptimization): optimization..."
<<
endl
;
for
(
RTUExchange
::
RTUDeviceMap
::
iterator
it1
=
m
.
begin
();
it1
!=
m
.
end
();
++
it1
)
...
...
@@ -1540,49 +1561,91 @@ void RTUExchange::updateRTU( RegMap::iterator& rit )
if
(
r
->
mbfunc
==
fnWriteOutputRegisters
||
r
->
mbfunc
==
fnWriteOutputSingleRegister
)
save
=
true
;
// if( !force_out_up && save )
// return;
ModbusRTU
::
DataBits16
b
(
r
->
mbval
);
for
(
PList
::
iterator
it
=
r
->
slst
.
begin
();
it
!=
r
->
slst
.
end
();
++
it
)
{
updateRSProperty
(
&
(
*
it
),
false
);
}
// -----------------------------------------------------------------------------
void
RTUExchange
::
updateRSProperty
(
RSProperty
*
p
,
bool
write_only
)
{
using
namespace
ModbusRTU
;
RegInfo
*
r
(
p
->
reg
->
rit
->
second
);
bool
save
=
false
;
if
(
r
->
mbfunc
==
fnWriteOutputRegisters
||
r
->
mbfunc
==
fnWriteOutputSingleRegister
)
save
=
true
;
else
if
(
write_only
)
return
;
try
{
if
(
it
->
vType
==
VTypes
::
vtUnknown
)
if
(
p
->
vType
==
VTypes
::
vtUnknown
)
{
if
(
it
->
nbit
>=
0
)
ModbusRTU
::
DataBits16
b
(
r
->
mbval
);
if
(
p
->
nbit
>=
0
)
{
if
(
save
)
{
bool
set
=
IOBase
::
processingAsDO
(
&
(
*
it
),
shm
,
force
);
b
.
set
(
it
->
nbit
,
set
);
bool
set
=
IOBase
::
processingAsDO
(
p
,
shm
,
force_out
);
b
.
set
(
p
->
nbit
,
set
);
r
->
mbval
=
b
.
mdata
();
}
else
{
bool
set
=
b
[
it
->
nbit
];
IOBase
::
processingAsDI
(
&
(
*
it
)
,
set
,
shm
,
force
);
bool
set
=
b
[
p
->
nbit
];
IOBase
::
processingAsDI
(
p
,
set
,
shm
,
force
);
}
continue
;
return
;
}
if
(
it
->
rnum
<=
1
)
if
(
p
->
rnum
<=
1
)
{
if
(
save
)
r
->
mbval
=
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
);
r
->
mbval
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
else
IOBase
::
processingAsAI
(
&
(
*
it
)
,
r
->
mbval
,
shm
,
force
);
IOBase
::
processingAsAI
(
p
,
r
->
mbval
,
shm
,
force
);
continue
;
return
;
}
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(updateRTU): IGNORE item: rnum="
<<
it
->
rnum
<<
" > 1 ?!! for id="
<<
it
->
si
.
id
<<
endl
;
continue
;
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(updateRSProperty): IGNORE item: rnum="
<<
p
->
rnum
<<
" > 1 ?!! for id="
<<
p
->
si
.
id
<<
endl
;
return
;
}
else
if
(
it
->
vType
==
VTypes
::
vtF2
)
else
if
(
p
->
vType
==
VTypes
::
vtByte
)
{
RegMap
::
iterator
i
(
rit
);
if
(
p
->
nbyte
<=
0
||
p
->
nbyte
>
VTypes
::
Byte
::
bsize
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(updateRSProperty): IGNORE item: reg="
<<
ModbusRTU
::
dat2str
(
r
->
mbreg
)
<<
" vtype="
<<
p
->
vType
<<
" but nbyte="
<<
p
->
nbyte
<<
endl
;
return
;
}
if
(
save
)
{
long
v
=
IOBase
::
processingAsAO
(
p
,
shm
,
force_out
);
VTypes
::
Byte
b
(
r
->
mbval
);
b
.
raw
.
b
[
p
->
nbyte
-
1
]
=
v
;
r
->
mbval
=
b
.
raw
.
w
;
}
else
{
VTypes
::
Byte
b
(
r
->
mbval
);
IOBase
::
processingAsAI
(
p
,
b
.
raw
.
b
[
p
->
nbyte
-
1
],
shm
,
force
);
}
return
;
}
else
if
(
p
->
vType
==
VTypes
::
vtF2
)
{
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
if
(
save
)
{
float
f
=
IOBase
::
processingFasAO
(
&
(
*
it
),
shm
,
force
);
float
f
=
IOBase
::
processingFasAO
(
p
,
shm
,
force_out
);
VTypes
::
F2
f2
(
f
);
for
(
int
k
=
0
;
k
<
VTypes
::
F2
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
f2
.
raw
.
v
[
k
];
...
...
@@ -1596,15 +1659,15 @@ void RTUExchange::updateRTU( RegMap::iterator& rit )
VTypes
::
F2
f
(
data
,
VTypes
::
F2
::
wsize
());
delete
[]
data
;
IOBase
::
processingFasAI
(
&
(
*
it
)
,
(
float
)
f
,
shm
,
force
);
IOBase
::
processingFasAI
(
p
,
(
float
)
f
,
shm
,
force
);
}
}
else
if
(
it
->
vType
==
VTypes
::
vtF4
)
else
if
(
p
->
vType
==
VTypes
::
vtF4
)
{
RegMap
::
iterator
i
(
rit
);
RegMap
::
iterator
i
(
p
->
reg
->
rit
);
if
(
save
)
{
float
f
=
IOBase
::
processingFasAO
(
&
(
*
it
),
shm
,
force
);
float
f
=
IOBase
::
processingFasAO
(
p
,
shm
,
force_out
);
VTypes
::
F4
f4
(
f
);
for
(
int
k
=
0
;
k
<
VTypes
::
F4
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
f4
.
raw
.
v
[
k
];
...
...
@@ -1618,38 +1681,38 @@ void RTUExchange::updateRTU( RegMap::iterator& rit )
VTypes
::
F4
f
(
data
,
VTypes
::
F4
::
wsize
());
delete
[]
data
;
IOBase
::
processingFasAI
(
&
(
*
it
)
,
(
float
)
f
,
shm
,
force
);
IOBase
::
processingFasAI
(
p
,
(
float
)
f
,
shm
,
force
);
}
}
}
catch
(
IOController_i
::
NameNotFound
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
TU
):(NameNotFound) "
<<
ex
.
err
<<
endl
;
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
SProperty
):(NameNotFound) "
<<
ex
.
err
<<
endl
;
}
catch
(
IOController_i
::
IOBadParam
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
TU
):(IOBadParam) "
<<
ex
.
err
<<
endl
;
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
SProperty
):(IOBadParam) "
<<
ex
.
err
<<
endl
;
}
catch
(
IONotifyController_i
::
BadRange
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
TU
): (BadRange)..."
<<
endl
;
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
SProperty
): (BadRange)..."
<<
endl
;
}
catch
(
Exception
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
TU
): "
<<
ex
<<
endl
;
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
SProperty
): "
<<
ex
<<
endl
;
}
catch
(
CORBA
::
SystemException
&
ex
)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
TU
): CORBA::SystemException: "
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateR
SProperty
): CORBA::SystemException: "
<<
ex
.
NP_minorString
()
<<
endl
;
}
catch
(...)
{
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateRTU): catch ..."
<<
endl
;
}
dlog
[
Debug
::
LEVEL3
]
<<
myname
<<
"(updateRSProperty): catch ..."
<<
endl
;
}
}
// -----------------------------------------------------------------------------
void
RTUExchange
::
updateMTR
(
RegMap
::
iterator
&
rit
)
{
RegInfo
*
r
(
rit
->
second
);
...
...
@@ -1666,7 +1729,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
if
(
r
->
mtrType
==
MTR
::
mtT1
)
{
if
(
save
)
r
->
mbval
=
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
);
r
->
mbval
=
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
_out
);
else
{
MTR
::
T1
t
(
r
->
mbval
);
...
...
@@ -1679,7 +1742,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
{
if
(
save
)
{
MTR
::
T2
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
));
MTR
::
T2
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
_out
));
r
->
mbval
=
t
.
val
;
}
else
...
...
@@ -1695,7 +1758,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
RegMap
::
iterator
i
(
rit
);
if
(
save
)
{
MTR
::
T3
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
));
MTR
::
T3
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
_out
));
for
(
int
k
=
0
;
k
<
MTR
::
T3
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
t
.
raw
.
v
[
k
];
}
...
...
@@ -1729,7 +1792,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
RegMap
::
iterator
i
(
rit
);
if
(
save
)
{
MTR
::
T5
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
));
MTR
::
T5
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
_out
));
for
(
int
k
=
0
;
k
<
MTR
::
T5
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
t
.
raw
.
v
[
k
];
}
...
...
@@ -1752,7 +1815,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
RegMap
::
iterator
i
(
rit
);
if
(
save
)
{
MTR
::
T6
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
));
MTR
::
T6
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
_out
));
for
(
int
k
=
0
;
k
<
MTR
::
T6
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
t
.
raw
.
v
[
k
];
}
...
...
@@ -1775,7 +1838,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
RegMap
::
iterator
i
(
rit
);
if
(
save
)
{
MTR
::
T7
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
));
MTR
::
T7
t
(
IOBase
::
processingAsAO
(
&
(
*
it
),
shm
,
force
_out
));
for
(
int
k
=
0
;
k
<
MTR
::
T7
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
t
.
raw
.
v
[
k
];
}
...
...
@@ -1798,7 +1861,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
RegMap
::
iterator
i
(
rit
);
if
(
save
)
{
float
f
=
IOBase
::
processingFasAO
(
&
(
*
it
),
shm
,
force
);
float
f
=
IOBase
::
processingFasAO
(
&
(
*
it
),
shm
,
force
_out
);
MTR
::
F1
f1
(
f
);
for
(
int
k
=
0
;
k
<
MTR
::
F1
::
wsize
();
k
++
,
i
++
)
i
->
second
->
mbval
=
f1
.
raw
.
v
[
k
];
...
...
extentions/RTUExchange/RTUExchange.h
View file @
5598a5d2
...
...
@@ -60,14 +60,15 @@ class RTUExchange:
public
IOBase
{
// only for RTU
short
nbit
;
/*!< bit number
(for func=[0x01,0x02]
) */
short
nbit
;
/*!< bit number) */
VTypes
::
VType
vType
;
/*!< type of value */
short
rnum
;
/*!< count of registers */
short
nbyte
;
/*!< byte number (1-2) */
RSProperty
()
:
nbit
(
-
1
),
vType
(
VTypes
::
vtUnknown
),
rnum
(
VTypes
::
wsize
(
VTypes
::
vtUnknown
)),
reg
(
0
)
nbyte
(
0
),
reg
(
0
)
{}
RegInfo
*
reg
;
...
...
@@ -77,6 +78,7 @@ class RTUExchange:
typedef
std
::
list
<
RSProperty
>
PList
;
typedef
std
::
map
<
ModbusRTU
::
ModbusData
,
RegInfo
*>
RegMap
;
struct
RegInfo
{
RegInfo
()
:
...
...
@@ -106,11 +108,13 @@ class RTUExchange:
// optimization
int
q_num
;
/*! number in query */
int
q_count
;
/*! count registers for query */
RegMap
::
iterator
rit
;
};
friend
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
RegInfo
&
r
);
typedef
std
::
map
<
ModbusRTU
::
ModbusData
,
RegInfo
*>
RegMap
;
struct
RTUDevice
{
...
...
@@ -177,6 +181,7 @@ class RTUExchange:
void
updateRTU
(
RegMap
::
iterator
&
it
);
void
updateMTR
(
RegMap
::
iterator
&
it
);
void
updateRTU188
(
RegMap
::
iterator
&
it
);
void
updateRSProperty
(
RSProperty
*
p
,
bool
write_only
=
false
);
virtual
void
processingMessage
(
UniSetTypes
::
VoidMessage
*
msg
);
void
sysCommand
(
UniSetTypes
::
SystemMessage
*
msg
);
...
...
@@ -236,6 +241,9 @@ class RTUExchange:
bool
activated
;
int
activateTimeout
;
bool
rs_pre_clean
;
bool
noQueryOptimization
;
};
// -----------------------------------------------------------------------------
#endif // _RS_EXCHANGE_H_
...
...
extentions/RTUExchange/create_links.sh
View file @
5598a5d2
#!/bin/sh
ln
-s
-f
/usr/bin/uniset-stop.sh stop.sh
#ln -s -f ../../conf/test.xml test.xml
ln
-s
-f
./configure.xml test.xml
ln
-s
-f
../../conf/test.xml test.xml
extentions/RTUExchange/start_fg.sh
View file @
5598a5d2
#!/bin/sh
uniset-start.sh
-f
./uniset-rtuexchange
--confile
test.xml
\
--rs-dev
/dev/
cbsideA
0
\
--rs-dev
/dev/
ttyS
0
\
--rs-name
RSExchange
\
--rs-speed
38400
\
--rs-filter-field
rs
\
--rs-filter-value
1
\
--dlog-add-levels
info,crit,warn,level1
--rs-filter-value
3
\
--dlog-add-levels
info,crit,warn
\
--rs-force
0
\
--rs-force-out
0
\
#,level3
# --rs-force 1 \
extentions/SharedMemory/SharedMemory.cc
View file @
5598a5d2
...
...
@@ -411,7 +411,7 @@ void SharedMemory::fastSaveValue(const IOController_i::SensorInfo& si, CORBA::Lo
SharedMemory
*
SharedMemory
::
init_smemory
(
int
argc
,
char
*
argv
[]
)
{
string
dfile
=
conf
->
getArgParam
(
"--datfile"
,
conf
->
getConfFileName
());
dlog
[
Debug
::
INFO
]
<<
"(smemory): datfile = "
<<
dfile
<<
endl
;
if
(
dfile
[
0
]
!=
'.'
&&
dfile
[
0
]
!=
'/'
)
dfile
=
conf
->
getConfDir
()
+
dfile
;
...
...
extentions/SharedMemory/create_links.sh
View file @
5598a5d2
#!/bin/sh
ln
-s
-f
/usr/bin/uniset-stop.sh stop.sh
#ln -s -f ../../conf/test.xml test.xml
ln
-s
-f
./configure.xml test.xml
ln
-s
-f
../../conf/test.xml test.xml
extentions/SharedMemory/start_fg.sh
View file @
5598a5d2
...
...
@@ -3,6 +3,6 @@
ulimit
-Sc
1000000000000
uniset-start.sh
-f
./uniset-smemory
--smemory-id
SharedMemory1
\
--confile
test.xml
\
--confile
test.xml
--datfile
/etc/AEU/configure.xml
\
--unideb-add-levels
info,crit,warn,level9,system
extentions/include/IOBase.h
View file @
5598a5d2
...
...
@@ -33,7 +33,8 @@ static const int NoSafety = -1;
invert
(
false
),
jar_state
(
false
),
ondelay_state
(
false
),
offdelay_state
(
false
)
offdelay_state
(
false
),
t_ai
(
UniSetTypes
::
DefaultObjectId
)
{}
...
...
@@ -75,6 +76,14 @@ static const int NoSafety = -1;
bool
ondelay_state
;
/*!< */
bool
offdelay_state
;
/*!< */
//
UniSetTypes
::
ObjectId
t_ai
;
/*!< ,
,
*/
IONotifyController_i
::
ThresholdInfo
ti
;
IOController
::
AIOStateList
::
iterator
ait
;
IOController
::
DIOStateList
::
iterator
dit
;
UniSetTypes
::
uniset_spin_mutex
val_lock
;
/*!< */
...
...
@@ -87,6 +96,7 @@ static const int NoSafety = -1;
static
long
processingAsAO
(
IOBase
*
it
,
SMInterface
*
shm
,
bool
force
);
static
float
processingFasAO
(
IOBase
*
it
,
SMInterface
*
shm
,
bool
force
);
static
bool
processingAsDO
(
IOBase
*
it
,
SMInterface
*
shm
,
bool
force
);
static
void
processingThreshold
(
IOBase
*
it
,
SMInterface
*
shm
,
bool
force
);
static
bool
initItem
(
IOBase
*
b
,
UniXML_iterator
&
it
,
SMInterface
*
shm
,
DebugStream
*
dlog
=
0
,
std
::
string
myname
=
""
,
int
def_filtersize
=
0
,
float
def_filterT
=
0
.
0
);
...
...
extentions/include/VTypes.h
View file @
5598a5d2
...
...
@@ -16,7 +16,8 @@ namespace VTypes
{
vtUnknown
,
vtF2
,
vtF4
vtF4
,
vtByte
};
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
VType
&
vt
);
...
...
@@ -97,6 +98,48 @@ namespace VTypes
F4mem
raw
;
};
// --------------------------------------------------------------------------
class
Byte
{
public
:
static
const
int
bsize
=
2
;
// ------------------------------------------
/*! */
typedef
union
{
unsigned
short
w
;
unsigned
char
b
[
bsize
];
}
Bytemem
;
// ------------------------------------------
// ...
Byte
(){
raw
.
w
=
0
;
}
Byte
(
unsigned
char
b1
,
unsigned
char
b2
){
raw
.
b
[
0
]
=
b1
;
raw
.
b
[
1
]
=
b2
;
}
Byte
(
const
long
val
)
{
raw
.
w
=
val
;
}
Byte
(
const
ModbusRTU
::
ModbusData
dat
)
{
raw
.
w
=
dat
;
}
~
Byte
(){}
// ------------------------------------------
/*! */
static
int
wsize
(){
return
1
;
}
/*! */
static
VType
type
(){
return
vtByte
;
}
// ------------------------------------------
operator
long
(){
return
lroundf
(
raw
.
w
);
}
unsigned
char
operator
[](
const
int
i
){
return
raw
.
b
[
i
];
}
Bytemem
raw
;
};
// --------------------------------------------------------------------------
}
// end of namespace VTypes
// --------------------------------------------------------------------------
...
...
extentions/lib/IOBase.cc
View file @
5598a5d2
...
...
@@ -105,17 +105,18 @@ void IOBase::processingAsAI( IOBase* it, long val, SMInterface* shm, bool force
return
;
}
// ...
if
(
!
it
->
nofilter
)
if
(
it
->
cdiagram
)
//
{
if
(
it
->
df
.
size
()
>
1
)
it
->
df
.
add
(
val
);
// ,
// ,
if
(
!
it
->
nofilter
&&
it
->
df
.
size
()
>
1
)
{
if
(
it
->
f_median
)
val
=
it
->
df
.
median
(
val
);
else
val
=
it
->
df
.
filterRC
(
val
);
}
if
(
it
->
cdiagram
)
//
{
if
(
it
->
craw
!=
val
)
{
it
->
craw
=
val
;
...
...
@@ -130,6 +131,16 @@ void IOBase::processingAsAI( IOBase* it, long val, SMInterface* shm, bool force
IOController_i
::
CalibrateInfo
*
cal
(
&
(
it
->
cal
)
);
if
(
cal
->
maxRaw
!=
0
&&
cal
->
maxRaw
!=
cal
->
minRaw
)
//
val
=
UniSetTypes
::
lcalibrate
(
val
,
cal
->
minRaw
,
cal
->
maxRaw
,
cal
->
minCal
,
cal
->
maxCal
,
true
);
// ,
// ,
if
(
!
it
->
nofilter
&&
it
->
df
.
size
()
>
1
)
{
if
(
it
->
f_median
)
val
=
it
->
df
.
median
(
val
);
else
val
=
it
->
df
.
filterRC
(
val
);
}
}
// "",
...
...
@@ -185,7 +196,7 @@ void IOBase::processingFasAI( IOBase* it, float fval, SMInterface* shm, bool for
IOController_i
::
CalibrateInfo
*
cal
(
&
(
it
->
cal
)
);
if
(
cal
->
maxRaw
!=
0
&&
cal
->
maxRaw
!=
cal
->
minRaw
)
//
val
=
UniSetTypes
::
f
calibrate
(
val
,
cal
->
minRaw
,
cal
->
maxRaw
,
cal
->
minCal
,
cal
->
maxCal
,
true
);
val
=
UniSetTypes
::
l
calibrate
(
val
,
cal
->
minRaw
,
cal
->
maxRaw
,
cal
->
minCal
,
cal
->
maxCal
,
true
);
// "",
//
...
...
@@ -246,12 +257,15 @@ void IOBase::processingAsDI( IOBase* it, bool set, SMInterface* shm, bool force
long
IOBase
::
processingAsAO
(
IOBase
*
it
,
SMInterface
*
shm
,
bool
force
)
{
uniset_spin_lock
lock
(
it
->
val_lock
);
long
val
=
it
->
value
;
if
(
force
)
{
if
(
it
->
stype
==
UniversalIO
::
DigitalInput
||
it
->
stype
==
UniversalIO
::
DigitalOutput
)
val
=
shm
->
localGetState
(
it
->
dit
,
it
->
si
.
id
)
?
1
:
0
;
else
if
(
it
->
stype
==
UniversalIO
::
AnalogInput
||
it
->
stype
==
UniversalIO
::
AnalogOutput
)
val
=
shm
->
localGetValue
(
it
->
ait
,
it
->
si
.
id
);
it
->
value
=
val
;
}
...
...
@@ -272,7 +286,7 @@ long IOBase::processingAsAO( IOBase* it, SMInterface* shm, bool force )
else
{
IOController_i
::
CalibrateInfo
*
cal
(
&
(
it
->
cal
)
);
if
(
cal
->
maxRaw
!=
0
&&
cal
->
maxRaw
!=
cal
->
minRaw
)
//
if
(
cal
&&
cal
->
maxRaw
!=
0
&&
cal
->
maxRaw
!=
cal
->
minRaw
)
//
{
// !!!
val
=
UniSetTypes
::
lcalibrate
(
it
->
value
,
...
...
@@ -293,17 +307,17 @@ bool IOBase::processingAsDO( IOBase* it, SMInterface* shm, bool force )
{
uniset_spin_lock
lock
(
it
->
val_lock
);
bool
set
=
it
->
value
;
if
(
it
->
stype
==
UniversalIO
::
DigitalOutput
||
it
->
stype
==
UniversalIO
::
DigitalInput
)
{
if
(
force
)
{
if
(
it
->
stype
==
UniversalIO
::
DigitalInput
||
it
->
stype
==
UniversalIO
::
DigitalOutput
)
set
=
shm
->
localGetState
(
it
->
dit
,
it
->
si
.
id
);
else
if
(
it
->
stype
==
UniversalIO
::
AnalogInput
||
it
->
stype
==
UniversalIO
::
AnalogOutput
)
set
=
shm
->
localGetValue
(
it
->
ait
,
it
->
si
.
id
)
?
true
:
false
;
}
set
=
it
->
invert
?
!
set
:
set
;
return
set
;
}
return
false
;
}
// -----------------------------------------------------------------------------
float
IOBase
::
processingFasAO
(
IOBase
*
it
,
SMInterface
*
shm
,
bool
force
)
...
...
@@ -351,6 +365,26 @@ float IOBase::processingFasAO( IOBase* it, SMInterface* shm, bool force )
return
val
;
}
// -----------------------------------------------------------------------------
void
IOBase
::
processingThreshold
(
IOBase
*
it
,
SMInterface
*
shm
,
bool
force
)
{
if
(
it
->
t_ai
==
DefaultObjectId
)
return
;
long
val
=
shm
->
localGetValue
(
it
->
ait
,
it
->
t_ai
);
bool
set
=
it
->
value
?
true
:
false
;
// cout << "val=" << val << " set=" << set << endl;
//
// lowLimit-
if
(
val
<=
(
it
->
ti
.
lowlimit
-
it
->
ti
.
sensibility
)
)
set
=
false
;
else
if
(
val
>=
(
it
->
ti
.
hilimit
+
it
->
ti
.
sensibility
)
)
set
=
true
;
// cout << "thresh: set=" << set << endl;
processingAsDI
(
it
,
set
,
shm
,
force
);
}
// -----------------------------------------------------------------------------
bool
IOBase
::
initItem
(
IOBase
*
b
,
UniXML_iterator
&
it
,
SMInterface
*
shm
,
DebugStream
*
dlog
,
std
::
string
myname
,
...
...
@@ -456,9 +490,6 @@ bool IOBase::initItem( IOBase* b, UniXML_iterator& it, SMInterface* shm,
}
}
for
(
int
i
=
0
;
i
<
f_size
;
i
++
)
b
->
df
.
add
(
b
->
defval
);
if
(
!
it
.
getProp
(
"filterT"
).
empty
()
)
{
f_T
=
atof
(
it
.
getProp
(
"filterT"
).
c_str
());
...
...
@@ -469,10 +500,36 @@ bool IOBase::initItem( IOBase* b, UniXML_iterator& it, SMInterface* shm,
if
(
b
->
stype
==
UniversalIO
::
AnalogInput
)
b
->
df
.
setSettings
(
f_size
,
f_T
);
b
->
df
.
init
(
b
->
defval
);
std
::
string
caldiagram
(
it
.
getProp
(
"caldiagram"
)
);
if
(
!
caldiagram
.
empty
()
)
b
->
cdiagram
=
UniSetExtentions
::
buildCalibrationDiagram
(
caldiagram
);
}
else
if
(
b
->
stype
==
UniversalIO
::
DigitalInput
||
b
->
stype
==
UniversalIO
::
DigitalOutput
)
{
string
tai
(
it
.
getProp
(
"threshold_aid"
));
if
(
!
tai
.
empty
()
)
{
b
->
t_ai
=
conf
->
getSensorID
(
tai
);
if
(
b
->
t_ai
==
DefaultObjectId
)
{
if
(
dlog
)
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(IOBase::readItem): unknown ID for threshold_ai "
<<
tai
<<
endl
;
return
false
;
}
b
->
ti
.
lowlimit
=
uni_atoi
(
it
.
getProp
(
"lowlimit"
).
c_str
()
);
b
->
ti
.
hilimit
=
uni_atoi
(
it
.
getProp
(
"hilimit"
).
c_str
()
);
b
->
ti
.
sensibility
=
uni_atoi
(
it
.
getProp
(
"sensibility"
).
c_str
()
);
}
}
// else
// {
// dlog[Debug::CRIT] << myname << "(IOBase::readItem): iotype=: " << stype << " " << sname << endl;
// return false;
// }
return
true
;
}
...
...
extentions/lib/VTypes.cc
View file @
5598a5d2
...
...
@@ -16,6 +16,9 @@ std::ostream& operator<<( std::ostream& os, const VType& vt )
VType
str2type
(
const
std
::
string
s
)
{
if
(
s
==
"Byte"
)
return
vtByte
;
if
(
s
==
"F2"
)
return
vtF2
;
if
(
s
==
"F4"
)
...
...
@@ -26,6 +29,8 @@ VType str2type( const std::string s )
// -------------------------------------------------------------------------
string
type2str
(
VType
t
)
{
if
(
t
==
vtByte
)
return
"Byte"
;
if
(
t
==
vtF2
)
return
"F2"
;
if
(
t
==
vtF4
)
...
...
@@ -36,6 +41,8 @@ string type2str( VType t )
// -------------------------------------------------------------------------
int
wsize
(
VType
t
)
{
if
(
t
==
vtByte
)
return
Byte
::
wsize
();
if
(
t
==
vtF2
)
return
F2
::
wsize
();
if
(
t
==
vtF4
)
...
...
src/Various/DebugStream.cc
View file @
5598a5d2
...
...
@@ -207,11 +207,16 @@ DebugStream::~DebugStream()
//--------------------------------------------------------------------------
const
DebugStream
&
DebugStream
::
operator
=
(
const
DebugStream
&
r
)
{
if
(
r
==
*
this
)
return
*
this
;
dt
=
r
.
dt
;
show_datetime
=
r
.
show_datetime
;
fname
=
r
.
fname
;
if
(
!
r
.
fname
.
empty
()
)
logFile
(
fname
.
c_str
());
return
*
this
;
}
//--------------------------------------------------------------------------
/// Sets the debugstreams' logfile to f.
...
...
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