Bluetooth Class of Device/Service (CoD) Generator

# Major Service Class
Limited Discoverable Mode
Positioning (location identification
Networking (LAN, Ad hoc etc)
Rendering (printing, speaker etc)
Capturing (scanner, microphone etc)
Object Transfer (v-inbox, v-folder etc)
Audio (speaker, microphone, headset service etc)
Telephony (cordless telephony, modem, headset service etc)
Information (WEB-server, WAP-server etc)

# Major Device Class
Computer (desktop,notebook, PDA, organizers etc )
Phone (cellular, cordless, payphone, modem)
LAN/Network Access point
Audio/Video (headset, speaker, stereo, video display etc
Peripheral (mouse, joystick, keyboards etc )
Imaging (printing, scanner, camera, display etc)
Uncategorized, specific device code not specified

CoD (bin): (hex):

In practice, most Bluetooth clients scan their surroundings in two successive steps: they first look for all bluetooth devices around them and find out their "class". You can do this on Linux with the hcitool scan command. Then, they use SDP in order to check if a device in a given class offers the type of service that they want.

This means that the hcid.conf "class" parameter needs to be set up properly if particular services are running on the host, such as "PAN", or "OBEX Obect Push", etc: in general a device looking for a service such as "Network Access Point" will only scan for this service on devices containing "Networking" in their major service class.

The Class of Device/Service (CoD) field has a variable format. The format is indicated using the 'Format Type field' within the CoD. The length of the Format Type field is variable and ends with two bits different from '11'. The version field starts at the least significant bit of the CoD and may extend upwards.

In the 'format #1' of the CoD (Format Type field = 00), 11 bits are assigned as a bit-mask (multiple bits can be set) each bit corresponding to a high level generic category of service class. Currently 7 categories are defined. These are primarily of a 'public service' nature. The remaining 11 bits are used to indicate device type category and other device-specific characteristics. Any reserved but otherwise unassigned bits, such as in the Major Service Class field, should be set to 0.

The Major and Minor classes are intended to define a general family of devices with which any particular implementation wishes to be associated. No assumptions should be made about specific functionality or characteristics of any application based solely on the assignment of the Major or Minor device class.

The Major Class segment is the highest level of granularity for defining a Bluetooth Device. The main function of a device is used to determine the major class grouping. There are 32 different possible major classes.

The 'Minor Device Class field' (bits 7 to 2 in the CoD), are to be interpreted only in the context of the Major Device Class (but independent of the Service Class field). Thus the meaning of the bits may change, depending on the value of the 'Major Device Class field'. When the Minor Device Class field indicates a device class, then the primary device class should be reported, e.g. a cellular phone that can also work as a cordless handset should use 'Cellular' in the minor device class field.