How to send TLV command through BLE in ionic app

I’m working on an app who communicate with a raspberry through BLE (https://ionicframework.com/docs/native/ble/). I want to send a command to the Raspberry and get the result. The only constraint is to send command with the TLV (Tag-Length-Value) format : - Tag: command identifier - Length: commande data length (0 to 18) - Value: command data

I have no idea how to do this.

Atm i have some code.

First i search all devices arround me :

this.ble.scan([], 5).subscribe(
  device => this.onDeviceDiscovered(device), 
  error => this.scanError(error)
);

Then i get infos from this device :

this.ble.connect(device.id).subscribe(
  peripheral => this.onConnected(peripheral),
  peripheral => this.onDeviceDisconnected(peripheral)
);

And … what now ? I’m trying to use this function : ble.write(device_id, service_uuid, characteristic_uuid, data, success, failure);

I get device_id, service_uuid, characteristics_uuid. But i don’t know how to pass data.

I’m trying something like that :

SendCommand() {
  let data: {
    RANDOM: 1,
    Lenght: 1,
    Value: 1
  };

  let binary_string = btoa(JSON.stringify(data));
  let len = binary_string.length;
  let aBuff = new Uint8Array(len);
  for (let i = 0; i < len; i++)
    aBuff[i] = binary_string.charCodeAt(i);

  this.ble.write(this.peripheral.id, this.peripheral.services, this.peripheral.characteristic, aBuff.buffer)
    .then(res => {
      console.log("OK");
      console.log(res)
    })
    .catch(err => {
      console.log("KO");
      console.log(err)
    });
}

But nothing happen.

Thanks for your help :smiley: