Skip to content

Commit 2b795a9

Browse files
authored
Merge pull request #18 from scottlandis/master
- Added sensor recording
2 parents a65e31d + f3e7b9a commit 2b795a9

20 files changed

Lines changed: 460 additions & 88 deletions

File tree

torgi/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ android {
66
applicationId "org.sofwerx.torgi"
77
minSdkVersion 24
88
targetSdkVersion 27
9-
versionCode 2
10-
versionName "0.3"
9+
versionCode 3
10+
versionName "0.4"
1111
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1212
externalNativeBuild {
1313
cmake {

torgi/src/logger/java/org/sofwerx/torgi/ui/MainActivity.java

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,81 @@
11
package org.sofwerx.torgi.ui;
22

3+
import android.content.SharedPreferences;
34
import android.os.Bundle;
5+
import android.preference.PreferenceManager;
6+
import android.view.View;
7+
import android.widget.CompoundButton;
8+
import android.widget.Switch;
49
import android.widget.TextView;
510

611
import org.sofwerx.torgi.R;
12+
import org.sofwerx.torgi.service.TorgiService;
713

814
public class MainActivity extends AbstractTORGIActivity {
9-
private TextView status;
15+
private TextView status, infoBigData;
16+
private Switch switchBigData;
17+
private boolean systemChangingSwitch = false;
1018

1119
@Override
1220
public void onCreate(Bundle savedInstanceState) {
1321
super.onCreate(savedInstanceState);
1422
status = findViewById(R.id.textView);
23+
switchBigData = findViewById(R.id.switchBigData);
24+
infoBigData = findViewById(R.id.switchInfo);
25+
switchBigData.setOnCheckedChangeListener((buttonView, isChecked) -> {
26+
if (!systemChangingSwitch) {
27+
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
28+
SharedPreferences.Editor edit = prefs.edit();
29+
edit.putBoolean(TorgiService.PREFS_BIG_DATA,isChecked);
30+
edit.apply();
31+
if (serviceBound) {
32+
if (isChecked)
33+
torgiService.startSensorService();
34+
else
35+
torgiService.stopSensorService();
36+
}
37+
showStatus();
38+
}
39+
});
1540
}
1641

1742
@Override
1843
public void onResume() {
1944
super.onResume();
20-
if (permissionsPassed)
21-
status.setText(getString(R.string.notification));
22-
else
45+
showStatus();
46+
systemChangingSwitch = true;
47+
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
48+
switchBigData.setChecked(prefs.getBoolean(TorgiService.PREFS_BIG_DATA,false));
49+
systemChangingSwitch = false;
50+
}
51+
52+
@Override
53+
protected void onTorgiServiceConnected() {
54+
super.onTorgiServiceConnected();
55+
showStatus();
56+
}
57+
58+
private void showStatus() {
59+
if (permissionsPassed) {
60+
if (serviceBound) {
61+
status.setText(getString(R.string.notification));
62+
status.setVisibility(View.VISIBLE);
63+
switchBigData.setVisibility(View.VISIBLE);
64+
if (switchBigData.isChecked())
65+
infoBigData.setVisibility(View.VISIBLE);
66+
else
67+
infoBigData.setVisibility(View.INVISIBLE);
68+
} else {
69+
status.setVisibility(View.INVISIBLE);
70+
switchBigData.setVisibility(View.INVISIBLE);
71+
infoBigData.setVisibility(View.INVISIBLE);
72+
}
73+
} else {
2374
status.setText(getString(R.string.torgi_not_running));
75+
status.setVisibility(View.VISIBLE);
76+
switchBigData.setVisibility(View.INVISIBLE);
77+
infoBigData.setVisibility(View.INVISIBLE);
78+
}
2479
}
2580

2681
@Override

torgi/src/logger/res/layout/activity_logger.xml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
android:layout_width="80dp"
1313
android:layout_height="80dp"
1414
android:layout_centerInParent="true"
15-
android:src="@drawable/icon_gnns" />
15+
android:src="@drawable/ic_satellite" />
1616

1717
<TextView
1818
android:id="@+id/textView"
@@ -23,4 +23,25 @@
2323
android:gravity="center"
2424
android:text="@string/torgi_not_running"
2525
android:textSize="20sp" />
26+
27+
<Switch
28+
android:id="@+id/switchBigData"
29+
android:layout_width="wrap_content"
30+
android:layout_height="wrap_content"
31+
android:layout_below="@+id/textView"
32+
android:layout_centerHorizontal="true"
33+
android:showText="true"
34+
android:splitTrack="false"
35+
android:textOff="@string/normal_data"
36+
android:textOn="@string/big_data" />
37+
38+
<TextView
39+
android:id="@+id/switchInfo"
40+
android:layout_width="match_parent"
41+
android:layout_height="wrap_content"
42+
android:paddingLeft="20dp"
43+
android:paddingRight="20dp"
44+
android:layout_below="@+id/switchBigData"
45+
android:layout_centerHorizontal="true"
46+
android:text="@string/big_data_battery" />
2647
</RelativeLayout>

torgi/src/main/java/org/sofwerx/torgi/gnss/Constellation.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public enum Constellation {
1414

1515
private int value;
1616

17+
public static int size() { return Constellation.size(); }
18+
1719
Constellation(int value) {
1820
this.value = value;
1921
}

torgi/src/main/java/org/sofwerx/torgi/gnss/DataPoint.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,43 @@ public DataPoint(SpaceTime spaceTime) {
1818
this.spaceTime = spaceTime;
1919
}
2020

21+
/**
22+
* Gets the average GNSSEWValues for all satellites
23+
* @return
24+
*/
2125
public GNSSEWValues getAverageMeasurements() {
2226
return SatMeasurement.getAverage(measurements);
2327
}
2428

29+
//TODO hey dummy! maybe calculate the difference from baseline as well
30+
31+
/**
32+
* Gets the average GNSSEWValues for each constellation
33+
* @return array with index corresponding to the constellation number of the constellation
34+
*/
35+
public GNSSEWValues[] getAverageMeasurementsByConstellation() {
36+
GNSSEWValues[] values = new GNSSEWValues[Constellation.size()];
37+
38+
if ((measurements != null) && !measurements.isEmpty()) {
39+
Constellation con;
40+
ArrayList<SatMeasurement> conMeas;
41+
for (int i=0;i<values.length;i++) {
42+
con = Constellation.get(i);
43+
conMeas = null;
44+
for (SatMeasurement measurement:measurements) {
45+
if ((measurement.getSat() != null) && (measurement.getSat().getConstellation() == con)) {
46+
if (conMeas == null)
47+
conMeas = new ArrayList<>();
48+
conMeas.add(measurement);
49+
}
50+
}
51+
values[i] = SatMeasurement.getAverage(conMeas);
52+
}
53+
}
54+
55+
return values;
56+
}
57+
2558
public ArrayList<SatMeasurement> getMeasurements() {
2659
return measurements;
2760
}

torgi/src/main/java/org/sofwerx/torgi/gnss/EWDetection.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import java.util.ArrayList;
44

55
/**
6-
* Collects EW indicator levels and provides estimates on likelihood of EW activity
6+
* Collects EW indicator levels and provides estimates on likelihood of EW activity. This is a parallel
7+
* effort to the GeoPackage recording and contains duplicate information optimized for eventual real-time
8+
* detection of RFI.
79
*/
810
public class EWDetection {
911
private final static int MAX_POINT_STORAGE = 50;

torgi/src/main/java/org/sofwerx/torgi/gnss/Satellite.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ public Satellite(Constellation constellation, int svid) {
1010
this.svid = svid;
1111
}
1212

13+
public Constellation getConstellation() {
14+
return constellation;
15+
}
16+
1317
public boolean equals(Satellite sat) {
1418
if (sat == null)
1519
return false;

0 commit comments

Comments
 (0)