haiku/build/jam
Augustin Cavalier bb83316a58 L2CAP: Major refactor of the whole component.
(And surrounding portions of the "btCoreData" module.)

 * Rewrote the main "l2cap.h" header representing protocol constants
   and structures. Now conforms to general Haiku naming conventions
   rather than BSD ones. Some more constants added/removed based
   on the most recent Bluetooth specification.

 * Rewrote all code derived from the BSDs to match Haiku conventions
   and structures in the driver.

 * Dropped the "channel" and "frame" structures from "btCoreData".
   Channels are now managed by L2capEndpoints, and "frames" are
   now just plain net_buffers without surrounding structures.
   This also makes state management much simpler.

 * Made it so that actual net_buffers are passed through to the
   l2cap_receive function rather than another data structure.
   A fake interface address is used to communicate connection
   information. (This probably ought to be changed, though.)

 * Get rid of l2cap_lower and l2cap_upper abstractions.
   Everything related to channel/endpoint management is now
   done in L2capEndpoint, while buffer reception is handled
   directly in l2cap_receive and elsewhere, same as other drivers.

 * Wire up more hooks and fix module flags (needed to be able to
   get the module loaded and opening sockets at all.)

 * Implement an actual locking strategy in L2capEndpoint
   and HciConnection. There's still problems with lifetime
   management, but at least thread-safety is mostly handled.

 * Create an L2capEndpointManager and use it to manage
   the endpoints, rather than having a single (unsafe)
   linked-list.

And plenty of other refactorings and cleanups besides.
There's still more to be done for Bluetooth overall, though:

 * The "btCoreData" and "hci" modules also badly need a major
   overhaul, and should be merged into a single "bluetooth"
   bus_manager. They also shouldn't be passing around pointers
   to other modules like this.

 * There's a number of TODOs/FIXMEs in the L2CAP module, most
   notably around timeouts (especially command timeouts) and
   parameter validation/specification.

Tested by myself with kallisti5's help. Incoming connections
(on the PSM for SDP) get all the way to the latter half
of the Configuration step before hanging.
2024-05-01 00:25:43 -04:00
..
board boot/platform/u-boot: Drop ARM support. 2022-06-28 12:27:06 -04:00
images L2CAP: Major refactor of the whole component. 2024-05-01 00:25:43 -04:00
packages sdhci: add ACPI-enumerated device support 2024-04-02 11:10:56 +00:00
repositories gutenprint: update from gutenprint8-5.3.1 to gutenprint9-5.3.4 2024-03-28 15:56:15 +00:00
ArchitectureRules cmedia: enable -Werror 2024-04-15 16:02:49 +00:00
BeOSRules build: Remove usage of obsolescent egrep 2022-10-06 16:28:01 +00:00
BootRules
BuildFeatureRules
BuildFeatures gutenprint: update from gutenprint8-5.3.1 to gutenprint9-5.3.4 2024-03-28 15:56:15 +00:00
BuildSetup build: Define _BOOT_MODE once and for all in ArchitectureRules+BootRules. 2022-11-29 20:18:12 -05:00
CDRules
CommandLineArguments
ConfigRules
DefaultBuildProfiles Remove wqy_microhei font from Haiku release images 2024-03-04 15:33:35 +00:00
FileRules Support repositories created with git worktree 2023-11-01 09:09:27 +00:00
HaikuPackages
HeadersRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
HelperRules
ImageRules
KernelRules
LocaleRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
MainBuildRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
MathRules
MiscRules
OptionalPackages
OverriddenJamRules build/jam: Only add C++ header directories to include path for C++ code. 2023-10-13 16:18:47 +00:00
PackageRules
RepositoryRules
SystemLibraryRules
TestsRules
UserBuildConfig.ReadMe Update build packages repository 2021-05-14 14:59:19 +00:00
UserBuildConfig.sample