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
1b910a70
Commit
1b910a70
authored
Jan 09, 2018
by
Claes Sjofors
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sev server threads
parent
56e6ae1b
Changes
23
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
780 additions
and
238 deletions
+780
-238
sev/exe/sev_server/src/sev_server.cpp
sev/exe/sev_server/src/sev_server.cpp
+262
-80
sev/exe/sev_server/src/sev_server.h
sev/exe/sev_server/src/sev_server.h
+32
-1
sev/lib/sev/src/sev_db.cpp
sev/lib/sev/src/sev_db.cpp
+9
-9
sev/lib/sev/src/sev_db.h
sev/lib/sev/src/sev_db.h
+16
-4
sev/lib/sev/src/sev_db_tree.cpp
sev/lib/sev/src/sev_db_tree.cpp
+2
-2
sev/lib/sev/src/sev_dbhdf5.cpp
sev/lib/sev/src/sev_dbhdf5.cpp
+2
-2
sev/lib/sev/src/sev_dbhdf5.h
sev/lib/sev/src/sev_dbhdf5.h
+2
-2
sev/lib/sev/src/sev_dbms.cpp
sev/lib/sev/src/sev_dbms.cpp
+103
-67
sev/lib/sev/src/sev_dbms.h
sev/lib/sev/src/sev_dbms.h
+13
-13
sev/lib/sev/src/sev_dbsqlite.cpp
sev/lib/sev/src/sev_dbsqlite.cpp
+4
-4
sev/lib/sev/src/sev_dbsqlite.h
sev/lib/sev/src/sev_dbsqlite.h
+4
-4
sev/lib/sev/src/sev_valuecache.cpp
sev/lib/sev/src/sev_valuecache.cpp
+13
-13
sev/lib/sev/src/sev_valuecache.h
sev/lib/sev/src/sev_valuecache.h
+11
-11
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
+3
-1
src/lib/rt/src/rt_lst.h
src/lib/rt/src/rt_lst.h
+8
-1
src/lib/rt/src/rt_que.h
src/lib/rt/src/rt_que.h
+8
-1
src/lib/rt/src/rt_sev_net.h
src/lib/rt/src/rt_sev_net.h
+39
-20
src/lib/rt/src/rt_sevcli.c
src/lib/rt/src/rt_sevcli.c
+5
-0
src/lib/rt/src/rt_sync.h
src/lib/rt/src/rt_sync.h
+8
-1
src/lib/rt/src/rt_thread.h
src/lib/rt/src/rt_thread.h
+8
-1
src/wbl/pwrb/src/pwrb_c_a_sevserverthread.wb_load
src/wbl/pwrb/src/pwrb_c_a_sevserverthread.wb_load
+138
-0
src/wbl/pwrb/src/pwrb_c_sevhistthread.wb_load
src/wbl/pwrb/src/pwrb_c_sevhistthread.wb_load
+10
-0
src/wbl/pwrb/src/pwrb_c_sevserver.wb_load
src/wbl/pwrb/src/pwrb_c_sevserver.wb_load
+80
-1
No files found.
sev/exe/sev_server/src/sev_server.cpp
View file @
1b910a70
This diff is collapsed.
Click to expand it.
sev/exe/sev_server/src/sev_server.h
View file @
1b910a70
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
#include "pwr.h"
#include "pwr.h"
#include "pwr_class.h"
#include "pwr_class.h"
#include "pwr_baseclasses.h"
#include "pwr_baseclasses.h"
#include "rt_que.h"
#include "rt_sev_net.h"
#include "rt_sev_net.h"
#include "sev_db.h"
#include "sev_db.h"
...
@@ -68,11 +69,35 @@ typedef struct {
...
@@ -68,11 +69,35 @@ typedef struct {
unsigned
int
item_idx
;
unsigned
int
item_idx
;
}
sev_sHistDataThread
;
}
sev_sHistDataThread
;
typedef
struct
{
int
key
;
pthread_t
thread
;
que_sQue
queue
;
int
alloc
;
void
*
db_ctx
;
int
conf_idx
;
}
sev_sThread
;
typedef
struct
{
void
*
ctx
;
sev_sThread
*
th
;
}
sev_sReceiveHistDataThread
;
typedef
struct
{
lst_sEntry
e
;
net_sTime
time
;
int
size
;
char
data
[
1
];
}
sev_sReceiveHistDataMsg
;
typedef
map
<
int
,
sev_sThread
*>::
iterator
threadlist_iterator
;
class
sev_server
{
class
sev_server
{
public:
public:
sev_server
()
:
m_server_status
(
0
),
m_refid
(
0
),
m_msg_id
(
0
),
m_storage_cnt
(
0
),
sev_server
()
:
m_server_status
(
0
),
m_refid
(
0
),
m_msg_id
(
0
),
m_storage_cnt
(
0
),
m_db_type
(
sev_eDbType_Sqlite
),
m_config
(
0
),
m_read_threads
(
0
)
{
memset
(
&
m_stat
,
0
,
sizeof
(
m_stat
));}
m_db_type
(
sev_eDbType_Sqlite
),
m_config
(
0
),
m_thread_cnt
(
0
),
m_read_threads
(
0
)
{
memset
(
&
m_stat
,
0
,
sizeof
(
m_stat
));}
pwr_tStatus
m_sts
;
pwr_tStatus
m_sts
;
pwr_tStatus
m_server_status
;
pwr_tStatus
m_server_status
;
...
@@ -85,8 +110,10 @@ class sev_server {
...
@@ -85,8 +110,10 @@ class sev_server {
sev_sStat
m_stat
;
sev_sStat
m_stat
;
sev_eDbType
m_db_type
;
sev_eDbType
m_db_type
;
pwr_sClass_SevServer
*
m_config
;
pwr_sClass_SevServer
*
m_config
;
unsigned
int
m_thread_cnt
;
pwr_tDlid
m_config_dlid
;
pwr_tDlid
m_config_dlid
;
int
m_read_threads
;
int
m_read_threads
;
map
<
int
,
sev_sThread
*>
m_thread_list
;
int
init
(
int
noneth
);
int
init
(
int
noneth
);
int
connect
();
int
connect
();
...
@@ -103,6 +130,10 @@ class sev_server {
...
@@ -103,6 +130,10 @@ class sev_server {
void
garbage_collector
();
void
garbage_collector
();
void
garbage_item
(
int
idx
);
void
garbage_item
(
int
idx
);
void
set_dbtype
(
sev_eDbType
type
)
{
m_db_type
=
type
;}
void
set_dbtype
(
sev_eDbType
type
)
{
m_db_type
=
type
;}
sev_sThread
*
find_thread
(
int
key
);
static
void
*
receive_histdata_thread
(
void
*
arg
);
sev_sThread
*
create_thread
(
int
key
);
void
delete_thread
(
int
key
);
static
void
*
send_histdata_thread
(
void
*
arg
);
static
void
*
send_histdata_thread
(
void
*
arg
);
};
};
...
...
sev/lib/sev/src/sev_db.cpp
View file @
1b910a70
...
@@ -45,35 +45,35 @@
...
@@ -45,35 +45,35 @@
#include "rt_sev_msg.h"
#include "rt_sev_msg.h"
sev_db
*
sev_db
::
open_database
(
sev_eDbType
type
)
sev_db
*
sev_db
::
open_database
(
sev_eDbType
type
,
sev_sDbConfig
*
cnf
)
{
{
sev_db
*
db
=
0
;
if
(
type
==
sev_eDbType_Mysql
)
{
if
(
type
==
sev_eDbType_Mysql
)
{
#if defined PWRE_CONF_MYSQL
#if defined PWRE_CONF_MYSQL
return
sev_dbms
::
open_database
();
db
=
sev_dbms
::
open_database
();
#else
#else
printf
(
"** Release is not built with mysql
\n
"
);
printf
(
"** Release is not built with mysql
\n
"
);
return
0
;
#endif
#endif
}
}
else
if
(
type
==
sev_eDbType_Sqlite
)
{
else
if
(
type
==
sev_eDbType_Sqlite
)
{
#if defined PWRE_CONF_SQLITE3
#if defined PWRE_CONF_SQLITE3
return
sev_dbsqlite
::
open_database
();
db
=
sev_dbsqlite
::
open_database
();
#else
#else
printf
(
"** Release is not built with sqlite3
\n
"
);
printf
(
"** Release is not built with sqlite3
\n
"
);
return
0
;
#endif
#endif
}
}
else
if
(
type
==
sev_eDbType_HDF5
)
{
else
if
(
type
==
sev_eDbType_HDF5
)
{
#if defined PWRE_CONF_HDF5
#if defined PWRE_CONF_HDF5
return
sev_dbhdf5
::
open_database
();
db
=
sev_dbhdf5
::
open_database
();
#else
#else
printf
(
"** Release is not built with HDF5
\n
"
);
printf
(
"** Release is not built with HDF5
\n
"
);
return
0
;
#endif
#endif
}
}
else
if
(
db
)
return
0
;
db
->
m_cnf
=
*
cnf
;
return
db
;
}
}
int
sev_db
::
get_systemname
(
char
*
name
)
int
sev_db
::
get_systemname
(
char
*
name
)
...
...
sev/lib/sev/src/sev_db.h
View file @
1b910a70
...
@@ -57,6 +57,16 @@ typedef enum {
...
@@ -57,6 +57,16 @@ typedef enum {
sev_eDbType_HDF5
sev_eDbType_HDF5
}
sev_eDbType
;
}
sev_eDbType
;
typedef
struct
{
float
LinearRegrMaxTime
;
int
LinearRegrAll
;
int
MeanValueAll
;
float
MeanValueInterval1
;
float
MeanValueInterval2
;
pwr_tFileName
Socket
;
char
Engine
[
80
];
}
sev_sDbConfig
;
typedef
struct
{
typedef
struct
{
float
current_load
;
float
current_load
;
float
medium_load
;
float
medium_load
;
...
@@ -184,6 +194,7 @@ class sev_db {
...
@@ -184,6 +194,7 @@ class sev_db {
vector
<
sev_item
>
m_items
;
vector
<
sev_item
>
m_items
;
float
m_meanvalue_interval1
;
float
m_meanvalue_interval1
;
float
m_meanvalue_interval2
;
float
m_meanvalue_interval2
;
sev_sDbConfig
m_cnf
;
sev_db
()
:
m_meanvalue_interval1
(
0
),
m_meanvalue_interval2
(
0
)
{}
sev_db
()
:
m_meanvalue_interval1
(
0
),
m_meanvalue_interval2
(
0
)
{}
virtual
~
sev_db
()
{}
virtual
~
sev_db
()
{}
...
@@ -203,7 +214,7 @@ class sev_db {
...
@@ -203,7 +214,7 @@ class sev_db {
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
)
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
)
{
*
sts
=
0
;
return
0
;}
{
*
sts
=
0
;
return
0
;}
virtual
int
delete_item
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
aname
)
{
*
sts
=
0
;
return
0
;}
virtual
int
delete_item
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
aname
)
{
*
sts
=
0
;
return
0
;}
virtual
int
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
virtual
int
store_value
(
pwr_tStatus
*
sts
,
void
*
thread
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
{
*
sts
=
0
;
return
0
;}
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
{
*
sts
=
0
;
return
0
;}
virtual
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
virtual
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
pwr_eType
type
,
char
*
aname
,
pwr_eType
type
,
...
@@ -243,11 +254,12 @@ class sev_db {
...
@@ -243,11 +254,12 @@ class sev_db {
virtual
int
alter_engine
(
pwr_tStatus
*
sts
,
char
*
tablename
)
{
*
sts
=
0
;
return
0
;}
virtual
int
alter_engine
(
pwr_tStatus
*
sts
,
char
*
tablename
)
{
*
sts
=
0
;
return
0
;}
virtual
int
optimize
(
pwr_tStatus
*
sts
,
char
*
tablename
)
{
*
sts
=
0
;
return
0
;}
virtual
int
optimize
(
pwr_tStatus
*
sts
,
char
*
tablename
)
{
*
sts
=
0
;
return
0
;}
virtual
int
store_stat
(
sev_sStat
*
stat
)
{
return
0
;}
virtual
int
store_stat
(
sev_sStat
*
stat
)
{
return
0
;}
virtual
int
begin_transaction
()
{
return
0
;}
virtual
int
begin_transaction
(
void
*
thread
)
{
return
0
;}
virtual
int
commit_transaction
()
{
return
0
;}
virtual
int
commit_transaction
(
void
*
thread
)
{
return
0
;}
virtual
char
*
dbName
()
{
return
0
;}
virtual
char
*
dbName
()
{
return
0
;}
virtual
void
*
new_thread
()
{
return
0
;}
static
sev_db
*
open_database
(
sev_eDbType
type
);
static
sev_db
*
open_database
(
sev_eDbType
type
,
sev_sDbConfig
*
cnf
);
static
int
get_systemname
(
char
*
name
);
static
int
get_systemname
(
char
*
name
);
};
};
#endif
#endif
sev/lib/sev/src/sev_db_tree.cpp
View file @
1b910a70
...
@@ -226,9 +226,9 @@ pwr_tStatus sev_db::tree_update_value( int item_idx, pwr_tTime time, void *buf)
...
@@ -226,9 +226,9 @@ pwr_tStatus sev_db::tree_update_value( int item_idx, pwr_tTime time, void *buf)
}
}
if
(
m_items
[
item_idx
].
options
&
pwr_mSevOptionsMask_MeanValue1
)
if
(
m_items
[
item_idx
].
options
&
pwr_mSevOptionsMask_MeanValue1
)
interval
=
m_
meanvalue_i
nterval1
;
interval
=
m_
cnf
.
MeanValueI
nterval1
;
else
if
(
m_items
[
item_idx
].
options
&
pwr_mSevOptionsMask_MeanValue2
)
else
if
(
m_items
[
item_idx
].
options
&
pwr_mSevOptionsMask_MeanValue2
)
interval
=
m_
meanvalue_i
nterval2
;
interval
=
m_
cnf
.
MeanValueI
nterval2
;
if
(
interval
!=
0
)
{
if
(
interval
!=
0
)
{
pwr_tDeltaTime
dtime
;
pwr_tDeltaTime
dtime
;
...
...
sev/lib/sev/src/sev_dbhdf5.cpp
View file @
1b910a70
...
@@ -2172,7 +2172,7 @@ int sev_dbhdf5::get_items( pwr_tStatus *sts)
...
@@ -2172,7 +2172,7 @@ int sev_dbhdf5::get_items( pwr_tStatus *sts)
return
1
;
return
1
;
}
}
int
sev_dbhdf5
::
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
sev_dbhdf5
::
store_value
(
pwr_tStatus
*
sts
,
void
*
thread
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
{
{
sev_uDataType
data
;
sev_uDataType
data
;
...
@@ -4872,4 +4872,4 @@ sev_dbhdf5::~sev_dbhdf5()
...
@@ -4872,4 +4872,4 @@ sev_dbhdf5::~sev_dbhdf5()
#else
#else
extern
int
no_sev_dbhdf5
;
extern
int
no_sev_dbhdf5
;
int
no_sev_dbhdf5
=
0
;
int
no_sev_dbhdf5
=
0
;
#endif
#endif
\ No newline at end of file
sev/lib/sev/src/sev_dbhdf5.h
View file @
1b910a70
...
@@ -777,7 +777,7 @@ class sev_dbhdf5 : public sev_db {
...
@@ -777,7 +777,7 @@ class sev_dbhdf5 : public sev_db {
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
char
*
description
,
char
*
unit
,
pwr_tFloat32
scantime
,
char
*
description
,
char
*
unit
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
int
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
store_value
(
pwr_tStatus
*
sts
,
void
*
thread
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
...
@@ -861,4 +861,4 @@ class sev_dbhdf5 : public sev_db {
...
@@ -861,4 +861,4 @@ class sev_dbhdf5 : public sev_db {
};
};
#endif
#endif
#endif
#endif
\ No newline at end of file
sev/lib/sev/src/sev_dbms.cpp
View file @
1b910a70
This diff is collapsed.
Click to expand it.
sev/lib/sev/src/sev_dbms.h
View file @
1b910a70
...
@@ -49,7 +49,6 @@ using namespace std;
...
@@ -49,7 +49,6 @@ using namespace std;
class
sev_dbms_env
;
class
sev_dbms_env
;
class
sev_dbms_env
class
sev_dbms_env
{
{
public:
public:
...
@@ -81,8 +80,10 @@ class sev_dbms_env
...
@@ -81,8 +80,10 @@ class sev_dbms_env
int
open
(
void
);
int
open
(
void
);
int
open
(
const
char
*
fileName
);
int
open
(
const
char
*
fileName
);
#if 0
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);
#endif
int
checkAndUpdateVersion
(
unsigned
int
version
);
int
checkAndUpdateVersion
(
unsigned
int
version
);
int
updateDBToSevVersion2
(
void
);
int
updateDBToSevVersion2
(
void
);
...
@@ -90,6 +91,7 @@ class sev_dbms_env
...
@@ -90,6 +91,7 @@ class sev_dbms_env
int
createSevVersion3Tables
(
void
);
int
createSevVersion3Tables
(
void
);
MYSQL
*
createDb
(
void
);
MYSQL
*
createDb
(
void
);
MYSQL
*
openDb
(
unsigned
int
*
sts
);
MYSQL
*
openDb
(
unsigned
int
*
sts
);
MYSQL
*
open_thread
(
unsigned
int
*
sts
);
bool
exists
()
{
return
m_exists
;}
bool
exists
()
{
return
m_exists
;}
int
close
(
void
);
int
close
(
void
);
static
int
get_systemname
();
static
int
get_systemname
();
...
@@ -125,9 +127,6 @@ class sev_dbms : public sev_db {
...
@@ -125,9 +127,6 @@ class sev_dbms : public sev_db {
static
const
unsigned
int
constMaxColNameLength
=
64
;
static
const
unsigned
int
constMaxColNameLength
=
64
;
sev_dbms_env
*
m_env
;
sev_dbms_env
*
m_env
;
double
m_linearregr_maxtime
;
int
m_linearregr_all
;
int
m_meanvalue1_all
;
sev_dbms
(
sev_dbms_env
*
env
);
sev_dbms
(
sev_dbms_env
*
env
);
~
sev_dbms
();
~
sev_dbms
();
...
@@ -140,10 +139,10 @@ class sev_dbms : public sev_db {
...
@@ -140,10 +139,10 @@ class sev_dbms : public sev_db {
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
char
*
description
,
char
*
unit
,
pwr_tFloat32
scantime
,
char
*
description
,
char
*
unit
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
int
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
store_value
(
pwr_tStatus
*
sts
,
void
*
thread
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
int
write_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
write_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
,
void
*
thread
);
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
pwr_tTime
*
starttime
,
pwr_tTime
*
starttime
,
...
@@ -166,9 +165,9 @@ class sev_dbms : public sev_db {
...
@@ -166,9 +165,9 @@ class sev_dbms : public sev_db {
char
*
dbName
()
{
return
sev_dbms_env
::
dbName
();}
char
*
dbName
()
{
return
sev_dbms_env
::
dbName
();}
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
);
static
void
write_db_cb
(
void
*
data
,
int
idx
,
void
*
value
,
pwr_tTime
*
time
);
static
void
write_db_cb
(
void
*
data
,
int
idx
,
void
*
value
,
pwr_tTime
*
time
,
void
*
thread
);
int
check_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
int
check_objectitem
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tOid
oid
,
char
*
oname
,
char
*
aname
,
pwr_tDeltaTime
storagetime
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
attrnum
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
attrnum
,
sev_sHistAttr
*
attr
,
unsigned
int
*
idx
);
sev_sHistAttr
*
attr
,
unsigned
int
*
idx
);
...
@@ -181,8 +180,8 @@ class sev_dbms : public sev_db {
...
@@ -181,8 +180,8 @@ class sev_dbms : public sev_db {
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tDeltaTime
storagetime
,
char
*
description
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
);
pwr_tFloat32
deadband
,
pwr_tMask
options
);
int
create_objecttable
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tMask
options
,
float
deadband
);
int
create_objecttable
(
pwr_tStatus
*
sts
,
char
*
tablename
,
pwr_tMask
options
,
float
deadband
);
int
store_objectvalue
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
store_objectvalue
(
pwr_tStatus
*
sts
,
void
*
thread
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
void
*
oldbuf
,
unsigned
int
size
);
pwr_tTime
time
,
void
*
buf
,
void
*
oldbuf
,
unsigned
int
size
);
int
get_item
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
pwr_tOid
oid
,
char
*
attributename
);
int
get_item
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
pwr_tOid
oid
,
char
*
attributename
);
int
get_objectitem
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
pwr_tOid
oid
,
char
*
attributename
);
int
get_objectitem
(
pwr_tStatus
*
sts
,
sev_item
*
item
,
pwr_tOid
oid
,
char
*
attributename
);
int
get_objectitems
(
pwr_tStatus
*
sts
);
int
get_objectitems
(
pwr_tStatus
*
sts
);
...
@@ -207,8 +206,9 @@ class sev_dbms : public sev_db {
...
@@ -207,8 +206,9 @@ class sev_dbms : public sev_db {
int
optimize
(
pwr_tStatus
*
sts
,
char
*
tablename
);
int
optimize
(
pwr_tStatus
*
sts
,
char
*
tablename
);
int
store_stat
(
sev_sStat
*
stat
);
int
store_stat
(
sev_sStat
*
stat
);
void
add_cache
(
int
item_idx
);
void
add_cache
(
int
item_idx
);
int
begin_transaction
();
int
begin_transaction
(
void
*
thread
);
int
commit_transaction
();
int
commit_transaction
(
void
*
thread
);
void
*
new_thread
();
int
get_closest_time
(
char
*
tablename
,
unsigned
int
options
,
pwr_tTime
*
time
,
int
before
,
int
get_closest_time
(
char
*
tablename
,
unsigned
int
options
,
pwr_tTime
*
time
,
int
before
,
unsigned
int
*
id
);
unsigned
int
*
id
);
void
string_to_mysqlstring
(
char
*
in
,
char
*
out
,
int
size
);
void
string_to_mysqlstring
(
char
*
in
,
char
*
out
,
int
size
);
...
...
sev/lib/sev/src/sev_dbsqlite.cpp
View file @
1b910a70
...
@@ -595,7 +595,7 @@ int sev_dbsqlite::get_items( pwr_tStatus *sts)
...
@@ -595,7 +595,7 @@ int sev_dbsqlite::get_items( pwr_tStatus *sts)
return
1
;
return
1
;
}
}
int
sev_dbsqlite
::
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
sev_dbsqlite
::
store_value
(
pwr_tStatus
*
sts
,
void
*
thread
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
{
{
if
(
size
!=
m_items
[
item_idx
].
value_size
)
{
if
(
size
!=
m_items
[
item_idx
].
value_size
)
{
...
@@ -3361,7 +3361,7 @@ int sev_dbsqlite::store_stat( sev_sStat *stat)
...
@@ -3361,7 +3361,7 @@ int sev_dbsqlite::store_stat( sev_sStat *stat)
return
1
;
return
1
;
}
}
int
sev_dbsqlite
::
begin_transaction
()
int
sev_dbsqlite
::
begin_transaction
(
void
*
thread
)
{
{
char
query
[
20
];
char
query
[
20
];
char
*
errmsg
;
char
*
errmsg
;
...
@@ -3378,7 +3378,7 @@ int sev_dbsqlite::begin_transaction()
...
@@ -3378,7 +3378,7 @@ int sev_dbsqlite::begin_transaction()
return
1
;
return
1
;
}
}
int
sev_dbsqlite
::
commit_transaction
()
int
sev_dbsqlite
::
commit_transaction
(
void
*
thread
)
{
{
char
query
[
20
];
char
query
[
20
];
char
*
errmsg
;
char
*
errmsg
;
...
@@ -3409,4 +3409,4 @@ sev_dbsqlite::~sev_dbsqlite()
...
@@ -3409,4 +3409,4 @@ sev_dbsqlite::~sev_dbsqlite()
#else
#else
extern
int
no_sev_dbsqlite
;
extern
int
no_sev_dbsqlite
;
int
no_sev_dbsqlite
=
0
;
int
no_sev_dbsqlite
=
0
;
#endif
#endif
\ No newline at end of file
sev/lib/sev/src/sev_dbsqlite.h
View file @
1b910a70
...
@@ -75,7 +75,7 @@ class sev_dbsqlite : public sev_db {
...
@@ -75,7 +75,7 @@ class sev_dbsqlite : public sev_db {
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tDeltaTime
storagetime
,
pwr_eType
type
,
unsigned
int
size
,
char
*
description
,
char
*
unit
,
pwr_tFloat32
scantime
,
char
*
description
,
char
*
unit
,
pwr_tFloat32
scantime
,
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
pwr_tFloat32
deadband
,
pwr_tMask
options
,
unsigned
int
*
idx
);
int
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
store_value
(
pwr_tStatus
*
sts
,
void
*
thread
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
...
@@ -137,8 +137,8 @@ class sev_dbsqlite : public sev_db {
...
@@ -137,8 +137,8 @@ class sev_dbsqlite : public sev_db {
int
repair_table
(
pwr_tStatus
*
sts
,
char
*
tablename
);
int
repair_table
(
pwr_tStatus
*
sts
,
char
*
tablename
);
int
alter_engine
(
pwr_tStatus
*
sts
,
char
*
tablename
);
int
alter_engine
(
pwr_tStatus
*
sts
,
char
*
tablename
);
int
store_stat
(
sev_sStat
*
stat
);
int
store_stat
(
sev_sStat
*
stat
);
int
begin_transaction
();
int
begin_transaction
(
void
*
thread
);
int
commit_transaction
();
int
commit_transaction
(
void
*
thread
);
inline
char
*
create_colName
(
unsigned
int
index
,
char
*
attributename
)
{
inline
char
*
create_colName
(
unsigned
int
index
,
char
*
attributename
)
{
static
char
colName
[
constMaxColNameLength
];
static
char
colName
[
constMaxColNameLength
];
strncpy
(
colName
,
attributename
,
constMaxColNameLength
);
strncpy
(
colName
,
attributename
,
constMaxColNameLength
);
...
@@ -151,4 +151,4 @@ class sev_dbsqlite : public sev_db {
...
@@ -151,4 +151,4 @@ class sev_dbsqlite : public sev_db {
}
}
};
};
#endif
#endif
#endif
#endif
\ No newline at end of file
sev/lib/sev/src/sev_valuecache.cpp
View file @
1b910a70
...
@@ -64,7 +64,7 @@ sev_sCacheValueDouble& sev_valuecache_double::operator[]( const int index)
...
@@ -64,7 +64,7 @@ sev_sCacheValueDouble& sev_valuecache_double::operator[]( const int index)
return
m_val
[
idx
(
index
)];
return
m_val
[
idx
(
index
)];
}
}
void
sev_valuecache_double
::
add
(
void
*
value
,
pwr_tTime
*
t
)
void
sev_valuecache_double
::
add
(
void
*
value
,
pwr_tTime
*
t
,
void
*
thread
)
{
{
double
val
=
*
(
double
*
)
value
;
double
val
=
*
(
double
*
)
value
;
double
time
;
double
time
;
...
@@ -96,7 +96,7 @@ void sev_valuecache_double::add( void *value, pwr_tTime *t)
...
@@ -96,7 +96,7 @@ void sev_valuecache_double::add( void *value, pwr_tTime *t)
}
}
}
}
if
(
!
m_inited
)
{
if
(
!
m_inited
)
{
write
(
0
);
write
(
0
,
thread
);
m_inited
=
true
;
m_inited
=
true
;
return
;
return
;
}
}
...
@@ -110,7 +110,7 @@ void sev_valuecache_double::add( void *value, pwr_tTime *t)
...
@@ -110,7 +110,7 @@ void sev_valuecache_double::add( void *value, pwr_tTime *t)
calculate_epsilon
(
0
);
calculate_epsilon
(
0
);
}
}
void
sev_valuecache_double
::
evaluate
(
double
maxtime
)
void
sev_valuecache_double
::
evaluate
(
double
maxtime
,
void
*
thread
)
{
{
int
value_added
=
1
;
int
value_added
=
1
;
...
@@ -118,7 +118,7 @@ void sev_valuecache_double::evaluate( double maxtime)
...
@@ -118,7 +118,7 @@ void sev_valuecache_double::evaluate( double maxtime)
if
(
(
maxtime
!=
0
&&
(
m_val
[
m_last
].
time
-
m_wval
.
time
)
>
maxtime
)
||
if
(
(
maxtime
!=
0
&&
(
m_val
[
m_last
].
time
-
m_wval
.
time
)
>
maxtime
)
||
!
check_deadband
())
{
!
check_deadband
())
{
// Store optimal value
// Store optimal value
write
(
m_last_opt_write
+
value_added
);
write
(
m_last_opt_write
+
value_added
,
thread
);
}
}
else
else
break
;
break
;
...
@@ -158,7 +158,7 @@ void sev_valuecache_double::calculate_k()
...
@@ -158,7 +158,7 @@ void sev_valuecache_double::calculate_k()
}
}
}
}
void
sev_valuecache_double
::
write
(
int
index
)
void
sev_valuecache_double
::
write
(
int
index
,
void
*
thread
)
{
{
int
ii
=
idx
(
index
);
int
ii
=
idx
(
index
);
double
wval
,
wtime
;
double
wval
,
wtime
;
...
@@ -196,7 +196,7 @@ void sev_valuecache_double::write( int index)
...
@@ -196,7 +196,7 @@ void sev_valuecache_double::write( int index)
if
(
m_write_cb
)
{
if
(
m_write_cb
)
{
pwr_tTime
time
;
pwr_tTime
time
;
time_Aadd
(
&
time
,
&
m_start_time
,
time_Float64ToD
(
0
,
wtime
));
time_Aadd
(
&
time
,
&
m_start_time
,
time_Float64ToD
(
0
,
wtime
));
(
m_write_cb
)(
m_userdata
,
m_useridx
,
&
wval
,
&
time
);
(
m_write_cb
)(
m_userdata
,
m_useridx
,
&
wval
,
&
time
,
thread
);
}
}
}
}
...
@@ -274,29 +274,29 @@ int sev_valuecache_double::get_optimal_write()
...
@@ -274,29 +274,29 @@ int sev_valuecache_double::get_optimal_write()
return
min_idx
;
return
min_idx
;
}
}
void
sev_valuecache_bool
::
add
(
void
*
value
,
pwr_tTime
*
t
)
void
sev_valuecache_bool
::
add
(
void
*
value
,
pwr_tTime
*
t
,
void
*
thread
)
{
{
m_val
.
val
=
*
(
pwr_tBoolean
*
)
value
;
m_val
.
val
=
*
(
pwr_tBoolean
*
)
value
;
m_val
.
time
=
*
t
;
m_val
.
time
=
*
t
;
if
(
!
m_inited
)
{
if
(
!
m_inited
)
{
// Store val
eu
// Store val
ue
write
(
0
);
write
(
0
,
thread
);
m_inited
=
true
;
m_inited
=
true
;
}
}
}
}
void
sev_valuecache_bool
::
evaluate
(
double
maxtime
)
void
sev_valuecache_bool
::
evaluate
(
double
maxtime
,
void
*
thread
)
{
{
if
(
m_val
.
val
!=
m_wval
.
val
)
{
if
(
m_val
.
val
!=
m_wval
.
val
)
{
write
(
0
);
write
(
0
,
thread
);
}
}
}
}
void
sev_valuecache_bool
::
write
(
int
index
)
void
sev_valuecache_bool
::
write
(
int
index
,
void
*
thread
)
{
{
m_wval
.
val
=
m_val
.
val
;
m_wval
.
val
=
m_val
.
val
;
m_wval
.
time
=
m_val
.
time
;
m_wval
.
time
=
m_val
.
time
;
if
(
m_write_cb
)
if
(
m_write_cb
)
(
m_write_cb
)(
m_userdata
,
m_useridx
,
&
m_wval
.
val
,
&
m_wval
.
time
);
(
m_write_cb
)(
m_userdata
,
m_useridx
,
&
m_wval
.
val
,
&
m_wval
.
time
,
thread
);
}
}
sev/lib/sev/src/sev_valuecache.h
View file @
1b910a70
...
@@ -63,16 +63,16 @@ class sev_valuecache {
...
@@ -63,16 +63,16 @@ class sev_valuecache {
sev_eCvType
m_type
;
sev_eCvType
m_type
;
void
*
m_userdata
;
void
*
m_userdata
;
int
m_useridx
;
int
m_useridx
;
void
(
*
m_write_cb
)(
void
*
,
int
,
void
*
,
pwr_tTime
*
);
void
(
*
m_write_cb
)(
void
*
,
int
,
void
*
,
pwr_tTime
*
,
void
*
);
sev_valuecache
(
sev_eCvType
type
)
:
m_type
(
type
),
m_userdata
(
0
),
m_useridx
(
0
),
m_write_cb
(
0
)
{}
sev_valuecache
(
sev_eCvType
type
)
:
m_type
(
type
),
m_userdata
(
0
),
m_useridx
(
0
),
m_write_cb
(
0
)
{}
sev_valuecache
(
const
sev_valuecache
&
x
)
:
m_type
(
x
.
m_type
),
m_userdata
(
x
.
m_userdata
),
m_useridx
(
x
.
m_useridx
),
sev_valuecache
(
const
sev_valuecache
&
x
)
:
m_type
(
x
.
m_type
),
m_userdata
(
x
.
m_userdata
),
m_useridx
(
x
.
m_useridx
),
m_write_cb
(
x
.
m_write_cb
)
{}
m_write_cb
(
x
.
m_write_cb
)
{}
virtual
~
sev_valuecache
()
{};
virtual
~
sev_valuecache
()
{};
virtual
void
add
(
void
*
value
,
pwr_tTime
*
time
)
{};
virtual
void
add
(
void
*
value
,
pwr_tTime
*
time
,
void
*
thread
)
{};
virtual
void
evaluate
(
double
maxtime
)
{};
virtual
void
evaluate
(
double
maxtime
,
void
*
thread
)
{};
virtual
void
write
(
int
index
)
{};
virtual
void
write
(
int
index
,
void
*
thread
)
{};
virtual
void
set_write_cb
(
void
(
*
write_cb
)(
void
*
,
int
,
void
*
,
pwr_tTime
*
),
void
*
userdata
,
int
idx
)
{
virtual
void
set_write_cb
(
void
(
*
write_cb
)(
void
*
,
int
,
void
*
,
pwr_tTime
*
,
void
*
),
void
*
userdata
,
int
idx
)
{
m_write_cb
=
write_cb
;
m_write_cb
=
write_cb
;
m_userdata
=
userdata
;
m_userdata
=
userdata
;
m_useridx
=
idx
;
m_useridx
=
idx
;
...
@@ -117,10 +117,10 @@ class sev_valuecache_double : public sev_valuecache {
...
@@ -117,10 +117,10 @@ class sev_valuecache_double : public sev_valuecache {
int
idx
(
int
index
);
int
idx
(
int
index
);
sev_sCacheValueDouble
&
operator
[](
const
int
index
);
sev_sCacheValueDouble
&
operator
[](
const
int
index
);
sev_sCacheValueDouble
&
wval
()
{
return
m_wval
;}
sev_sCacheValueDouble
&
wval
()
{
return
m_wval
;}
void
add
(
void
*
value
,
pwr_tTime
*
time
);
void
add
(
void
*
value
,
pwr_tTime
*
time
,
void
*
thread
);
void
evaluate
(
double
maxtime
);
void
evaluate
(
double
maxtime
,
void
*
thread
);
void
calculate_k
();
void
calculate_k
();
void
write
(
int
index
);
void
write
(
int
index
,
void
*
thread
);
void
calculate_epsilon
();
void
calculate_epsilon
();
void
calculate_epsilon
(
int
index
);
void
calculate_epsilon
(
int
index
);
bool
check_deadband
(
int
index
);
bool
check_deadband
(
int
index
);
...
@@ -146,9 +146,9 @@ class sev_valuecache_bool : public sev_valuecache {
...
@@ -146,9 +146,9 @@ class sev_valuecache_bool : public sev_valuecache {
}
}
~
sev_valuecache_bool
()
{}
~
sev_valuecache_bool
()
{}
sev_sCacheValueBool
&
wval
()
{
return
m_wval
;}
sev_sCacheValueBool
&
wval
()
{
return
m_wval
;}
void
add
(
void
*
value
,
pwr_tTime
*
time
);
void
add
(
void
*
value
,
pwr_tTime
*
time
,
void
*
thread
);
void
evaluate
(
double
maxtime
);
void
evaluate
(
double
maxtime
,
void
*
thread
);
void
write
(
int
index
);
void
write
(
int
index
,
void
*
thread
);
};
};
...
...
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
View file @
1b910a70
...
@@ -669,8 +669,10 @@ int rt_sevhistmon::send_data()
...
@@ -669,8 +669,10 @@ int rt_sevhistmon::send_data()
put
.
allocate
=
0
;
put
.
allocate
=
0
;
msg
->
Type
=
sev_eMsgType_HistDataStore
;
msg
->
Type
=
sev_eMsgType_HistDataStore
;
msg
->
Version
=
sev_cNetVersion
;
time_GetTime
(
&
current_time
);
time_GetTime
(
&
current_time
);
msg
->
Time
=
net_TimeToNetTime
(
&
current_time
);
msg
->
Time
=
net_TimeToNetTime
(
&
current_time
);
msg
->
ServerThread
=
m_hs
[
i
].
threadp
->
ServerThread
;
dp
=
(
sev_sHistData
*
)
&
msg
->
Data
;
dp
=
(
sev_sHistData
*
)
&
msg
->
Data
;
for
(
unsigned
int
j
=
0
;
j
<
m_hs
[
i
].
sevhistlist
.
size
();
j
++
)
{
for
(
unsigned
int
j
=
0
;
j
<
m_hs
[
i
].
sevhistlist
.
size
();
j
++
)
{
...
@@ -1503,4 +1505,4 @@ int main()
...
@@ -1503,4 +1505,4 @@ int main()
client
.
mainloop
();
client
.
mainloop
();
client
.
close
();
client
.
close
();
}
}
\ No newline at end of file
src/lib/rt/src/rt_lst.h
View file @
1b910a70
...
@@ -45,6 +45,10 @@
...
@@ -45,6 +45,10 @@
# include "rt_sync.h"
# include "rt_sync.h"
#endif
#endif
#if defined __cplusplus
extern
"C"
{
#endif
typedef
struct
lst_sEntry
lst_sEntry
;
typedef
struct
lst_sEntry
lst_sEntry
;
struct
lst_sEntry
{
struct
lst_sEntry
{
lst_sEntry
*
flink
;
lst_sEntry
*
flink
;
...
@@ -67,4 +71,7 @@ void * lst_RemovePred (thread_sMutex*, lst_sEntry*, lst_sEntry**);
...
@@ -67,4 +71,7 @@ void * lst_RemovePred (thread_sMutex*, lst_sEntry*, lst_sEntry**);
void
*
lst_RemoveSucc
(
thread_sMutex
*
,
lst_sEntry
*
,
lst_sEntry
**
);
void
*
lst_RemoveSucc
(
thread_sMutex
*
,
lst_sEntry
*
,
lst_sEntry
**
);
void
*
lst_Succ
(
thread_sMutex
*
,
lst_sEntry
*
,
lst_sEntry
**
);
void
*
lst_Succ
(
thread_sMutex
*
,
lst_sEntry
*
,
lst_sEntry
**
);
#endif
#if defined __cplusplus
\ No newline at end of file
}
#endif
#endif
src/lib/rt/src/rt_que.h
View file @
1b910a70
...
@@ -41,6 +41,10 @@
...
@@ -41,6 +41,10 @@
#include "rt_sync.h"
#include "rt_sync.h"
#include "rt_lst.h"
#include "rt_lst.h"
#if defined __cplusplus
extern
"C"
{
#endif
typedef
struct
{
typedef
struct
{
thread_sMutex
mutex
;
thread_sMutex
mutex
;
thread_sCond
cond
;
thread_sCond
cond
;
...
@@ -51,4 +55,7 @@ que_sQue * que_Create(pwr_tStatus*, que_sQue*);
...
@@ -51,4 +55,7 @@ que_sQue * que_Create(pwr_tStatus*, que_sQue*);
void
*
que_Get
(
pwr_tStatus
*
,
que_sQue
*
,
pwr_tDeltaTime
*
,
void
*
);
void
*
que_Get
(
pwr_tStatus
*
,
que_sQue
*
,
pwr_tDeltaTime
*
,
void
*
);
void
que_Put
(
pwr_tStatus
*
,
que_sQue
*
,
lst_sEntry
*
,
void
*
);
void
que_Put
(
pwr_tStatus
*
,
que_sQue
*
,
lst_sEntry
*
,
void
*
);
#endif
#if defined __cplusplus
\ No newline at end of file
}
#endif
#endif
src/lib/rt/src/rt_sev_net.h
View file @
1b910a70
...
@@ -48,6 +48,7 @@ extern "C"
...
@@ -48,6 +48,7 @@ extern "C"
#define sev_eProcSevClient 121
#define sev_eProcSevClient 121
#define sev_eProcSevServer 122
#define sev_eProcSevServer 122
#define sev_cMsgClass 202
#define sev_cMsgClass 202
#define sev_cNetVersion 1
typedef
enum
{
typedef
enum
{
sev_eMsgType_NodeUp
,
sev_eMsgType_NodeUp
,
...
@@ -118,11 +119,13 @@ typedef struct {
...
@@ -118,11 +119,13 @@ typedef struct {
// Message types
// Message types
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
}
sev_sMsgAny
;
}
sev_sMsgAny
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
pwr_tStatus
Status
;
pwr_tStatus
Status
;
unsigned
int
NumItems
;
unsigned
int
NumItems
;
unsigned
int
NumAttributes
;
unsigned
int
NumAttributes
;
...
@@ -130,20 +133,31 @@ typedef struct {
...
@@ -130,20 +133,31 @@ typedef struct {
}
sev_sMsgHistItems
;
}
sev_sMsgHistItems
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
net_sTime
Time
;
pwr_tUInt16
Version
;
net_sTime
Time
;
pwr_tUInt32
ServerThread
;
int
Data
[
1
];
int
Data
[
1
];
}
sev_sMsgHistDataStore
;
}
sev_sMsgHistDataStore
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
net_sTime
Time
;
int
Data
[
1
];
}
sev_sMsgHistDataStoreV0
;
typedef
struct
{
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
pwr_tOid
Oid
;
pwr_tOid
Oid
;
unsigned
int
NumEvents
;
unsigned
int
NumEvents
;
sev_sEvent
Events
[
1
];
sev_sEvent
Events
[
1
];
}
sev_sMsgEventsStore
;
}
sev_sMsgEventsStore
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
pwr_tOid
Oid
;
pwr_tOid
Oid
;
pwr_tOName
AName
;
pwr_tOName
AName
;
net_sTime
StartTime
;
net_sTime
StartTime
;
...
@@ -152,7 +166,8 @@ typedef struct {
...
@@ -152,7 +166,8 @@ typedef struct {
}
sev_sMsgHistDataGetRequest
;
}
sev_sMsgHistDataGetRequest
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
pwr_tOid
Oid
;
pwr_tOid
Oid
;
pwr_tOName
AName
;
pwr_tOName
AName
;
pwr_tStatus
Status
;
pwr_tStatus
Status
;
...
@@ -163,32 +178,36 @@ typedef struct {
...
@@ -163,32 +178,36 @@ typedef struct {
}
sev_sMsgHistDataGet
;
}
sev_sMsgHistDataGet
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tOid
Oid
;
pwr_tUInt16
Version
;
pwr_tOName
AName
;
pwr_tOid
Oid
;
pwr_tStatus
Status
;
pwr_tOName
AName
;
int
NumPoints
;
pwr_tStatus
Status
;
int
NumAttributes
;
int
NumPoints
;
unsigned
int
TotalDataSize
;
int
NumAttributes
;
sev_sHistAttr
Attr
[
1
];
unsigned
int
TotalDataSize
;
int
Data
[
1
];
sev_sHistAttr
Attr
[
1
];
int
Data
[
1
];
}
sev_sMsgHistObjectDataGet
;
}
sev_sMsgHistObjectDataGet
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
pwr_tOid
Oid
;
pwr_tOid
Oid
;
pwr_tOName
AName
;
pwr_tOName
AName
;
}
sev_sMsgHistItemDelete
;
}
sev_sMsgHistItemDelete
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
pwr_tOid
Oid
;
pwr_tOid
Oid
;
pwr_tOName
AName
;
pwr_tOName
AName
;
pwr_tStatus
Status
;
pwr_tStatus
Status
;
}
sev_sMsgHistItemStatus
;
}
sev_sMsgHistItemStatus
;
typedef
struct
{
typedef
struct
{
sev_eMsgType
Type
;
pwr_tUInt16
Type
;
pwr_tUInt16
Version
;
pwr_tStatus
Status
;
pwr_tStatus
Status
;
}
sev_sMsgServerStatus
;
}
sev_sMsgServerStatus
;
...
@@ -196,4 +215,4 @@ typedef struct {
...
@@ -196,4 +215,4 @@ typedef struct {
}
}
#endif
#endif
#endif
#endif
\ No newline at end of file
src/lib/rt/src/rt_sevcli.c
View file @
1b910a70
...
@@ -175,6 +175,7 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
...
@@ -175,6 +175,7 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
put
.
data
=
msg
;
put
.
data
=
msg
;
msg
->
Type
=
sev_eMsgType_HistItemsRequest
;
msg
->
Type
=
sev_eMsgType_HistItemsRequest
;
msg
->
Version
=
sev_cNetVersion
;
if
(
!
qcom_Put
(
sts
,
&
tgt
,
&
put
))
{
if
(
!
qcom_Put
(
sts
,
&
tgt
,
&
put
))
{
qcom_Free
(
&
lsts
,
put
.
data
);
qcom_Free
(
&
lsts
,
put
.
data
);
...
@@ -272,6 +273,7 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
...
@@ -272,6 +273,7 @@ int sevcli_get_itemlist( pwr_tStatus *sts, sevcli_tCtx ctx, sevcli_sHistItem **l
put.data = msg;
put.data = msg;
msg->Type = sev_eMsgType_HistItemsRequest;
msg->Type = sev_eMsgType_HistItemsRequest;
msg->Version = sev_cNetVersion;
if ( !qcom_Put( sts, &tgt, &put)) {
if ( !qcom_Put( sts, &tgt, &put)) {
qcom_Free( &lsts, put.data);
qcom_Free( &lsts, put.data);
...
@@ -381,6 +383,7 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
...
@@ -381,6 +383,7 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
put
.
data
=
msg
;
put
.
data
=
msg
;
msg
->
Type
=
sev_eMsgType_HistDataGetRequest
;
msg
->
Type
=
sev_eMsgType_HistDataGetRequest
;
msg
->
Version
=
sev_cNetVersion
;
msg
->
Oid
=
oid
;
msg
->
Oid
=
oid
;
strncpy
(
msg
->
AName
,
aname
,
sizeof
(
msg
->
AName
));
strncpy
(
msg
->
AName
,
aname
,
sizeof
(
msg
->
AName
));
msg
->
StartTime
=
net_TimeToNetTime
(
&
starttime
);
msg
->
StartTime
=
net_TimeToNetTime
(
&
starttime
);
...
@@ -486,6 +489,7 @@ int sevcli_get_objectitemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
...
@@ -486,6 +489,7 @@ int sevcli_get_objectitemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
put
.
data
=
msg
;
put
.
data
=
msg
;
msg
->
Type
=
sev_eMsgType_HistObjectDataGetRequest
;
msg
->
Type
=
sev_eMsgType_HistObjectDataGetRequest
;
msg
->
Version
=
sev_cNetVersion
;
msg
->
Oid
=
oid
;
msg
->
Oid
=
oid
;
strncpy
(
msg
->
AName
,
aname
,
sizeof
(
msg
->
AName
));
strncpy
(
msg
->
AName
,
aname
,
sizeof
(
msg
->
AName
));
msg
->
StartTime
=
net_TimeToNetTime
(
&
starttime
);
msg
->
StartTime
=
net_TimeToNetTime
(
&
starttime
);
...
@@ -600,6 +604,7 @@ int sevcli_delete_item( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid, char *a
...
@@ -600,6 +604,7 @@ int sevcli_delete_item( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid, char *a
put
.
data
=
msg
;
put
.
data
=
msg
;
msg
->
Type
=
sev_eMsgType_HistItemDelete
;
msg
->
Type
=
sev_eMsgType_HistItemDelete
;
msg
->
Version
=
sev_cNetVersion
;
msg
->
Oid
=
oid
;
msg
->
Oid
=
oid
;
strncpy
(
msg
->
AName
,
aname
,
sizeof
(
msg
->
AName
));
strncpy
(
msg
->
AName
,
aname
,
sizeof
(
msg
->
AName
));
...
...
src/lib/rt/src/rt_sync.h
View file @
1b910a70
...
@@ -40,10 +40,17 @@
...
@@ -40,10 +40,17 @@
#include "pwr.h"
#include "pwr.h"
#include "rt_thread.h"
#include "rt_thread.h"
#if defined __cplusplus
extern
"C"
{
#endif
pwr_tStatus
sync_CondInit
(
thread_sCond
*
);
pwr_tStatus
sync_CondInit
(
thread_sCond
*
);
pwr_tStatus
sync_MutexInit
(
thread_sMutex
*
);
pwr_tStatus
sync_MutexInit
(
thread_sMutex
*
);
pwr_tStatus
sync_CondSignal
(
thread_sCond
*
);
pwr_tStatus
sync_CondSignal
(
thread_sCond
*
);
pwr_tStatus
sync_MutexLock
(
thread_sMutex
*
);
pwr_tStatus
sync_MutexLock
(
thread_sMutex
*
);
pwr_tStatus
sync_MutexUnlock
(
thread_sMutex
*
);
pwr_tStatus
sync_MutexUnlock
(
thread_sMutex
*
);
#endif
#if defined __cplusplus
\ No newline at end of file
}
#endif
#endif
src/lib/rt/src/rt_thread.h
View file @
1b910a70
...
@@ -42,6 +42,10 @@
...
@@ -42,6 +42,10 @@
#if defined OS_POSIX
#if defined OS_POSIX
#include <pthread.h>
#include <pthread.h>
#if defined __cplusplus
extern
"C"
{
#endif
typedef
pthread_t
thread_s
;
typedef
pthread_t
thread_s
;
typedef
struct
{
typedef
struct
{
...
@@ -76,4 +80,7 @@ pwr_tStatus thread_Join (thread_s*, pwr_tStatus*);
...
@@ -76,4 +80,7 @@ pwr_tStatus thread_Join (thread_s*, pwr_tStatus*);
pwr_tStatus
thread_Signal
(
thread_s
*
,
int
);
pwr_tStatus
thread_Signal
(
thread_s
*
,
int
);
pwr_tBoolean
thread_SigTimedWait
(
thread_s
*
,
int
,
pwr_tDeltaTime
*
);
pwr_tBoolean
thread_SigTimedWait
(
thread_s
*
,
int
,
pwr_tDeltaTime
*
);
#endif
#if defined __cplusplus
\ No newline at end of file
}
#endif
#endif
src/wbl/pwrb/src/pwrb_c_a_sevserverthread.wb_load
0 → 100644
View file @
1b910a70
!
! Proview Open Source Process Control.
! Copyright (C) 2005-2017 SSAB EMEA AB.
!
! This file is part of Proview.
!
! 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 Proview. If not, see <http://www.gnu.org/licenses/>
!
! Linking Proview statically or dynamically with other modules is
! making a combined work based on Proview. Thus, the terms and
! conditions of the GNU General Public License cover the whole
! combination.
!
! In addition, as a special exception, the copyright holders of
! Proview give you permission to, from the build function in the
! Proview Configurator, combine Proview with modules generated by the
! Proview PLC Editor to a PLC program, regardless of the license
! terms of these modules. You may copy and distribute the resulting
! combined work under the terms of your choice, provided that every
! copy of the combined work is accompanied by a complete copy of
! the source code of Proview (the version used to produce the
! combined work), being distributed under the terms of the GNU
! General Public License plus this exception.
!
! pwrb_c_a_sevserverthread.wb_load -- Defines the class SevServerThread.
!
SObject pwrb:Class
!/**
! @Version 1.0
! Displays sev server thread info.
!
! @b See also
! @classlink SevServer pwrb_sevserver.html
!*/
Object SevServerThread $ClassDef 699
Body SysBody
Attr Editor = pwr_eEditor_AttrEd
Attr Method = pwr_eMethod_Standard
Attr Flags |= pwr_mClassDef_Internal
EndBody
Object RtBody $ObjBodyDef 1
Body SysBody
Attr StructName = "SevServerThread"
EndBody
!/**
! Thread key.
!*/
Object Key $Attribute 1
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
!/**
! Allocated size in thread queue.
!*/
Object QueueAlloc $Attribute 2
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
!/**
! Lost messages.
!*/
Object LostCnt $Attribute 3
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
!/**
! Medium load in percentage.
!*/
Object MediumLoad $Attribute 4
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
!/**
! Storage rate. Values per second.
!*/
Object StorageRate $Attribute 5
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
!/**
! Medium storage rate. Values per second.
!*/
Object MediumStorageRate $Attribute 6
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
!/**
! Data store message count.
!*/
Object DataStoreMsgCnt $Attribute 7
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
!/**
! Event store message count.
!*/
Object EventStoreMsgCnt $Attribute 8
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags |= PWR_MASK_NOEDIT
Attr Flags |= PWR_MASK_STATE
EndBody
EndObject
EndObject
EndObject
EndSObject
\ No newline at end of file
src/wbl/pwrb/src/pwrb_c_sevhistthread.wb_load
View file @
1b910a70
...
@@ -80,6 +80,16 @@ SObject pwrb:Class
...
@@ -80,6 +80,16 @@ SObject pwrb:Class
EndBody
EndBody
EndObject
EndObject
!/**
!/**
! Thread in server node to handle the storage.
! An integer value. Threads with equal ServerThread will be
! handled by the same server thread.
!*/
Object ServerThread $Attribute 9
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
!/**
! Specifies, in seconds, the time between two samples.
! Specifies, in seconds, the time between two samples.
! The minimum allowed value is 1 seconds.
! The minimum allowed value is 1 seconds.
!*/
!*/
...
...
src/wbl/pwrb/src/pwrb_c_sevserver.wb_load
View file @
1b910a70
...
@@ -82,14 +82,93 @@ SObject pwrb:Class
...
@@ -82,14 +82,93 @@ SObject pwrb:Class
EndBody
EndBody
EndObject
EndObject
!/**
!/**
! UseThreads.
!*/
Object UseServerThreads $Attribute 3
Body SysBody
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
!/**
! Calculate mean value on all items.
!*/
Object MeanValueAll $Attribute 4
Body SysBody
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
!/**
! Use linear regression on all items with deadband.
!*/
Object LinearRegrAll $Attribute 5
Body SysBody
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
!/**
! Max time without storage for items with deadband linear regression.
! If zero, time is infinite.
!*/
Object LinearRegrMaxTime $Attribute 6
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Interval for calcuation of mean value for items
! with the MeanValue1 bit set in options.
!*/
Object MeanValueInterval1 $Attribute 7
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Interval for calcuation of mean value for items
! with the MeanValue2 bit set in options.
!*/
Object MeanValueInterval2 $Attribute 8
Body SysBody
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Max limit for thread queue size.
! If the queue limit is exceeded, messages are lost.
!*/
Object ThreadQueueLimit $Attribute 9
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
!/**
! Statistics.
! Statistics.
!*/
!*/
Object Stat $Attribute
3
Object Stat $Attribute
10
Body SysBody
Body SysBody
Attr TypeRef = "pwrb:Class-SevStatistics"
Attr TypeRef = "pwrb:Class-SevStatistics"
Attr Flags |= PWR_MASK_CLASS
Attr Flags |= PWR_MASK_CLASS
EndBody
EndBody
EndObject
EndObject
!/**
! Server threads.
!*/
Object ServerThreads $Attribute 11
Body SysBody
Attr TypeRef = "pwrb:Class-SevServerThread"
Attr Flags |= PWR_MASK_CLASS
Attr Flags |= PWR_MASK_ARRAY
Attr Elements = 20
EndBody
EndObject
EndObject
Object Template SevServer
Body RtBody
Attr UseServerThreads = 1
Attr MeanValueInterval1 = 10
Attr MeanValueInterval2 = 30
Attr ThreadQueueLimit = 600000
EndBody
EndObject
EndObject
EndObject
EndObject
EndSObject
EndSObject
\ No newline at end of file
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