getGesture method

Gesture getGesture()

Returns the actual detected gesture.

Implementation

Gesture getGesture() {
  var gesture = Gesture.nothing;
  switch (i2c.readByteReg(paj7620Id, 0x43)) {
    case gesRightFlag:
      sleep(Duration(milliseconds: gestureReactionTime));
      var data = i2c.readByteReg(paj7620Id, 0x43);
      if (data == gesLeftFlag) {
        gesture = Gesture.rightLeft;
      } else if (data == gesForwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.forward;
      } else if (data == gesBackwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.backward;
      } else {
        gesture = Gesture.right;
      }
      return gesture;
    case gesLeftFlag:
      sleep(Duration(milliseconds: gestureReactionTime));
      var data = i2c.readByteReg(paj7620Id, 0x43);
      if (data == gesRightFlag) {
        gesture = Gesture.leftRight;
      } else if (data == gesForwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.forward;
      } else if (data == gesBackwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.backward;
      } else {
        gesture = Gesture.left;
      }
      return gesture;
    case gesUpFLag:
      sleep(Duration(milliseconds: gestureReactionTime));
      var data = i2c.readByteReg(paj7620Id, 0x43);
      if (data == gesDownFlag) {
        gesture = Gesture.upDown;
      } else if (data == gesForwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.forward;
      } else if (data == gesBackwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.backward;
      } else {
        gesture = Gesture.up;
      }
      return gesture;
    case gesDownFlag:
      sleep(Duration(milliseconds: gestureReactionTime));
      var data = i2c.readByteReg(paj7620Id, 0x43);
      if (data == gesUpFLag) {
        gesture = Gesture.downUp;
      } else if (data == gesForwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.forward;
      } else if (data == gesBackwardFlag) {
        sleep(Duration(milliseconds: gestureQuitTime));
        gesture = Gesture.backward;
      } else {
        gesture = Gesture.down;
      }
      return gesture;
    case gesForwardFlag:
      sleep(Duration(milliseconds: gestureReactionTime));
      var data = i2c.readByteReg(paj7620Id, 0x43);
      if (data == gesBackwardFlag) {
        gesture = Gesture.forwardBackward;
      } else {
        gesture = Gesture.forward;
      }
      sleep(Duration(milliseconds: gestureQuitTime));
      return gesture;
    case gesBackwardFlag:
      sleep(Duration(milliseconds: gestureReactionTime));
      var data = i2c.readByteReg(paj7620Id, 0x43);
      if (data == gesForwardFlag) {
        gesture = Gesture.backwardForward;
      } else {
        gesture = Gesture.backward;
      }
      sleep(Duration(milliseconds: gestureQuitTime));
      return gesture;
    case gesClockwiseFlag:
      return Gesture.clockwise;
    case gesCountClockwiseFlag:
      return Gesture.antiClockwise;
    default:
      var data = i2c.readByteReg(paj7620Id, 0x44);
      if (data == gesWaveFlag) {
        Gesture.wave;
      } else {
        return Gesture.nothing;
      }
      break;
  }
  return Gesture.nothing;
}