RVS_BTDriver_Service

class RVS_BTDriver_Service : NSObject, RVS_BTDriver_ServiceProtocol
extension RVS_BTDriver_Service: RVS_BTDriverCommunicatorTools

This is a standard service class.

Subscriber Support

RVS_BTDriver_Service Sequence-Style Support

  • This contains the property list for this instance of the driver.

    Declaration

    Swift

    internal var internal_holding_pen: [RVS_BTDriver_Property]
  • This contains the property list for this instance of the driver.

    Declaration

    Swift

    internal var internal_property_list: [RVS_BTDriver_Property]
  • This is a String, holding the service UUID.

    Declaration

    Swift

    internal var internal_uuid: String!
  • This is a read-only accessor for the object that “owns” this instance.

    Declaration

    Swift

    internal weak var internal_owner: RVS_BTDriver_Device!
  • This is a placeholder for subclasses. This class doesn’t do anything.

    Subclasses should use this to start a discovery process for their characteristics (properties).

    Declaration

    Swift

    internal func discoverInitialCharacteristics()
  • Main initializer.

    Declaration

    Swift

    internal init(owner inOwner: RVS_BTDriver_Device, uuid inUUID: String)

    Parameters

    owner

    The device that “owns” this service.

    uuid

    A String, with the service UUID.

  • Notifies subscribers of a new property. This is defined here, so we can override.

    Declaration

    Swift

    internal func notifySubscribersOfNewProperty(_ inProperty: RVS_BTDriver_Property)

    Parameters

    inProperty

    The property to notify.

  • Notifies subscribers of a status update. This is defined here, so we can override.

    Declaration

    Swift

    internal func notifySubscribersOfStatusUpdate()
  • This displays a useful debug display of the service data.

    Declaration

    Swift

    override var description: String { get }

Internal Instance Methods

  • This method will move a property from the holding pen to the main list.

    Declaration

    Swift

    internal func movePropertyFromHoldingPenToMainList(_ inProperty: RVS_BTDriver_Property)

    Parameters

    inProperty

    The property object to be moved.

  • This method will remove a property from the holding pen or the main list.

    Declaration

    Swift

    internal func removeThisProperty(_ inProperty: RVS_BTDriver_Service)

    Parameters

    inProperty

    The property object to be removed.

  • This method adds a property to the holding pen.

    If already there, nothing happens.

    Declaration

    Swift

    internal func addPropertyToHoldingPen(_ inProperty: RVS_BTDriver_Property)

    Parameters

    inProperty

    The property object to be added.

  • This method adds a property to the main list.

    If already there, nothing happens.

    Declaration

    Swift

    internal func addPropertyToMainList(_ inProperty: RVS_BTDriver_Property)

    Parameters

    inProperty

    The property object to be added.

  • Called to report that our holding pen is empty.

    Declaration

    Swift

    internal func reportCompletion()

Subscription Support Methods

  • Test to see if a subscriber is already subscribed.

    Declaration

    Swift

    public func isThisInstanceASubscriber(_ inSubscriber: RVS_BTDriver_ServiceSubscriberProtocol) -> Bool

    Parameters

    inSubscriber

    The subscriber to test.

    Return Value

    True, if the instance is subscribed.

  • Add an observer of the service.

    It should be noted that subscribers are held as strong references (if they are classes).

    Declaration

    Swift

    public func subscribe(_ inSubscriber: RVS_BTDriver_ServiceSubscriberProtocol)

    Parameters

    subscriber

    The 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_ServiceSubscriberProtocol)

    Parameters

    subscriber

    The instance to unsubscribe. Nothing is done, if we are not already subscribed.

Communicator Support

  • This method will “kick the can” up to the driver, where the error will finally be sent to the delegate.

    Declaration

    Swift

    internal func reportThisError(_ inError: RVS_BTDriver.Errors)

    Parameters

    inError

    The error to be sent to the owner.

Sequence-Style Support

  • This is the public read-only access to the property list.

    Declaration

    Swift

    public var properties: [RVS_BTDriver_PropertyProtocol] { get }
  • This is the read-only count of properties.

    Declaration

    Swift

    public var count: Int { get }
  • This is a public read-only 0-based integer subscript to the property list.

    Declaration

    Swift

    public subscript(inIndex: Int) -> RVS_BTDriver_PropertyProtocol { get }
  • Simple “String Key” subscript, so we can treat the array as a dictionary.

    Declaration

    Swift

    public subscript(inStringKey: String) -> RVS_BTDriver_PropertyProtocol! { get }

    Parameters

    inStringKey

    A String, containing the unique UUID of the property we are looking for.

    Return Value

    The property, or nil, if not found.

Public Computed Properties

  • This is the read-only unique ID for this service.

    Declaration

    Swift

    public var uuid: String { get }
  • This refers to the device instance that “owns” this service.

    Declaration

    Swift

    public var owner: RVS_BTDriver_DeviceProtocol! { get }