Skip to content

Commit d5a28a4

Browse files
neel1998CloudyPadmal
authored andcommitted
logic analyzer logging/playback added (#1910)
1 parent e09392b commit d5a28a4

File tree

9 files changed

+543
-115
lines changed

9 files changed

+543
-115
lines changed

app/src/main/java/io/pslab/activity/DataLoggerActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import io.pslab.models.BaroData;
3636
import io.pslab.models.CompassData;
3737
import io.pslab.models.GyroData;
38+
import io.pslab.models.LogicAnalyzerData;
3839
import io.pslab.models.LuxData;
3940
import io.pslab.models.OscilloscopeData;
4041
import io.pslab.models.PowerSourceData;
@@ -120,6 +121,9 @@ protected void onCreate(Bundle savedInstanceState) {
120121
case "Power Source":
121122
categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getResources().getString(R.string.power_source));
122123
break;
124+
case "Logic Analyzer":
125+
categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getResources().getString(R.string.logical_analyzer));
126+
break;
123127
default:
124128
categoryData = LocalDataLog.with().getAllSensorBlocks();
125129
getSupportActionBar().setTitle(getString(R.string.logged_data));
@@ -279,6 +283,9 @@ private RealmObject getObject(String objectType, String[] data, long time, long
279283
case "Power Source":
280284
returnObject = new PowerSourceData(time, block, Float.valueOf(data[2]), Float.valueOf(data[3]), Float.valueOf(data[4]), Float.valueOf(data[5]), Float.valueOf(data[6]), Float.valueOf(data[7]));
281285
break;
286+
case "Logic Analyzer":
287+
returnObject = new LogicAnalyzerData(time, block, data[2], Integer.valueOf(data[3]), data[4], data[5], Float.valueOf(data[6]), Float.valueOf(data[7]));
288+
break;
282289
default:
283290
returnObject = null;
284291
break;

app/src/main/java/io/pslab/activity/LogicalAnalyzerActivity.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import android.support.design.widget.BottomSheetBehavior;
1010
import android.support.v7.app.AppCompatActivity;
1111
import android.support.v7.widget.Toolbar;
12-
import android.support.v7.widget.TooltipCompat;
1312
import android.view.GestureDetector;
1413
import android.view.MenuItem;
1514
import android.view.MotionEvent;
@@ -23,12 +22,15 @@
2322
import io.pslab.R;
2423
import io.pslab.communication.ScienceLab;
2524
import io.pslab.fragment.LALogicLinesFragment;
25+
import io.pslab.models.LogicAnalyzerData;
26+
import io.pslab.others.LocalDataLog;
2627
import io.pslab.others.MathUtils;
2728
import io.pslab.others.ScienceLabCommon;
2829

2930
import butterknife.BindView;
3031
import butterknife.ButterKnife;
3132
import io.pslab.others.SwipeGestureDetector;
33+
import io.realm.RealmResults;
3234

3335
/**
3436
* Created by viveksb007 on 10/5/17.
@@ -56,6 +58,11 @@ public class LogicalAnalyzerActivity extends AppCompatActivity {
5658
private GestureDetector gestureDetector;
5759
private TextView showText;
5860
private boolean btnLongpressed;
61+
private final String KEY_LOG = "has_log";
62+
private final String DATA_BLOCK = "data_block";
63+
public boolean isPlayback = false;
64+
public RealmResults<LogicAnalyzerData> recordedLAData;
65+
5966

6067
@Override
6168
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -124,6 +131,12 @@ public boolean onTouch(View v, MotionEvent event) {
124131
return true;
125132
}
126133
});
134+
135+
if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) {
136+
recordedLAData = LocalDataLog.with()
137+
.getBlockOfLARecords(getIntent().getExtras().getLong(DATA_BLOCK));
138+
isPlayback = true;
139+
}
127140
}
128141

129142
@Override

app/src/main/java/io/pslab/adapters/SensorLoggerListAdapter.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import io.pslab.activity.BarometerActivity;
2828
import io.pslab.activity.CompassActivity;
2929
import io.pslab.activity.GyroscopeActivity;
30+
import io.pslab.activity.LogicalAnalyzerActivity;
3031
import io.pslab.activity.LuxMeterActivity;
3132
import io.pslab.activity.MapsActivity;
3233
import io.pslab.activity.MultimeterActivity;
@@ -39,6 +40,7 @@
3940
import io.pslab.models.BaroData;
4041
import io.pslab.models.GyroData;
4142
import io.pslab.models.CompassData;
43+
import io.pslab.models.LogicAnalyzerData;
4244
import io.pslab.models.LuxData;
4345
import io.pslab.models.MultimeterData;
4446
import io.pslab.models.OscilloscopeData;
@@ -125,6 +127,10 @@ public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
125127
holder.sensor.setText(R.string.multimeter);
126128
holder.tileIcon.setImageDrawable(context.getResources().getDrawable(R.drawable.tile_icon_multimeter));
127129
break;
130+
case PSLabSensor.LOGIC_ANALYZER:
131+
holder.sensor.setText(R.string.logical_analyzer);
132+
holder.tileIcon.setImageDrawable(context.getResources().getDrawable(R.drawable.tile_icon_logic_analyzer));
133+
break;
128134
default:
129135
break;
130136
}
@@ -205,6 +211,11 @@ private void handleCardViewClick(SensorDataBlock block) {
205211
multimeter.putExtra(KEY_LOG, true);
206212
multimeter.putExtra(DATA_BLOCK, block.getBlock());
207213
context.startActivity(multimeter);
214+
} else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.logical_analyzer))) {
215+
Intent laIntent = new Intent(context, LogicalAnalyzerActivity.class);
216+
laIntent.putExtra(KEY_LOG, true);
217+
laIntent.putExtra(DATA_BLOCK, block.getBlock());
218+
context.startActivity(laIntent);
208219
}
209220
}
210221

@@ -244,6 +255,8 @@ public void onClick(DialogInterface dialog, int whichButton) {
244255
LocalDataLog.with().clearBlockOfPowerRecords(block.getBlock());
245256
} else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.MULTIMETER)) {
246257
LocalDataLog.with().clearBlockOfMultimeterRecords(block.getBlock());
258+
} else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.LOGIC_ANALYZER)) {
259+
LocalDataLog.with().clearBlockOfLARecords(block.getBlock());
247260
}
248261
LocalDataLog.with().clearSensorBlock(block.getBlock());
249262
dialog.dismiss();
@@ -461,6 +474,25 @@ private void populateMapData(SensorDataBlock block) {
461474
}
462475
}
463476
setMapDataToIntent(array);
477+
} else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.LOGIC_ANALYZER)) {
478+
RealmResults<LogicAnalyzerData> data = LocalDataLog.with().getBlockOfLARecords(block.getBlock());
479+
JSONArray array = new JSONArray();
480+
for (LogicAnalyzerData d : data) {
481+
try {
482+
JSONObject i = new JSONObject();
483+
i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime()));
484+
i.put("channel", d.getChannel());
485+
i.put("channel_mode", d.getChannelMode());
486+
i.put("xaxis", d.getDataX());
487+
i.put("yaxis", d.getDataY());
488+
i.put("lat", d.getLat());
489+
i.put("lon", d.getLon());
490+
if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i);
491+
} catch (JSONException e) {
492+
e.printStackTrace();
493+
}
494+
}
495+
setMapDataToIntent(array);
464496
}
465497
}
466498

0 commit comments

Comments
 (0)