ble-0.4.0.0: src/Bluetooth/Internal/Interfaces.hs
module Bluetooth.Internal.Interfaces where
import Data.IORef (IORef, newIORef)
import Data.Proxy
import DBus
import GHC.TypeLits
import System.IO.Unsafe (unsafePerformIO)
import qualified Data.Text as T
type ObjectManager = "org.freedesktop.DBus.ObjectManager"
objectManagerIFaceP :: Proxy ObjectManager
objectManagerIFaceP = Proxy
objectManagerIFace :: String
objectManagerIFace = symbolVal objectManagerIFaceP
type Properties = "org.freedesktop.DBus.Properties"
propertiesIFaceP :: Proxy Properties
propertiesIFaceP = Proxy
propertiesIFace :: String
propertiesIFace = symbolVal propertiesIFaceP
type GattService = "org.bluez.GattService1"
gattServiceIFaceP :: Proxy GattService
gattServiceIFaceP = Proxy
gattServiceIFace :: String
gattServiceIFace = symbolVal gattServiceIFaceP
type GattCharacteristic = "org.bluez.GattCharacteristic1"
gattCharacteristicIFaceP :: Proxy GattCharacteristic
gattCharacteristicIFaceP = Proxy
gattCharacteristicIFace :: String
gattCharacteristicIFace = symbolVal gattCharacteristicIFaceP
type GattManager = "org.bluez.GattManager1"
gattManagerIFaceP :: Proxy GattManager
gattManagerIFaceP = Proxy
gattManagerIFace :: String
gattManagerIFace = symbolVal gattManagerIFaceP
type LEAdvertisement = "org.bluez.LEAdvertisement1"
leAdvertisementIFaceP :: Proxy LEAdvertisement
leAdvertisementIFaceP = Proxy
leAdvertisementIFace :: String
leAdvertisementIFace = symbolVal leAdvertisementIFaceP
type LEAdvertisingManager1 = "org.bluez.LEAdvertisingManager1"
leAdvertisingManagerIFaceP :: Proxy LEAdvertisingManager1
leAdvertisingManagerIFaceP = Proxy
leAdvertisingManagerIFace :: String
leAdvertisingManagerIFace = symbolVal leAdvertisingManagerIFaceP
type Device1 = "org.bluez.Device1"
deviceIFaceP :: Proxy Device1
deviceIFaceP = Proxy
deviceIFace :: String
deviceIFace = symbolVal deviceIFaceP
-- * Errors
invalidArgs :: MsgError
invalidArgs = MsgError
{ errorName = "org.freedesktop.DBus.Error.InvalidArgs"
, errorText = Nothing
, errorBody = []
}
notSupported :: MsgError
notSupported = MsgError
{ errorName = "org.bluez.Error.NotSupported"
, errorText = Nothing
, errorBody = []
}
-- * Constants (ish)
-- We use IORefs here rather than have it be a constant because when mocking
-- for tests we can't take up this name.
bluezName :: IORef T.Text
bluezName = unsafePerformIO $ newIORef "org.bluez"
{-# NOINLINE bluezName #-}
bluezPath :: IORef ObjectPath
bluezPath = unsafePerformIO $ newIORef "/org/bluez/hci0"
{-# NOINLINE bluezPath #-}