package com.roboclub.robobuggy.nodes.sensors;
import com.roboclub.robobuggy.serial.RBSerialMessage;
/**
* Private class used to represent RBSM messages
*/
public class RBSMessage {
private static final byte HEADER = RBSerialMessage.getHeaderByte("RBSM_MID_MEGA_COMMAND");
private static final byte FOOTER = RBSerialMessage.getHeaderByte("FOOTER");
private short angle;
private boolean brakesEngaged;
/**
* Create a new RBSMessage object to send to the Arduino
*
* @param angle desired commanded angle in degrees*1000
* @param brakesEngaged desired brake state
*/
public RBSMessage(short angle, boolean brakesEngaged) {
this.angle = angle;
this.brakesEngaged = brakesEngaged;
}
/**
* Returns a byte array of the RBSMessage to send to the Arduino
*
* @return a byte array of the RBSMessage to send to the Arduino
*/
public byte[] getMessageBytes() {
byte[] bytes = new byte[6];
bytes[0] = HEADER;
bytes[1] = (byte) ((angle >> 8) & 0xFF);
bytes[2] = (byte) (angle);
if (brakesEngaged)
bytes[3] = (byte) 1;
else
bytes[3] = (byte) 0;
bytes[4] = (byte) (0xc0);
bytes[5] = FOOTER;
return bytes;
}
}