Downloading Logged Sensor Data
Hi Eric,
I have been trying to set the board to log sensor data and then download the logged data
exploring the Logging API in the metawear api.
I got the board logModule= mwBoard.getModule(Logging.class);
got the
long logCapacity=logModule.getLogCapacity();
Log.i("TAG","Log Capacity= "+logCapacity);which returns
Log Capacity= 11136
Now when I try to download as,
com.mbientlab.metawear.AsyncOperation<Integer>
i= logModule.downloadLog(0.1f,new Logging.DownloadHandler() {
@Override
public void onProgressUpdate(int nEntriesLeft, int totalEntries) {
Log.i("MainActivity", String.format("Progress= %d / %d", nEntriesLeft,
totalEntries));
if (nEntriesLeft == 0) {
mwBoard.disconnect();
}
}
});
further when I do a ,Log.i("TAG","Res:"+i.result());I get a Task Not Yet complete Exception.
So my question is,
1) How do you fetch the data logged in the board memory.
2) How do you configure (as in the Metabase App) which sensor data to be logged and at what interval.
This discussion has been closed.
Comments
public void startDataLogging(){
try {
mwBoard.getModule(Accelerometer.class).routeData().fromAxes().log("accel_log_key").commit()
.onComplete(new AsyncOperation.CompletionHandler<RouteManager>() {
@Override
public void success(RouteManager result) {
super.success(result);
Log.i("TAG","Started Data Logging");
Collection<String> res= result.getLogKeys();
for(String k:res){
Log.i("TAG","Res: "+k);
}
result.subscribe("accel_log_key", new RouteManager.MessageHandler() {
@Override
public void process(Message msg) {
Log.i("TAG","Result: "+msg.getData().toString());
}
});
}
setLogMessageHandlerinstead of subscribe. You still need to start the accelerometer and logger to log data.Logging.DownloadHandler(){onFailurefunction return an exception when you create a date route?accModule.routeData().fromAxes().log("log_stream")
.commit().onComplete(new AsyncOperation.CompletionHandler<RouteManager>() {
@Override
public void success(RouteManager result) {
result.setLogMessageHandler("log_stream", new RouteManager.MessageHandler() {
@Override
public void process(Message msg) {
CartesianFloat axes = msg.getData(CartesianFloat.class);
Log.i("MainActivity", axes.toString());
}
});
logModule.startLogging();
logModule.downloadLog((float)0.1, new Logging.DownloadHandler() {
@Override
public void onProgressUpdate(int nEntriesLeft, int totalEntries) {
Log.i("TAG", String.format("Progress= %d / %d", nEntriesLeft,
totalEntries));
if(nEntriesLeft == 0) {
mwBoard.disconnect();
}
}
});
}
@Override
public void failure(Throwable error) {
super.failure(error);
Log.i("TAG", "Failed to retrieve data");
error.printStackTrace();
}
});
route.setLogMessageHandler("log_stream", new RouteManager.MessageHandler() {
@Override
public void process(Message msg) {
CartesianFloat axes = msg.getData(CartesianFloat.class);
Log.i("MainActivity", axes.toString());
}
});
logModule.downloadLog((float)0.1, new Logging.DownloadHandler() {
@Override
public void onProgressUpdate(int nEntriesLeft, int totalEntries) {
Log.i("Thermistor", String.format("Progress= %d / %d", nEntriesLeft,
totalEntries));
if(nEntriesLeft == 0) {
}
}
});