From 2f12a4bd5ebe16c64fae5431fdde4cec6c7b1564 Mon Sep 17 00:00:00 2001 From: Miguel Angel Astor Romero Date: Wed, 17 Dec 2014 08:27:39 -0430 Subject: [PATCH] Removed control protocol implementation in favor of libnxtarcontrol. --- libs/libnxtarcontrol-sources_1.0.1.jar | Bin 0 -> 8173 bytes libs/libnxtarcontrol_1.0.1.jar | Bin 0 -> 11895 bytes .../nxtarbot/threads/MotorControlThread.java | 117 ++++++------------ 3 files changed, 38 insertions(+), 79 deletions(-) create mode 100644 libs/libnxtarcontrol-sources_1.0.1.jar create mode 100644 libs/libnxtarcontrol_1.0.1.jar diff --git a/libs/libnxtarcontrol-sources_1.0.1.jar b/libs/libnxtarcontrol-sources_1.0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..bd4432626a11e829a8853e9a643be3d1a546f7ee GIT binary patch literal 8173 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 literal 0 HcmV?d00001 diff --git a/libs/libnxtarcontrol_1.0.1.jar b/libs/libnxtarcontrol_1.0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..4973adb1c0bf40e2d2595023357f5421ec41e69c GIT binary patch literal 11895 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 qkLg!z`+X(&72EzaIgClass to control the motors on the robot based on isntructions received via + *

Class to control the motors on the robot based on instructions received via * Bluetooth.

- * - *

The instructions are codified on a very simple protocol:

- *

    - *
  • Every protocol packet is exactly two bytes long.
  • - *
  • The lowest order byte codifies the motor to control and the rotation - * direction of the same on it's highest four bits. The lower four bits - * indicate that the central motor should return to it's position of - * origin. This four bits can also be used for future expansions. - *
  • The highest order byte, a number between 0 and 100, contains the - * power to send to the motor.
  • - *
*/ -public class MotorControlThread extends Thread{ +public class MotorControlThread extends Thread implements UserActionListener{ private boolean done; - private DataInputStream inputStream; + private final DataInputStream inputStream; + private final NxtARControlProtocol controlProtocol; /** * Create a new MotorControlThread. @@ -48,90 +38,59 @@ public class MotorControlThread extends Thread{ * @param inputStream The stream to receive motor commands from. * @throws NullPointerException If inputStream is null. */ - public MotorControlThread(DataInputStream inputStream) throws NullPointerException{ + public MotorControlThread(final DataInputStream inputStream) throws NullPointerException{ if(inputStream == null) throw new NullPointerException("Input stream is null."); - done = false; + this.done = false; this.inputStream = inputStream; + this.controlProtocol = new NxtARControlProtocol(this.inputStream); + this.controlProtocol.registerUserActionListener(this); } /** *

Marks this thread as ready to finish cleanly.

*/ public void finish(){ - done = true; + this.done = true; + this.controlProtocol.removeUserActionListener(this); } /** - *

Receive and process motor control instructions via Bluetooth.

+ *

Receive and process motor control instructions using the protocol library.

*/ @Override public void run(){ - boolean motorA, motorB, motorC, recenterMotorB, rotate90; - int direction, rotation, tacho; - byte[] message = new byte[2]; - while(!done){ try{ - // Read the two bytes indicated by the protocol. - message[0] = inputStream.readByte(); - message[1] = inputStream.readByte(); - - // Decode the instruction parameters. - rotate90 = (message[0] & MotorMasks.ROTATE_90) > 0 ? true : false; - recenterMotorB = (message[0] & MotorMasks.RECENTER) > 0 ? true : false; - motorA = (message[0] & MotorMasks.MOTOR_A) > 0 ? true : false; - motorB = (message[0] & MotorMasks.MOTOR_B) > 0 ? true : false; - motorC = (message[0] & MotorMasks.MOTOR_C) > 0 ? true : false; - direction = (message[0] & MotorMasks.DIRECTION) > 0 ? BasicMotorPort.FORWARD : BasicMotorPort.BACKWARD; - - if(motorA){ - // Set motor A to run at specified speed. - Motor.A.setSpeed(message[1] * Battery.getVoltage()); - if(direction == BasicMotorPort.FORWARD) - Motor.A.forward(); - else if(direction == BasicMotorPort.BACKWARD) - Motor.A.backward(); - } - - if(motorB){ - // Set motor B to run at specified speed. - Motor.B.setSpeed(message[1] * Battery.getVoltage()); - if(direction == BasicMotorPort.FORWARD) - Motor.B.forward(); - else if(direction == BasicMotorPort.BACKWARD) - Motor.B.backward(); - } - - if(motorC){ - // Set motor C to run at specified speed. - Motor.C.setSpeed(message[1] * Battery.getVoltage()); - if(direction == BasicMotorPort.FORWARD) - Motor.C.forward(); - else if(direction == BasicMotorPort.BACKWARD) - Motor.C.backward(); - } - - if(recenterMotorB){ - // Return motor B to it's origin. - System.out.println("RECENTER"); - Motor.B.setSpeed(50 * Battery.getVoltage()); - tacho = Motor.B.getTachoCount() % 360; - rotation = -(tacho); - Motor.B.rotate(rotation, false); - } - - if(rotate90){ - // Rotate 90 degrees. - System.out.println("ROTATE 90"); - Motor.B.rotate(-120, false); - } - + controlProtocol.readAndExecuteMessage(); }catch(IOException io){ // On disconnection, terminate. done = true; } } } + + @Override + public void onListenerRegistered() { + System.out.println("Registered."); + } + + @Override + public void onUserAction1(DecodedControlAction.Motor motorFlag, int speed) { + // Rotate 90 degrees. + System.out.println("USER_1 :: ROTATE 90"); + Motor.B.rotate(-120, false); + } + + @Override + public void onUserAction2(DecodedControlAction.Motor motorFlag, int speed) { } + + @Override + public void onUserAction3(DecodedControlAction.Motor motorFlag, int speed) { } + + @Override + public void onListenerRemoved() { + System.out.println("Remove."); + } }