Implemented BLE l2cap legacy control flow

This commit is contained in:
Lasan Mahaliyana
2026-02-10 22:26:41 +05:30
parent 1eb2e5360a
commit 2539024306
7 changed files with 841 additions and 280 deletions
@@ -53,7 +53,11 @@ void DrainFd(int fd) {
BleL2capServerSocket::BleL2capServerSocket() = default;
BleL2capServerSocket::BleL2capServerSocket(int psm) : psm_(psm) {}
BleL2capServerSocket::BleL2capServerSocket(
int psm, BleL2capSocket::ProtocolMode protocol_mode, std::string service_id)
: psm_(psm),
protocol_mode_(protocol_mode),
service_id_(std::move(service_id)) {}
BleL2capServerSocket::~BleL2capServerSocket() { Close(); }
@@ -250,7 +254,16 @@ std::unique_ptr<api::ble::BleL2capSocket> BleL2capServerSocket::Accept() {
static_cast<uint8_t>(client_addr.l2_bdaddr.b[i]);
}
return std::make_unique<BleL2capSocket>(client_fd, peripheral_id);
BleL2capSocket::ProtocolMode protocol_mode;
std::string service_id;
{
absl::MutexLock lock(&mutex_);
protocol_mode = protocol_mode_;
service_id = service_id_;
}
return std::make_unique<BleL2capSocket>(
client_fd, peripheral_id, protocol_mode, service_id,
/*incoming_connection=*/true);
}
Exception BleL2capServerSocket::Close() {