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
7163e5eb
Commit
7163e5eb
authored
Jan 09, 2021
by
Pavel Vainerman
Committed by
Pavel Vainerman
Jan 09, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[iocontroller]: added "depend_sensor" to sensor info
parent
43a9e230
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
51 additions
and
31 deletions
+51
-31
IOController_i.idl
IDL/Processes/IOController_i.idl
+4
-3
admin.cc
Utilities/Admin/admin.cc
+14
-11
test_ui.cc
extensions/tests/test_ui.cc
+19
-0
IOController.h
include/IOController.h
+3
-2
IOConfig_XML.cc
src/Processes/IOConfig_XML.cc
+5
-7
IOController.cc
src/Processes/IOController.cc
+6
-8
No files found.
IDL/Processes/IOController_i.idl
View file @
7163e5eb
...
...
@@ -105,10 +105,11 @@ interface IOController_i : UniSetManager_i
IOController_i
::
SensorInfo
si
;
long
default_val
; /*!< значение по умолчанию */
CalibrateInfo
ci
; /*!< калибровочные параметры */
unsigned
long
tv_sec
; /*!< время последнего изменения датчика, секунды (clock_gettime(CLOCK_REALTIME) */
unsigned
long
tv_nsec
; /*!< время последнего изменения датчика, nanosec (clock_gettime(CLOCK_REALTIME) */
uniset
::
ObjectId
supplier
; /*!< идентификатор объекта изменившего состояние датчика */
unsigned
long
tv_sec
;
/*!< время последнего изменения датчика, секунды (clock_gettime(CLOCK_REALTIME) */
unsigned
long
tv_nsec
;
/*!< время последнего изменения датчика, nanosec (clock_gettime(CLOCK_REALTIME) */
uniset
::
ObjectId
supplier
;
/*!< идентификатор объекта изменившего состояние датчика */
boolean
dbignore
; /*!< не сохранять изменения в БД */
uniset
::
ObjectId
depend_sid
; /*!< датчик от которого зависит данный (при blocked=true). DefaultObjectId если не зависит */
}
;
typedef
sequence
<
SensorIOInfo
>
SensorInfoSeq
;
...
...
Utilities/Admin/admin.cc
View file @
7163e5eb
...
...
@@ -1226,23 +1226,26 @@ int sinfo(const string& args, UInterface& ui )
long default_val; /*!< значение по умолчанию */
CalibrateInfo ci; /*!< калибровочные параметры */
#endif
print_help
(
10
,
"id"
,
std
::
to_string
(
it
.
si
.
id
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
10
,
"node"
,
std
::
to_string
(
it
.
si
.
node
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
10
,
"value"
,
std
::
to_string
(
sinf
->
value
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
10
,
"real_value"
,
std
::
to_string
(
sinf
->
real_value
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
10
,
"frozen"
,
std
::
to_string
(
sinf
->
frozen
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
10
,
"blocked"
,
std
::
to_string
(
sinf
->
blocked
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
10
,
"undefined"
,
std
::
to_string
(
sinf
->
undefined
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
10
,
"dbignore"
,
std
::
to_string
(
sinf
->
dbignore
)
+
"
\n
"
,
" "
,
" : "
);
const
int
w
=
14
;
print_help
(
w
,
"id"
,
std
::
to_string
(
it
.
si
.
id
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"node"
,
std
::
to_string
(
it
.
si
.
node
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"value"
,
std
::
to_string
(
sinf
->
value
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"real_value"
,
std
::
to_string
(
sinf
->
real_value
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"frozen"
,
std
::
to_string
(
sinf
->
frozen
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"undefined"
,
std
::
to_string
(
sinf
->
undefined
)
+
"
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"blocked"
,
std
::
to_string
(
sinf
->
blocked
)
+
"
\n
"
,
" "
,
" : "
);
if
(
sinf
->
depend_sid
!=
DefaultObjectId
)
print_help
(
w
,
"depend_sensor"
,
"("
+
to_string
(
sinf
->
depend_sid
)
+
")"
+
ORepHelpers
::
getShortName
(
conf
->
oind
->
getMapName
(
sinf
->
depend_sid
))
+
"
\n
"
,
" "
,
" : "
);
if
(
sinf
->
supplier
==
uniset
::
AdminID
)
print_help
(
10
,
"supplier"
,
"admin
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"supplier"
,
"admin
\n
"
,
" "
,
" : "
);
else
print_help
(
10
,
"supplier"
,
ORepHelpers
::
getShortName
(
conf
->
oind
->
getMapName
(
sinf
->
supplier
))
+
"
\n
"
,
" "
,
" : "
);
print_help
(
w
,
"supplier"
,
ORepHelpers
::
getShortName
(
conf
->
oind
->
getMapName
(
sinf
->
supplier
))
+
"
\n
"
,
" "
,
" : "
);
ostringstream
ts
;
ts
<<
dateToString
(
sinf
->
tv_sec
)
<<
" "
<<
timeToString
(
sinf
->
tv_sec
)
<<
"."
<<
sinf
->
tv_nsec
<<
"
\n
"
;
print_help
(
10
,
"changed"
,
ts
.
str
(),
" "
,
" : "
);
print_help
(
w
,
"changed"
,
ts
.
str
(),
" "
,
" : "
);
}
catch
(
const
uniset
::
Exception
&
ex
)
{
...
...
extensions/tests/test_ui.cc
View file @
7163e5eb
...
...
@@ -299,6 +299,7 @@ TEST_CASE("UInterface::getSensorIOInfo", "[UInterface][getSensorIOInfo]")
REQUIRE
(
inf
->
undefined
==
false
);
REQUIRE
(
inf
->
tv_sec
>
0
);
REQUIRE
(
inf
->
dbignore
==
false
);
REQUIRE
(
inf
->
depend_sid
==
DefaultObjectId
);
// freeze/unfreeze
REQUIRE_NOTHROW
(
ui
->
freezeValue
(
si
,
true
,
10
,
testOID
)
);
...
...
@@ -321,4 +322,22 @@ TEST_CASE("UInterface::getSensorIOInfo", "[UInterface][getSensorIOInfo]")
inf
=
ui
->
getSensorIOInfo
(
si
);
REQUIRE
(
inf
->
undefined
==
false
);
REQUIRE
(
inf
->
supplier
==
testOID
);
// depend
si
.
id
=
100
;
REQUIRE_NOTHROW
(
ui
->
setValue
(
si
,
0
,
testOID
)
);
si
.
id
=
101
;
inf
=
ui
->
getSensorIOInfo
(
si
);
REQUIRE
(
inf
->
blocked
==
true
);
REQUIRE
(
inf
->
depend_sid
==
100
);
si
.
id
=
100
;
REQUIRE_NOTHROW
(
ui
->
setValue
(
si
,
10
,
testOID
)
);
si
.
id
=
101
;
inf
=
ui
->
getSensorIOInfo
(
si
);
REQUIRE
(
inf
->
blocked
==
false
);
REQUIRE
(
inf
->
depend_sid
==
100
);
}
include/IOController.h
View file @
7163e5eb
...
...
@@ -230,7 +230,8 @@ namespace uniset
SensorIOInfo
(
long
v
,
UniversalIO
::
IOType
t
,
const
IOController_i
::
SensorInfo
&
si
,
uniset
::
Message
::
Priority
p
=
uniset
::
Message
::
Medium
,
long
defval
=
0
,
IOController_i
::
CalibrateInfo
*
ci
=
0
,
uniset
::
ObjectId
sup_id
=
uniset
::
DefaultObjectId
)
uniset
::
ObjectId
sup_id
=
uniset
::
DefaultObjectId
,
uniset
::
ObjectId
depend_sid
=
uniset
::
DefaultObjectId
)
{
IOController_i
::
SensorIOInfo
ai
;
ai
.
si
=
si
;
...
...
@@ -241,6 +242,7 @@ namespace uniset
ai
.
real_value
=
v
;
ai
.
blocked
=
false
;
ai
.
supplier
=
sup_id
;
ai
.
depend_sid
=
depend_sid
;
if
(
ci
!=
0
)
ai
.
ci
=
*
ci
;
...
...
@@ -337,7 +339,6 @@ namespace uniset
uniset
::
uniset_rwmutex
undefMutex
;
ChangeUndefinedStateSignal
sigUndefChange
;
IOController_i
::
SensorInfo
d_si
=
{
uniset
::
DefaultObjectId
,
uniset
::
DefaultObjectId
};
/*!< идентификатор датчика, от которого зависит данный */
long
d_value
=
{
1
};
/*!< разрешающее работу значение датчика от которого зависит данный */
long
d_off_value
=
{
0
};
/*!< блокирующее значение */
std
::
shared_ptr
<
USensorInfo
>
d_usi
;
// shared_ptr на датчик от которого зависит этот.
...
...
src/Processes/IOConfig_XML.cc
View file @
7163e5eb
...
...
@@ -220,9 +220,9 @@ namespace uniset
if
(
!
d_txt
.
empty
()
)
{
inf
->
d
_si
.
id
=
conf
->
getSensorID
(
d_txt
);
inf
->
d
epend_s
id
=
conf
->
getSensorID
(
d_txt
);
if
(
inf
->
d
_si
.
id
==
uniset
::
DefaultObjectId
)
if
(
inf
->
d
epend_s
id
==
uniset
::
DefaultObjectId
)
{
ostringstream
err
;
err
<<
"(IOConfig_XML::getSensorInfo): sensor='"
...
...
@@ -233,8 +233,6 @@ namespace uniset
throw
SystemError
(
err
.
str
());
}
inf
->
d_si
.
node
=
conf
->
getLocalNode
();
// по умолчанию срабатывание на "1"
inf
->
d_value
=
it
.
getProp
(
"depend_value"
).
empty
()
?
1
:
it
.
getIntProp
(
"depend_value"
);
inf
->
d_off_value
=
it
.
getPIntProp
(
"depend_off_value"
,
0
);
...
...
@@ -250,15 +248,15 @@ namespace uniset
// обновляем итераторы...
it
.
second
->
d_usi
=
it
.
second
;
if
(
it
.
second
->
d
_si
.
id
==
DefaultObjectId
)
if
(
it
.
second
->
d
epend_s
id
==
DefaultObjectId
)
continue
;
uinfo
<<
"(IOConfig_XML::init_depends_signals): "
<<
" init depend: '"
<<
conf
->
oind
->
getMapName
(
it
.
second
->
si
.
id
)
<<
"'"
<<
" dep
_name=("
<<
it
.
second
->
d_si
.
id
<<
")'"
<<
conf
->
oind
->
getMapName
(
it
.
second
->
d_si
.
id
)
<<
"'"
<<
" dep
end_sensor=("
<<
it
.
second
->
depend_sid
<<
")'"
<<
conf
->
oind
->
getMapName
(
it
.
second
->
depend_s
id
)
<<
"'"
<<
endl
;
auto
dit
=
lst
.
find
(
it
.
second
->
d
_si
.
id
);
auto
dit
=
lst
.
find
(
it
.
second
->
d
epend_s
id
);
if
(
dit
!=
lst
.
end
()
)
{
...
...
src/Processes/IOController.cc
View file @
7163e5eb
...
...
@@ -113,9 +113,9 @@ void IOController::activateInit()
auto
s
=
io
.
second
;
// Проверка зависимостей
if
(
s
->
d
_si
.
id
!=
DefaultObjectId
)
if
(
s
->
d
epend_s
id
!=
DefaultObjectId
)
{
auto
d_it
=
myiofind
(
s
->
d
_si
.
id
);
auto
d_it
=
myiofind
(
s
->
d
epend_s
id
);
if
(
d_it
!=
myioEnd
()
)
s
->
checkDepend
(
d_it
->
second
,
this
);
...
...
@@ -675,8 +675,7 @@ IOController::USensorInfo::operator=(IOController_i::SensorIOInfo& r)
// ----------------------------------------------------------------------------------------
IOController
::
USensorInfo
::
USensorInfo
()
:
d_value
(
1
),
d_off_value
(
0
)
{
d_si
.
id
=
uniset
::
DefaultObjectId
;
d_si
.
node
=
uniset
::
DefaultObjectId
;
depend_sid
=
uniset
::
DefaultObjectId
;
default_val
=
0
;
value
=
default_val
;
real_value
=
default_val
;
...
...
@@ -1086,10 +1085,10 @@ void IOController::getSensorInfo( Poco::JSON::Array::Ptr& jdata, std::shared_ptr
jsens
->
set
(
"undefined"
,
s
->
undefined
);
jsens
->
set
(
"frozen"
,
s
->
frozen
);
jsens
->
set
(
"blocked"
,
s
->
blocked
);
if
(
s
->
d
_si
.
id
!=
DefaultObjectId
)
if
(
s
->
d
epend_s
id
!=
DefaultObjectId
)
{
jsens
->
set
(
"depend_sensor"
,
ORepHelpers
::
getShortName
(
uniset_conf
()
->
oind
->
getMapName
(
s
->
d
_si
.
id
)));
jsens
->
set
(
"depend_sensor_id"
,
s
->
d
_si
.
id
);
jsens
->
set
(
"depend_sensor"
,
ORepHelpers
::
getShortName
(
uniset_conf
()
->
oind
->
getMapName
(
s
->
d
epend_s
id
)));
jsens
->
set
(
"depend_sensor_id"
,
s
->
d
epend_s
id
);
jsens
->
set
(
"depend_value"
,
s
->
d_value
);
jsens
->
set
(
"depend_off_value"
,
s
->
d_off_value
);
}
...
...
@@ -1104,7 +1103,6 @@ void IOController::getSensorInfo( Poco::JSON::Array::Ptr& jdata, std::shared_ptr
// ::CORBA::Boolean undefined;
// ::CORBA::Boolean blocked;
// ::CORBA::Long priority;
// IOController_i::SensorInfo d_si = { uniset::DefaultObjectId, uniset::DefaultObjectId }; /*!< идентификатор датчика, от которого зависит данный */
// long d_value = { 1 }; /*!< разрешающее работу значение датчика от которого зависит данный */
// long d_off_value = { 0 }; /*!< блокирующее значение */
}
...
...
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