/********************************************************************************* * TotalCross Software Development Kit * * Copyright (C) 2000-2012 SuperWaba Ltda. * * All Rights Reserved * * * * This library and virtual machine is distributed in the hope that it will * * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * * * This file is covered by the GNU LESSER GENERAL PUBLIC LICENSE VERSION 3.0 * * A copy of this license is located in file license.txt at the root of this * * SDK or can be downloaded here: * * http://www.gnu.org/licenses/lgpl-3.0.txt * * * *********************************************************************************/ package totalcross.io.device.bluetooth; /** * The <code>DeviceClass</code> class represents the class of device (CoD) record as defined by the Bluetooth * specification. This record is defined in the Bluetooth Assigned Numbers document and contains information on the type * of the device and the type of services available on the device. * <P> * * The Bluetooth Assigned Numbers document (<a href="http://www.bluetooth.org/assigned-numbers/sdp.htm"> * http://www.bluetooth.org/assigned-numbers/sdp.htm</a>) defines the service class, major device class, and minor * device class. The table below provides some examples of possible return values and their meaning: * <TABLE> * <TR> * <TH>Method</TH> * <TH>Return Value</TH> * <TH>Class of Device</TH> * </TR> * <TR> * <TD><code>getServiceClasses()</code></TD> * <TD>0x22000</TD> * * <TD>Networking and Limited Discoverable Major Service Classes</TD> * </TR> * <TR> * <TD><code>getServiceClasses()</code></TD> * <TD>0x100000</TD> * <TD>Object Transfer Major Service Class</TD> * </TR> * <TR> * <TD><code>getMajorDeviceClass()</code></TD> * <TD>0x00</TD> * * <TD>Miscellaneous Major Device Class</TD> * </TR> * <TR> * <TD><code>getMajorDeviceClass()</code></TD> * <TD>0x200</TD> * <TD>Phone Major Device Class</TD> * </TR> * <TR> * <TD><code>getMinorDeviceClass()</code></TD> * <TD>0x0C</TD> * <TD>With a Computer Major Device Class, Laptop Minor Device Class</TD> * </TR> * * <TR> * <TD><code>getMinorDeviceClass()</code></TD> * <TD>0x04</TD> * <TD>With a Phone Major Device Class, Cellular Minor Device Class</TD> * </TR> * </TABLE> * * @since TotalCross 1.2 */ public class DeviceClass { /** record of this class of device. */ private int record; /** record masks */ private static final int SERVICE_CLASS_MASK = 0xFFE000; private static final int MAJOR_DEVICE_CLASS_MASK = 0x001F00; private static final int MINOR_DEVICE_CLASS_MASK = 0x0000FC; /** * Creates a <code>DeviceClass</code> from the class of device record provided. <code>record</code> must follow the * format of the class of device record in the Bluetooth specification. * * @param record * describes the classes of a device * @throws IllegalArgumentException * if record has any bits between 24 and 31 set * @since TotalCross 1.2 */ public DeviceClass(int record) throws IllegalArgumentException { if ((record & 0xFF000000) != 0) throw new IllegalArgumentException(); this.record = record; } /** * Retrieves the major device class. A device may have only a single major device class. * * @return the major device class * @since TotalCross 1.2 */ public int getMajorDeviceClass() { return record & MAJOR_DEVICE_CLASS_MASK; } /** * Retrieves the minor device class. * * @return the minor device class * @since TotalCross 1.2 */ public int getMinorDeviceClass() { return record & MINOR_DEVICE_CLASS_MASK; } /** * Retrieves the major service classes. A device may have multiple major service classes. When this occurs, the major * service classes are bitwise OR'ed together. * * @return the major service classes * @since TotalCross 1.2 */ public int getServiceClasses() { return record & SERVICE_CLASS_MASK; } }