// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2009 Red Hat, Inc.
 */

#ifndef __NETWORKMANAGER_DEVICE_BT_H__
#define __NETWORKMANAGER_DEVICE_BT_H__

#include "devices/nm-device.h"

#define NM_TYPE_DEVICE_BT                   (nm_device_bt_get_type ())
#define NM_DEVICE_BT(obj)                   (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_BT, NMDeviceBt))
#define NM_DEVICE_BT_CLASS(klass)           (G_TYPE_CHECK_CLASS_CAST ((klass),  NM_TYPE_DEVICE_BT, NMDeviceBtClass))
#define NM_IS_DEVICE_BT(obj)                (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_BT))
#define NM_IS_DEVICE_BT_CLASS(klass)        (G_TYPE_CHECK_CLASS_TYPE ((klass),  NM_TYPE_DEVICE_BT))
#define NM_DEVICE_BT_GET_CLASS(obj)         (G_TYPE_INSTANCE_GET_CLASS ((obj),  NM_TYPE_DEVICE_BT, NMDeviceBtClass))

#define NM_DEVICE_BT_BDADDR       "bt-bdaddr"
#define NM_DEVICE_BT_BZ_MGR       "bt-bz-mgr"
#define NM_DEVICE_BT_CAPABILITIES "bt-capabilities"
#define NM_DEVICE_BT_DBUS_PATH    "bt-dbus-path"
#define NM_DEVICE_BT_NAME         "bt-name"

#define NM_DEVICE_BT_PPP_STATS    "ppp-stats"

typedef struct _NMDeviceBt NMDeviceBt;
typedef struct _NMDeviceBtClass NMDeviceBtClass;

GType nm_device_bt_get_type (void);

struct _NMBluezManager;

NMDeviceBt *nm_device_bt_new (struct _NMBluezManager *bz_mgr,
                              const char *dbus_path,
                              const char *bdaddr,
                              const char *name,
                              NMBluetoothCapabilities capabilities);

gboolean _nm_device_bt_for_same_device (NMDeviceBt *device,
                                        const char *dbus_path,
                                        const char *bdaddr,
                                        const char *name,
                                        NMBluetoothCapabilities capabilities);

NMBluetoothCapabilities nm_device_bt_get_capabilities (NMDeviceBt *device);

struct _NMModem;

gboolean nm_device_bt_modem_added (NMDeviceBt *device,
                                   struct _NMModem *modem,
                                   const char *driver);

void _nm_device_bt_notify_removed (NMDeviceBt *self);

void _nm_device_bt_notify_set_name (NMDeviceBt *self, const char *name);

void _nm_device_bt_notify_set_connected (NMDeviceBt *self,
                                         gboolean connected);

#endif /* __NETWORKMANAGER_DEVICE_BT_H__ */
