Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
7701b57a
Commit
7701b57a
authored
Dec 18, 2009
by
Jonas Nylund
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SevHistObject added and storage environment revisited
parent
fa384bc6
Changes
30
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
3647 additions
and
769 deletions
+3647
-769
sev/exe/sev_server/src/sev_server.cpp
sev/exe/sev_server/src/sev_server.cpp
+396
-137
sev/exe/sev_server/src/sev_server.h
sev/exe/sev_server/src/sev_server.h
+6
-2
sev/exe/sev_xtt/gtk/xtt_tbl_gtk.cpp
sev/exe/sev_xtt/gtk/xtt_tbl_gtk.cpp
+2
-2
sev/exe/sev_xtt/gtk/xtt_tbl_gtk.h
sev/exe/sev_xtt/gtk/xtt_tbl_gtk.h
+1
-1
sev/exe/sev_xtt/src/xtt_tbl.cpp
sev/exe/sev_xtt/src/xtt_tbl.cpp
+25
-7
sev/exe/sev_xtt/src/xtt_tbl.h
sev/exe/sev_xtt/src/xtt_tbl.h
+1
-1
sev/exe/sev_xtt/src/xtt_tblnav.cpp
sev/exe/sev_xtt/src/xtt_tblnav.cpp
+127
-88
sev/exe/sev_xtt/src/xtt_tblnav.h
sev/exe/sev_xtt/src/xtt_tblnav.h
+40
-8
sev/lib/sev/src/sev_db.h
sev/lib/sev/src/sev_db.h
+33
-5
sev/lib/sev/src/sev_dbms.cpp
sev/lib/sev/src/sev_dbms.cpp
+1789
-308
sev/lib/sev/src/sev_dbms.h
sev/lib/sev/src/sev_dbms.h
+37
-2
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
+529
-155
src/exe/rt_sevhistmon/src/rt_sevhistmon.h
src/exe/rt_sevhistmon/src/rt_sevhistmon.h
+37
-0
src/lib/rt/src/rt_sev_net.h
src/lib/rt/src/rt_sev_net.h
+18
-2
src/lib/rt/src/rt_sevcli.c
src/lib/rt/src/rt_sevcli.c
+210
-0
src/lib/rt/src/rt_sevcli.h
src/lib/rt/src/rt_sevcli.h
+4
-1
src/wbl/pwrb/src/pwrb_c_sevhist.wb_load
src/wbl/pwrb/src/pwrb_c_sevhist.wb_load
+1
-0
src/wbl/pwrb/src/pwrb_c_sevhistmonitor.wb_load
src/wbl/pwrb/src/pwrb_c_sevhistmonitor.wb_load
+1
-0
src/wbl/pwrb/src/pwrb_c_sevhistobject.wb_load
src/wbl/pwrb/src/pwrb_c_sevhistobject.wb_load
+144
-0
src/wbl/pwrb/src/pwrb_c_sevserver.wb_load
src/wbl/pwrb/src/pwrb_c_sevserver.wb_load
+1
-0
wb/lib/wb/src/wb_vrepmem.cpp
wb/lib/wb/src/wb_vrepmem.cpp
+12
-4
xtt/lib/xtt/gtk/xtt_sevhist_gtk.cpp
xtt/lib/xtt/gtk/xtt_sevhist_gtk.cpp
+4
-3
xtt/lib/xtt/gtk/xtt_sevhist_gtk.h
xtt/lib/xtt/gtk/xtt_sevhist_gtk.h
+2
-1
xtt/lib/xtt/gtk/xtt_xnav_gtk.cpp
xtt/lib/xtt/gtk/xtt_xnav_gtk.cpp
+2
-2
xtt/lib/xtt/gtk/xtt_xnav_gtk.h
xtt/lib/xtt/gtk/xtt_xnav_gtk.h
+1
-1
xtt/lib/xtt/src/xtt_c_object.cpp
xtt/lib/xtt/src/xtt_c_object.cpp
+6
-6
xtt/lib/xtt/src/xtt_sevhist.cpp
xtt/lib/xtt/src/xtt_sevhist.cpp
+152
-3
xtt/lib/xtt/src/xtt_sevhist.h
xtt/lib/xtt/src/xtt_sevhist.h
+3
-1
xtt/lib/xtt/src/xtt_xnav.h
xtt/lib/xtt/src/xtt_xnav.h
+1
-1
xtt/lib/xtt/src/xtt_xnav_command.cpp
xtt/lib/xtt/src/xtt_xnav_command.cpp
+62
-28
No files found.
sev/exe/sev_server/src/sev_server.cpp
View file @
7701b57a
This diff is collapsed.
Click to expand it.
sev/exe/sev_server/src/sev_server.h
View file @
7701b57a
...
@@ -62,7 +62,10 @@ typedef struct {
...
@@ -62,7 +62,10 @@ typedef struct {
class
sev_server
{
class
sev_server
{
public:
public:
sev_server
()
:
m_server_status
(
0
),
m_item_key
(
0
),
m_msg_id
(
0
)
{}
//TODO should this really be in this file?
static
const
unsigned
int
constSevVersion
=
2
;
sev_server
()
:
m_server_status
(
0
),
m_msg_id
(
0
)
{}
typedef
map
<
sev_refid
,
unsigned
int
>::
iterator
iterator_refid
;
typedef
map
<
sev_refid
,
unsigned
int
>::
iterator
iterator_refid
;
...
@@ -70,7 +73,6 @@ class sev_server {
...
@@ -70,7 +73,6 @@ class sev_server {
pwr_tStatus
m_server_status
;
pwr_tStatus
m_server_status
;
vector
<
sev_node
>
m_nodes
;
vector
<
sev_node
>
m_nodes
;
map
<
sev_refid
,
unsigned
int
>
m_refid
;
map
<
sev_refid
,
unsigned
int
>
m_refid
;
tree_sTable
*
m_item_key
;
unsigned
int
m_msg_id
;
unsigned
int
m_msg_id
;
sev_db
*
m_db
;
sev_db
*
m_db
;
int
m_noneth
;
int
m_noneth
;
...
@@ -82,9 +84,11 @@ class sev_server {
...
@@ -82,9 +84,11 @@ class sev_server {
int
check_histitems
(
sev_sMsgHistItems
*
msg
,
unsigned
int
size
);
int
check_histitems
(
sev_sMsgHistItems
*
msg
,
unsigned
int
size
);
int
receive_histdata
(
sev_sMsgHistDataStore
*
msg
,
unsigned
int
size
);
int
receive_histdata
(
sev_sMsgHistDataStore
*
msg
,
unsigned
int
size
);
int
send_histdata
(
qcom_sQid
tgt
,
sev_sMsgHistDataGetRequest
*
msg
,
unsigned
int
size
);
int
send_histdata
(
qcom_sQid
tgt
,
sev_sMsgHistDataGetRequest
*
msg
,
unsigned
int
size
);
int
send_objecthistdata
(
qcom_sQid
tgt
,
sev_sMsgHistDataGetRequest
*
rmsg
,
unsigned
int
size
);
int
send_itemlist
(
qcom_sQid
tgt
);
int
send_itemlist
(
qcom_sQid
tgt
);
int
send_server_status
(
qcom_sQid
tgt
);
int
send_server_status
(
qcom_sQid
tgt
);
int
delete_item
(
qcom_sQid
tgt
,
sev_sMsgHistItemDelete
*
rmsg
);
int
delete_item
(
qcom_sQid
tgt
,
sev_sMsgHistItemDelete
*
rmsg
);
void
garbage_collector
();
void
garbage_collector
();
void
garbage_item
(
int
idx
);
};
};
#endif
#endif
sev/exe/sev_xtt/gtk/xtt_tbl_gtk.cpp
View file @
7701b57a
...
@@ -202,7 +202,7 @@ void XttTblGtk::activate_list_layout( GtkWidget *w, gpointer data)
...
@@ -202,7 +202,7 @@ void XttTblGtk::activate_list_layout( GtkWidget *w, gpointer data)
xtt
->
tblnav
->
show_list
();
xtt
->
tblnav
->
show_list
();
}
}
XttSevHist
*
XttTblGtk
::
sevhist_new
(
pwr_tOid
oid
,
char
*
aname
)
XttSevHist
*
XttTblGtk
::
sevhist_new
(
pwr_tOid
oid
,
char
*
aname
,
bool
sevhistobject
)
{
{
GtkWidget
*
w
;
GtkWidget
*
w
;
pwr_tStatus
sts
;
pwr_tStatus
sts
;
...
@@ -214,7 +214,7 @@ XttSevHist *XttTblGtk::sevhist_new( pwr_tOid oid, char *aname)
...
@@ -214,7 +214,7 @@ XttSevHist *XttTblGtk::sevhist_new( pwr_tOid oid, char *aname)
strncpy
(
anamev
[
0
],
aname
,
sizeof
(
anamev
[
0
]));
strncpy
(
anamev
[
0
],
aname
,
sizeof
(
anamev
[
0
]));
return
new
XttSevHistGtk
(
(
void
*
)
this
,
toplevel
,
"SevHist"
,
&
w
,
oidv
,
anamev
,
return
new
XttSevHistGtk
(
(
void
*
)
this
,
toplevel
,
"SevHist"
,
&
w
,
oidv
,
anamev
,
sevcli
,
&
sts
);
sevcli
,
&
sts
,
sevhistobject
);
}
}
CoLogin
*
XttTblGtk
::
login_new
(
const
char
*
name
,
CoLogin
*
XttTblGtk
::
login_new
(
const
char
*
name
,
...
...
sev/exe/sev_xtt/gtk/xtt_tbl_gtk.h
View file @
7701b57a
...
@@ -49,7 +49,7 @@ class XttTblGtk : public XttTbl {
...
@@ -49,7 +49,7 @@ class XttTblGtk : public XttTbl {
CoWowEntryGtk
*
cmd_entry
;
CoWowEntryGtk
*
cmd_entry
;
void
message
(
char
severity
,
char
*
message
);
void
message
(
char
severity
,
char
*
message
);
XttSevHist
*
sevhist_new
(
pwr_tOid
oid
,
char
*
aname
);
XttSevHist
*
sevhist_new
(
pwr_tOid
oid
,
char
*
aname
,
bool
sevhistobject
);
CoLogin
*
login_new
(
const
char
*
wl_name
,
CoLogin
*
login_new
(
const
char
*
wl_name
,
const
char
*
wl_groupname
,
const
char
*
wl_groupname
,
void
(
*
wl_bc_success
)(
void
*
),
void
(
*
wl_bc_success
)(
void
*
),
...
...
sev/exe/sev_xtt/src/xtt_tbl.cpp
View file @
7701b57a
...
@@ -120,24 +120,41 @@ void XttTbl::activate_print()
...
@@ -120,24 +120,41 @@ void XttTbl::activate_print()
void
XttTbl
::
activate_opensevhist
()
void
XttTbl
::
activate_opensevhist
()
{
{
sevcli_sHistItem
*
hi
;
//
sevcli_sHistItem *hi;
TblNav_sevhistobject
*
hi
;
if
(
!
tblnav
->
get_select
(
&
hi
))
{
if
(
!
tblnav
->
get_select
(
&
hi
))
{
message
(
'E'
,
"Select an storage item"
);
message
(
'E'
,
"Select an storage item"
);
return
;
return
;
}
}
sevhist_new
(
hi
->
oid
,
hi
->
attr
[
0
].
aname
);
bool
sevhistobject
=
hi
->
attrnum
>
1
;
if
(
!
sevhistobject
)
{
sevhist_new
(
hi
->
oid
,
hi
->
objectattrlist
[
0
].
aname
,
sevhistobject
);
}
else
{
char
*
s
;
pwr_tAName
aname
;
s
=
strchr
(
hi
->
oname
,
'.'
);
if
(
!
s
)
{
//It is a complete object
aname
[
0
]
=
'\0'
;
}
else
{
strcpy
(
aname
,
s
+
1
);
}
sevhist_new
(
hi
->
oid
,
aname
,
sevhistobject
);
}
}
}
void
XttTbl
::
delete_item_yes
(
void
*
ctx
,
void
*
data
)
void
XttTbl
::
delete_item_yes
(
void
*
ctx
,
void
*
data
)
{
{
XttTbl
*
tbl
=
(
XttTbl
*
)
ctx
;
XttTbl
*
tbl
=
(
XttTbl
*
)
ctx
;
sevcli_sHistItem
*
hi
=
(
sevcli_sHistItem
*
)
data
;
// sevcli_sHistItem *hi = (sevcli_sHistItem *)data;
TblNav_sevhistobject
*
hi
=
(
TblNav_sevhistobject
*
)
data
;
pwr_tStatus
sts
;
pwr_tStatus
sts
;
printf
(
"Deleting %s
\n
"
,
hi
->
oname
);
printf
(
"Deleting %s
\n
"
,
hi
->
oname
);
sevcli_delete_item
(
&
sts
,
tbl
->
sevcli
,
hi
->
oid
,
hi
->
attr
[
0
].
aname
);
sevcli_delete_item
(
&
sts
,
tbl
->
sevcli
,
hi
->
oid
,
hi
->
objectattrlist
[
0
].
aname
);
if
(
EVEN
(
sts
))
{
if
(
EVEN
(
sts
))
{
tbl
->
message
(
'E'
,
"Delete error"
);
tbl
->
message
(
'E'
,
"Delete error"
);
return
;
return
;
...
@@ -149,7 +166,8 @@ void XttTbl::delete_item_yes( void *ctx, void *data)
...
@@ -149,7 +166,8 @@ void XttTbl::delete_item_yes( void *ctx, void *data)
void
XttTbl
::
activate_delete_item
()
void
XttTbl
::
activate_delete_item
()
{
{
sevcli_sHistItem
*
hi
;
//sevcli_sHistItem *hi;
TblNav_sevhistobject
*
hi
;
char
msg
[
300
];
char
msg
[
300
];
if
(
!
tblnav
->
get_select
(
&
hi
))
{
if
(
!
tblnav
->
get_select
(
&
hi
))
{
...
@@ -157,7 +175,7 @@ void XttTbl::activate_delete_item()
...
@@ -157,7 +175,7 @@ void XttTbl::activate_delete_item()
return
;
return
;
}
}
sprintf
(
msg
,
"Do you really wan't to delete all stored data for item
\n\n
%s.%s
\n
"
,
hi
->
oname
,
hi
->
attr
[
0
].
aname
);
sprintf
(
msg
,
"Do you really wan't to delete all stored data for item
\n\n
%s.%s
\n
"
,
hi
->
oname
,
hi
->
objectattrlist
[
0
].
aname
);
wow
->
DisplayQuestion
(
this
,
"Confirm Delete Item"
,
msg
,
delete_item_yes
,
0
,
hi
);
wow
->
DisplayQuestion
(
this
,
"Confirm Delete Item"
,
msg
,
delete_item_yes
,
0
,
hi
);
}
}
...
...
sev/exe/sev_xtt/src/xtt_tbl.h
View file @
7701b57a
...
@@ -55,7 +55,7 @@ class XttTbl {
...
@@ -55,7 +55,7 @@ class XttTbl {
int
quiet
;
int
quiet
;
virtual
void
message
(
char
severity
,
const
char
*
message
)
{}
virtual
void
message
(
char
severity
,
const
char
*
message
)
{}
virtual
XttSevHist
*
sevhist_new
(
pwr_tOid
oid
,
char
*
aname
)
{
return
0
;}
virtual
XttSevHist
*
sevhist_new
(
pwr_tOid
oid
,
char
*
aname
,
bool
sevhistobject
)
{
return
0
;}
virtual
CoLogin
*
login_new
(
const
char
*
wl_name
,
virtual
CoLogin
*
login_new
(
const
char
*
wl_name
,
const
char
*
wl_groupname
,
const
char
*
wl_groupname
,
void
(
*
wl_bc_success
)(
void
*
),
void
(
*
wl_bc_success
)(
void
*
),
...
...
sev/exe/sev_xtt/src/xtt_tblnav.cpp
View file @
7701b57a
...
@@ -132,6 +132,7 @@ TblNav::TblNav(
...
@@ -132,6 +132,7 @@ TblNav::TblNav(
itemlist
(
xn_itemlist
),
item_cnt
(
xn_item_cnt
),
itemlist
(
xn_itemlist
),
item_cnt
(
xn_item_cnt
),
message_cb
(
NULL
),
list_layout
(
0
)
message_cb
(
NULL
),
list_layout
(
0
)
{
{
create_objectlist
(
xn_itemlist
,
xn_item_cnt
,
status
);
*
status
=
1
;
*
status
=
1
;
}
}
...
@@ -438,8 +439,8 @@ int TblNav::create_items()
...
@@ -438,8 +439,8 @@ int TblNav::create_items()
brow_SetNodraw
(
brow
->
ctx
);
brow_SetNodraw
(
brow
->
ctx
);
if
(
list_layout
)
{
if
(
list_layout
)
{
for
(
i
=
0
;
i
<
item_cnt
;
i
++
)
{
for
(
i
=
0
;
i
<
(
int
)
sevhistobjectlist
.
size
()
;
i
++
)
{
new
ItemLocal
(
this
,
&
item
list
[
i
],
NULL
,
flow_eDest_IntoLast
);
new
ItemLocal
(
this
,
&
sevhistobject
list
[
i
],
NULL
,
flow_eDest_IntoLast
);
}
}
}
}
else
{
else
{
...
@@ -527,7 +528,7 @@ int TblNav::init_brow_cb( FlowCtx *fctx, void *client_data)
...
@@ -527,7 +528,7 @@ int TblNav::init_brow_cb( FlowCtx *fctx, void *client_data)
}
}
int
TblNav
::
get_select
(
sevcli_sHistItem
**
hi
)
int
TblNav
::
get_select
(
TblNav_sevhistobject
**
hi
)
{
{
brow_tNode
*
node_list
;
brow_tNode
*
node_list
;
int
node_count
;
int
node_count
;
...
@@ -574,7 +575,7 @@ void TblNav::unzoom()
...
@@ -574,7 +575,7 @@ void TblNav::unzoom()
brow_UnZoom
(
brow
->
ctx
);
brow_UnZoom
(
brow
->
ctx
);
}
}
void
TblNav
::
delete_item
(
sevcli_sHistItem
*
hi
)
void
TblNav
::
delete_item
(
TblNav_sevhistobject
*
hi
)
{
{
brow_tNode
*
node_list
;
brow_tNode
*
node_list
;
int
node_count
;
int
node_count
;
...
@@ -587,7 +588,7 @@ void TblNav::delete_item( sevcli_sHistItem *hi)
...
@@ -587,7 +588,7 @@ void TblNav::delete_item( sevcli_sHistItem *hi)
continue
;
continue
;
if
(
tree
[
i
].
item
&&
if
(
tree
[
i
].
item
&&
cdh_ObjidIsEqual
(
tree
[
i
].
item
->
oid
,
hi
->
oid
)
&&
cdh_ObjidIsEqual
(
tree
[
i
].
item
->
oid
,
hi
->
oid
)
&&
strcmp
(
tree
[
i
].
item
->
attr
[
0
].
aname
,
hi
->
attr
[
0
].
aname
)
==
0
)
{
strcmp
(
tree
[
i
].
item
->
objectattrlist
[
0
].
aname
,
hi
->
objectattrlist
[
0
].
aname
)
==
0
)
{
tree
[
i
].
deleted
=
1
;
tree
[
i
].
deleted
=
1
;
}
}
}
}
...
@@ -603,7 +604,7 @@ void TblNav::delete_item( sevcli_sHistItem *hi)
...
@@ -603,7 +604,7 @@ void TblNav::delete_item( sevcli_sHistItem *hi)
case
tblnav_eItemType_TreeLocal
:
{
case
tblnav_eItemType_TreeLocal
:
{
ItemLocal
*
item
=
(
ItemLocal
*
)
baseitem
;
ItemLocal
*
item
=
(
ItemLocal
*
)
baseitem
;
if
(
cdh_ObjidIsEqual
(
hi
->
oid
,
item
->
item
.
oid
)
&&
if
(
cdh_ObjidIsEqual
(
hi
->
oid
,
item
->
item
.
oid
)
&&
strcmp
(
hi
->
attr
[
0
].
aname
,
item
->
item
.
attr
[
0
].
aname
)
==
0
)
{
strcmp
(
hi
->
objectattrlist
[
0
].
aname
,
item
->
item
.
objectattrlist
[
0
].
aname
)
==
0
)
{
brow_DeleteNode
(
brow
->
ctx
,
item
->
node
);
brow_DeleteNode
(
brow
->
ctx
,
item
->
node
);
found
=
1
;
found
=
1
;
}
}
...
@@ -616,7 +617,7 @@ void TblNav::delete_item( sevcli_sHistItem *hi)
...
@@ -616,7 +617,7 @@ void TblNav::delete_item( sevcli_sHistItem *hi)
}
}
}
}
ItemLocal
::
ItemLocal
(
TblNav
*
tblnav
,
sevcli_sHistItem
*
xitem
,
ItemLocal
::
ItemLocal
(
TblNav
*
tblnav
,
TblNav_sevhistobject
*
xitem
,
brow_tNode
dest
,
flow_eDest
dest_code
)
:
brow_tNode
dest
,
flow_eDest
dest_code
)
:
ItemBase
(
tblnav_eItemType_Local
),
item
(
*
xitem
)
ItemBase
(
tblnav_eItemType_Local
),
item
(
*
xitem
)
{
{
...
@@ -629,8 +630,11 @@ ItemLocal::ItemLocal( TblNav *tblnav, sevcli_sHistItem *xitem,
...
@@ -629,8 +630,11 @@ ItemLocal::ItemLocal( TblNav *tblnav, sevcli_sHistItem *xitem,
brow_SetAnnotPixmap
(
node
,
0
,
tblnav
->
brow
->
pixmap_leaf
);
brow_SetAnnotPixmap
(
node
,
0
,
tblnav
->
brow
->
pixmap_leaf
);
strcpy
(
aname
,
item
.
oname
);
strcpy
(
aname
,
item
.
oname
);
if
(
item
.
attrnum
==
1
)
{
strcat
(
aname
,
"."
);
strcat
(
aname
,
"."
);
strcat
(
aname
,
item
.
attr
[
0
].
aname
);
strcat
(
aname
,
item
.
objectattrlist
[
0
].
aname
);
}
printf
(
"aname %s
\n
"
,
aname
);
brow_SetAnnotation
(
node
,
0
,
aname
,
strlen
(
aname
));
brow_SetAnnotation
(
node
,
0
,
aname
,
strlen
(
aname
));
brow_SetAnnotation
(
node
,
1
,
item
.
description
,
strlen
(
item
.
description
));
brow_SetAnnotation
(
node
,
1
,
item
.
description
,
strlen
(
item
.
description
));
}
}
...
@@ -691,11 +695,11 @@ int ItemLocal::open_attributes( TblNav *tblnav, double x, double y)
...
@@ -691,11 +695,11 @@ int ItemLocal::open_attributes( TblNav *tblnav, double x, double y)
sprintf
(
value
,
"%f"
,
item
.
deadband
);
sprintf
(
value
,
"%f"
,
item
.
deadband
);
new
ItemLocalAttr
(
tblnav
,
"Deadband"
,
value
,
node
,
flow_eDest_IntoLast
);
new
ItemLocalAttr
(
tblnav
,
"Deadband"
,
value
,
node
,
flow_eDest_IntoLast
);
for
(
int
i
=
0
;
i
<
1
;
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
item
.
objectattrlist
.
size
()
;
i
++
)
{
sprintf
(
txt
,
"Attr[%d].Name"
,
i
);
sprintf
(
txt
,
"Attr[%d].Name"
,
i
);
new
ItemLocalAttr
(
tblnav
,
txt
,
item
.
attr
[
0
].
aname
,
node
,
flow_eDest_IntoLast
);
new
ItemLocalAttr
(
tblnav
,
txt
,
item
.
objectattrlist
[
i
].
aname
,
node
,
flow_eDest_IntoLast
);
switch
(
item
.
attr
[
0
].
type
)
{
switch
(
item
.
objectattrlist
[
i
].
type
)
{
case
pwr_eType_Int64
:
strcpy
(
value
,
"Int64"
);
break
;
case
pwr_eType_Int64
:
strcpy
(
value
,
"Int64"
);
break
;
case
pwr_eType_Int32
:
strcpy
(
value
,
"Int32"
);
break
;
case
pwr_eType_Int32
:
strcpy
(
value
,
"Int32"
);
break
;
case
pwr_eType_Int16
:
strcpy
(
value
,
"Int16"
);
break
;
case
pwr_eType_Int16
:
strcpy
(
value
,
"Int16"
);
break
;
...
@@ -717,11 +721,11 @@ int ItemLocal::open_attributes( TblNav *tblnav, double x, double y)
...
@@ -717,11 +721,11 @@ int ItemLocal::open_attributes( TblNav *tblnav, double x, double y)
new
ItemLocalAttr
(
tblnav
,
txt
,
value
,
node
,
flow_eDest_IntoLast
);
new
ItemLocalAttr
(
tblnav
,
txt
,
value
,
node
,
flow_eDest_IntoLast
);
sprintf
(
txt
,
"Attr[%d].DataSize"
,
i
);
sprintf
(
txt
,
"Attr[%d].DataSize"
,
i
);
sprintf
(
value
,
"%d"
,
item
.
attr
[
0
].
size
);
sprintf
(
value
,
"%d"
,
item
.
objectattrlist
[
i
].
size
);
new
ItemLocalAttr
(
tblnav
,
txt
,
value
,
node
,
flow_eDest_IntoLast
);
new
ItemLocalAttr
(
tblnav
,
txt
,
value
,
node
,
flow_eDest_IntoLast
);
sprintf
(
txt
,
"Attr[%d].Unit"
,
i
);
sprintf
(
txt
,
"Attr[%d].Unit"
,
i
);
new
ItemLocalAttr
(
tblnav
,
txt
,
item
.
attr
[
0
].
unit
,
node
,
flow_eDest_IntoLast
);
new
ItemLocalAttr
(
tblnav
,
txt
,
item
.
objectattrlist
[
i
].
unit
,
node
,
flow_eDest_IntoLast
);
}
}
brow_SetOpen
(
node
,
tblnav_mOpen_Attributes
);
brow_SetOpen
(
node
,
tblnav_mOpen_Attributes
);
brow_ResetNodraw
(
tblnav
->
brow
->
ctx
);
brow_ResetNodraw
(
tblnav
->
brow
->
ctx
);
...
@@ -761,7 +765,7 @@ ItemLocalAttr::ItemLocalAttr( TblNav *tblnav, const char *name, char *value,
...
@@ -761,7 +765,7 @@ ItemLocalAttr::ItemLocalAttr( TblNav *tblnav, const char *name, char *value,
brow_SetAnnotation
(
node
,
1
,
value
,
strlen
(
value
));
brow_SetAnnotation
(
node
,
1
,
value
,
strlen
(
value
));
}
}
ItemTreeLocal
::
ItemTreeLocal
(
TblNav
*
tblnav
,
sevcli_sHistItem
*
xitem
,
int
index
,
ItemTreeLocal
::
ItemTreeLocal
(
TblNav
*
tblnav
,
TblNav_sevhistobject
*
xitem
,
int
index
,
brow_tNode
dest
,
flow_eDest
dest_code
)
:
brow_tNode
dest
,
flow_eDest
dest_code
)
:
ItemLocal
(
tblnav
,
xitem
,
dest
,
dest_code
),
idx
(
index
)
ItemLocal
(
tblnav
,
xitem
,
dest
,
dest_code
),
idx
(
index
)
{
{
...
@@ -774,8 +778,10 @@ ItemTreeLocal::ItemTreeLocal( TblNav *tblnav, sevcli_sHistItem *xitem, int index
...
@@ -774,8 +778,10 @@ ItemTreeLocal::ItemTreeLocal( TblNav *tblnav, sevcli_sHistItem *xitem, int index
strcpy
(
aname
,
s
+
1
);
strcpy
(
aname
,
s
+
1
);
else
else
strcpy
(
aname
,
item
.
oname
);
strcpy
(
aname
,
item
.
oname
);
if
(
item
.
attrnum
==
1
)
{
strcat
(
aname
,
"."
);
strcat
(
aname
,
"."
);
strcat
(
aname
,
item
.
attr
[
0
].
aname
);
strcat
(
aname
,
item
.
objectattrlist
[
0
].
aname
);
}
brow_SetAnnotation
(
node
,
0
,
aname
,
strlen
(
aname
));
brow_SetAnnotation
(
node
,
0
,
aname
,
strlen
(
aname
));
}
}
...
@@ -851,12 +857,12 @@ void TblNav::build_tree()
...
@@ -851,12 +857,12 @@ void TblNav::build_tree()
pwr_tAName
aname
;
pwr_tAName
aname
;
int
seg
;
int
seg
;
for
(
int
i
=
0
;
i
<
item_cnt
;
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
sevhistobjectlist
.
size
()
;
i
++
)
{
TblTreeNode
n
;
TblTreeNode
n
;
strcpy
(
aname
,
item
list
[
i
].
oname
);
strcpy
(
aname
,
sevhistobject
list
[
i
].
oname
);
strcat
(
aname
,
"."
);
strcat
(
aname
,
"."
);
strcat
(
aname
,
itemlist
[
i
].
attr
[
0
].
aname
);
strcat
(
aname
,
sevhistobjectlist
[
i
].
objectattrlist
[
0
].
aname
);
seg
=
dcli_parse
(
aname
,
"-"
,
""
,
seg
=
dcli_parse
(
aname
,
"-"
,
""
,
(
char
*
)
name_array
,
sizeof
(
name_array
)
/
sizeof
(
name_array
[
0
]),
(
char
*
)
name_array
,
sizeof
(
name_array
)
/
sizeof
(
name_array
[
0
]),
...
@@ -875,7 +881,7 @@ void TblNav::build_tree()
...
@@ -875,7 +881,7 @@ void TblNav::build_tree()
tree
[
j
].
fch
=
j
+
1
;
tree
[
j
].
fch
=
j
+
1
;
strcpy
(
n
.
sname
,
name_array
[
j
]);
strcpy
(
n
.
sname
,
name_array
[
j
]);
if
(
j
==
seg
-
1
)
if
(
j
==
seg
-
1
)
n
.
item
=
&
item
list
[
i
];
n
.
item
=
&
sevhistobject
list
[
i
];
tree
.
push_back
(
n
);
tree
.
push_back
(
n
);
}
}
}
}
...
@@ -899,7 +905,7 @@ void TblNav::build_tree()
...
@@ -899,7 +905,7 @@ void TblNav::build_tree()
n
.
bws
=
last
;
n
.
bws
=
last
;
tree
[
last
].
fws
=
tree
.
size
();
tree
[
last
].
fws
=
tree
.
size
();
if
(
j
==
seg
-
1
)
if
(
j
==
seg
-
1
)
n
.
item
=
&
item
list
[
i
];
n
.
item
=
&
sevhistobject
list
[
i
];
tree
.
push_back
(
n
);
tree
.
push_back
(
n
);
for
(
int
k
=
j
+
1
;
k
<
seg
;
k
++
)
{
for
(
int
k
=
j
+
1
;
k
<
seg
;
k
++
)
{
...
@@ -910,7 +916,7 @@ void TblNav::build_tree()
...
@@ -910,7 +916,7 @@ void TblNav::build_tree()
tree
[
n
.
fth
].
fch
=
tree
.
size
();
tree
[
n
.
fth
].
fch
=
tree
.
size
();
strcpy
(
n
.
sname
,
name_array
[
k
]);
strcpy
(
n
.
sname
,
name_array
[
k
]);
if
(
k
==
seg
-
1
)
if
(
k
==
seg
-
1
)
n
.
item
=
&
item
list
[
i
];
n
.
item
=
&
sevhistobject
list
[
i
];
tree
.
push_back
(
n
);
tree
.
push_back
(
n
);
}
}
break
;
break
;
...
@@ -922,7 +928,7 @@ void TblNav::build_tree()
...
@@ -922,7 +928,7 @@ void TblNav::build_tree()
n
.
bws
=
last
;
n
.
bws
=
last
;
tree
[
last
].
fws
=
tree
.
size
();
tree
[
last
].
fws
=
tree
.
size
();
if
(
j
==
seg
-
1
)
if
(
j
==
seg
-
1
)
n
.
item
=
&
item
list
[
i
];
n
.
item
=
&
sevhistobject
list
[
i
];
tree
.
push_back
(
n
);
tree
.
push_back
(
n
);
for
(
int
k
=
j
+
1
;
k
<
seg
;
k
++
)
{
for
(
int
k
=
j
+
1
;
k
<
seg
;
k
++
)
{
TblTreeNode
n
;
TblTreeNode
n
;
...
@@ -932,7 +938,7 @@ void TblNav::build_tree()
...
@@ -932,7 +938,7 @@ void TblNav::build_tree()
tree
[
n
.
fth
].
fch
=
tree
.
size
();
tree
[
n
.
fth
].
fch
=
tree
.
size
();
strcpy
(
n
.
sname
,
name_array
[
k
]);
strcpy
(
n
.
sname
,
name_array
[
k
]);
if
(
k
==
seg
-
1
)
if
(
k
==
seg
-
1
)
n
.
item
=
&
item
list
[
i
];
n
.
item
=
&
sevhistobject
list
[
i
];
tree
.
push_back
(
n
);
tree
.
push_back
(
n
);
}
}
break
;
break
;
...
@@ -943,3 +949,36 @@ void TblNav::build_tree()
...
@@ -943,3 +949,36 @@ void TblNav::build_tree()
}
}
}
}
}
}
void
TblNav
::
create_objectlist
(
sevcli_sHistItem
*
xn_itemlist
,
int
xn_item_cnt
,
pwr_tStatus
*
status
)
{
sevcli_sHistItem
*
histItemPtr
=
xn_itemlist
;
while
(
(
int
)
sevhistobjectlist
.
size
()
<
xn_item_cnt
)
{
//Item with multiple attributes
TblNav_sevhistobject
object
;
object
.
attrnum
=
histItemPtr
->
attrnum
;
object
.
creatime
=
histItemPtr
->
creatime
;
object
.
deadband
=
histItemPtr
->
deadband
;
strncpy
(
object
.
description
,
histItemPtr
->
description
,
sizeof
(
object
.
description
));
object
.
modtime
=
histItemPtr
->
modtime
;
object
.
oid
=
histItemPtr
->
oid
;
strncpy
(
object
.
oname
,
histItemPtr
->
oname
,
sizeof
(
histItemPtr
->
oname
));
object
.
options
=
histItemPtr
->
options
;
object
.
scantime
=
histItemPtr
->
scantime
;
object
.
storagetime
=
histItemPtr
->
storagetime
;
size_t
j
=
0
;
for
(
j
=
0
;
j
<
object
.
attrnum
;
j
++
)
{
TblNav_sevhistobjectattr
oattr
;
strncpy
(
oattr
.
aname
,
histItemPtr
->
attr
[
j
].
aname
,
sizeof
(
oattr
.
aname
));
oattr
.
elem
=
histItemPtr
->
attr
[
j
].
elem
;
oattr
.
size
=
histItemPtr
->
attr
[
j
].
size
;
oattr
.
type
=
histItemPtr
->
attr
[
j
].
type
;
strncpy
(
oattr
.
unit
,
histItemPtr
->
attr
[
j
].
unit
,
sizeof
(
oattr
.
unit
));
object
.
objectattrlist
.
push_back
(
oattr
);
}
sevhistobjectlist
.
push_back
(
object
);
histItemPtr
=
(
sevcli_sHistItem
*
)
&
histItemPtr
->
attr
[
j
];
}
}
sev/exe/sev_xtt/src/xtt_tblnav.h
View file @
7701b57a
...
@@ -63,6 +63,30 @@ typedef enum {
...
@@ -63,6 +63,30 @@ typedef enum {
tblnav_mOpen_Attributes
=
1
<<
1
tblnav_mOpen_Attributes
=
1
<<
1
}
tblnav_mOpen
;
}
tblnav_mOpen
;
class
TblNav_sevhistobjectattr
{
public:
pwr_tAName
aname
;
pwr_eType
type
;
unsigned
int
size
;
unsigned
int
elem
;
pwr_tString16
unit
;
};
class
TblNav_sevhistobject
{
public:
pwr_tOid
oid
;
pwr_tAName
oname
;
pwr_tDeltaTime
storagetime
;
pwr_tTime
creatime
;
pwr_tTime
modtime
;
pwr_tString80
description
;
pwr_tFloat32
scantime
;
pwr_tFloat32
deadband
;
pwr_tMask
options
;
unsigned
int
attrnum
;
vector
<
TblNav_sevhistobjectattr
>
objectattrlist
;
};
class
TblTreeNode
{
class
TblTreeNode
{
public:
public:
...
@@ -73,7 +97,7 @@ public:
...
@@ -73,7 +97,7 @@ public:
int
fws
;
int
fws
;
int
bws
;
int
bws
;
char
sname
[
80
];
char
sname
[
80
];
sevcli_sHistItem
*
item
;
TblNav_sevhistobject
*
item
;
int
deleted
;
int
deleted
;
};
};
...
@@ -100,6 +124,7 @@ class TblNavBrow {
...
@@ -100,6 +124,7 @@ class TblNavBrow {
};
};
//! The navigation area of the attribute editor.
//! The navigation area of the attribute editor.
class
TblNav
{
class
TblNav
{
public:
public:
...
@@ -112,6 +137,7 @@ class TblNav {
...
@@ -112,6 +137,7 @@ class TblNav {
void
*
parent_ctx
;
void
*
parent_ctx
;
TblNavBrow
*
brow
;
TblNavBrow
*
brow
;
sevcli_sHistItem
*
itemlist
;
sevcli_sHistItem
*
itemlist
;
vector
<
TblNav_sevhistobject
>
sevhistobjectlist
;
int
item_cnt
;
int
item_cnt
;
void
(
*
message_cb
)(
void
*
,
char
,
const
char
*
);
void
(
*
message_cb
)(
void
*
,
char
,
const
char
*
);
int
(
*
is_authorized_cb
)(
void
*
,
unsigned
int
,
int
);
int
(
*
is_authorized_cb
)(
void
*
,
unsigned
int
,
int
);
...
@@ -122,14 +148,16 @@ class TblNav {
...
@@ -122,14 +148,16 @@ class TblNav {
int
is_authorized
(
unsigned
int
access
=
pwr_mAccess_AllSev
,
int
msg
=
1
);
int
is_authorized
(
unsigned
int
access
=
pwr_mAccess_AllSev
,
int
msg
=
1
);
int
create_items
();
int
create_items
();
void
build_tree
();
void
build_tree
();
int
get_select
(
sevcli_sHistItem
**
hi
);
int
get_select
(
TblNav_sevhistobject
**
hi
);
void
get_zoom
(
double
*
zoom_factor
);
void
get_zoom
(
double
*
zoom_factor
);
void
zoom
(
double
zoom_factor
);
void
zoom
(
double
zoom_factor
);
void
unzoom
();
void
unzoom
();
void
show_tree
();
void
show_tree
();
void
show_list
();
void
show_list
();
void
delete_item
(
sevcli_sHistItem
*
hi
);
void
delete_item
(
TblNav_sevhistobject
*
hi
);
void
create_objectlist
(
sevcli_sHistItem
*
xn_itemlist
,
int
xn_item_cnt
,
pwr_tStatus
*
status
);
virtual
void
message
(
char
sev
,
const
char
*
text
);
virtual
void
message
(
char
sev
,
const
char
*
text
);
virtual
void
set_inputfocus
()
{}
virtual
void
set_inputfocus
()
{}
static
int
init_brow_cb
(
FlowCtx
*
fctx
,
void
*
client_data
);
static
int
init_brow_cb
(
FlowCtx
*
fctx
,
void
*
client_data
);
...
@@ -146,10 +174,13 @@ class ItemBase {
...
@@ -146,10 +174,13 @@ class ItemBase {
//! Item for a normal attribute.
//! Item for a normal attribute.
class
ItemLocal
:
public
ItemBase
{
class
ItemLocal
:
public
ItemBase
{
public:
public:
ItemLocal
(
TblNav
*
tblnav
,
sevcli_sHistItem
*
item
,
brow_tNode
dest
,
flow_eDest
dest_code
);
// ItemLocal( TblNav *tblnav, sevcli_sHistItem *item, brow_tNode dest, flow_eDest dest_code);
ItemLocal
(
TblNav
*
tblnav
,
TblNav_sevhistobject
*
item
,
brow_tNode
dest
,
flow_eDest
dest_code
);
virtual
~
ItemLocal
()
{}
virtual
~
ItemLocal
()
{}
sevcli_sHistItem
item
;
// sevcli_sHistItem item;
TblNav_sevhistobject
item
;
brow_tNode
node
;
brow_tNode
node
;
int
open_attributes
(
TblNav
*
tblnav
,
double
x
,
double
y
);
int
open_attributes
(
TblNav
*
tblnav
,
double
x
,
double
y
);
...
@@ -161,14 +192,15 @@ class ItemLocalAttr : public ItemBase {
...
@@ -161,14 +192,15 @@ class ItemLocalAttr : public ItemBase {
ItemLocalAttr
(
TblNav
*
tblnav
,
const
char
*
iname
,
char
*
ivalue
,
brow_tNode
dest
,
flow_eDest
dest_code
);
ItemLocalAttr
(
TblNav
*
tblnav
,
const
char
*
iname
,
char
*
ivalue
,
brow_tNode
dest
,
flow_eDest
dest_code
);
virtual
~
ItemLocalAttr
()
{}
virtual
~
ItemLocalAttr
()
{}
sevcli_sHistItem
item
;
TblNav_sevhistobject
item
;
//sevcli_sHistItem item;
brow_tNode
node
;
brow_tNode
node
;
};
};
//! Item for a normal attribute.
//! Item for a normal attribute.
class
ItemTreeLocal
:
public
ItemLocal
{
class
ItemTreeLocal
:
public
ItemLocal
{
public:
public:
ItemTreeLocal
(
TblNav
*
tblnav
,
sevcli_sHistItem
*
item
,
int
index
,
brow_tNode
dest
,
flow_eDest
dest_code
);
ItemTreeLocal
(
TblNav
*
tblnav
,
TblNav_sevhistobject
*
item
,
int
index
,
brow_tNode
dest
,
flow_eDest
dest_code
);
virtual
~
ItemTreeLocal
()
{}
virtual
~
ItemTreeLocal
()
{}
int
idx
;
int
idx
;
...
...
sev/lib/sev/src/sev_db.h
View file @
7701b57a
...
@@ -38,9 +38,9 @@ class sev_attr {
...
@@ -38,9 +38,9 @@ class sev_attr {
class
sev_item
{
class
sev_item
{
public:
public:
sev_item
()
:
deadband_active
(
0
),
last_id
(
0
),
first_storage
(
1
),
status
(
0
),
logged_status
(
0
),
sev_item
()
:
deadband_active
(
0
),
last_id
(
0
),
value_size
(
0
),
old_value
(
0
),
first_storage
(
1
),
status
(
0
),
logged_status
(
0
),
deleted
(
0
)
deleted
(
0
)
{
memset
(
old_value
,
0
,
sizeof
(
old_value
));
}
{
/*memset( old_value, 0, sizeof(old_value));*/
}
unsigned
int
id
;
unsigned
int
id
;
char
tablename
[
256
];
char
tablename
[
256
];
pwr_tOid
oid
;
pwr_tOid
oid
;
...
@@ -55,10 +55,12 @@ class sev_item {
...
@@ -55,10 +55,12 @@ class sev_item {
pwr_tMask
options
;
pwr_tMask
options
;
int
deadband_active
;
int
deadband_active
;
unsigned
int
last_id
;
unsigned
int
last_id
;
char
old_value
[
8
];
//char old_value[8];
unsigned
int
value_size
;
void
*
old_value
;
int
first_storage
;
int
first_storage
;
unsigned
int
attrnum
;
unsigned
int
attrnum
;
sev_attr
attr
[
1
]
;
vector
<
sev_attr
>
attr
;
pwr_tStatus
status
;
pwr_tStatus
status
;
pwr_tStatus
logged_status
;
pwr_tStatus
logged_status
;
int
deleted
;
int
deleted
;
...
@@ -92,5 +94,31 @@ class sev_db {
...
@@ -92,5 +94,31 @@ class sev_db {
virtual
int
get_items
(
pwr_tStatus
*
sts
)
{
return
0
;}
virtual
int
get_items
(
pwr_tStatus
*
sts
)
{
return
0
;}
virtual
int
delete_old_data
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
aname
,
virtual
int
delete_old_data
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
aname
,
pwr_tMask
options
,
pwr_tTime
limit
)
{
return
0
;}
pwr_tMask
options
,
pwr_tTime
limit
)
{
return
0
;}
virtual
char
*
oid_to_table
(
pwr_tOid
oid
,
char
*
aname
)
{
return
0
;}
virtual
int
check_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
)
{
return
0
;}
virtual
int
add_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
)
{
return
0
;}
virtual
int
store_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
)
{
return
0
;}
virtual
int
add_objectitemattr
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
aname
,
char
*
oname
,
pwr_eType
type
,
unsigned
int
size
,
unsigned
int
*
idx
)
{
return
0
;}
virtual
int
get_item
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
char
*
tablename
)
{
return
0
;}
virtual
int
get_objectitem
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
char
*
tablename
)
{
return
0
;}
virtual
int
get_objectitems
(
pwr_tStatus
*
sts
)
{
return
0
;}
virtual
int
check_objectitemattr
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
aname
,
char
*
oname
,
pwr_eType
type
,
unsigned
int
size
,
unsigned
int
*
idx
)
{
return
0
;}
virtual
int
delete_old_objectdata
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tMask
options
,
pwr_tTime
limit
)
{
return
0
;}
virtual
int
get_objectvalues
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
unsigned
int
size
,
pwr_tTime
*
starttime
,
pwr_tTime
*
endtime
,
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
unsigned
int
*
bsize
)
{
return
0
;}
};
};
#endif
#endif
sev/lib/sev/src/sev_dbms.cpp
View file @
7701b57a
This diff is collapsed.
Click to expand it.
sev/lib/sev/src/sev_dbms.h
View file @
7701b57a
...
@@ -67,6 +67,8 @@ class sev_dbms_env
...
@@ -67,6 +67,8 @@ class sev_dbms_env
int
open
(
const
char
*
host
,
const
char
*
user
,
const
char
*
passwd
,
int
open
(
const
char
*
host
,
const
char
*
user
,
const
char
*
passwd
,
const
char
*
dbName
,
unsigned
int
port
,
const
char
*
socket
);
const
char
*
dbName
,
unsigned
int
port
,
const
char
*
socket
);
int
checkAndUpdateVersion
(
unsigned
int
version
);
int
updateDB_to_SevVersion2
(
void
);
MYSQL
*
createDb
(
void
);
MYSQL
*
createDb
(
void
);
MYSQL
*
openDb
(
void
);
MYSQL
*
openDb
(
void
);
bool
exists
()
{
return
m_exists
;}
bool
exists
()
{
return
m_exists
;}
...
@@ -104,7 +106,7 @@ class sev_dbms : public sev_db {
...
@@ -104,7 +106,7 @@ class sev_dbms : public sev_db {
sev_dbms_env
*
m_env
;
sev_dbms_env
*
m_env
;
sev_dbms
(
sev_dbms_env
*
env
)
:
m_env
(
env
)
{}
sev_dbms
(
sev_dbms_env
*
env
)
:
m_env
(
env
)
{}
~
sev_dbms
()
{}
~
sev_dbms
()
;
int
check_item
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
int
check_item
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
...
@@ -136,7 +138,40 @@ class sev_dbms : public sev_db {
...
@@ -136,7 +138,40 @@ class sev_dbms : public sev_db {
char
*
oid_to_table
(
pwr_tOid
oid
,
char
*
aname
);
char
*
oid_to_table
(
pwr_tOid
oid
,
char
*
aname
);
char
*
pwrtype_to_type
(
pwr_eType
type
,
unsigned
int
size
);
char
*
pwrtype_to_type
(
pwr_eType
type
,
unsigned
int
size
);
static
int
timestr_to_time
(
char
*
tstr
,
pwr_tTime
*
ts
);
static
int
timestr_to_time
(
char
*
tstr
,
pwr_tTime
*
ts
);
int
check_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
int
add_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
int
store_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
);
int
create_objecttable
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
aname
,
pwr_tMask
options
,
float
deadband
);
int
add_objectitemattr
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
aname
,
char
*
oname
,
pwr_eType
type
,
unsigned
int
size
,
unsigned
int
*
idx
);
int
store_objectvalue
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
void
*
oldbuf
,
unsigned
int
size
);
int
get_item
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
char
*
tablename
);
int
get_objectitem
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
char
*
tablename
);
int
get_objectitems
(
pwr_tStatus
*
sts
);
int
get_objectitemattributes
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
char
*
tablename
);
int
check_objectitemattr
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
aname
,
char
*
oname
,
pwr_eType
type
,
unsigned
int
size
,
unsigned
int
*
idx
);
int
get_nextattridx
(
pwr_tStatus
*
sts
,
char
*
tablename
);
int
delete_old_objectdata
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tMask
options
,
pwr_tTime
limit
);
int
alter_attrcolumn
(
pwr_tStatus
*
sts
,
char
*
tablename
,
char
*
aname
,
pwr_eType
newtype
,
unsigned
int
newsize
,
pwr_eType
oldtype
,
unsigned
int
oldsize
);
int
rename_attrcolumn
(
pwr_tStatus
*
sts
,
char
*
tablename
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
);
int
remove_objectitemattr
(
pwr_tStatus
*
sts
,
char
*
tablename
,
char
*
aname
);
int
update_objectitemattr
(
pwr_tStatus
*
sts
,
char
*
tablename
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
);
int
check_deadband
(
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
deadband
,
void
*
value
,
void
*
oldvalue
);
int
get_objectvalues
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
unsigned
int
size
,
pwr_tTime
*
starttime
,
pwr_tTime
*
endtime
,
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
unsigned
int
*
bsize
);
pwr_tUInt64
get_minFromIntegerColumn
(
char
*
tablename
,
char
*
colname
);
};
};
#endif
#endif
#endif
#endif
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
View file @
7701b57a
This diff is collapsed.
Click to expand it.
src/exe/rt_sevhistmon/src/rt_sevhistmon.h
View file @
7701b57a
...
@@ -42,6 +42,32 @@ class sev_sevhist {
...
@@ -42,6 +42,32 @@ class sev_sevhist {
pwr_tFloat32
scantime
;
pwr_tFloat32
scantime
;
};
};
class
sev_sevhistobjectattr
{
public:
pwr_tAttrRef
aref
;
pwr_tString80
description
;
pwr_tString16
unit
;
pwr_tAName
aname
;
pwr_tRefId
refid
;
void
*
datap
;
pwr_eType
type
;
unsigned
int
size
;
};
class
sev_sevhistobject
{
public:
pwr_tAttrRef
aref
;
pwr_tAName
aname
;
pwr_tDeltaTime
storagetime
;
pwr_tFloat32
deadband
;
pwr_tMask
options
;
pwr_tRefId
sevid
;
pwr_tString80
description
;
pwr_tFloat32
scantime
;
unsigned
int
datasize
;
vector
<
sev_sevhistobjectattr
>
sevhistobjectattrlist
;
};
class
sev_sevhistthread
{
class
sev_sevhistthread
{
public:
public:
sev_sevhistthread
()
:
configerror
(
0
)
{}
sev_sevhistthread
()
:
configerror
(
0
)
{}
...
@@ -54,6 +80,7 @@ class sev_sevhistthread {
...
@@ -54,6 +80,7 @@ class sev_sevhistthread {
pwr_tRefId
refid
;
pwr_tRefId
refid
;
int
configerror
;
int
configerror
;
vector
<
sev_sevhist
>
sevhistlist
;
vector
<
sev_sevhist
>
sevhistlist
;
vector
<
sev_sevhistobject
>
sevhistobjectlist
;
};
};
class
sev_node
{
class
sev_node
{
...
@@ -88,6 +115,16 @@ class rt_sevhistmon {
...
@@ -88,6 +115,16 @@ class rt_sevhistmon {
int
init
();
int
init
();
int
init_objects
();
int
init_objects
();
int
init_sevhistobjects
();
void
insert_sevhistobjectattr
(
pwr_sAttrRef
*
aref
,
pwr_tAName
objectname
,
int
hs_idx
,
vector
<
sev_sevhistobjectattr
>
*
listP
);
int
get_sevhistobjectattributes
(
pwr_tAName
objectname
,
vector
<
sev_sevhistobjectattr
>
*
listP
,
int
hs_idx
,
pwr_tBoolean
first
);
bool
correct_histtype
(
const
pwr_eType
type
);
int
close
();
int
close
();
int
close_objects
();
int
close_objects
();
int
mainloop
();
int
mainloop
();
...
...
src/lib/rt/src/rt_sev_net.h
View file @
7701b57a
...
@@ -42,7 +42,9 @@ typedef enum {
...
@@ -42,7 +42,9 @@ typedef enum {
sev_eMsgType_HistItemDelete
,
sev_eMsgType_HistItemDelete
,
sev_eMsgType_HistItemStatus
,
sev_eMsgType_HistItemStatus
,
sev_eMsgType_ServerStatusRequest
,
sev_eMsgType_ServerStatusRequest
,
sev_eMsgType_ServerStatus
sev_eMsgType_ServerStatus
,
sev_eMsgType_HistObjectDataGetRequest
,
sev_eMsgType_HistObjectDataGet
}
sev_eMsgType
;
}
sev_eMsgType
;
typedef
struct
{
typedef
struct
{
...
@@ -84,6 +86,8 @@ typedef struct {
...
@@ -84,6 +86,8 @@ typedef struct {
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
sev_eMsgType
Type
;
pwr_tStatus
Status
;
pwr_tStatus
Status
;
unsigned
int
NumItems
;
unsigned
int
NumAttributes
;
sev_sHistItem
Items
[
1
];
sev_sHistItem
Items
[
1
];
}
sev_sMsgHistItems
;
}
sev_sMsgHistItems
;
...
@@ -113,6 +117,18 @@ typedef struct {
...
@@ -113,6 +117,18 @@ typedef struct {
int
Data
[
1
];
int
Data
[
1
];
}
sev_sMsgHistDataGet
;
}
sev_sMsgHistDataGet
;
typedef
struct
{
sev_eMsgType
Type
;
pwr_tOid
Oid
;
pwr_tOName
AName
;
pwr_tStatus
Status
;
int
NumPoints
;
int
NumAttributes
;
unsigned
int
TotalDataSize
;
sev_sHistAttr
Attr
[
1
];
int
Data
[
1
];
}
sev_sMsgHistObjectDataGet
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
sev_eMsgType
Type
;
pwr_tOid
Oid
;
pwr_tOid
Oid
;
...
...
src/lib/rt/src/rt_sevcli.c
View file @
7701b57a
...
@@ -115,6 +115,104 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
...
@@ -115,6 +115,104 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
tgt
.
qix
=
sev_eProcSevServer
;
tgt
.
qix
=
sev_eProcSevServer
;
put
.
reply
=
ctx
->
qid
;
put
.
type
.
b
=
(
qcom_eBtype
)
sev_cMsgClass
;
put
.
type
.
s
=
(
qcom_eStype
)
sev_eMsgType_HistItemsRequest
;
put
.
msg_id
=
ctx
->
msg_id
++
;
put
.
size
=
sizeof
(
*
msg
);
msg
=
(
sev_sMsgAny
*
)
qcom_Alloc
(
sts
,
put
.
size
);
put
.
data
=
msg
;
msg
->
Type
=
sev_eMsgType_HistItemsRequest
;
if
(
!
qcom_Put
(
sts
,
&
tgt
,
&
put
))
{
qcom_Free
(
&
lsts
,
put
.
data
);
return
0
;
}
sev_sMsgHistItems
*
rmsg
;
memset
(
&
get
,
0
,
sizeof
(
get
));
for
(;;)
{
rmsg
=
(
sev_sMsgHistItems
*
)
qcom_Get
(
sts
,
&
ctx
->
qid
,
&
get
,
tmo
);
if
(
*
sts
==
QCOM__TMO
||
!
rmsg
)
{
return
0
;
}
if
(
get
.
type
.
b
==
sev_cMsgClass
&&
get
.
type
.
s
==
(
qcom_eStype
)
sev_eMsgType_HistItems
)
break
;
qcom_Free
(
sts
,
rmsg
);
}
*
sts
=
rmsg
->
Status
;
if
(
EVEN
(
*
sts
))
return
0
;
//int item_cnt = (get.size - sizeof(sev_sMsgHistItems)) / sizeof(sev_sHistItem) + 1;
int
item_cnt
=
rmsg
->
NumItems
;
int
attr_cnt
=
rmsg
->
NumAttributes
;
unsigned
int
data_size
=
(
item_cnt
*
sizeof
(
sevcli_sHistItem
))
+
((
attr_cnt
-
item_cnt
)
*
sizeof
(
sevcli_sHistAttr
));
printf
(
"Get size: %d, data size: %d
\n
"
,
get
.
size
,
data_size
);
lp
=
(
sevcli_sHistItem
*
)
malloc
(
data_size
);
sevcli_sHistItem
*
lp2
=
lp
;
sev_sHistItem
*
itemPtr
=
((
sev_sMsgHistItems
*
)
rmsg
)
->
Items
;
for
(
i
=
0
;
i
<
item_cnt
;
i
++
)
{
printf
(
"i : %d
\n
"
,
i
);
lp
->
oid
=
itemPtr
->
oid
;
strncpy
(
lp
->
oname
,
itemPtr
->
oname
,
sizeof
(
lp
->
oname
));
lp
->
storagetime
=
net_NetTimeToDeltaTime
(
&
itemPtr
->
storagetime
);
lp
->
deadband
=
itemPtr
->
deadband
;
lp
->
options
=
itemPtr
->
options
;
lp
->
creatime
=
net_NetTimeToTime
(
&
itemPtr
->
creatime
);
lp
->
modtime
=
net_NetTimeToTime
(
&
itemPtr
->
modtime
);
strncpy
(
lp
->
description
,
itemPtr
->
description
,
sizeof
(
lp
->
description
));
lp
->
scantime
=
itemPtr
->
scantime
;
lp
->
attrnum
=
itemPtr
->
attrnum
;
size_t
j
=
0
;
for
(
j
=
0
;
j
<
lp
->
attrnum
;
j
++
)
{
lp
->
attr
[
j
].
type
=
itemPtr
->
attr
[
j
].
type
;
lp
->
attr
[
j
].
size
=
itemPtr
->
attr
[
j
].
size
;
strncpy
(
lp
->
attr
[
j
].
aname
,
itemPtr
->
attr
[
j
].
aname
,
sizeof
(
lp
->
attr
[
0
].
aname
));
strncpy
(
lp
->
attr
[
j
].
unit
,
itemPtr
->
attr
[
j
].
unit
,
sizeof
(
lp
->
attr
[
0
].
unit
));
}
itemPtr
=
(
sev_sHistItem
*
)
&
itemPtr
->
attr
[
j
];
lp
=
(
sevcli_sHistItem
*
)
&
lp
->
attr
[
j
];
}
qcom_Free
(
sts
,
rmsg
);
*
cnt
=
item_cnt
;
*
list
=
lp2
;
*
sts
=
SEV__SUCCESS
;
return
1
;
}
/*
int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **list,
unsigned int *cnt)
{
sev_sMsgAny *msg;
qcom_sQid tgt;
qcom_sPut put;
pwr_tStatus lsts;
int tmo = 1000;
qcom_sGet get;
sevcli_sHistItem *lp;
int i;
if ( ctx->server)
tgt.nid = ctx->server;
else
tgt.nid = ctx->qid.nid;
tgt.qix = sev_eProcSevServer;
put.reply = ctx->qid;
put.reply = ctx->qid;
put.type.b = (qcom_eBtype) sev_cMsgClass;
put.type.b = (qcom_eBtype) sev_cMsgClass;
put.type.s = (qcom_eStype) sev_eMsgType_HistItemsRequest;
put.type.s = (qcom_eStype) sev_eMsgType_HistItemsRequest;
...
@@ -180,6 +278,7 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
...
@@ -180,6 +278,7 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
*sts = SEV__SUCCESS;
*sts = SEV__SUCCESS;
return 1;
return 1;
}
}
*/
int
sevcli_get_itemdata
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
int
sevcli_get_itemdata
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
char
*
aname
,
pwr_tTime
starttime
,
pwr_tTime
endtime
,
int
numpoints
,
char
*
aname
,
pwr_tTime
starttime
,
pwr_tTime
endtime
,
int
numpoints
,
...
@@ -220,6 +319,7 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
...
@@ -220,6 +319,7 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
// Empty queue
// Empty queue
sev_sMsgHistDataGet
*
rmsg
;
sev_sMsgHistDataGet
*
rmsg
;
memset
(
&
get
,
0
,
sizeof
(
get
));
for
(;;)
{
for
(;;)
{
rmsg
=
(
sev_sMsgHistDataGet
*
)
qcom_Get
(
sts
,
&
ctx
->
qid
,
&
get
,
0
);
rmsg
=
(
sev_sMsgHistDataGet
*
)
qcom_Get
(
sts
,
&
ctx
->
qid
,
&
get
,
0
);
if
(
!
rmsg
)
if
(
!
rmsg
)
...
@@ -268,6 +368,116 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
...
@@ -268,6 +368,116 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
return
1
;
return
1
;
}
}
int
sevcli_get_objectitemdata
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
char
*
aname
,
pwr_tTime
starttime
,
pwr_tTime
endtime
,
int
numpoints
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
int
*
rows
,
sevcli_sHistAttr
**
histattr
,
int
*
numattributes
)
{
sev_sMsgHistDataGetRequest
*
msg
;
qcom_sQid
tgt
;
qcom_sPut
put
;
int
tmo
=
30000
;
qcom_sGet
get
;
pwr_tStatus
lsts
;
if
(
ctx
->
server
)
tgt
.
nid
=
ctx
->
server
;
else
tgt
.
nid
=
ctx
->
qid
.
nid
;
tgt
.
qix
=
sev_eProcSevServer
;
put
.
reply
=
ctx
->
qid
;
put
.
type
.
b
=
(
qcom_eBtype
)
sev_cMsgClass
;
put
.
type
.
s
=
(
qcom_eStype
)
sev_eMsgType_HistObjectDataGetRequest
;
put
.
msg_id
=
ctx
->
msg_id
++
;
put
.
size
=
sizeof
(
*
msg
);
msg
=
(
sev_sMsgHistDataGetRequest
*
)
qcom_Alloc
(
sts
,
put
.
size
);
put
.
data
=
msg
;
msg
->
Type
=
sev_eMsgType_HistObjectDataGetRequest
;
msg
->
Oid
=
oid
;
strncpy
(
msg
->
AName
,
aname
,
sizeof
(
msg
->
AName
));
msg
->
StartTime
=
net_TimeToNetTime
(
&
starttime
);
msg
->
EndTime
=
net_TimeToNetTime
(
&
endtime
);
msg
->
NumPoints
=
numpoints
;
// Empty queue
sev_sMsgHistObjectDataGet
*
rmsg
;
memset
(
&
get
,
0
,
sizeof
(
get
));
for
(;;)
{
rmsg
=
(
sev_sMsgHistObjectDataGet
*
)
qcom_Get
(
sts
,
&
ctx
->
qid
,
&
get
,
0
);
if
(
!
rmsg
)
break
;
}
if
(
!
qcom_Put
(
sts
,
&
tgt
,
&
put
))
{
qcom_Free
(
&
lsts
,
put
.
data
);
*
sts
=
0
;
return
0
;
}
memset
(
&
get
,
0
,
sizeof
(
get
));
for
(;;)
{
rmsg
=
(
sev_sMsgHistObjectDataGet
*
)
qcom_Get
(
sts
,
&
ctx
->
qid
,
&
get
,
tmo
);
if
(
*
sts
==
QCOM__TMO
||
!
rmsg
)
{
*
sts
=
0
;
return
0
;
}
if
(
get
.
type
.
b
==
sev_cMsgClass
&&
get
.
type
.
s
==
(
qcom_eStype
)
sev_eMsgType_HistObjectDataGet
&&
cdh_ObjidIsEqual
(
oid
,
rmsg
->
Oid
)
&&
cdh_NoCaseStrcmp
(
aname
,
rmsg
->
AName
)
==
0
)
break
;
qcom_Free
(
sts
,
rmsg
);
}
*
sts
=
rmsg
->
Status
;
if
(
EVEN
(
*
sts
))
return
0
;
if
(
rmsg
->
NumPoints
==
0
)
{
*
sts
=
0
;
return
0
;
}
*
numattributes
=
rmsg
->
NumAttributes
;
int
item_cnt
=
rmsg
->
NumPoints
;
unsigned
int
timebufsize
=
item_cnt
*
sizeof
(
pwr_tTime
);
unsigned
int
databufsize
=
rmsg
->
TotalDataSize
-
timebufsize
;
*
tbuf
=
malloc
(
timebufsize
);
*
vbuf
=
malloc
(
databufsize
);
sevcli_sHistAttr
*
attrptr
;
attrptr
=
calloc
(
rmsg
->
NumAttributes
,
sizeof
(
sevcli_sHistAttr
)
);
int
attrCount
=
rmsg
->
NumAttributes
;
void
*
ptr
=
&
rmsg
->
Attr
[
attrCount
];
memcpy
(
*
tbuf
,
ptr
,
item_cnt
*
sizeof
(
pwr_tTime
));
memcpy
(
*
vbuf
,
(
char
*
)
ptr
+
item_cnt
*
sizeof
(
pwr_tTime
),
databufsize
);
*
rows
=
item_cnt
;
int
i
=
0
;
for
(
i
=
0
;
i
<
rmsg
->
NumAttributes
;
i
++
)
{
strncpy
(
attrptr
[
i
].
aname
,
rmsg
->
Attr
[
i
].
aname
,
sizeof
(
attrptr
[
0
].
aname
));
attrptr
[
i
].
type
=
rmsg
->
Attr
[
i
].
type
;
attrptr
[
i
].
size
=
rmsg
->
Attr
[
i
].
size
;
}
*
histattr
=
attrptr
;
qcom_Free
(
sts
,
rmsg
);
*
sts
=
SEV__SUCCESS
;
return
1
;
}
int
sevcli_delete_item
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
char
*
aname
)
int
sevcli_delete_item
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
char
*
aname
)
{
{
sev_sMsgHistItemDelete
*
msg
;
sev_sMsgHistItemDelete
*
msg
;
...
...
src/lib/rt/src/rt_sevcli.h
View file @
7701b57a
...
@@ -76,7 +76,10 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
...
@@ -76,7 +76,10 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
int
*
rows
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
int
*
rows
,
pwr_eType
*
vtype
,
unsigned
int
*
vsize
);
pwr_eType
*
vtype
,
unsigned
int
*
vsize
);
int
sevcli_delete_item
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
char
*
aname
);
int
sevcli_delete_item
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
char
*
aname
);
int
sevcli_get_objectitemdata
(
pwr_tStatus
*
sts
,
sevcli_tCtx
ctx
,
pwr_tOid
oid
,
char
*
aname
,
pwr_tTime
starttime
,
pwr_tTime
endtime
,
int
numpoints
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
int
*
rows
,
sevcli_sHistAttr
**
histattr
,
int
*
numattributes
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
src/wbl/pwrb/src/pwrb_c_sevhist.wb_load
View file @
7701b57a
...
@@ -42,6 +42,7 @@ SObject pwrb:Class
...
@@ -42,6 +42,7 @@ SObject pwrb:Class
! below the current signal object.
! below the current signal object.
!
!
! @b See also
! @b See also
! @classlink SevHistObject pwrb_sevhistobject.html
! @classlink SevHistThread pwrb_sevhistthread.html
! @classlink SevHistThread pwrb_sevhistthread.html
! @classlink SevHistMonitor pwrb_sevhistmonitor.html
! @classlink SevHistMonitor pwrb_sevhistmonitor.html
! @classlink SevHistServer pwrb_sevhistserver.html
! @classlink SevHistServer pwrb_sevhistserver.html
...
...
src/wbl/pwrb/src/pwrb_c_sevhistmonitor.wb_load
View file @
7701b57a
...
@@ -33,6 +33,7 @@ SObject pwrb:Class
...
@@ -33,6 +33,7 @@ SObject pwrb:Class
! @b See also
! @b See also
! @classlink SevHistThread pwrb_sevhistthread.html
! @classlink SevHistThread pwrb_sevhistthread.html
! @classlink SevHist pwrb_sevhist.html
! @classlink SevHist pwrb_sevhist.html
! @classlink SevHistObject pwrb_sevhistobject.html
! @classlink SevHistServer pwrb_sevhistserver.html
! @classlink SevHistServer pwrb_sevhistserver.html
!*/
!*/
Object SevHistMonitor $ClassDef 534
Object SevHistMonitor $ClassDef 534
...
...
src/wbl/pwrb/src/pwrb_c_sevhistobject.wb_load
0 → 100644
View file @
7701b57a
!
! Proview $Id: pwrb_c_sevhistobject.wb_load,v 1.2 2009-11-24 16:06:00 claes Exp $
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! This program is free software; you can redistribute it and/or
! modify it under the terms of the GNU General Public License as
! published by the Free Software Foundation, either version 2 of
! the License, or (at your option) any later version.
!
! This program is distributed in the hope that it will be useful
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with the program, if not, write to the Free Software
! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
! pwrb_c_sevhistobject.wb_load -- Defines the class SevHistObject.
!
SObject pwrb:Class
!/**
! @Version 2.0
! @Group PlantConfiguration,SevHist
! @Summary Configures historical data storage for an objects all attribute values.
! Configures historical data storage for x scalar
! quantitites or elements in x number of one-dimensional vectors. (Datastorage
! History).
!
! In a relational database, data resides in
! two-dimensional tables known as relations. A relation
! consist of rows and columns.
!
! The SevHistObject object specifies which quantity is to be
! stored and in which relation. Up to three different
! relations can be specified.
!
! @b See also
! @classlink SevHist pwrb_sevhist.html
! @classlink SevHistThread pwrb_sevhistthread.html
! @classlink SevHistMonitor pwrb_sevhistmonitor.html
! @classlink SevHistServer pwrb_sevhistserver.html
!*/
Object SevHistObject $ClassDef 539
Body SysBody
Attr Editor = pwr_eEditor_AttrEd
Attr Method = pwr_eMethod_Standard
EndBody
Object RtBody $ObjBodyDef 1
Body SysBody
Attr StructName = "SevHistObject"
EndBody
!/**
! Optional desription.
!*/
Object Description $Attribute 1
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! Specifies the complete name of the object whose
! attribute values is to be stored.
!*/
Object Object $Attribute 2
Body SysBody
Attr TypeRef = "pwrs:Type-$AttrRef"
EndBody
EndObject
!/**
! SevHistThread object that specifies the storage scantime
! and in which server the data is stored.
!*/
Object ThreadObject $Attribute 3
Body SysBody
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
!/**
! Time the data will be stored in the database.
! Data that is older than this time will be removed from
! the database by a garbage collector.
!*/
Object StorageTime $Attribute 4
Body SysBody
Attr TypeRef = "pwrs:Type-$DeltaTime"
EndBody
EndObject
!/**
! The deadband is a range around the last stored value, where no new values
! will be stored, i.e a value has to differ more than the deadband / 2 from
! the last stored value to be stored.
!
! Deadband contains the size of deadband. Note that the DeadBand bit in options also
! has to be set to activte the deadband function.
!*/
Object DeadBand $Attribute 5
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Storage options.
!*/
Object Options $Attribute 6
Body SysBody
Attr TypeRef = "pwrb:Type-SevHistOptionsMask"
EndBody
EndObject
EndObject
Object Template SevHistObject
Body RtBody
Attr DeadBand = 0.0
Attr Options = 4
EndBody
EndObject
Object PostCreate $DbCallBack
Body SysBody
Attr MethodName = "SevHist-PostCreate"
EndBody
EndObject
Object PostMove $DbCallBack
Body SysBody
Attr MethodName = "SevHist-PostMove"
EndBody
EndObject
Object ConfiguratorPoson $Menu
Object Pointed $Menu
Object ConnectThread $MenuButton
Body SysBody
Attr ButtonName = "Connect SevHistThread"
Attr MethodName = "$Objid-Connect"
Attr MethodArguments[0] = "ThreadObject"
Attr MethodArguments[1] = "SevHistThread"
Attr FilterName = "$Objid-IsOkConnect"
Attr FilterArguments[0] = "ThreadObject"
Attr FilterArguments[1] = "SevHistThread"
EndBody
EndObject
EndObject
EndObject
EndObject
EndSObject
src/wbl/pwrb/src/pwrb_c_sevserver.wb_load
View file @
7701b57a
...
@@ -37,6 +37,7 @@ SObject pwrb:Class
...
@@ -37,6 +37,7 @@ SObject pwrb:Class
! @classlink SevHistThread pwrb_sevhistthread.html
! @classlink SevHistThread pwrb_sevhistthread.html
! @classlink SevHistMonitor pwrb_sevhistmonitor.html
! @classlink SevHistMonitor pwrb_sevhistmonitor.html
! @classlink SevHist pwrb_sevhist.html
! @classlink SevHist pwrb_sevhist.html
! @classlink SevHistObject pwrb_sevhistobject.html
!*/
!*/
Object SevServer $ClassDef 535
Object SevServer $ClassDef 535
Body SysBody
Body SysBody
...
...
wb/lib/wb/src/wb_vrepmem.cpp
View file @
7701b57a
...
@@ -706,11 +706,19 @@ wb_orep *wb_vrepmem::createObject(pwr_tStatus *sts, wb_cdef cdef, wb_destination
...
@@ -706,11 +706,19 @@ wb_orep *wb_vrepmem::createObject(pwr_tStatus *sts, wb_cdef cdef, wb_destination
if
(
d
.
oid
().
oix
==
0
)
{
if
(
d
.
oid
().
oix
==
0
)
{
dest
=
root_object
;
dest
=
root_object
;
if
(
!
root_object
)
{
if
(
code
==
ldh_eDest_After
)
code
=
ldh_eDest_IntoLast
;
if
(
code
==
ldh_eDest_Before
)
code
=
ldh_eDest_IntoFirst
;
}
else
{
if
(
code
==
ldh_eDest_IntoLast
)
if
(
code
==
ldh_eDest_IntoLast
)
code
=
ldh_eDest_After
;
code
=
ldh_eDest_After
;
if
(
code
==
ldh_eDest_IntoFirst
)
if
(
code
==
ldh_eDest_IntoFirst
)
code
=
ldh_eDest_Before
;
code
=
ldh_eDest_Before
;
}
}
}
else
{
else
{
dest
=
findObject
(
d
.
oid
().
oix
);
dest
=
findObject
(
d
.
oid
().
oix
);
if
(
!
dest
)
{
if
(
!
dest
)
{
...
...
xtt/lib/xtt/gtk/xtt_sevhist_gtk.cpp
View file @
7701b57a
...
@@ -51,10 +51,11 @@ XttSevHistGtk::XttSevHistGtk( void *parent_ctx,
...
@@ -51,10 +51,11 @@ XttSevHistGtk::XttSevHistGtk( void *parent_ctx,
pwr_tOid
*
xn_oid
,
pwr_tOid
*
xn_oid
,
pwr_tOName
*
xn_aname
,
pwr_tOName
*
xn_aname
,
sevcli_tCtx
xn_scctx
,
sevcli_tCtx
xn_scctx
,
int
*
sts
)
:
int
*
sts
,
bool
sevhistobject
)
:
XttSevHist
(
parent_ctx
,
name
,
xn_oid
,
xn_aname
,
xn_scctx
,
sts
),
parent_widget
(
parent_wid
)
XttSevHist
(
parent_ctx
,
name
,
xn_oid
,
xn_aname
,
xn_scctx
,
sts
,
sevhistobject
),
parent_widget
(
parent_wid
)
{
{
char
title
[
250
];
char
title
[
250
];
strncpy
(
title
,
name
,
sizeof
(
title
));
if
(
EVEN
(
*
sts
))
if
(
EVEN
(
*
sts
))
// Error from XttSevHist
// Error from XttSevHist
...
...
xtt/lib/xtt/gtk/xtt_sevhist_gtk.h
View file @
7701b57a
...
@@ -37,7 +37,8 @@ class XttSevHistGtk : public XttSevHist {
...
@@ -37,7 +37,8 @@ class XttSevHistGtk : public XttSevHist {
pwr_tOid
*
xn_oid
,
pwr_tOid
*
xn_oid
,
pwr_tOName
*
xn_aname
,
pwr_tOName
*
xn_aname
,
sevcli_tCtx
xn_scctx
,
sevcli_tCtx
xn_scctx
,
int
*
sts
);
int
*
sts
,
bool
sevhistobject
);
~
XttSevHistGtk
();
~
XttSevHistGtk
();
};
};
...
...
xtt/lib/xtt/gtk/xtt_xnav_gtk.cpp
View file @
7701b57a
...
@@ -221,11 +221,11 @@ XttTrend *XNavGtk::xtttrend_new( char *name, pwr_tAttrRef *objar, pwr_tAttrRef *
...
@@ -221,11 +221,11 @@ XttTrend *XNavGtk::xtttrend_new( char *name, pwr_tAttrRef *objar, pwr_tAttrRef *
}
}
XttSevHist
*
XNavGtk
::
xttsevhist_new
(
char
*
name
,
pwr_tOid
*
oid
,
pwr_tOName
*
aname
,
XttSevHist
*
XNavGtk
::
xttsevhist_new
(
char
*
name
,
pwr_tOid
*
oid
,
pwr_tOName
*
aname
,
sevcli_tCtx
scctx
,
pwr_tStatus
*
sts
)
sevcli_tCtx
scctx
,
pwr_tStatus
*
sts
,
bool
sevhistobject
)
{
{
GtkWidget
*
w
;
GtkWidget
*
w
;
return
new
XttSevHistGtk
(
this
,
parent_wid
,
name
,
&
w
,
oid
,
aname
,
scctx
,
sts
);
return
new
XttSevHistGtk
(
this
,
parent_wid
,
name
,
&
w
,
oid
,
aname
,
scctx
,
sts
,
sevhistobject
);
}
}
XttFast
*
XNavGtk
::
xttfast_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tStatus
*
sts
)
XttFast
*
XNavGtk
::
xttfast_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tStatus
*
sts
)
...
...
xtt/lib/xtt/gtk/xtt_xnav_gtk.h
View file @
7701b57a
...
@@ -59,7 +59,7 @@ class XNavGtk : public XNav {
...
@@ -59,7 +59,7 @@ class XNavGtk : public XNav {
XttTrend
*
xtttrend_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tAttrRef
*
plotgroup
,
XttTrend
*
xtttrend_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tAttrRef
*
plotgroup
,
pwr_tStatus
*
sts
);
pwr_tStatus
*
sts
);
XttSevHist
*
xttsevhist_new
(
char
*
name
,
pwr_tOid
*
oid
,
pwr_tOName
*
aname
,
XttSevHist
*
xttsevhist_new
(
char
*
name
,
pwr_tOid
*
oid
,
pwr_tOName
*
aname
,
sevcli_tCtx
scctx
,
pwr_tStatus
*
sts
);
sevcli_tCtx
scctx
,
pwr_tStatus
*
sts
,
bool
sevhistobject
=
false
);
XttFast
*
xttfast_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tStatus
*
sts
);
XttFast
*
xttfast_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tStatus
*
sts
);
XAttOne
*
xattone_new
(
pwr_tAttrRef
*
objar
,
char
*
title
,
unsigned
int
priv
,
XAttOne
*
xattone_new
(
pwr_tAttrRef
*
objar
,
char
*
title
,
unsigned
int
priv
,
pwr_tStatus
*
sts
);
pwr_tStatus
*
sts
);
...
...
xtt/lib/xtt/src/xtt_c_object.cpp
View file @
7701b57a
...
@@ -422,7 +422,7 @@ static pwr_tStatus OpenHistory( xmenu_sMenuCall *ip)
...
@@ -422,7 +422,7 @@ static pwr_tStatus OpenHistory( xmenu_sMenuCall *ip)
sts
=
gdh_GetAttrRefTid
(
objar
,
&
classid
);
sts
=
gdh_GetAttrRefTid
(
objar
,
&
classid
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_PlotGroup
)
{
if
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_
SevHistObject
||
classid
==
pwr_cClass_
PlotGroup
)
{
sts
=
gdh_AttrrefToName
(
&
ip
->
Pointed
,
name
,
sizeof
(
name
),
sts
=
gdh_AttrrefToName
(
&
ip
->
Pointed
,
name
,
sizeof
(
name
),
cdh_mName_volumeStrict
);
cdh_mName_volumeStrict
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
...
@@ -444,7 +444,7 @@ static pwr_tStatus OpenHistory( xmenu_sMenuCall *ip)
...
@@ -444,7 +444,7 @@ static pwr_tStatus OpenHistory( xmenu_sMenuCall *ip)
// Default XttGraph found
// Default XttGraph found
sts
=
gdh_GetAttrRefTid
(
&
defhist
,
&
classid
);
sts
=
gdh_GetAttrRefTid
(
&
defhist
,
&
classid
);
if
(
ODD
(
sts
)
&&
if
(
ODD
(
sts
)
&&
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_PlotGroup
))
{
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_
SevHistObject
||
classid
==
pwr_cClass_
PlotGroup
))
{
sts
=
gdh_AttrrefToName
(
&
defhist
,
name
,
sizeof
(
name
),
sts
=
gdh_AttrrefToName
(
&
defhist
,
name
,
sizeof
(
name
),
cdh_mName_volumeStrict
);
cdh_mName_volumeStrict
);
...
@@ -467,7 +467,7 @@ static pwr_tStatus OpenHistory( xmenu_sMenuCall *ip)
...
@@ -467,7 +467,7 @@ static pwr_tStatus OpenHistory( xmenu_sMenuCall *ip)
sts
=
gdh_GetObjectClass
(
oid
,
&
classid
);
sts
=
gdh_GetObjectClass
(
oid
,
&
classid
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
classid
==
pwr_cClass_SevHist
)
{
if
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_SevHistObject
)
{
found
++
;
found
++
;
if
(
found
==
1
)
if
(
found
==
1
)
child
=
oid
;
child
=
oid
;
...
@@ -516,7 +516,7 @@ static pwr_tStatus OpenHistoryFilter( xmenu_sMenuCall *ip)
...
@@ -516,7 +516,7 @@ static pwr_tStatus OpenHistoryFilter( xmenu_sMenuCall *ip)
sts
=
gdh_GetAttrRefTid
(
objar
,
&
classid
);
sts
=
gdh_GetAttrRefTid
(
objar
,
&
classid
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_PlotGroup
)
{
if
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_
SevHistObject
||
classid
==
pwr_cClass_
PlotGroup
)
{
return
XNAV__SUCCESS
;
return
XNAV__SUCCESS
;
}
}
...
@@ -531,7 +531,7 @@ static pwr_tStatus OpenHistoryFilter( xmenu_sMenuCall *ip)
...
@@ -531,7 +531,7 @@ static pwr_tStatus OpenHistoryFilter( xmenu_sMenuCall *ip)
// Default XttGraph found
// Default XttGraph found
sts
=
gdh_GetAttrRefTid
(
&
defhist
,
&
classid
);
sts
=
gdh_GetAttrRefTid
(
&
defhist
,
&
classid
);
if
(
ODD
(
sts
)
&&
if
(
ODD
(
sts
)
&&
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_PlotGroup
))
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_
SevHistObject
||
classid
==
pwr_cClass_
PlotGroup
))
return
XNAV__SUCCESS
;
return
XNAV__SUCCESS
;
}
}
...
@@ -544,7 +544,7 @@ static pwr_tStatus OpenHistoryFilter( xmenu_sMenuCall *ip)
...
@@ -544,7 +544,7 @@ static pwr_tStatus OpenHistoryFilter( xmenu_sMenuCall *ip)
sts
=
gdh_GetObjectClass
(
child
,
&
classid
);
sts
=
gdh_GetObjectClass
(
child
,
&
classid
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
classid
==
pwr_cClass_SevHist
)
if
(
classid
==
pwr_cClass_SevHist
||
classid
==
pwr_cClass_SevHistObject
)
return
XNAV__SUCCESS
;
return
XNAV__SUCCESS
;
sts
=
gdh_GetNextSibling
(
child
,
&
child
);
sts
=
gdh_GetNextSibling
(
child
,
&
child
);
...
...
xtt/lib/xtt/src/xtt_sevhist.cpp
View file @
7701b57a
...
@@ -50,9 +50,10 @@ XttSevHist::XttSevHist( void *parent_ctx,
...
@@ -50,9 +50,10 @@ XttSevHist::XttSevHist( void *parent_ctx,
pwr_tOid
*
xn_oid
,
pwr_tOid
*
xn_oid
,
pwr_tOName
*
xn_aname
,
pwr_tOName
*
xn_aname
,
sevcli_tCtx
xn_scctx
,
sevcli_tCtx
xn_scctx
,
int
*
sts
)
:
int
*
sts
,
bool
sevhistobject
)
:
xnav
(
parent_ctx
),
gcd
(
0
),
curve
(
0
),
rows
(
0
),
vsize
(
0
),
timerid
(
0
),
close_cb
(
0
),
help_cb
(
0
),
xnav
(
parent_ctx
),
gcd
(
0
),
curve
(
0
),
rows
(
0
),
vsize
(
0
),
timerid
(
0
),
close_cb
(
0
),
help_cb
(
0
),
first_scan
(
1
),
scctx
(
xn_scctx
),
oid
(
xn_oid
[
0
]),
time_low_old
(
0
),
time_high_old
(
0
)
first_scan
(
1
),
scctx
(
xn_scctx
),
oid
(
xn_oid
[
0
]),
time_low_old
(
0
),
time_high_old
(
0
)
,
sevhistobject
(
sevhistobject
)
{
{
strncpy
(
aname
,
xn_aname
[
0
],
sizeof
(
aname
));
strncpy
(
aname
,
xn_aname
[
0
],
sizeof
(
aname
));
...
@@ -70,6 +71,9 @@ XttSevHist::~XttSevHist()
...
@@ -70,6 +71,9 @@ XttSevHist::~XttSevHist()
int
XttSevHist
::
get_data
(
pwr_tStatus
*
sts
,
pwr_tTime
from
,
pwr_tTime
to
)
int
XttSevHist
::
get_data
(
pwr_tStatus
*
sts
,
pwr_tTime
from
,
pwr_tTime
to
)
{
{
if
(
sevhistobject
)
{
return
get_objectdata
(
sts
,
from
,
to
);
}
pwr_tTime
*
tbuf
;
pwr_tTime
*
tbuf
;
void
*
vbuf
;
void
*
vbuf
;
pwr_tDeltaTime
trange
;
pwr_tDeltaTime
trange
;
...
@@ -167,6 +171,151 @@ int XttSevHist::get_data( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to)
...
@@ -167,6 +171,151 @@ int XttSevHist::get_data( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to)
return
1
;
return
1
;
}
}
int
XttSevHist
::
get_objectdata
(
pwr_tStatus
*
sts
,
pwr_tTime
from
,
pwr_tTime
to
)
{
pwr_tTime
*
tbuf
;
void
*
vbuf
;
sevcli_sHistAttr
*
histattrbuf
;
int
numAttributes
;
pwr_tDeltaTime
trange
;
sevcli_get_objectitemdata
(
sts
,
scctx
,
oid
,
aname
,
from
,
to
,
1000
,
&
tbuf
,
&
vbuf
,
&
rows
,
&
histattrbuf
,
&
numAttributes
);
if
(
EVEN
(
*
sts
))
return
0
;
// Create data for time axis
gcd
=
new
GeCurveData
(
curve_eDataType_DsTrend
);
gcd
->
data
[
0
]
=
(
double
*
)
calloc
(
1
,
8
*
rows
);
for
(
int
i
=
0
;
i
<
rows
;
i
++
)
gcd
->
data
[
0
][
i
]
=
(
double
)
tbuf
[
i
].
tv_sec
+
(
double
)
1e-9
*
tbuf
[
i
].
tv_nsec
;
strcpy
(
gcd
->
name
[
0
],
"Time"
);
gcd
->
axis_type
[
0
]
=
curve_eAxis_x
;
strcpy
(
gcd
->
format
[
0
],
"%10t"
);
//todo linesize br vi kunna f frn sevcli_get_objectitemdata
int
linesize
=
0
;
for
(
int
i
=
0
;
i
<
numAttributes
;
i
++
)
{
linesize
+=
histattrbuf
[
i
].
size
;
}
void
*
dataptr
=
vbuf
;
int
tmp
=
0
;
gcd
->
cols
=
1
;
for
(
int
i
=
0
;
i
<
numAttributes
;
i
++
)
{
switch
(
histattrbuf
[
i
].
type
)
{
case
pwr_eType_Int64
:
case
pwr_eType_Int32
:
case
pwr_eType_Int16
:
case
pwr_eType_Int8
:
case
pwr_eType_UInt64
:
case
pwr_eType_UInt32
:
case
pwr_eType_UInt16
:
case
pwr_eType_UInt8
:
case
pwr_eType_Float32
:
case
pwr_eType_Float64
:
case
pwr_eType_Boolean
:
break
;
default:
tmp
+=
histattrbuf
[
i
].
size
;
continue
;
}
if
(
gcd
->
cols
>=
CURVE_MAX_COLS
)
{
printf
(
"To many columns for curve class max:%d
\n
"
,
CURVE_MAX_COLS
);
break
;
}
gcd
->
cols
++
;
strcpy
(
gcd
->
name
[
gcd
->
cols
-
1
],
histattrbuf
[
i
].
aname
);
gcd
->
data
[
gcd
->
cols
-
1
]
=
(
double
*
)
calloc
(
1
,
8
*
rows
);
gcd
->
axis_type
[
gcd
->
cols
-
1
]
=
curve_eAxis_y
;
dataptr
=
(
char
*
)
vbuf
+
tmp
;
//tmp += histattrbuf[i].size;
for
(
int
j
=
0
;
j
<
rows
;
j
++
)
{
//dataptr = (char *)dataptr + linesize*j;
dataptr
=
((
char
*
)
vbuf
)
+
j
*
linesize
+
tmp
;
switch
(
histattrbuf
[
i
].
type
)
{
case
pwr_eType_Int64
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tInt64
*
)
dataptr
;
break
;
case
pwr_eType_Int32
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tInt32
*
)
dataptr
;
break
;
case
pwr_eType_Int16
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tInt16
*
)
dataptr
;
break
;
case
pwr_eType_Int8
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tInt8
*
)
dataptr
;
break
;
case
pwr_eType_UInt64
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tUInt64
*
)
dataptr
;
break
;
case
pwr_eType_UInt32
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tUInt32
*
)
dataptr
;
break
;
case
pwr_eType_UInt16
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tUInt16
*
)
dataptr
;
break
;
case
pwr_eType_UInt8
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tUInt8
*
)
dataptr
;
break
;
case
pwr_eType_Float32
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tFloat32
*
)
dataptr
;
break
;
case
pwr_eType_Float64
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tFloat64
*
)
dataptr
;
break
;
case
pwr_eType_Boolean
:
gcd
->
data
[
gcd
->
cols
-
1
][
j
]
=
*
(
pwr_tBoolean
*
)
dataptr
;
break
;
default:
*
sts
=
SEV__CURVETYPE
;
return
0
;
}
}
tmp
+=
histattrbuf
[
i
].
size
;
}
free
(
tbuf
);
free
(
vbuf
);
free
(
histattrbuf
);
gcd
->
rows
=
rows
;
gcd
->
get_borders
();
gcd
->
get_default_axis
();
if
(
to
.
tv_sec
!=
0
&&
from
.
tv_sec
!=
0
)
{
time_Adiff
(
&
trange
,
&
to
,
&
from
);
if
(
time_DToFloat
(
0
,
&
trange
)
<
600
)
strcpy
(
gcd
->
format
[
0
],
"%10t"
);
else
strcpy
(
gcd
->
format
[
0
],
"%11t"
);
}
else
strcpy
(
gcd
->
format
[
0
],
"%11t"
);
gcd
->
select_color
(
0
);
if
(
curve
)
{
curve
->
set_curvedata
(
gcd
);
// This will free the old gcd
curve
->
configure_curves
();
curve
->
configure_axes
();
curve
->
redraw
();
}
*
sts
=
SEV__SUCCESS
;
return
1
;
}
void
XttSevHist
::
pop
()
void
XttSevHist
::
pop
()
{
{
curve
->
pop
();
curve
->
pop
();
...
...
xtt/lib/xtt/src/xtt_sevhist.h
View file @
7701b57a
...
@@ -73,6 +73,7 @@ class XttSevHist {
...
@@ -73,6 +73,7 @@ class XttSevHist {
CoWow
*
wow
;
CoWow
*
wow
;
long
int
time_low_old
;
long
int
time_low_old
;
long
int
time_high_old
;
long
int
time_high_old
;
bool
sevhistobject
;
//!< Indicates that it is a SevHistObject
//! Constructor
//! Constructor
XttSevHist
(
void
*
xn_parent_ctx
,
XttSevHist
(
void
*
xn_parent_ctx
,
...
@@ -80,7 +81,7 @@ class XttSevHist {
...
@@ -80,7 +81,7 @@ class XttSevHist {
pwr_tOid
*
xn_oid
,
pwr_tOid
*
xn_oid
,
pwr_tOName
*
xn_aname
,
pwr_tOName
*
xn_aname
,
sevcli_tCtx
xn_scctx
,
sevcli_tCtx
xn_scctx
,
int
*
sts
);
int
*
sts
,
bool
sevhistobject
);
//! Destructor
//! Destructor
virtual
~
XttSevHist
();
virtual
~
XttSevHist
();
...
@@ -88,6 +89,7 @@ class XttSevHist {
...
@@ -88,6 +89,7 @@ class XttSevHist {
//! Pop sevhist window.
//! Pop sevhist window.
void
pop
();
void
pop
();
int
get_data
(
pwr_tStatus
*
sts
,
pwr_tTime
from
,
pwr_tTime
to
);
int
get_data
(
pwr_tStatus
*
sts
,
pwr_tTime
from
,
pwr_tTime
to
);
int
get_objectdata
(
pwr_tStatus
*
sts
,
pwr_tTime
from
,
pwr_tTime
to
);
static
void
sevhist_close_cb
(
void
*
ctx
);
static
void
sevhist_close_cb
(
void
*
ctx
);
static
void
sevhist_higher_res_cb
(
void
*
ctx
);
static
void
sevhist_higher_res_cb
(
void
*
ctx
);
...
...
xtt/lib/xtt/src/xtt_xnav.h
View file @
7701b57a
...
@@ -337,7 +337,7 @@ class XNav {
...
@@ -337,7 +337,7 @@ class XNav {
virtual
XttTrend
*
xtttrend_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tAttrRef
*
plotgroup
,
virtual
XttTrend
*
xtttrend_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tAttrRef
*
plotgroup
,
pwr_tStatus
*
sts
)
{
return
0
;}
pwr_tStatus
*
sts
)
{
return
0
;}
virtual
XttSevHist
*
xttsevhist_new
(
char
*
name
,
pwr_tOid
*
oid
,
pwr_tOName
*
aname
,
virtual
XttSevHist
*
xttsevhist_new
(
char
*
name
,
pwr_tOid
*
oid
,
pwr_tOName
*
aname
,
sevcli_tCtx
scctx
,
pwr_tStatus
*
sts
)
{
return
0
;}
sevcli_tCtx
scctx
,
pwr_tStatus
*
sts
,
bool
sevhistobject
=
false
)
{
return
0
;}
virtual
XttFast
*
xttfast_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tStatus
*
sts
)
{
return
0
;}
virtual
XttFast
*
xttfast_new
(
char
*
name
,
pwr_tAttrRef
*
objar
,
pwr_tStatus
*
sts
)
{
return
0
;}
virtual
XAttOne
*
xattone_new
(
pwr_tAttrRef
*
objar
,
char
*
title
,
unsigned
int
priv
,
virtual
XAttOne
*
xattone_new
(
pwr_tAttrRef
*
objar
,
char
*
title
,
unsigned
int
priv
,
pwr_tStatus
*
sts
)
{
return
0
;}
pwr_tStatus
*
sts
)
{
return
0
;}
...
...
xtt/lib/xtt/src/xtt_xnav_command.cpp
View file @
7701b57a
...
@@ -3120,6 +3120,7 @@ static int xnav_open_func( void *client_data,
...
@@ -3120,6 +3120,7 @@ static int xnav_open_func( void *client_data,
pwr_tAttrRef
aref
;
pwr_tAttrRef
aref
;
pwr_tAName
aname
;
pwr_tAName
aname
;
char
*
s
;
char
*
s
;
bool
sevHistObjectFound
=
false
;
// Command is "OPEN HISTORY"
// Command is "OPEN HISTORY"
...
@@ -3177,6 +3178,9 @@ static int xnav_open_func( void *client_data,
...
@@ -3177,6 +3178,9 @@ static int xnav_open_func( void *client_data,
switch
(
classid
)
{
switch
(
classid
)
{
case
pwr_cClass_SevHist
:
case
pwr_cClass_SevHist
:
break
;
break
;
case
pwr_cClass_SevHistObject
:
sevHistObjectFound
=
true
;
break
;
case
pwr_cClass_PlotGroup
:
case
pwr_cClass_PlotGroup
:
xnav
->
message
(
'E'
,
"Not yet implemented"
);
xnav
->
message
(
'E'
,
"Not yet implemented"
);
return
XNAV__HOLDCOMMAND
;
return
XNAV__HOLDCOMMAND
;
...
@@ -3187,6 +3191,29 @@ static int xnav_open_func( void *client_data,
...
@@ -3187,6 +3191,29 @@ static int xnav_open_func( void *client_data,
if
(
plotgroup_found
)
if
(
plotgroup_found
)
break
;
break
;
if
(
sevHistObjectFound
)
{
sts
=
gdh_ArefANameToAref
(
&
sevhist_aref
,
"Object"
,
&
attr_aref
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_GetObjectInfoAttrref
(
&
attr_aref
,
&
aref
,
sizeof
(
aref
));
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_AttrrefToName
(
&
aref
,
aname
,
sizeof
(
aname
),
cdh_mNName
);
if
(
EVEN
(
sts
))
{
xnav
->
message
(
'E'
,
"Error in SevHist configuration"
);
return
XNAV__HOLDCOMMAND
;
}
s
=
strchr
(
aname
,
'.'
);
if
(
!
s
)
{
//It is a complete object
anamev
[
i
][
0
]
=
'\0'
;
}
else
{
strcpy
(
anamev
[
i
],
s
+
1
);
}
oidv
[
i
]
=
aref
.
Objid
;
}
else
{
sts
=
gdh_ArefANameToAref
(
&
sevhist_aref
,
"Attribute"
,
&
attr_aref
);
sts
=
gdh_ArefANameToAref
(
&
sevhist_aref
,
"Attribute"
,
&
attr_aref
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
...
@@ -3206,6 +3233,7 @@ static int xnav_open_func( void *client_data,
...
@@ -3206,6 +3233,7 @@ static int xnav_open_func( void *client_data,
strcpy
(
anamev
[
i
],
s
+
1
);
strcpy
(
anamev
[
i
],
s
+
1
);
oidv
[
i
]
=
aref
.
Objid
;
oidv
[
i
]
=
aref
.
Objid
;
}
// Get server and connect to server
// Get server and connect to server
sts
=
gdh_ArefANameToAref
(
&
sevhist_aref
,
"ThreadObject"
,
&
attr_aref
);
sts
=
gdh_ArefANameToAref
(
&
sevhist_aref
,
"ThreadObject"
,
&
attr_aref
);
...
@@ -3251,6 +3279,12 @@ static int xnav_open_func( void *client_data,
...
@@ -3251,6 +3279,12 @@ static int xnav_open_func( void *client_data,
xnav
->
message
(
'E'
,
"Not yet implemented"
);
xnav
->
message
(
'E'
,
"Not yet implemented"
);
return
XNAV__HOLDCOMMAND
;
return
XNAV__HOLDCOMMAND
;
}
}
else
if
(
sevHistObjectFound
)
{
hist
=
xnav
->
xttsevhist_new
(
title_str
,
oidv
,
anamev
,
xnav
->
scctx
,
&
sts
,
true
);
if
(
ODD
(
sts
))
{
hist
->
help_cb
=
xnav_sevhist_help_cb
;
}
}
else
{
else
{
hist
=
xnav
->
xttsevhist_new
(
title_str
,
oidv
,
anamev
,
xnav
->
scctx
,
&
sts
);
hist
=
xnav
->
xttsevhist_new
(
title_str
,
oidv
,
anamev
,
xnav
->
scctx
,
&
sts
);
if
(
ODD
(
sts
))
{
if
(
ODD
(
sts
))
{
...
...
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