/*
* Copyright 2007-2008 Volker Fritzsch
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package motej.request;
/**
* Requests a specific DataReport mode.
* <p>
* @author <a href="mailto:vfritzsch@users.sourceforge.net">Volker Fritzsch</a>
*/
public class ReportModeRequest implements MoteRequest {
/**
* Status Information
* <p>
* <i>not requestable</i>
*/
public static final byte DATA_REPORT_0x20 = 0x20;
/**
* Answer report to read data command (0x17)
* <p>
* <i>not requestable</i>
*/
public static final byte DATA_REPORT_0x21 = 0x21;
/**
* Core Buttons
*/
public static final byte DATA_REPORT_0x30 = 0x30;
/**
* Core Buttons and Accelerometer
*/
public static final byte DATA_REPORT_0x31 = 0x31;
/**
* Core Buttons with 8 Extension bytes
*/
public static final byte DATA_REPORT_0x32 = 0x32;
/**
* Core Buttons and Accelerometer with 12 IR bytes
*/
public static final byte DATA_REPORT_0x33 = 0x33;
/**
* Core Buttons with 19 Extension bytes
*/
public static final byte DATA_REPORT_0x34 = 0x34;
/**
* Core Buttons and Accelerometer with 16 Extension Bytes
*/
public static final byte DATA_REPORT_0x35 = 0x35;
/**
* Core Buttons with 10 IR bytes and 9 Extension Bytes
*/
public static final byte DATA_REPORT_0x36 = 0x36;
/**
* Core Buttons and Accelerometer with 10 IR bytes and 6 Extension Bytes
*/
public static final byte DATA_REPORT_0x37 = 0x37;
/**
* 21 Extension Bytes
*/
public static final byte DATA_REPORT_0x3d = 0x3d;
/**
* Interleaved Core Buttons and Accelerometer with 36 IR bytes
*
* @see motej.request#DATA_REPORT_0x3f
*/
public static final byte DATA_REPORT_0x3e = 0x3e;
/**
* Interleaved Core Buttons and Accelerometer with 36 IR bytes
*
* @see motej.request#DATA_REPORT_0x3e
*/
public static final byte DATA_REPORT_0x3f = 0x3f;
private byte mode;
private boolean continuous;
public ReportModeRequest(byte mode) {
this(mode, false);
}
public ReportModeRequest(byte mode, boolean continuous) {
if (mode < 0x30 || (mode > 0x37 && mode < 0x3d) || mode > 0x3f) {
throw new IllegalArgumentException("Undefined data report mode");
}
this.mode = mode;
this.continuous = continuous;
}
public byte[] getBytes() {
return new byte[] { 82, 18, continuous ? (byte) 4 : (byte) 0, mode };
}
}