Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bea6e1fb authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

service: add SetMtu and OnMtuChanged

Change-Id: I7a6c6cb46f4710b5d2c57b9d0e9cfac166d7cd62
parent 17b8e35c
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -175,6 +175,21 @@ class CLIBluetoothLowEnergyCallback
      PrintPrompt();
  }

  void OnMtuChanged(int status, const char *address, int mtu) override {
    if (showing_prompt.load())
      cout << endl;

    cout << COLOR_BOLDWHITE "MTU changed: "
         << COLOR_BOLDYELLOW "[" << address << " ] "
         << COLOR_BOLDWHITE " - status: " << status
         << COLOR_BOLDWHITE " - mtu: " << mtu << COLOR_OFF;

    cout  << endl << endl;

    if (showing_prompt.load())
      PrintPrompt();
  }

  void OnScanResult(const bluetooth::ScanResult& scan_result) override {
    if (showing_prompt.load())
      cout << endl;
+22 −0
Original line number Diff line number Diff line
@@ -84,6 +84,16 @@ status_t BnBluetoothLowEnergy::onTransact(

    return android::NO_ERROR;
  }
  case SET_MTU_TRANSACTION: {
    int client_id = data.readInt32();
    const char* address = data.readCString();
    int mtu = data.readInt32();

    bool result = SetMtu(client_id, address, mtu);
    reply->writeInt32(result);

    return android::NO_ERROR;
  }
  case START_SCAN_TRANSACTION: {
    int client_id = data.readInt32();
    auto settings = CreateScanSettingsFromParcel(data);
@@ -209,6 +219,18 @@ bool BpBluetoothLowEnergy::Disconnect(int client_id, const char* address) {
  return reply.readInt32();
}

bool BpBluetoothLowEnergy::SetMtu(int client_id, const char* address, int mtu) {
  Parcel data, reply;

  data.writeInterfaceToken(IBluetoothLowEnergy::getInterfaceDescriptor());
  data.writeInt32(client_id);
  data.writeCString(address);
  data.writeInt32(mtu);

  remote()->transact(IBluetoothLowEnergy::SET_MTU_TRANSACTION, data, &reply);
  return reply.readInt32();
}

bool BpBluetoothLowEnergy::StartScan(
    int client_id,
    const bluetooth::ScanSettings& settings,
+5 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ class IBluetoothLowEnergy : public android::IInterface {

    CONNECT_TRANSACTION,
    DISCONNECT_TRANSACTION,
    SET_MTU_TRANSACTION,
    READ_REMOTE_RSSI_TRANSACTION,
    CONFIGURE_ATT_MTU_TRANSACTION,
    CONNECTION_PARAMETER_UPDATE_TRANSACTION,
@@ -75,6 +76,8 @@ class IBluetoothLowEnergy : public android::IInterface {
  virtual bool Connect(int client_id, const char* address, bool is_direct) = 0;
  virtual bool Disconnect(int client_id, const char* address) = 0;

  virtual bool SetMtu(int client_id, const char* address, int mtu) = 0;

  virtual bool StartScan(
      int client_id,
      const bluetooth::ScanSettings& settings,
@@ -126,6 +129,8 @@ class BpBluetoothLowEnergy : public android::BpInterface<IBluetoothLowEnergy> {
  bool Connect(int client_id, const char* address, bool is_direct) override;
  bool Disconnect(int client_id, const char* address) override;

  bool SetMtu(int client_id, const char* address, int mtu) override;

  bool StartScan(
      int client_id,
      const bluetooth::ScanSettings& settings,
+24 −0
Original line number Diff line number Diff line
@@ -64,6 +64,14 @@ status_t BnBluetoothLowEnergyCallback::onTransact(
    OnConnectionState(status, client_id, address, connected);
    return android::NO_ERROR;
  }
  case ON_MTU_CHANGED_TRANSACTION: {
    int status = data.readInt32();
    const char *address = data.readCString();
    int mtu = data.readInt32();

    OnMtuChanged(status, address, mtu);
    return android::NO_ERROR;
  }
  case ON_SCAN_RESULT_TRANSACTION: {
    auto scan_result = CreateScanResultFromParcel(data);
    CHECK(scan_result.get());
@@ -124,6 +132,22 @@ void BpBluetoothLowEnergyCallback::OnConnectionState(
      IBinder::FLAG_ONEWAY);
}

void BpBluetoothLowEnergyCallback::OnMtuChanged(
    int status, const char* address, int mtu) {
  Parcel data;

  data.writeInterfaceToken(
      IBluetoothLowEnergyCallback::getInterfaceDescriptor());
  data.writeInt32(status);
  data.writeCString(address);
  data.writeInt32(mtu);

  remote()->transact(
      IBluetoothLowEnergyCallback::ON_MTU_CHANGED_TRANSACTION,
      data, NULL,
      IBinder::FLAG_ONEWAY);
}

void BpBluetoothLowEnergyCallback::OnScanResult(
    const bluetooth::ScanResult& scan_result) {
  Parcel data, reply;
+3 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ namespace binder {
  enum {
    ON_CLIENT_REGISTERED_TRANSACTION = android::IBinder::FIRST_CALL_TRANSACTION,
    ON_CONNECTION_STATE_TRANSACTION,
    ON_MTU_CHANGED_TRANSACTION,
    ON_SCAN_RESULT_TRANSACTION,
    ON_BATCH_SCAN_RESULTS_TRANSACTION,
    ON_READ_REMOTE_RSSI_TRANSACTION,
@@ -57,6 +58,7 @@ namespace binder {
  virtual void OnClientRegistered(int status, int client_if) = 0;
  virtual void OnConnectionState(int status, int client_id, const char* address,
                                 bool connected) = 0;
  virtual void OnMtuChanged(int status, const char* address, int mtu) = 0;
  virtual void OnScanResult(const bluetooth::ScanResult& scan_result) = 0;
  virtual void OnMultiAdvertiseCallback(
      int status, bool is_start,
@@ -97,6 +99,7 @@ class BpBluetoothLowEnergyCallback
  void OnClientRegistered(int status, int client_if) override;
  void OnConnectionState(int status, int client_id, const char* address,
                         bool connected) override;
  void OnMtuChanged(int status, const char* address, int mtu) override;
  void OnScanResult(const bluetooth::ScanResult& scan_result) override;
  void OnMultiAdvertiseCallback(
      int status, bool is_start,
Loading