Changes between Version 5 and Version 6 of HardwareInfo/Bluetooth


Ignore:
Timestamp:
Mar 15, 2013, 9:52:00 AM (7 years ago)
Author:
modeenf
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HardwareInfo/Bluetooth

    v5 v6  
    3434[https://www.bluetooth.org/Technical/Specifications/adopted.htm Bluetooth docs][[BR]]
    3535[http://svnweb.freebsd.org/base/head/sys/netgraph/ FreeBSD Bluetooth][[BR]]
     36[http://www.acm.org/crossroads/xrds9-4/blue.html Document approach][[BR]]
    3637
    3738[[Image(BT.png)]]
     39
     40'''Overview:'''
     41
     42Bluetooth is wireless low-power network stack. The target is implement Bluetooth 2.0, although the major differences between 2.0 and 1.1 are in the HW specs.
     43The Project has been divided in 3 phases. The specifications document for Bluetooth, depending its version, very between 1200 and 1500 pages which
     44covers phase 1 and 2 plus hardware device specifications.
     45
     46The development of the stack will be done keeping an eye to another operating systems, such as Linux and FreeBSD bluetooth kernel land implementations. And MacOS for the user land integration, and SymbianOS or JSR-82 for the possible bluetooth kit.
     47
     48The reading specs process can be mostly skipped, although is being using as well as other OS source code as consulting material. All non started parts are still to be designed before implementation
     49
     50Troubleshooting:[[BR]]
     511. Strong dependency with Haiku network stack, which is making hard to keep the development in R5. With the self compiling problem that it implies.[[BR]]
     522. Hardware availability(2 dongle(1damaged), 1 telephone, 2 PCMCIA)[[BR]]
     53
     54
     55As many of you know from my blog, the project started from scratch with some success.
     56
     57
     58Technical Info:
     59
     60'''Phase 1: Base Stack:'''
     61
     62In this phase the intention would be give a a base for further development, user feedback of the technology and real communication.
     63
     64In an overview provide:
     65* Physical layer of the architecture[[BR]]
     66* User interaction for managing with devices local & remote(discovery, pairing, properties)[[BR]]
     67* Connection oriented / Connectionless services through L2CAP[[BR]]
     68
     69H2: USB Transport driver (Commands/Events/ACL) 90%[[BR]]
     70
     71HCI:
     72* Core layer 80%[[BR]]
     73* Userland interface(ioctls/rawsocket) 70%[[BR]]
     74* Managing tools(bluetoot_server, bluetooth kit) 70%[[BR]]
     75
     76L2CAP:
     77* (core protocol/sockets) 65%[[BR]]
     78
     79Milestones:
     801. Real comunication with the driver (27/09/07)[[BR]]
     812. Stack allowing devices to discover the Haiku node (17/03/08)[[BR]]
     823. Stack allowing discover remote devices through an inquiry process (19/04/08)[[BR]]
     834. Stack handling correctily a pairing process between 2 devices (23/07/08)[[BR]]
     845. L2CAP connection-oriented channels (23/11/08)[[BR]]
     856. L2CAP connection-less  channels (23/11/08) (no device available for testing)[[BR]]
     86
     87'''Phase 2: Basic Stack:'''
     88
     89The intention of this phase would be complete the stack, and let all prepared for the 3rd phase.
     90
     91H2: USB Transport driver (SCO)
     92
     93HCI:
     94* SCO interface[[BR]]
     95* Managing tools(SDP server & client)[[BR]]
     96
     97RFCOMM: (core protocol/sockets)
     98
     99
     100'''Phase 3: Upper Protocols, Profiles and Applications:'''
     101
     102Bluetooth profiles define how the bluetooth technology functionality is used, while the protocols is the implementation of the technology.
     103An overview of all these functionalities:
     104http://bluetooth.com/Bluetooth/Technology/Works/Profiles_Overview.htm
     105
     106Approximately, the specifications for each of these profiles do not go beyond the 100 pages. So Individuals could implement easily one of those functionalities.
     107
     108'''Bluetooth Identified tasks:'''
     109
     110Haiku Bluetooth Stack implements basic functionality on lower and middle layers, this functionality needs to be completed and all Bluetooth 2.X possibilities explored.
     111
     112Requirement: Bluetooth enabled Haiku system
     113
     114Skill set: C++ kernel development, userland development, overview bluetooth stack knowledge(optional)
     115
     116* New Tasks:
     117 * RemoteDevices Database
     118  * Implement RemoteDevice Archivability (Code-In)
     119 * Manage server existence depending of LocalDevices (Code-In)
     120* Fixes:
     121 * Fix monitoring of incoming LocalDevices(USB)
     122 * LocalDevices allocation/leaking LocalDevice::GetLocalDevice
     123 * Wrong Create Connection parameters(paging) for Bluetooth 2.X
     124* Improvements
     125 * UI
     126  * Improve Deskbar Addon
     127  * Improve PinCode Window, move to kit? (Code-In)
     128  * Improve Incomming connection Window, move to kit? (Code-In)
     129  * Add Remaining Features in DeviceView
     130  * Put non relevant information under a ToolTip (Code-In)
     131 * Functionality
     132  * UserLand tools(Preferences)
     133  * Retrieve Discovery and DevClass (other settings?) in Startup (Code-In)
     134  * Store information
     135  * Window position
     136  * Default LocalDevice
     137  * Settings (Inquiry time, Policy)
     138  * WriteLocal name to devices
     139  * Pairing/Auth/Encryption use cases ...
     140
     141Bluetooth UI Requirements[[BR]]
     142Server Classes:[[BR]]
     143
     144PincodePanel (implemented)[[BR]]
     145ConnectionPanel (implemented)[[BR]]
     146Deskbar Applet (implemented)[[BR]]
     147
     148User Classes:
     149
     150LocalDeviceView: View that shows a LocalDevice (implemented)
     151* Icon with the type of device (from device class)
     152* BDADDR
     153* FriendlyName
     154* …
     155* HCIDelegate Control Flow
     156* l2cap make sched connection to use portListener
     157* addtoExpected → protect
     158
     159InquiryPanel: Window to perform a discovery of devices
     160
     161Preferences:
     162* Connections & Channels List
     163
     164 Table Of Devices (Archived RemoteDevices classes)  (to be reviewed):
     165* Known devices
     166* Trusted devices
     167* Blocked devices
     168* Connected Devices
     169 
     170ExtendedLocalDeviceView
     171* Set LocalName
     172* View LinkKeys
     173
     174General settings  (implemented):
     175* Connections acceptation policy
     176* Identify current host as... (set localDeviceClass)
     177* Start/Stop server
     178* Show debug window
     179* About
     180
     181Device-specific settings:
     182* Enable/disable device
     183* Enable/disable services
     184
     185Documentation[[BR]]
     186AFAIR in the software layers point of view there were not important changes from 1.2 until 4.0. Most of them were focused in the physical layers.
     187
     188
     189Currently on the Kernel area there is the L2CAP[1] and HCI[5] implementations and there is the HCI transport protocol H2[2] (hardware support for usb dongles).
     190In the userland area we have the bluetooth_server[3] which interfaces with the kernel. Then there is a kit[4] which provides an API for applications development.[[BR]]
     191Currently the best example of an application using this API would be the bluetooth preferences[6].[[BR]]
     192[1]http://dev.haiku-os.org/browser/haiku/trunk/src/add-ons/kernel/network/protocols/l2cap[[BR]]
     193[2]http://dev.haiku-os.org/browser/haiku/trunk/src/add-ons/kernel/drivers/bluetooth/h2/h2generic[[BR]]
     194[3]http://dev.haiku-os.org/browser/haiku/trunk/src/servers/bluetooth[[BR]]
     195[4]http://dev.haiku-os.org/browser/haiku/trunk/src/kits/bluetooth[[BR]]
     196[5]http://dev.haiku-os.org/browser/haiku/trunk/src/add-ons/kernel/bluetooth[[BR]]
     197[6]http://dev.haiku-os.org/browser/haiku/trunk/src/preferences/bluetooth[[BR]]