Advertisement
exoarn

MetaWear full code

Nov 24th, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.90 KB | None | 0 0
  1. /*
  2.  * Copyright 2015 MbientLab Inc. All rights reserved.
  3.  */
  4.  
  5. package com.mbientlab.freefalldetector;
  6.  
  7. import android.app.Activity;
  8. import android.bluetooth.BluetoothDevice;
  9. import android.bluetooth.BluetoothManager;
  10. import android.content.ComponentName;
  11. import android.content.Context;
  12. import android.content.Intent;
  13. import android.content.ServiceConnection;
  14. import android.os.Bundle;
  15. import android.os.IBinder;
  16. import android.util.Log;
  17. import android.view.Menu;
  18. import android.view.MenuItem;
  19. import android.view.View;
  20.  
  21. import com.mbientlab.metawear.AsyncOperation;
  22. import com.mbientlab.metawear.Message;
  23. import com.mbientlab.metawear.MetaWearBleService;
  24. import com.mbientlab.metawear.MetaWearBoard;
  25. import com.mbientlab.metawear.RouteManager;
  26. import com.mbientlab.metawear.UnsupportedModuleException;
  27. import com.mbientlab.metawear.module.Accelerometer;
  28. import com.mbientlab.metawear.module.Debug;
  29. import com.mbientlab.metawear.module.Led;
  30. import com.mbientlab.metawear.processor.Average;
  31. import com.mbientlab.metawear.processor.Comparison;
  32. import com.mbientlab.metawear.processor.Rss;
  33. import com.mbientlab.metawear.processor.Threshold;
  34. import com.mbientlab.metawear.module.Macro;
  35. import com.mbientlab.metawear.module.Haptic;
  36.  
  37. public class MainActivity extends Activity implements ServiceConnection {
  38.  
  39.     private static final String LOG_TAG = "UpOrientationDetector", UP_KEY= "up_key", NOUP_KEY="noup_key";
  40.     private MetaWearBleService.LocalBinder serviceBinder;
  41.     private MetaWearBoard mwBoard;
  42.     private Accelerometer accelModule;
  43.     private Led ledModule;
  44.     private Debug debugModule;
  45.     private Haptic hapticModule;
  46.     private Macro macroModule;
  47.  
  48.  
  49.  
  50.     @Override
  51.     protected void onCreate(Bundle savedInstanceState) {
  52.         super.onCreate(savedInstanceState);
  53.         setContentView(R.layout.activity_main);
  54.  
  55.         getApplicationContext().bindService(new Intent(this, MetaWearBleService.class), this, Context.BIND_AUTO_CREATE);
  56.  
  57.         findViewById(R.id.start_accel).setOnClickListener(new View.OnClickListener() {
  58.             @Override
  59.             public void onClick(View v) {
  60.  
  61.                 accelModule.enableAxisSampling();
  62.                 accelModule.start();
  63.             }
  64.         });
  65.         findViewById(R.id.stop_accel).setOnClickListener(new View.OnClickListener() {
  66.             @Override
  67.             public void onClick(View v) {
  68.                 accelModule.stop();
  69.                 accelModule.disableAxisSampling();
  70.  
  71.             }
  72.         });
  73.         findViewById(R.id.reset_board).setOnClickListener(new View.OnClickListener() {
  74.             @Override
  75.             public void onClick(View v) {
  76.                 debugModule.resetDevice();
  77.             }
  78.         });
  79.     }
  80.  
  81.     @Override
  82.     public void onDestroy() {
  83.         super.onDestroy();
  84.  
  85.         getApplicationContext().unbindService(this);
  86.     }
  87.  
  88.     @Override
  89.     public boolean onCreateOptionsMenu(Menu menu) {
  90.         // Inflate the menu; this adds items to the action bar if it is present.
  91.         getMenuInflater().inflate(R.menu.menu_main, menu);
  92.         return true;
  93.     }
  94.  
  95.     @Override
  96.     public boolean onOptionsItemSelected(MenuItem item) {
  97.         // Handle action bar item clicks here. The action bar will
  98.         // automatically handle clicks on the Home/Up button, so long
  99.         // as you specify a parent activity in AndroidManifest.xml.
  100.         int id = item.getItemId();
  101.  
  102.         //noinspection SimplifiableIfStatement
  103.         if (id == R.id.action_settings) {
  104.             return true;
  105.         }
  106.  
  107.         return super.onOptionsItemSelected(item);
  108.     }
  109.  
  110.     @Override
  111.     public void onServiceConnected(ComponentName name, IBinder service) {
  112.         serviceBinder= (MetaWearBleService.LocalBinder) service;
  113.  
  114.         String mwMacAddress= "C2:CC:7D:02:FE:23";   ///< Put your board's MAC address here
  115.         BluetoothManager btManager= (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
  116.         BluetoothDevice btDevice= btManager.getAdapter().getRemoteDevice(mwMacAddress);
  117.  
  118.         mwBoard= serviceBinder.getMetaWearBoard(btDevice);
  119.         mwBoard.setConnectionStateHandler(new MetaWearBoard.ConnectionStateHandler() {
  120.             @Override
  121.             public void connected() {
  122.                 Log.i(LOG_TAG, "Connected");
  123.  
  124.                 try {
  125.                     accelModule= mwBoard.getModule(Accelerometer.class);
  126.                     accelModule.enableAxisSampling();
  127.                     accelModule.start();
  128.                     Log.i(LOG_TAG, "accelModule loaded");
  129.                     ledModule= mwBoard.getModule(Led.class);
  130.                     Log.i(LOG_TAG, "ledModule loaded");
  131.                     hapticModule = mwBoard.getModule(Haptic.class);
  132.                     Log.i(LOG_TAG, "hapticModule loaded");
  133.                     macroModule = mwBoard.getModule(Macro.class);
  134.                     Log.i(LOG_TAG, "macrocModule loaded");
  135.  
  136.                     ledModule.configureColorChannel(Led.ColorChannel.BLUE)
  137.                             .setRiseTime((short) 0).setPulseDuration((short) 1000)
  138.                             .setRepeatCount((byte) 5).setHighTime((short) 500)
  139.                             .setHighIntensity((byte) 16).setLowIntensity((byte) 16)
  140.                             .commit();
  141.  
  142.                     accelModule.setOutputDataRate(50f);   ///< Set operating freq to 50Hz
  143.  
  144.                     macroModule.record(new Macro.CodeBlock() {
  145.                         @Override
  146.                         public void commands() {
  147.  
  148.                             accelModule.routeData().fromXAxis()
  149.                                     //.process(new Rss())
  150.                                     .process(new Average((byte) 8))
  151.                                     .process(new Threshold(0.9f, Threshold.OutputMode.BINARY))
  152.                                     .split()
  153.                                     .branch().process(new Comparison(Comparison.Operation.EQ, -1)).stream(NOUP_KEY)
  154.                                     .branch().process(new Comparison(Comparison.Operation.EQ, 1)).stream(UP_KEY)
  155.                                     .end()
  156.                                     .commit().onComplete(new AsyncOperation.CompletionHandler<RouteManager>() {
  157.                                 @Override
  158.                                 public void success(RouteManager result) {
  159.                                     result.subscribe(UP_KEY, new RouteManager.MessageHandler() { //setLogMessageHandler(UP_KEY, new RouteManager.MessageHandler() {
  160.                                         @Override
  161.                                         public void process(Message message) {
  162.  
  163.                                             Log.i(LOG_TAG, "UP");
  164.                                             ledModule.play(true);
  165.                                             hapticModule.startMotor((short) 500);
  166.                                         }
  167.                                     });
  168.                                     result.subscribe(NOUP_KEY, new RouteManager.MessageHandler() {//setLogMessageHandler(NOUP_KEY, new RouteManager.MessageHandler() {
  169.                                         @Override
  170.                                         public void process(Message message) {
  171.                                             Log.i(LOG_TAG, "DOWN");
  172.                                         }
  173.                                     });
  174.                                 }
  175.                     });
  176.                         } });
  177.  
  178.                     debugModule= mwBoard.getModule(Debug.class);
  179.  
  180.                 } catch (UnsupportedModuleException e) {
  181.                     Log.e(LOG_TAG, "Cannot find module", e);
  182.                 }
  183.             }
  184.  
  185.             @Override
  186.             public void disconnected() {
  187.                 Log.i(LOG_TAG, "Disconnected");
  188.             }
  189.         });
  190.         mwBoard.connect();
  191.     }
  192.  
  193.     @Override
  194.     public void onServiceDisconnected(ComponentName name) {
  195.  
  196.     }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement