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
ad22de04
Commit
ad22de04
authored
Oct 14, 2004
by
claes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
parent
c67a5c76
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
892 additions
and
0 deletions
+892
-0
java/exe/jpwr_rt_gdh/src/jpwr_rt_hist.cpp
java/exe/jpwr_rt_gdh/src/jpwr_rt_hist.cpp
+804
-0
java/exe/jpwr_rt_gdh/src/jpwr_rt_hist.h
java/exe/jpwr_rt_gdh/src/jpwr_rt_hist.h
+88
-0
No files found.
java/exe/jpwr_rt_gdh/src/jpwr_rt_hist.cpp
0 → 100644
View file @
ad22de04
using
namespace
std
;
#include <deque>
#include <string>
#include <string.h>
#include <stdio.h>
#include "jpwr_rt_hist.h"
#include <db.h>
extern
"C"
{
#include "pwr.h"
#include "rt_mh.h"
#include "rt_mh_util.h"
#include "rt_elog.h"
#include "rt_gdh.h"
#include "co_cdh.h"
#include "co_dcli.h"
#include "co_time.h"
#include "co_cdh_msg.h"
#include "rt_gdh_msg.h"
static
void
gdh_ConvertUTFstring
(
char
*
out
,
char
*
in
);
}
jobject
convertAckToMhrEvent
(
mh_sAck
*
MsgP
);
jobject
convertReturnToMhrEvent
(
mh_sReturn
*
MsgP
);
jobject
convertAlarmOrInfoToMhrEvent
(
mh_sMessage
*
MsgP
);
int
compareStr
(
char
*
ev
,
char
*
usr
);
#define ERROR_TIME_CONVERT -99
typedef
struct
HistQueryStruct
{
char
*
minTime_str
;
char
*
maxTime_str
;
char
*
eventName_str
;
char
*
eventText_str
;
bool
eventPrio_A
;
bool
eventPrio_B
;
bool
eventPrio_C
;
bool
eventPrio_D
;
bool
eventType_Ack
;
bool
eventType_Alarm
;
bool
eventType_Info
;
bool
eventType_Return
;
bool
eventType_Cancel
;
bool
eventType_Block
;
bool
eventType_Unblock
;
bool
eventType_Reblock
;
bool
eventType_CancelBlock
;
}
HistQuery
;
int
check_conditions
(
sEvent
*
evp
,
HistQuery
*
query
);
JavaVM
*
jvm
;
JNIEXPORT
void
JNICALL
Java_jpwr_rt_Hist_initHistIDs
(
JNIEnv
*
env
,
jclass
cls
)
{
int
sts
;
//initiera alla pekare till javametoderna som behvs
// Mh_id = env->FindClass("jpwr/rt/Mh");
// if(Mh_id == NULL)
// {
// printf("jpwr_rt_mh.c: couldnt find jpwr/rt/Mh class\n");
// }
sts
=
env
->
GetJavaVM
(
&
jvm
);
if
(
sts
)
{
printf
(
"Hittar ej JavaVM
\n
"
);
}
}
/*
* Class: jpwr_rt_Mh
* Method: getHistList
* Signature: (Ljava/lang/String;Ljava/lang/String;ZZZZZZZZLjava/lang/String;Ljava/lang/String;)[Ljpwr/rt/MhrEvent;
*/
JNIEXPORT
jobjectArray
JNICALL
Java_jpwr_rt_Hist_getHistList
(
JNIEnv
*
env
,
jclass
obj
,
jstring
jstartTime
,
jstring
jstopTime
,
jboolean
jtypeAlarm
,
jboolean
jtypeInfo
,
jboolean
jtypeReturn
,
jboolean
jtypeAck
,
jboolean
jprioA
,
jboolean
jprioB
,
jboolean
jprioC
,
jboolean
jprioD
,
jstring
jname
,
jstring
jtext
)
{
const
char
*
str
;
char
*
cstr_minTime
;
char
*
cstr_maxTime
;
char
*
cstr_eventName
;
char
*
cstr_eventText
;
DB
*
dataBaseP
=
NULL
;
pwr_tInt32
ret
,
sts
;
char
dbName
[
200
];
pwr_tUInt32
nrOfEvents
=
0
;
sEvent
*
eventp
;
DBT
data
,
key
;
DBC
*
dbcp
;
deque
<
sEvent
>
evDeq
;
HistQuery
query
;
jobjectArray
jobjectArr
=
NULL
;
unsigned
int
i
=
0
;
//find the class for MhrEvent[]
jclass
mhrEventArrCls
=
env
->
FindClass
(
"jpwr/rt/MhrEvent"
);
if
(
mhrEventArrCls
==
NULL
)
{
printf
(
"Hittade inte jpwr/rt/MhrEvent
\n
"
);
return
(
jobjectArray
)
NULL
;
}
// printf("I get_hist_list\n");
memset
(
&
query
,
0
,
sizeof
(
HistQuery
));
//translate the jstrings to char[]
str
=
env
->
GetStringUTFChars
(
jstartTime
,
0
);
cstr_minTime
=
(
char
*
)
str
;
gdh_ConvertUTFstring
(
cstr_minTime
,
cstr_minTime
);
query
.
minTime_str
=
cstr_minTime
;
str
=
env
->
GetStringUTFChars
(
jstopTime
,
0
);
cstr_maxTime
=
(
char
*
)
str
;
gdh_ConvertUTFstring
(
cstr_maxTime
,
cstr_maxTime
);
query
.
maxTime_str
=
cstr_maxTime
;
str
=
env
->
GetStringUTFChars
(
jname
,
0
);
cstr_eventName
=
(
char
*
)
str
;
gdh_ConvertUTFstring
(
cstr_eventName
,
cstr_eventName
);
query
.
eventName_str
=
cstr_eventName
;
str
=
env
->
GetStringUTFChars
(
jtext
,
0
);
cstr_eventText
=
(
char
*
)
str
;
gdh_ConvertUTFstring
(
cstr_eventText
,
cstr_eventText
);
query
.
eventText_str
=
cstr_eventText
;
query
.
eventType_Ack
=
jtypeAck
;
query
.
eventType_Alarm
=
jtypeAlarm
;
query
.
eventType_Return
=
jtypeReturn
;
query
.
eventType_Info
=
jtypeInfo
;
query
.
eventPrio_A
=
jprioA
;
query
.
eventPrio_B
=
jprioB
;
query
.
eventPrio_C
=
jprioC
;
query
.
eventPrio_D
=
jprioD
;
//printf("I get_hist_list1\n");
dcli_translate_filename
(
dbName
,
DATABASE
);
/*create the database if it's not already created*/
if
((
ret
=
db_create
(
&
dataBaseP
,
NULL
,
0
))
!=
0
)
{
/*error creating db-handle send the mess to errh, then exit*/
printf
(
"error db_create: %s
\n
"
,
db_strerror
(
ret
));
printf
(
" Fel vid skapande av databashandtag avslutar
\n
"
);
goto
err
;
}
if
((
ret
=
dataBaseP
->
open
(
dataBaseP
,
dbName
,
NULL
,
DATABASETYPE
,
DB_RDONLY
,
0
))
!=
0
)
{
/*error opening/creating db send the mess to errh, then exit*/
printf
(
"error db_open: %s
\n
"
,
db_strerror
(
ret
));
goto
err
;
}
/* Acquire a cursor for the database. */
if
((
ret
=
dataBaseP
->
cursor
(
dataBaseP
,
NULL
,
&
dbcp
,
0
))
!=
0
)
{
printf
(
"error dataBaseP->cursor: %s
\n
"
,
db_strerror
(
ret
));
goto
err
;
}
/* Initialize the key/data return pair. */
memset
(
&
key
,
0
,
sizeof
(
key
));
memset
(
&
data
,
0
,
sizeof
(
data
));
if
((
ret
=
dbcp
->
c_get
(
dbcp
,
&
key
,
&
data
,
DB_FIRST
))
==
0
)
{
eventp
=
(
sEvent
*
)
data
.
data
;
sts
=
check_conditions
(
eventp
,
&
query
);
if
(
sts
==
ERROR_TIME_CONVERT
)
{
printf
(
"Error trying to convert userinput in time-field 1
\n
"
);
}
else
if
(
ODD
(
sts
))
{
nrOfEvents
++
;
evDeq
.
push_front
((
sEvent
)
*
eventp
);
}
}
while
((
ret
=
dbcp
->
c_get
(
dbcp
,
&
key
,
&
data
,
DB_NEXT
))
==
0
)
{
eventp
=
(
sEvent
*
)
data
.
data
;
sts
=
check_conditions
(
eventp
,
&
query
);
if
(
sts
==
ERROR_TIME_CONVERT
)
{
printf
(
"Error trying to convert userinput in time-field
\n
"
);
}
else
if
(
ODD
(
sts
))
{
nrOfEvents
++
;
evDeq
.
push_front
(
*
eventp
);
}
}
if
(
ret
!=
DB_NOTFOUND
)
{
printf
(
"error dbcp->c_get: %s
\n
"
,
db_strerror
(
ret
));
printf
(
"Fel vid frsk att lsa post nr %u, avslutar
\n
"
,
nrOfEvents
);
}
/*Close the cursor*/
if
((
ret
=
dbcp
->
c_close
(
dbcp
))
!=
0
)
{
printf
(
"Error dbcp->c_close(): %s
\n
"
,
db_strerror
(
ret
));
}
/*close the database*/
if
((
ret
=
dataBaseP
->
close
(
dataBaseP
,
0
)
!=
0
))
{
printf
(
"error db_close: %s
\n
"
,
db_strerror
(
ret
));
}
//create a new MhrEvent[]
jobjectArr
=
env
->
NewObjectArray
(
nrOfEvents
,
mhrEventArrCls
,
NULL
);
printf
(
"nrOfEvents: %d
\n
"
,
nrOfEvents
);
sEvent
ev
;
//put the result in an objectarray of MhrEvent
for
(
i
=
0
;
i
<
nrOfEvents
;
i
++
)
{
ev
=
evDeq
.
front
();
switch
(
ev
.
EventType
)
{
case
mh_eEvent_Alarm
:
case
mh_eEvent_Info
:
env
->
SetObjectArrayElement
(
jobjectArr
,
i
,
convertAlarmOrInfoToMhrEvent
(
(
mh_sMessage
*
)(
&
(
ev
.
Mess
)
)
)
);
//printMess(sp, outFile);
break
;
case
mh_eEvent_Ack
:
env
->
SetObjectArrayElement
(
jobjectArr
,
i
,
convertAckToMhrEvent
(
(
mh_sAck
*
)(
&
(
ev
.
Mess
)
)
)
);
//printAck(sp, outFile);
break
;
case
mh_eEvent_Cancel
:
case
mh_eEvent_Return
:
env
->
SetObjectArrayElement
(
jobjectArr
,
i
,
convertReturnToMhrEvent
(
(
mh_sReturn
*
)(
&
(
ev
.
Mess
)
)
)
);
//printRet(sp, outFile);
break
;
case
mh_eEvent_Block
:
case
mh_eEvent_Unblock
:
case
mh_eEvent_Reblock
:
case
mh_eEvent_CancelBlock
:
env
->
SetObjectArrayElement
(
jobjectArr
,
i
,
NULL
);
//printBlock(sp, outFile);
break
;
default:
printf
(
"histlist: Error in Write unknown EventType"
);
break
;
}
evDeq
.
pop_front
();
}
err:
env
->
ReleaseStringUTFChars
(
jstartTime
,
cstr_minTime
);
env
->
ReleaseStringUTFChars
(
jstopTime
,
cstr_maxTime
);
env
->
ReleaseStringUTFChars
(
jname
,
cstr_eventName
);
env
->
ReleaseStringUTFChars
(
jtext
,
cstr_eventText
);
return
jobjectArr
;
}
int
check_conditions
(
sEvent
*
evp
,
HistQuery
*
query
)
{
pwr_tTime
minTime
;
pwr_tTime
maxTime
;
int
sts
;
//first we compare the time
if
(
(
query
->
minTime_str
!=
NULL
)
&&
(
strlen
(
query
->
minTime_str
)
!=
0
)
)
{
sts
=
time_FormAsciiToA
(
query
->
minTime_str
,
SWE
,
SECOND
,
&
minTime
);
if
(
EVEN
(
sts
))
return
ERROR_TIME_CONVERT
;
if
(
time_Acomp
(
&
minTime
,
&
(
evp
->
EventTime
))
>
0
)
return
2
;
//evensts
}
if
(
query
->
maxTime_str
!=
NULL
&&
(
strlen
(
query
->
maxTime_str
)
!=
0
))
{
sts
=
time_FormAsciiToA
(
query
->
maxTime_str
,
SWE
,
SECOND
,
&
maxTime
);
if
(
EVEN
(
sts
))
return
ERROR_TIME_CONVERT
;
if
(
time_Acomp
(
&
maxTime
,
&
(
evp
->
EventTime
))
<
0
)
return
2
;
//evensts
}
bool
ret
=
false
;
//then we compare the EventType if nothing is selected everything is selected
if
(
query
->
eventType_Ack
||
query
->
eventType_Alarm
||
query
->
eventType_Info
||
query
->
eventType_Return
||
query
->
eventType_Cancel
||
query
->
eventType_Block
||
query
->
eventType_Unblock
||
query
->
eventType_Reblock
||
query
->
eventType_CancelBlock
)
{
switch
(
evp
->
EventType
)
{
case
mh_eEvent_Alarm
:
if
(
!
query
->
eventType_Alarm
)
ret
=
true
;
break
;
case
mh_eEvent_Info
:
if
(
!
query
->
eventType_Info
)
ret
=
true
;
break
;
case
mh_eEvent_Ack
:
if
(
!
query
->
eventType_Ack
)
ret
=
true
;
break
;
case
mh_eEvent_Cancel
:
if
(
!
query
->
eventType_Cancel
)
ret
=
true
;
break
;
case
mh_eEvent_Return
:
if
(
!
query
->
eventType_Return
)
ret
=
true
;
break
;
case
mh_eEvent_Block
:
if
(
!
query
->
eventType_Block
)
ret
=
true
;
break
;
case
mh_eEvent_Unblock
:
if
(
!
query
->
eventType_Unblock
)
ret
=
true
;
break
;
case
mh_eEvent_Reblock
:
if
(
!
query
->
eventType_Reblock
)
ret
=
true
;
break
;
case
mh_eEvent_CancelBlock
:
if
(
!
query
->
eventType_CancelBlock
)
ret
=
true
;
break
;
default:
ret
=
true
;
}
}
if
(
ret
)
return
2
;
mh_sMsgInfo
*
msgInfop
=
NULL
;
mh_sMessage
*
mp
=
NULL
;
mh_sReturn
*
rp
=
NULL
;
switch
(
evp
->
EventType
)
{
case
mh_eEvent_Alarm
:
case
mh_eEvent_Info
:
msgInfop
=
&
(
evp
->
Mess
.
message
.
Info
);
mp
=
&
(
evp
->
Mess
.
message
);
break
;
case
mh_eEvent_Ack
:
msgInfop
=
&
(
evp
->
Mess
.
ack
.
Info
);
break
;
case
mh_eEvent_Cancel
:
case
mh_eEvent_Return
:
msgInfop
=
&
(
evp
->
Mess
.
ret
.
Info
);
rp
=
&
(
evp
->
Mess
.
ret
);
break
;
case
mh_eEvent_Block
:
case
mh_eEvent_Unblock
:
case
mh_eEvent_Reblock
:
case
mh_eEvent_CancelBlock
:
msgInfop
=
&
(
evp
->
Mess
.
block
.
Info
);
break
;
default:
return
2
;
}
//compare the prio, if nothing is selected everything is selected
if
(
query
->
eventPrio_A
||
query
->
eventPrio_B
||
query
->
eventPrio_C
||
query
->
eventPrio_D
)
{
//compare the EventPrio
switch
(
msgInfop
->
EventPrio
)
{
case
mh_eEventPrio_A
:
if
(
!
query
->
eventPrio_A
)
return
2
;
break
;
case
mh_eEventPrio_B
:
if
(
!
query
->
eventPrio_B
)
return
2
;
break
;
case
mh_eEventPrio_C
:
if
(
!
query
->
eventPrio_C
)
return
2
;
break
;
case
mh_eEventPrio_D
:
if
(
!
query
->
eventPrio_D
)
return
2
;
break
;
default:
return
2
;
}
}
//compare the EventName
if
(
query
->
eventName_str
!=
NULL
&&
(
strlen
(
query
->
eventName_str
)
!=
0
)
)
{
if
(
EVEN
(
compareStr
(
msgInfop
->
EventName
,
query
->
eventName_str
)
)
)
return
2
;
}
if
(
query
->
eventText_str
!=
NULL
&&
(
strlen
(
query
->
eventText_str
)
!=
0
)
)
{
if
(
mp
!=
NULL
)
{
if
(
EVEN
(
compareStr
(
mp
->
EventText
,
query
->
eventText_str
)
)
)
return
2
;
}
else
if
(
rp
!=
NULL
)
{
if
(
EVEN
(
compareStr
(
rp
->
EventText
,
query
->
eventText_str
)
)
)
return
2
;
}
else
return
2
;
}
//every condition was true so the mess is alright
return
1
;
}
int
compareStr
(
char
*
ev
,
char
*
usr
)
{
int
sts
;
int
startPos
=
0
;
unsigned
int
endPos
=
0
;
char
*
str1
;
sts
=
dcli_toupper
(
usr
,
usr
);
if
(
ODD
(
sts
))
{
sts
=
dcli_wildcard
(
usr
,
ev
);
sts
+=
1
;
if
(
ODD
(
sts
))
return
sts
;
string
s
=
usr
;
endPos
=
s
.
find_first_of
(
';'
,
startPos
);
while
(
endPos
!=
string
::
npos
)
{
str1
=
(
char
*
)(
s
.
substr
(
startPos
,
endPos
-
startPos
)).
c_str
();
sts
=
dcli_wildcard
(
str1
,
ev
);
sts
+=
1
;
startPos
=
endPos
+
1
;
if
(
ODD
(
sts
))
return
sts
;
endPos
=
s
.
find_first_of
(
';'
,
startPos
);
}
str1
=
(
char
*
)(
s
.
substr
(
startPos
)).
c_str
();
sts
=
dcli_wildcard
(
str1
,
ev
);
sts
+=
1
;
}
return
sts
;
}
jobject
convertAlarmOrInfoToMhrEvent
(
mh_sMessage
*
MsgP
)
{
JNIEnv
*
env
;
jclass
PwrtObjid_id
;
jmethodID
PwrtObjid_cid
;
jobject
objid_obj
=
NULL
;
jstring
jevText
;
jstring
jevName
;
jstring
jevTime
;
jstring
jevBirthTime
;
jint
jevFlags
;
jint
jevPrio
;
jint
jevStatus
;
jint
jevNix
;
jint
jevIdx
;
jint
jevType
;
jint
oix
,
vid
;
jstring
jevTargetBirthTime
;
jint
jevTargetNix
=
(
jint
)
0
;
jint
jevTargetIdx
=
(
jint
)
0
;
char
time_str
[
40
];
char
birthTime_str
[
40
];
pwr_tObjid
objid
=
MsgP
->
Info
.
Object
;
pwr_tTime
time
=
MsgP
->
Info
.
EventTime
;
pwr_tTime
birthTime
=
MsgP
->
Info
.
Id
.
BirthTime
;
//hmta enviormentpekaren
jvm
->
AttachCurrentThread
((
void
**
)
&
env
,
NULL
);
if
(
env
==
NULL
)
printf
(
"env r null"
);
PwrtObjid_id
=
env
->
FindClass
(
"jpwr/rt/PwrtObjid"
);
PwrtObjid_cid
=
env
->
GetMethodID
(
PwrtObjid_id
,
"<init>"
,
"(II)V"
);
oix
=
(
jint
)
objid
.
oix
;
vid
=
(
jint
)
objid
.
vid
;
objid_obj
=
env
->
NewObject
(
PwrtObjid_id
,
PwrtObjid_cid
,
oix
,
vid
);
time_AtoAscii
(
&
time
,
time_eFormat_ComprDateAndTime
,
time_str
,
sizeof
(
time_str
));
time_AtoAscii
(
&
birthTime
,
time_eFormat_ComprDateAndTime
,
birthTime_str
,
sizeof
(
birthTime_str
));
//gr om till Java-strngar
jevText
=
env
->
NewStringUTF
(
MsgP
->
EventText
);
jevName
=
env
->
NewStringUTF
(
MsgP
->
Info
.
EventName
);
jevTime
=
env
->
NewStringUTF
(
time_str
);
jevBirthTime
=
env
->
NewStringUTF
(
birthTime_str
);
jevTargetBirthTime
=
env
->
NewStringUTF
(
" "
);
//gr om till Java-int
jevFlags
=
(
jint
)
MsgP
->
Info
.
EventFlags
;
jevPrio
=
(
jint
)
MsgP
->
Info
.
EventPrio
;
jevStatus
=
(
jint
)
MsgP
->
Status
;
jevNix
=
(
jint
)
MsgP
->
Info
.
Id
.
Nix
;
jevIdx
=
(
jint
)
MsgP
->
Info
.
Id
.
Idx
;
jevType
=
(
jint
)
MsgP
->
Info
.
EventType
;
jclass
MhrEvent_id
=
env
->
FindClass
(
"jpwr/rt/MhrEvent"
);
jmethodID
MhrEvent_cid
=
env
->
GetMethodID
(
MhrEvent_id
,
"<init>"
,
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIILjava/lang/String;IILjava/lang/String;IILjpwr/rt/PwrtObjid;)V"
);
//anropa callback metoden i Mh-klassen
jobject
return_obj
=
env
->
NewObject
(
MhrEvent_id
,
MhrEvent_cid
,
jevText
,
jevName
,
jevTime
,
jevFlags
,
jevPrio
,
jevStatus
,
jevNix
,
jevBirthTime
,
jevIdx
,
jevTargetNix
,
jevTargetBirthTime
,
jevTargetIdx
,
jevType
,
objid_obj
);
//important:check if an exception was raised
if
(
env
->
ExceptionCheck
())
{
printf
(
"exception i convertAlarmToMhrEvent
\n
"
);
return
NULL
;
}
return
return_obj
;
}
jobject
convertReturnToMhrEvent
(
mh_sReturn
*
MsgP
)
{
JNIEnv
*
env
;
jclass
PwrtObjid_id
;
jmethodID
PwrtObjid_cid
;
jobject
objid_obj
=
NULL
;
jstring
jevText
;
jstring
jevName
;
jstring
jevTime
;
jstring
jevBirthTime
;
jint
jevFlags
;
jint
jevPrio
;
jint
jevStatus
;
jint
jevNix
;
jint
jevIdx
;
jint
jevType
;
jint
oix
,
vid
;
jstring
jevTargetBirthTime
;
jint
jevTargetNix
;
jint
jevTargetIdx
;
char
targetBirthTime_str
[
40
];
char
time_str
[
40
];
char
birthTime_str
[
40
];
pwr_tObjid
objid
=
MsgP
->
Info
.
Object
;
pwr_tTime
time
=
MsgP
->
Info
.
EventTime
;
pwr_tTime
birthTime
=
MsgP
->
Info
.
Id
.
BirthTime
;
pwr_tTime
targetBirthTime
=
MsgP
->
TargetId
.
BirthTime
;
//hmta enviormentpekaren
jvm
->
AttachCurrentThread
((
void
**
)
&
env
,
NULL
);
if
(
env
==
NULL
)
printf
(
"env r null"
);
PwrtObjid_id
=
env
->
FindClass
(
"jpwr/rt/PwrtObjid"
);
PwrtObjid_cid
=
env
->
GetMethodID
(
PwrtObjid_id
,
"<init>"
,
"(II)V"
);
oix
=
(
jint
)
objid
.
oix
;
vid
=
(
jint
)
objid
.
vid
;
objid_obj
=
env
->
NewObject
(
PwrtObjid_id
,
PwrtObjid_cid
,
oix
,
vid
);
time_AtoAscii
(
&
time
,
time_eFormat_ComprDateAndTime
,
time_str
,
sizeof
(
time_str
));
time_AtoAscii
(
&
birthTime
,
time_eFormat_ComprDateAndTime
,
birthTime_str
,
sizeof
(
birthTime_str
));
time_AtoAscii
(
&
targetBirthTime
,
time_eFormat_ComprDateAndTime
,
targetBirthTime_str
,
sizeof
(
targetBirthTime_str
));
//gr om till Java-strngar
jevText
=
env
->
NewStringUTF
(
MsgP
->
EventText
);
jevName
=
env
->
NewStringUTF
(
MsgP
->
Info
.
EventName
);
jevTime
=
env
->
NewStringUTF
(
time_str
);
jevBirthTime
=
env
->
NewStringUTF
(
birthTime_str
);
jevTargetBirthTime
=
env
->
NewStringUTF
(
targetBirthTime_str
);
//gr om till Java-int
jevFlags
=
(
jint
)
MsgP
->
Info
.
EventFlags
;
jevPrio
=
(
jint
)
MsgP
->
Info
.
EventPrio
;
jevStatus
=
(
jint
)
1
;
//mh_sReturn har ingen status
jevNix
=
(
jint
)
MsgP
->
Info
.
Id
.
Nix
;
jevIdx
=
(
jint
)
MsgP
->
Info
.
Id
.
Idx
;
jevTargetNix
=
(
jint
)
MsgP
->
TargetId
.
Nix
;
jevTargetIdx
=
(
jint
)
MsgP
->
TargetId
.
Idx
;
jevType
=
(
jint
)
MsgP
->
Info
.
EventType
;
jclass
MhrEvent_id
=
env
->
FindClass
(
"jpwr/rt/MhrEvent"
);
jmethodID
MhrEvent_cid
=
env
->
GetMethodID
(
MhrEvent_id
,
"<init>"
,
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIILjava/lang/String;IILjava/lang/String;IILjpwr/rt/PwrtObjid;)V"
);
//anropa callback metoden i Mh-klassen
jobject
return_obj
=
env
->
NewObject
(
MhrEvent_id
,
MhrEvent_cid
,
jevText
,
jevName
,
jevTime
,
jevFlags
,
jevPrio
,
jevStatus
,
jevNix
,
jevBirthTime
,
jevIdx
,
jevTargetNix
,
jevTargetBirthTime
,
jevTargetIdx
,
jevType
,
objid_obj
);
//important:check if an exception was raised
if
(
env
->
ExceptionCheck
())
{
printf
(
"exception i return
\n
"
);
return
NULL
;
}
return
return_obj
;
}
jobject
convertAckToMhrEvent
(
mh_sAck
*
MsgP
)
{
JNIEnv
*
env
;
jclass
PwrtObjid_id
;
jmethodID
PwrtObjid_cid
;
jobject
objid_obj
=
NULL
;
jstring
jevText
;
jstring
jevName
;
jstring
jevTime
;
jstring
jevBirthTime
;
jint
jevFlags
;
jint
jevPrio
;
jint
jevStatus
;
jint
jevNix
;
jint
jevIdx
;
jstring
jevTargetBirthTime
;
jint
jevTargetNix
;
jint
jevTargetIdx
;
char
targetBirthTime_str
[
40
];
jint
jevType
;
jint
oix
,
vid
;
char
time_str
[
40
];
char
birthTime_str
[
40
];
pwr_tObjid
objid
=
MsgP
->
Info
.
SupObject
;
pwr_tTime
time
=
MsgP
->
Info
.
EventTime
;
pwr_tTime
birthTime
=
MsgP
->
Info
.
Id
.
BirthTime
;
pwr_tTime
targetBirthTime
=
MsgP
->
TargetId
.
BirthTime
;
//hmta enviormentpekaren
jvm
->
AttachCurrentThread
((
void
**
)
&
env
,
NULL
);
if
(
env
==
NULL
)
printf
(
"env r null"
);
PwrtObjid_id
=
env
->
FindClass
(
"jpwr/rt/PwrtObjid"
);
PwrtObjid_cid
=
env
->
GetMethodID
(
PwrtObjid_id
,
"<init>"
,
"(II)V"
);
oix
=
(
jint
)
objid
.
oix
;
vid
=
(
jint
)
objid
.
vid
;
objid_obj
=
env
->
NewObject
(
PwrtObjid_id
,
PwrtObjid_cid
,
oix
,
vid
);
time_AtoAscii
(
&
time
,
time_eFormat_ComprDateAndTime
,
time_str
,
sizeof
(
time_str
));
time_AtoAscii
(
&
birthTime
,
time_eFormat_ComprDateAndTime
,
birthTime_str
,
sizeof
(
birthTime_str
));
time_AtoAscii
(
&
targetBirthTime
,
time_eFormat_ComprDateAndTime
,
targetBirthTime_str
,
sizeof
(
targetBirthTime_str
));
//gr om till Java-strngar
jevText
=
env
->
NewStringUTF
(
" "
);
//eventText anvnds inte vid ack
jevName
=
env
->
NewStringUTF
(
MsgP
->
Info
.
EventName
);
jevTime
=
env
->
NewStringUTF
(
time_str
);
jevBirthTime
=
env
->
NewStringUTF
(
birthTime_str
);
jevTargetBirthTime
=
env
->
NewStringUTF
(
targetBirthTime_str
);
//gr om till Java-int
jevFlags
=
(
jint
)
MsgP
->
Info
.
EventFlags
;
jevPrio
=
(
jint
)
MsgP
->
Info
.
EventPrio
;
jevStatus
=
(
jint
)
1
;
//finns ej i mh_sAck och anvnds ej heller
jevNix
=
(
jint
)
MsgP
->
Info
.
Id
.
Nix
;
jevIdx
=
(
jint
)
MsgP
->
Info
.
Id
.
Idx
;
jevTargetNix
=
(
jint
)
MsgP
->
TargetId
.
Nix
;
jevTargetIdx
=
(
jint
)
MsgP
->
TargetId
.
Idx
;
jevType
=
(
jint
)
MsgP
->
Info
.
EventType
;
jclass
MhrEvent_id
=
env
->
FindClass
(
"jpwr/rt/MhrEvent"
);
jmethodID
MhrEvent_cid
=
env
->
GetMethodID
(
MhrEvent_id
,
"<init>"
,
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIILjava/lang/String;IILjava/lang/String;IILjpwr/rt/PwrtObjid;)V"
);
//anropa callback metoden i Mh-klassen
jobject
return_obj
=
env
->
NewObject
(
MhrEvent_id
,
MhrEvent_cid
,
jevText
,
jevName
,
jevTime
,
jevFlags
,
jevPrio
,
jevStatus
,
jevNix
,
jevBirthTime
,
jevIdx
,
jevTargetNix
,
jevTargetBirthTime
,
jevTargetIdx
,
jevType
,
objid_obj
);
//important:check if an exception was raised
if
(
env
->
ExceptionCheck
())
{
printf
(
"exception i ack
\n
"
);
return
NULL
;
}
return
return_obj
;
}
static
void
gdh_ConvertUTFstring
(
char
*
out
,
char
*
in
)
{
char
*
s
,
*
t
;
s
=
in
;
t
=
out
;
while
(
*
s
)
{
if
(
*
s
==
-
61
)
{
if
(
*
(
s
+
1
)
==
-
91
)
{
*
t
=
''
;
s
++
;
}
else
if
(
*
(
s
+
1
)
==
-
92
)
{
*
t
=
''
;
s
++
;
}
else
if
(
*
(
s
+
1
)
==
-
74
)
{
*
t
=
''
;
s
++
;
}
else
if
(
*
(
s
+
1
)
==
-
123
)
{
*
t
=
''
;
s
++
;
}
else
if
(
*
(
s
+
1
)
==
-
124
)
{
*
t
=
''
;
s
++
;
}
else
if
(
*
(
s
+
1
)
==
-
106
)
{
*
t
=
''
;
s
++
;
}
else
*
t
=
*
s
;
}
else
*
t
=
*
s
;
s
++
;
t
++
;
}
*
t
=
0
;
}
java/exe/jpwr_rt_gdh/src/jpwr_rt_hist.h
0 → 100644
View file @
ad22de04
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jpwr_rt_Hist */
#ifndef _Included_jpwr_rt_Hist
#define _Included_jpwr_rt_Hist
#ifdef __cplusplus
extern
"C"
{
#endif
#undef jpwr_rt_Hist_mh_mEventFlags_Return
#define jpwr_rt_Hist_mh_mEventFlags_Return 1L
#undef jpwr_rt_Hist_mh_mEventFlags_Ack
#define jpwr_rt_Hist_mh_mEventFlags_Ack 2L
#undef jpwr_rt_Hist_mh_mEventFlags_Bell
#define jpwr_rt_Hist_mh_mEventFlags_Bell 4L
#undef jpwr_rt_Hist_mh_mEventFlags_Force
#define jpwr_rt_Hist_mh_mEventFlags_Force 8L
#undef jpwr_rt_Hist_mh_mEventFlags_InfoWindow
#define jpwr_rt_Hist_mh_mEventFlags_InfoWindow 16L
#undef jpwr_rt_Hist_mh_mEventFlags_Returned
#define jpwr_rt_Hist_mh_mEventFlags_Returned 32L
#undef jpwr_rt_Hist_mh_mEventFlags_NoObject
#define jpwr_rt_Hist_mh_mEventFlags_NoObject 64L
#undef jpwr_rt_Hist_mh_mEventStatus_NotRet
#define jpwr_rt_Hist_mh_mEventStatus_NotRet 1L
#undef jpwr_rt_Hist_mh_mEventStatus_NotAck
#define jpwr_rt_Hist_mh_mEventStatus_NotAck 2L
#undef jpwr_rt_Hist_mh_mEventStatus_Block
#define jpwr_rt_Hist_mh_mEventStatus_Block 4L
#undef jpwr_rt_Hist_mh_eEventPrio__
#define jpwr_rt_Hist_mh_eEventPrio__ 0L
#undef jpwr_rt_Hist_mh_eEventPrio_A
#define jpwr_rt_Hist_mh_eEventPrio_A 67L
#undef jpwr_rt_Hist_mh_eEventPrio_B
#define jpwr_rt_Hist_mh_eEventPrio_B 66L
#undef jpwr_rt_Hist_mh_eEventPrio_C
#define jpwr_rt_Hist_mh_eEventPrio_C 65L
#undef jpwr_rt_Hist_mh_eEventPrio_D
#define jpwr_rt_Hist_mh_eEventPrio_D 64L
#undef jpwr_rt_Hist_mh_eEventPrio_
#define jpwr_rt_Hist_mh_eEventPrio_ 63L
#undef jpwr_rt_Hist_mh_eEvent__
#define jpwr_rt_Hist_mh_eEvent__ 0L
#undef jpwr_rt_Hist_mh_eEvent_Ack
#define jpwr_rt_Hist_mh_eEvent_Ack 1L
#undef jpwr_rt_Hist_mh_eEvent_Block
#define jpwr_rt_Hist_mh_eEvent_Block 2L
#undef jpwr_rt_Hist_mh_eEvent_Cancel
#define jpwr_rt_Hist_mh_eEvent_Cancel 3L
#undef jpwr_rt_Hist_mh_eEvent_CancelBlock
#define jpwr_rt_Hist_mh_eEvent_CancelBlock 4L
#undef jpwr_rt_Hist_mh_eEvent_Missing
#define jpwr_rt_Hist_mh_eEvent_Missing 5L
#undef jpwr_rt_Hist_mh_eEvent_Reblock
#define jpwr_rt_Hist_mh_eEvent_Reblock 6L
#undef jpwr_rt_Hist_mh_eEvent_Return
#define jpwr_rt_Hist_mh_eEvent_Return 7L
#undef jpwr_rt_Hist_mh_eEvent_Unblock
#define jpwr_rt_Hist_mh_eEvent_Unblock 8L
#undef jpwr_rt_Hist_mh_eEvent_Info
#define jpwr_rt_Hist_mh_eEvent_Info 32L
#undef jpwr_rt_Hist_mh_eEvent_Alarm
#define jpwr_rt_Hist_mh_eEvent_Alarm 64L
#undef jpwr_rt_Hist_mh_eEvent_
#define jpwr_rt_Hist_mh_eEvent_ 65L
#undef jpwr_rt_Hist_EventType_ClearAlarmList
#define jpwr_rt_Hist_EventType_ClearAlarmList 66L
/* Inaccessible static: initDone */
/*
* Class: jpwr_rt_Hist
* Method: initIDs
* Signature: ()V
*/
JNIEXPORT
void
JNICALL
Java_jpwr_rt_Hist_initHistIDs
(
JNIEnv
*
,
jclass
);
/*
* Class: jpwr_rt_Hist
* Method: getHistList
* Signature: (Ljava/lang/String;Ljava/lang/String;ZZZZZZZZLjava/lang/String;Ljava/lang/String;)[Ljpwr/rt/MhrEvent;
*/
JNIEXPORT
jobjectArray
JNICALL
Java_jpwr_rt_Hist_getHistList
(
JNIEnv
*
,
jclass
,
jstring
,
jstring
,
jboolean
,
jboolean
,
jboolean
,
jboolean
,
jboolean
,
jboolean
,
jboolean
,
jboolean
,
jstring
,
jstring
);
#ifdef __cplusplus
}
#endif
#endif
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