-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDDDR_MotionSensor_Handler.java
81 lines (51 loc) · 2.19 KB
/
DDDR_MotionSensor_Handler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import javax.realtime.PeriodicParameters;
import javax.realtime.PeriodicTimer;
import javax.realtime.PriorityParameters;
import javax.realtime.PriorityScheduler;
import javax.realtime.Timer;
import javax.realtime.RelativeTime;
import javax.safetycritical.StorageConfigurationParameters;
import javax.realtime.*;
import javax.safetycritical.*;
import java.util.Random;
// Implementaion of a periodic event handler
public class DDDR_MotionSensor_Handler extends PeriodicEventHandler {
static boolean RM_flag = false ;
public DDDR_MotionSensor_Handler() {
super(new PriorityParameters(PriorityScheduler.instance()
.getNormPriority()), new PeriodicParameters(null,
new RelativeTime(30000, 0)), new StorageConfigurationParameters(
32768, 4096, 4096), 65536, "MotionSensor_Handler");
}
public void handleEvent() {
try{
double S_value = Motion_Sensor_AV();
if( RM_flag == false && S_value > 0.5 ){ // different activities have diffrent threshold so for medium we have 0.5
for(int i=1; i< (int)Math.ceil((120-60)/DDDR_PMMission.Slop);i++){
DDDR_PMMission.New_Pace_Interval = (int)Math.ceil(60000/(60 + DDDR_PMMission.Slop*i));
RealtimeThread.sleep(new RelativeTime(DDDR_PMMission.reactionTime/(int)Math.ceil((120-60)/DDDR_PMMission.Slop),0)); //sleep
System.out.println("New Pacing Interval in DDDR:" + DDDR_PMMission.New_Pace_Interval);
}
RM_flag = true;
}else if(RM_flag == true && S_value <= 0.5){
for(int i=1; i< Math.ceil((120-60)/DDDR_PMMission.Slop);i++){
DDDR_PMMission.New_Pace_Interval = (int)Math.ceil(60000/(120 - DDDR_PMMission.Slop*i));
RealtimeThread.sleep(new RelativeTime((int)Math.ceil(DDDR_PMMission.recoveryTime/Math.ceil((120-60)/DDDR_PMMission.Slop)),0)); //sleep
System.out.println("New Pacing Interval in DDDR:" + DDDR_PMMission.New_Pace_Interval);
}
RM_flag = false;
}
}catch (InterruptedException ie)
{
System.out.println(ie.getMessage());
}
}
public double Motion_Sensor_AV() {
//Sensor Reading Value
// Prototype Implementation
double Sensor_Value=0;
Random randomGenerator = new Random();
Sensor_Value = randomGenerator.nextDouble();
return Sensor_Value;
}
}// end main MotionSensor class