/** * BlueCove - Java library for Bluetooth * * Java docs licensed under the Apache License, Version 2.0 * http://www.apache.org/licenses/LICENSE-2.0 * (c) Copyright 2001, 2002 Motorola, Inc. ALL RIGHTS RESERVED. * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. * * @version $Id$ */ package javax.bluetooth; import com.intel.bluetooth.BluetoothConsts; import com.intel.bluetooth.DebugLog; /** * 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 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> * */ public class DeviceClass { private static final int SERVICE_MASK = 0xffe000; private static final int MAJOR_MASK = 0x001f00; private static final int MINOR_MASK = 0x0000fc; private int record; /** * 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 * * @exception IllegalArgumentException if <code>record</code> has any bits * between 24 and 31 set */ public DeviceClass(int record) { DebugLog.debug("new DeviceClass", record); this.record = record; if ((record & 0xff000000) != 0) throw new IllegalArgumentException(); } /** * 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 */ public int getServiceClasses() { return record & SERVICE_MASK; } /** * Retrieves the major device class. A device may have only a single major * device class. * * @return the major device class */ public int getMajorDeviceClass() { return record & MAJOR_MASK; } /** * Retrieves the minor device class. * * @return the minor device class */ public int getMinorDeviceClass() { return record & MINOR_MASK; } /** * Non JSR-82 function. * * @deprecated Use ((Object)deviceClass).toString() if you want your application to run in MDIP profile */ public String toString() { return BluetoothConsts.toString(this); } }