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