start method

Future<BluetoothPeripheralState> start({
  1. required AdvertiseData advertiseData,
  2. AdvertiseSettings? advertiseSettings,
  3. AdvertiseSetParameters? advertiseSetParameters,
  4. AdvertiseData? advertiseResponseData,
  5. AdvertiseData? advertisePeriodicData,
  6. PeriodicAdvertiseSettings? periodicAdvertiseSettings,
})

Start advertising. Takes AdvertiseData as an input.

Implementation

Future<BluetoothPeripheralState> start({
  required AdvertiseData advertiseData,
  AdvertiseSettings? advertiseSettings,
  AdvertiseSetParameters? advertiseSetParameters,
  AdvertiseData? advertiseResponseData,
  AdvertiseData? advertisePeriodicData,
  PeriodicAdvertiseSettings? periodicAdvertiseSettings,
}) async {
  final parameters = advertiseData.toJson();
  parameters["manufacturerDataBytes"] = advertiseData.manufacturerData;
  final settings = advertiseSettings ?? AdvertiseSettings();
  final jsonSettings = settings.toJson();
  for (final key in jsonSettings.keys) {
    parameters[key] = jsonSettings[key];
  }
  parameters.addAll(advertiseData.toJson());

  if (advertiseSetParameters != null) {
    final json = advertiseSetParameters.toJson();
    for (final key in json.keys) {
      parameters['set$key'] = json[key];
    }
    parameters.addAll(advertiseData.toJson());
  }

  if (advertiseResponseData != null) {
    final json = advertiseData.toJson();
    for (final key in json.keys) {
      parameters['response$key'] = json[key];
    }
    parameters.addAll(advertiseData.toJson());
  }

  final response =
      await _methodChannel.invokeMethod<int>('start', parameters);
  return response == null
      ? BluetoothPeripheralState.unknown
      : BluetoothPeripheralState.values[response];
}