RVS_BTDriver_Device
class RVS_BTDriver_Device : NSObject, RVS_BTDriver_DeviceProtocol
extension RVS_BTDriver_Device: RVS_BTDriverCommunicatorTools
This is one “device,” which maps to a bluetooth “peripheral.”
Must derive from NSObject, for purposes of being a delegate.
-
This is the list of subscribers to this instance.
Declaration
Swift
internal var internal_subscribers: [RVS_BTDriver_DeviceSubscriberProtocol]
-
This is a property that is set to a countdown timer when a timeout period begins. It should be canceled and niled, when not in use.
Declaration
Swift
internal var timeoutTimer: Timer? -
This is the timer timeout handler. When called, it will send an error to the delegate.
This should be overridden, so that subclasses can provide meaninful data.
Declaration
Swift
@objc internal func timeoutHandler(_ inTimer: Timer)Parameters
inTimerThe timer object calling this.
-
Begin the timeout ticker.
Declaration
Swift
internal func startTimeout(_ inTimeoutInSeconds: TimeInterval)Parameters
inTimeoutInSecondsA Double-precision floating-point number, containing the number of seconds to wait.
-
This stops the curret timeout, and restarts it.
Declaration
Swift
internal func restartTimeout() -
This stops the timeout ticker, and clears the decks.
Declaration
Swift
internal func cancelTimeout()
-
This contains instances that have not yet passed a credit check.
Declaration
Swift
internal var internal_holding_pen: [RVS_BTDriver_Service] -
This contains the service list for this instance of the driver.
Declaration
Swift
internal var internal_service_list: [RVS_BTDriver_Service] -
This is a read-only accessor for the object that “owns,” this instance.
Declaration
Swift
internal weak var internal_owner: RVS_BTDriver! -
The interface for this device
Declaration
Swift
internal var interface: RVS_BTDriver_InterfaceProtocol! -
The vendor handler for this device
Declaration
Swift
internal var vendor: RVS_BTDriver_VendorProtocol! -
This is just here to give a handle to subclasses. This class does nothing.
Declaration
Swift
internal func connect() -
This is just here to give a handle to subclasses. This class does nothing.
Declaration
Swift
internal func disconnect() -
The device initializer
Declaration
Swift
internal init(vendor inVendor: RVS_BTDriver_VendorProtocol!)Parameters
vendorThe vendor factory for the device. It can be nil (for testing purposes only).
-
This is a String, containing a unique ID for this peripheral.
Declaration
Swift
public internal(set) var uuid: String! -
A name for the device (may be the model name, may be something else).
Declaration
Swift
public internal(set) var deviceName: String! -
If the device has a Device Info Service with a model name, it is available here.
Declaration
Swift
public internal(set) var modelName: String! -
If the device has a Device Info Service with a manufacturer name, it is available here.
Declaration
Swift
public internal(set) var manufacturerName: String! -
If the device has a Device Info Service with a serial number, it is available here.
Declaration
Swift
public internal(set) var serialNumber: String! -
If the device has a Device Info Service with a hardware revision, it is available here.
Declaration
Swift
public internal(set) var hardwareRevision: String! -
If the device has a Device Info Service with a firmware revision, it is available here.
Declaration
Swift
public internal(set) var firmwareRevision: String! -
If the device has a Device Info Service with a software revision, it is available here.
Declaration
Swift
public internal(set) var softwareRevision: String! -
This is the device type. Default is .unTested
Declaration
Swift
public internal(set) var deviceType: RVS_BTDriver_DeviceType -
This is the public flag, determining whether or not the device is connected.
Declaration
Swift
public var isConnected: Bool -
This is true, if the device can be connected.
Declaration
Swift
public internal(set) var canConnect: Bool -
This refers to the driver instance that “owns” this device.
Declaration
Swift
var owner: RVS_BTDriver! { get } -
This displays a useful debug display of the device data.
Declaration
Swift
override var description: String { get } -
Notifies subscribers of a new service. This is defined here, so we can override.
Declaration
Swift
internal func notifySubscribersOfNewService(_ inService: RVS_BTDriver_Service)Parameters
inServiceThe service to notify.
-
Notifies subscribers of a status update. This is defined here, so we can ovverride.
Declaration
Swift
internal func notifySubscribersOfStatusUpdate() -
This is declared here, so it can be overridden.
This one does nothing. It should be overridden.
Declaration
Swift
public func discoverServices() -
Called to report that our holding pen is empty. We declare this here, so it can be overridden.
Declaration
Swift
internal func reportCompletion() -
This method should be called after all setup has been done, so that subclasses can do what needs doing. This base method does nothing.
Declaration
Swift
internal func initialSetup()
-
Simple “String Key” subscript, so we can treat the array as a dictionary.
Declaration
Swift
public subscript(inStringKey: String) -> RVS_BTDriver_ServiceProtocol! { get }Parameters
inStringKeyA String, containing the unique UUID of the service we are looking for.
Return Value
The service, or nil, if not found.
-
Test to see if a subscriber is already subscribed.
Declaration
Swift
public func isThisInstanceASubscriber(_ inSubscriber: RVS_BTDriver_DeviceSubscriberProtocol) -> BoolParameters
inSubscriberThe subscriber to test.
Return Value
True, if the instance is subscribed.
-
Add an observer of the device.
It should be noted that subscribers are held as strong references (if they are classes).
Declaration
Swift
public func subscribe(_ inSubscriber: RVS_BTDriver_DeviceSubscriberProtocol)Parameters
subscriberThe instance to subscribe. Nothing is done, if we are already subscribed.
-
remove a subscriber from the list. Nothing happens if the subscriber is not already subscribed.
Declaration
Swift
public func unsubscribe(_ inSubscriber: RVS_BTDriver_DeviceSubscriberProtocol)Parameters
subscriberThe instance to unsubscribe. Nothing is done, if we are not already subscribed.
-
This method will move a service from the holding pen to the main list.
Declaration
Swift
internal func moveServiceFromHoldingPenToMainList(_ inService: RVS_BTDriver_Service)Parameters
inServiceThe service object to be moved.
-
This method will remove a service from the holding pen or the main list.
Declaration
Swift
internal func removeThisService(_ inService: RVS_BTDriver_Service)Parameters
inServiceThe service object to be removed.
-
This method will “kick the can” up to the driver, where the error will finally be sent to the delegate.
Declaration
Swift
public func reportThisError(_ inError: RVS_BTDriver.Errors)Parameters
inErrorThe error to be sent to the subscribers, and up the chain.
-
This is the public read-only access to the service list.
Declaration
Swift
public var services: [RVS_BTDriver_ServiceProtocol] { get } -
This is the read-only count of services.
Declaration
Swift
public var count: Int { get } -
This is a public read-only subscript to the service list.
Declaration
Swift
public subscript(inIndex: Int) -> RVS_BTDriver_ServiceProtocol { get }
View on GitHub
RVS_BTDriver_Device Class Reference