package com.idevicesinc.sweetblue;


import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.bluetooth.le.AdvertiseData;
import android.bluetooth.le.AdvertiseSettings;
import android.content.Context;
import com.idevicesinc.sweetblue.compat.L_Util;
import com.idevicesinc.sweetblue.utils.Interval;
import java.util.Set;


interface P_NativeManagerLayer {

    int getConnectionState(P_NativeDeviceLayer device, int profile);
    boolean startDiscovery();
    boolean cancelDiscovery();
    boolean isManagerNull();
    boolean disable();
    boolean enable();
    boolean isMultipleAdvertisementSupported();
    void resetManager(Context context);
    int getState();
    int getBleState();
    String getAddress();
    String getName();
    void setName(String name);
    Set<BluetoothDevice> getBondedDevices();
    BluetoothAdapter getNativeAdaptor();
    BluetoothManager getNativeManager();
    P_NativeServerLayer openGattServer(Context context, P_BleServer_Listeners listeners);
    void startAdvertising(AdvertiseSettings settings, AdvertiseData adData, L_Util.AdvertisingCallback callback);
    void stopAdvertising();
    boolean isLocationEnabledForScanning_byOsServices();
    boolean isLocationEnabledForScanning_byRuntimePermissions();
    boolean isLocationEnabledForScanning();
    boolean isBluetoothEnabled();
    void startLScan(int scanMode, Interval delay, L_Util.ScanCallback callback);
    void startMScan(int scanMode, Interval delay, L_Util.ScanCallback callback);
    boolean startLeScan(BluetoothAdapter.LeScanCallback callback);
    void stopLeScan(BluetoothAdapter.LeScanCallback callback);
    BluetoothDevice getRemoteDevice(String macAddress);

}