public TangoAPI(VIOReceiver vrec, DepthReceiver drec) {
   if (vrec == null) {
     throw new IllegalArgumentException("TANGOAPI vioReceiver must not be null");
   }
   if (drec == null) {
     throw new IllegalArgumentException("TANGOAPI depthReceiver must not be null");
   }
   vioReceiver = vrec;
   vioReceiver.buffer = (ByteBuffer) allocNativeOdomBuffer();
   vioReceiver.buffer.order(ByteOrder.LITTLE_ENDIAN);
   depthReceiver = drec;
 }
 @Override
 public void run() {
   int res = 0;
   while (true) {
     if (mBreakout) {
       Log.e(TAG, "Breaking out");
       break;
     }
     res = dowork();
     if ((res & UPDATED_DEPTH) != 0) depthReceiver.DepthCallback();
     if ((res & UPDATED_ODOM) != 0) vioReceiver.VIOCallback();
     try {
       Thread.sleep(33);
     } catch (InterruptedException e) {
       Log.e(TAG, "INSOMNIA", e);
     }
   }
   Log.e(TAG, "Broke out");
 }