├── CHANGELOG.md
├── CODEOWNERS
├── LICENSE
├── PRIVACY.md
├── Package.resolved
├── Package.swift
├── PrivacyInfo.xcprivacy
├── Project-Meta
└── Warnings.xcconfig
├── README.md
├── RVS_BlueThoth.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcshareddata
│ └── xcschemes
│ ├── RVS_BlueThoth.xcscheme
│ ├── RVS_BlueThoth_Test_Harness_MacOS.xcscheme
│ ├── RVS_BlueThoth_Test_Harness_WatchOS.xcscheme
│ └── RVS_BlueThoth_Test_Harness_iOS.xcscheme
├── RVS_BlueThoth.xcworkspace
├── .xcodesamplecode.plist
├── contents.xcworkspacedata
└── xcshareddata
│ ├── IDEWorkspaceChecks.plist
│ └── swiftpm
│ └── Package.resolved
├── Sources
├── Meta
│ ├── MacOS-Info.plist
│ ├── TVOS-Info.plist
│ ├── WatchOS-Info.plist
│ └── iOS-Info.plist
├── README-PUBLIC.md
├── RVS_BlueThoth
│ ├── Implementation
│ │ ├── Characteristics
│ │ │ ├── CGA_Bluetooth_Characteristic.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_BatteryLevel.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_CurrentTime.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_FirmwareRevision.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_HardwareRevision.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_LocalTimeInformation.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_ManufacturerName.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_ModelNumber.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_SerialNumber.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_SoftwareRevision.swift
│ │ │ └── CGA_Bluetooth_Characteristic_SystemID.swift
│ │ ├── Descriptors
│ │ │ ├── CGA_Bluetooth_Descriptor.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_AggregateFormat.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_CBUUIDL2CAPPSMCharacteristic.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_Characteristic_Extended_Properties.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_ClientCharacteristicConfiguration.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_PresentationFormat.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_ServerCharacteristicConfiguration.swift
│ │ │ └── CGA_Bluetooth_Descriptor_UserDescription.swift
│ │ ├── Peripherals
│ │ │ ├── CGA_Bluetooth_Peripheral.swift
│ │ │ └── CGA_Bluetooth_Peripheral_Callbacks.swift
│ │ └── Services
│ │ │ ├── CGA_Bluetooth_Service.swift
│ │ │ ├── CGA_Bluetooth_Service_Battery.swift
│ │ │ ├── CGA_Bluetooth_Service_CurrentTime.swift
│ │ │ └── CGA_Bluetooth_Service_DeviceInfo.swift
│ ├── Protocols
│ │ ├── internal
│ │ │ ├── CGA_Bluetooth_Characteristic_Protocol_Internal.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_Protocol_Internal.swift
│ │ │ └── CGA_Bluetooth_Service_Protocol_Internal.swift
│ │ └── public
│ │ │ ├── CGA_Array_Extensions.swift
│ │ │ ├── CGA_Bluetooth_Characteristic_Protocol.swift
│ │ │ ├── CGA_Bluetooth_Descriptor_Protocol.swift
│ │ │ ├── CGA_Bluetooth_Protocols.swift
│ │ │ ├── CGA_Bluetooth_Service_Protocol.swift
│ │ │ └── CGA_Errors.swift
│ ├── RVS_BlueThoth.docc
│ │ ├── RVS_BlueThoth.md
│ │ └── Resources
│ │ │ ├── AddFramework.png
│ │ │ ├── CheckoutsDir.png
│ │ │ ├── InFrameworksDir.png
│ │ │ ├── IncludeProjectFile.png
│ │ │ ├── SelectTarget.png
│ │ │ └── icon.png
│ ├── RVS_BlueThoth.swift
│ └── RVS_BlueThoth_Callbacks.swift
└── img
│ └── icon.png
├── Tests
├── RVS_BlueThoth_Test_Harness_MacOS
│ ├── Meta
│ │ ├── Info.plist
│ │ └── RVS_BlueThoth_Test_Harness_MacOS.entitlements
│ └── Source
│ │ ├── Main
│ │ └── RVS_BlueThoth_Test_Harness_MacOS_AppDelegate.swift
│ │ ├── Resources
│ │ ├── Assets.xcassets
│ │ │ ├── Contents.json
│ │ │ ├── MacOS-AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon_128x128.png
│ │ │ │ ├── icon_128x128@2x.png
│ │ │ │ ├── icon_16x16.png
│ │ │ │ ├── icon_16x16@2x.png
│ │ │ │ ├── icon_256x256.png
│ │ │ │ ├── icon_256x256@2x.png
│ │ │ │ ├── icon_32x32.png
│ │ │ │ ├── icon_32x32@2x.png
│ │ │ │ ├── icon_512x512.png
│ │ │ │ └── icon_512x512@2x.png
│ │ │ ├── MacOS-Framework-AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon_128x128.png
│ │ │ │ ├── icon_128x128@2x.png
│ │ │ │ ├── icon_16x16.png
│ │ │ │ ├── icon_16x16@2x.png
│ │ │ │ ├── icon_256x256.png
│ │ │ │ ├── icon_256x256@2x.png
│ │ │ │ ├── icon_32x32.png
│ │ │ │ ├── icon_32x32@2x.png
│ │ │ │ ├── icon_512x512.png
│ │ │ │ └── icon_512x512@2x.png
│ │ │ └── reload-icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── reload-icon~universal@1x.png
│ │ │ │ ├── reload-icon~universal@2x.png
│ │ │ │ └── reload-icon~universal@3x.png
│ │ └── Base.lproj
│ │ │ └── Main.storyboard
│ │ ├── View Controllers
│ │ ├── RVS_BlueThoth_Test_Harness_MacOS_AboutViewController.swift
│ │ ├── RVS_BlueThoth_Test_Harness_MacOS_Base_ViewController.swift
│ │ ├── RVS_BlueThoth_Test_Harness_MacOS_CharacteristicViewController.swift
│ │ ├── RVS_BlueThoth_Test_Harness_MacOS_DiscoveryViewController.swift
│ │ ├── RVS_BlueThoth_Test_Harness_MacOS_PeripheralViewController.swift
│ │ ├── RVS_BlueThoth_Test_Harness_MacOS_PreferencesViewController.swift
│ │ └── RVS_BlueThoth_Test_Harness_MacOS_SplitViewController.swift
│ │ └── Window Controllers
│ │ └── RVS_BlueThoth_MacOS_Test_Harness_Base_WindowController.swift
├── RVS_BlueThoth_Test_Harness_WatchOS
│ ├── RVS_BlueThoth_Test_Harness_WatchOS_App
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon-launcher@2x.png
│ │ │ │ ├── icon-quicklook38mm@2x.png
│ │ │ │ ├── icon-quicklook42mm@2x.png
│ │ │ │ ├── icon-quicklook44mm@2x.png
│ │ │ │ ├── icon-settings@2x.png
│ │ │ │ ├── icon-settings@3x.png
│ │ │ │ ├── icon38mm@2x.png
│ │ │ │ ├── icon40mm@2x.png
│ │ │ │ ├── icon42mm@2x.png
│ │ │ │ ├── icon44mm@2x.png
│ │ │ │ └── watch-marketing.png
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ └── Interface.storyboard
│ │ └── Info.plist
│ └── RVS_BlueThoth_Test_Harness_WatchOS_Extension
│ │ ├── Info.plist
│ │ ├── Interface Controllers
│ │ ├── Modal
│ │ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_AboutInterfaceController.swift
│ │ │ └── RVS_BlueThoth_Test_Harness_WatchOS_PrefsInterfaceController.swift
│ │ ├── Push
│ │ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_CharacteristicInterfaceController.swift
│ │ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_DescriptorInterfaceController.swift
│ │ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_DeviceInterfaceController.swift
│ │ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_DiscoveryInterfaceController.swift
│ │ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_MainInterfaceController.swift
│ │ │ └── RVS_BlueThoth_Test_Harness_WatchOS_ServiceInterfaceController.swift
│ │ └── RVS_BlueThoth_Test_Harness_WatchOS_BaseInterfaceController.swift
│ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_ExtensionDelegate.swift
│ │ └── Table Controllers
│ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_CharacteristicTableController.swift
│ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_CharacteristicTables.swift
│ │ ├── RVS_BlueThoth_Test_Harness_WatchOS_DiscoveryTableController.swift
│ │ └── RVS_BlueThoth_Test_Harness_WatchOS_ServiceTableController.swift
├── RVS_BlueThoth_Test_Harness_iOS
│ ├── Meta
│ │ └── Info.plist
│ └── Source
│ │ ├── Main
│ │ ├── CGA_AppDelegate.swift
│ │ └── CGA_Extensions.swift
│ │ ├── Resources
│ │ ├── Assets.xcassets
│ │ │ ├── Contents.json
│ │ │ ├── iOS-AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon-40.png
│ │ │ │ ├── icon-40@2x.png
│ │ │ │ ├── icon-40@3x.png
│ │ │ │ ├── icon-60@2x.png
│ │ │ │ ├── icon-60@3x.png
│ │ │ │ ├── icon-72.png
│ │ │ │ ├── icon-72@2x.png
│ │ │ │ ├── icon-76.png
│ │ │ │ ├── icon-76@2x.png
│ │ │ │ ├── icon-83.5@2x.png
│ │ │ │ ├── icon-small-50.png
│ │ │ │ ├── icon-small-50@2x.png
│ │ │ │ ├── icon-small.png
│ │ │ │ ├── icon-small@2x.png
│ │ │ │ ├── icon-small@3x.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── icon@2x.png
│ │ │ │ ├── ios-marketing.png
│ │ │ │ ├── notification-icon@2x.png
│ │ │ │ ├── notification-icon@3x.png
│ │ │ │ ├── notification-icon~ipad.png
│ │ │ │ └── notification-icon~ipad@2x.png
│ │ │ └── iOS-Framework-AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon-40.png
│ │ │ │ ├── icon-40@2x.png
│ │ │ │ ├── icon-40@3x.png
│ │ │ │ ├── icon-60@2x.png
│ │ │ │ ├── icon-60@3x.png
│ │ │ │ ├── icon-72.png
│ │ │ │ ├── icon-72@2x.png
│ │ │ │ ├── icon-76.png
│ │ │ │ ├── icon-76@2x.png
│ │ │ │ ├── icon-83.5@2x.png
│ │ │ │ ├── icon-small-50.png
│ │ │ │ ├── icon-small-50@2x.png
│ │ │ │ ├── icon-small.png
│ │ │ │ ├── icon-small@2x.png
│ │ │ │ ├── icon-small@3x.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── icon@2x.png
│ │ │ │ ├── ios-marketing.png
│ │ │ │ ├── notification-icon@2x.png
│ │ │ │ ├── notification-icon@3x.png
│ │ │ │ ├── notification-icon~ipad.png
│ │ │ │ └── notification-icon~ipad@2x.png
│ │ └── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ └── View Controllers
│ │ ├── Modal Screens
│ │ ├── CGA_InfoViewController.swift
│ │ └── CGA_SettingsViewController.swift
│ │ └── Navigation Screens
│ │ ├── CGA_CharacteristicInteractionViewController.swift
│ │ ├── CGA_CharacteristicViewController.swift
│ │ ├── CGA_DescriptorInteractionViewController.swift
│ │ ├── CGA_InitialViewController.swift
│ │ ├── CGA_PeripheralViewController.swift
│ │ └── CGA_ServiceViewController.swift
├── RVS_BlueThoth_Test_Harness_tvOS
│ ├── Meta
│ │ └── Info.plist
│ ├── Resources
│ │ ├── Assets.xcassets
│ │ │ ├── App Icon & Top Shelf Image.brandassets
│ │ │ │ ├── App Icon - App Store.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ ├── BottomLayer2.png
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── TopLayer2.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── MiddleLayer2.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── App Icon.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ ├── BottomLayer.png
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── TopLayer.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── MiddleLayer.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Top Shelf Image Wide.imageset
│ │ │ │ │ ├── AppIcon-1.png
│ │ │ │ │ ├── AppIcon-2.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Top Shelf Image.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── TopShelf-1.png
│ │ │ │ │ └── TopShelf.png
│ │ │ └── Contents.json
│ │ └── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ └── Source
│ │ ├── Main
│ │ └── CGA_AppDelegate.swift
│ │ └── View Controllers
│ │ ├── Modal
│ │ ├── CGA_InfoViewController.swift
│ │ └── CGA_SettingsViewController.swift
│ │ └── Navigation
│ │ ├── CGA_CharacteristicViewController.swift
│ │ ├── CGA_ConnectedViewController.swift
│ │ ├── CGA_DiscoveryDetailsViewController.swift
│ │ ├── CGA_InitialViewController.swift
│ │ └── CGA_ServiceViewController.swift
└── Shared
│ ├── Resources
│ ├── Assets.xcassets
│ │ ├── BlueThothLogo.imageset
│ │ │ ├── AppIcon~universal@1x.png
│ │ │ ├── AppIcon~universal@2x.png
│ │ │ ├── AppIcon~universal@3x.png
│ │ │ └── Contents.json
│ │ ├── Gear.imageset
│ │ │ ├── Contents.json
│ │ │ ├── Gear~universal@1x.png
│ │ │ ├── Gear~universal@2x.png
│ │ │ └── Gear~universal@3x.png
│ │ ├── NoBT.imageset
│ │ │ ├── Contents.json
│ │ │ ├── NoBT~universal@1x.png
│ │ │ ├── NoBT~universal@2x.png
│ │ │ └── NoBT~universal@3x.png
│ │ └── background-gradient.imageset
│ │ │ ├── Contents.json
│ │ │ ├── background-gradient~universal@1x.png
│ │ │ ├── background-gradient~universal@2x.png
│ │ │ └── background-gradient~universal@3x.png
│ └── Base.lproj
│ │ ├── InfoPlist.strings
│ │ └── Localizable.strings
│ └── Sources
│ ├── CGA_PersistentPrefs.swift
│ └── TViOS
│ └── CGA_BaseViewController.swift
├── docs
├── framework-internal
│ ├── Classes.html
│ ├── Classes
│ │ ├── CGA_Bluetooth_Characteristic.html
│ │ ├── CGA_Bluetooth_Characteristic_BatteryLevel.html
│ │ ├── CGA_Bluetooth_Characteristic_CurrentTime.html
│ │ ├── CGA_Bluetooth_Characteristic_FirmwareRevision.html
│ │ ├── CGA_Bluetooth_Characteristic_HardwareRevision.html
│ │ ├── CGA_Bluetooth_Characteristic_LocalTimeInformation.html
│ │ ├── CGA_Bluetooth_Characteristic_ManufacturerName.html
│ │ ├── CGA_Bluetooth_Characteristic_ModelNumber.html
│ │ ├── CGA_Bluetooth_Characteristic_SerialNumber.html
│ │ ├── CGA_Bluetooth_Characteristic_SoftwareRevision.html
│ │ ├── CGA_Bluetooth_Characteristic_SystemID.html
│ │ ├── CGA_Bluetooth_Descriptor.html
│ │ ├── CGA_Bluetooth_Descriptor_AggregateFormat.html
│ │ ├── CGA_Bluetooth_Descriptor_CBUUIDL2CAPPSMCharacteristic.html
│ │ ├── CGA_Bluetooth_Descriptor_Characteristic_Extended_Properties.html
│ │ ├── CGA_Bluetooth_Descriptor_ClientCharacteristicConfiguration.html
│ │ ├── CGA_Bluetooth_Descriptor_PresentationFormat.html
│ │ ├── CGA_Bluetooth_Descriptor_PresentationFormat
│ │ │ └── FormatMasks.html
│ │ ├── CGA_Bluetooth_Descriptor_ServerCharacteristicConfiguration.html
│ │ ├── CGA_Bluetooth_Descriptor_UserDescription.html
│ │ ├── CGA_Bluetooth_Peripheral.html
│ │ ├── CGA_Bluetooth_Service.html
│ │ ├── CGA_Bluetooth_Service_Battery.html
│ │ ├── CGA_Bluetooth_Service_CurrentTime.html
│ │ ├── CGA_Bluetooth_Service_DeviceInfo.html
│ │ ├── RVS_BlueThoth.html
│ │ └── RVS_BlueThoth
│ │ │ ├── AdvertisementData.html
│ │ │ ├── DiscoveryData.html
│ │ │ └── ScanCriteria.html
│ ├── Enums.html
│ ├── Enums
│ │ └── CGA_Errors.html
│ ├── Extensions.html
│ ├── Extensions
│ │ ├── Array.html
│ │ └── Data.html
│ ├── Global Variables.html
│ ├── Protocols.html
│ ├── Protocols
│ │ ├── CGA_BlueThoth_Delegate.html
│ │ ├── CGA_Bluetooth_Characteristic_Protocol.html
│ │ ├── CGA_Bluetooth_Characteristic_Protocol_Internal.html
│ │ ├── CGA_Bluetooth_Descriptor_Protocol.html
│ │ ├── CGA_Bluetooth_Descriptor_Protocol_Internal.html
│ │ ├── CGA_Bluetooth_Service_Protocol.html
│ │ ├── CGA_Bluetooth_Service_Protocol_Internal.html
│ │ ├── CGA_Bluetooth_Writable.html
│ │ ├── CGA_CharacteristicFactory.html
│ │ ├── CGA_Class_Protocol.html
│ │ ├── CGA_Class_Protocol_UpdateCharacteristic.html
│ │ ├── CGA_Class_Protocol_UpdateDescriptor.html
│ │ ├── CGA_Class_Protocol_UpdateService.html
│ │ ├── CGA_DescriptorFactory.html
│ │ └── CGA_ServiceFactory.html
│ ├── badge.svg
│ ├── css
│ │ ├── highlight.css
│ │ └── jazzy.css
│ ├── docsets
│ │ ├── .docset
│ │ │ └── Contents
│ │ │ │ ├── Info.plist
│ │ │ │ └── Resources
│ │ │ │ ├── Documents
│ │ │ │ ├── Classes.html
│ │ │ │ ├── Classes
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_BatteryLevel.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_CurrentTime.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_FirmwareRevision.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_HardwareRevision.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_LocalTimeInformation.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_ManufacturerName.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_ModelNumber.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_SerialNumber.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_SoftwareRevision.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_SystemID.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_AggregateFormat.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_CBUUIDL2CAPPSMCharacteristic.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_Characteristic_Extended_Properties.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_ClientCharacteristicConfiguration.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_PresentationFormat.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_PresentationFormat
│ │ │ │ │ │ └── FormatMasks.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_ServerCharacteristicConfiguration.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_UserDescription.html
│ │ │ │ │ ├── CGA_Bluetooth_Peripheral.html
│ │ │ │ │ ├── CGA_Bluetooth_Service.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_Battery.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_CurrentTime.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_DeviceInfo.html
│ │ │ │ │ ├── RVS_BlueThoth.html
│ │ │ │ │ └── RVS_BlueThoth
│ │ │ │ │ │ ├── AdvertisementData.html
│ │ │ │ │ │ ├── DiscoveryData.html
│ │ │ │ │ │ └── ScanCriteria.html
│ │ │ │ ├── Enums.html
│ │ │ │ ├── Enums
│ │ │ │ │ └── CGA_Errors.html
│ │ │ │ ├── Extensions.html
│ │ │ │ ├── Extensions
│ │ │ │ │ ├── Array.html
│ │ │ │ │ └── Data.html
│ │ │ │ ├── Global Variables.html
│ │ │ │ ├── Protocols.html
│ │ │ │ ├── Protocols
│ │ │ │ │ ├── CGA_BlueThoth_Delegate.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_Protocol.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_Protocol_Internal.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_Protocol.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_Protocol_Internal.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_Protocol.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_Protocol_Internal.html
│ │ │ │ │ ├── CGA_Bluetooth_Writable.html
│ │ │ │ │ ├── CGA_CharacteristicFactory.html
│ │ │ │ │ ├── CGA_Class_Protocol.html
│ │ │ │ │ ├── CGA_Class_Protocol_UpdateCharacteristic.html
│ │ │ │ │ ├── CGA_Class_Protocol_UpdateDescriptor.html
│ │ │ │ │ ├── CGA_Class_Protocol_UpdateService.html
│ │ │ │ │ ├── CGA_DescriptorFactory.html
│ │ │ │ │ └── CGA_ServiceFactory.html
│ │ │ │ ├── css
│ │ │ │ │ ├── highlight.css
│ │ │ │ │ └── jazzy.css
│ │ │ │ ├── img
│ │ │ │ │ ├── carat.png
│ │ │ │ │ ├── dash.png
│ │ │ │ │ ├── gh.png
│ │ │ │ │ └── spinner.gif
│ │ │ │ ├── index.html
│ │ │ │ ├── js
│ │ │ │ │ ├── jazzy.js
│ │ │ │ │ ├── jazzy.search.js
│ │ │ │ │ ├── jquery.min.js
│ │ │ │ │ ├── lunr.min.js
│ │ │ │ │ └── typeahead.jquery.js
│ │ │ │ └── search.json
│ │ │ │ └── docSet.dsidx
│ │ └── .tgz
│ ├── icon.png
│ ├── img
│ │ ├── AddFramework.png
│ │ ├── CheckoutsDir.png
│ │ ├── InFrameworksDir.png
│ │ ├── IncludeProjectFile.png
│ │ ├── SelectTarget.png
│ │ ├── carat.png
│ │ ├── dash.png
│ │ ├── gh.png
│ │ ├── icon.png
│ │ └── spinner.gif
│ ├── index.html
│ ├── js
│ │ ├── jazzy.js
│ │ ├── jazzy.search.js
│ │ ├── jquery.min.js
│ │ ├── lunr.min.js
│ │ └── typeahead.jquery.js
│ ├── search.json
│ └── undocumented.json
├── framework-public
│ ├── Classes.html
│ ├── Classes
│ │ ├── CGA_Bluetooth_Characteristic.html
│ │ ├── CGA_Bluetooth_Characteristic_BatteryLevel.html
│ │ ├── CGA_Bluetooth_Characteristic_CurrentTime.html
│ │ ├── CGA_Bluetooth_Characteristic_FirmwareRevision.html
│ │ ├── CGA_Bluetooth_Characteristic_LocalTimeInformation.html
│ │ ├── CGA_Bluetooth_Characteristic_ManufacturerName.html
│ │ ├── CGA_Bluetooth_Characteristic_ModelNumber.html
│ │ ├── CGA_Bluetooth_Characteristic_SerialNumber.html
│ │ ├── CGA_Bluetooth_Characteristic_SoftwareRevision.html
│ │ ├── CGA_Bluetooth_Characteristic_SystemID.html
│ │ ├── CGA_Bluetooth_Descriptor.html
│ │ ├── CGA_Bluetooth_Descriptor_Characteristic_Extended_Properties.html
│ │ ├── CGA_Bluetooth_Descriptor_ClientCharacteristicConfiguration.html
│ │ ├── CGA_Bluetooth_Descriptor_PresentationFormat.html
│ │ ├── CGA_Bluetooth_Peripheral.html
│ │ ├── CGA_Bluetooth_Service.html
│ │ ├── CGA_Bluetooth_Service_Battery.html
│ │ ├── CGA_Bluetooth_Service_CurrentTime.html
│ │ ├── CGA_Bluetooth_Service_DeviceInfo.html
│ │ ├── RVS_BlueThoth.html
│ │ └── RVS_BlueThoth
│ │ │ ├── AdvertisementData.html
│ │ │ ├── DiscoveryData.html
│ │ │ └── ScanCriteria.html
│ ├── Enums.html
│ ├── Enums
│ │ └── CGA_Errors.html
│ ├── Extensions.html
│ ├── Extensions
│ │ ├── Array.html
│ │ └── Data.html
│ ├── Protocols.html
│ ├── Protocols
│ │ ├── CGA_BlueThoth_Delegate.html
│ │ ├── CGA_Bluetooth_Characteristic_Protocol.html
│ │ ├── CGA_Bluetooth_Descriptor_Protocol.html
│ │ ├── CGA_Bluetooth_Service_Protocol.html
│ │ ├── CGA_Bluetooth_Writable.html
│ │ ├── CGA_Class_Protocol.html
│ │ ├── CGA_Class_Protocol_UpdateCharacteristic.html
│ │ ├── CGA_Class_Protocol_UpdateDescriptor.html
│ │ └── CGA_Class_Protocol_UpdateService.html
│ ├── badge.svg
│ ├── css
│ │ ├── highlight.css
│ │ └── jazzy.css
│ ├── docsets
│ │ ├── .docset
│ │ │ └── Contents
│ │ │ │ ├── Info.plist
│ │ │ │ └── Resources
│ │ │ │ ├── Documents
│ │ │ │ ├── Classes.html
│ │ │ │ ├── Classes
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_BatteryLevel.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_CurrentTime.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_FirmwareRevision.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_LocalTimeInformation.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_ManufacturerName.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_ModelNumber.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_SerialNumber.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_SoftwareRevision.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_SystemID.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_Characteristic_Extended_Properties.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_ClientCharacteristicConfiguration.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_PresentationFormat.html
│ │ │ │ │ ├── CGA_Bluetooth_Peripheral.html
│ │ │ │ │ ├── CGA_Bluetooth_Service.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_Battery.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_CurrentTime.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_DeviceInfo.html
│ │ │ │ │ ├── RVS_BlueThoth.html
│ │ │ │ │ └── RVS_BlueThoth
│ │ │ │ │ │ ├── AdvertisementData.html
│ │ │ │ │ │ ├── DiscoveryData.html
│ │ │ │ │ │ └── ScanCriteria.html
│ │ │ │ ├── Enums.html
│ │ │ │ ├── Enums
│ │ │ │ │ └── CGA_Errors.html
│ │ │ │ ├── Extensions.html
│ │ │ │ ├── Extensions
│ │ │ │ │ ├── Array.html
│ │ │ │ │ └── Data.html
│ │ │ │ ├── Protocols.html
│ │ │ │ ├── Protocols
│ │ │ │ │ ├── CGA_BlueThoth_Delegate.html
│ │ │ │ │ ├── CGA_Bluetooth_Characteristic_Protocol.html
│ │ │ │ │ ├── CGA_Bluetooth_Descriptor_Protocol.html
│ │ │ │ │ ├── CGA_Bluetooth_Service_Protocol.html
│ │ │ │ │ ├── CGA_Bluetooth_Writable.html
│ │ │ │ │ ├── CGA_Class_Protocol.html
│ │ │ │ │ ├── CGA_Class_Protocol_UpdateCharacteristic.html
│ │ │ │ │ ├── CGA_Class_Protocol_UpdateDescriptor.html
│ │ │ │ │ └── CGA_Class_Protocol_UpdateService.html
│ │ │ │ ├── css
│ │ │ │ │ ├── highlight.css
│ │ │ │ │ └── jazzy.css
│ │ │ │ ├── img
│ │ │ │ │ ├── carat.png
│ │ │ │ │ ├── dash.png
│ │ │ │ │ ├── gh.png
│ │ │ │ │ └── spinner.gif
│ │ │ │ ├── index.html
│ │ │ │ ├── js
│ │ │ │ │ ├── jazzy.js
│ │ │ │ │ ├── jazzy.search.js
│ │ │ │ │ ├── jquery.min.js
│ │ │ │ │ ├── lunr.min.js
│ │ │ │ │ └── typeahead.jquery.js
│ │ │ │ └── search.json
│ │ │ │ └── docSet.dsidx
│ │ └── .tgz
│ ├── icon.png
│ ├── img
│ │ ├── AddFramework.png
│ │ ├── CheckoutsDir.png
│ │ ├── InFrameworksDir.png
│ │ ├── IncludeProjectFile.png
│ │ ├── SelectTarget.png
│ │ ├── carat.png
│ │ ├── dash.png
│ │ ├── gh.png
│ │ ├── icon.png
│ │ └── spinner.gif
│ ├── index.html
│ ├── js
│ │ ├── jazzy.js
│ │ ├── jazzy.search.js
│ │ ├── jquery.min.js
│ │ ├── lunr.min.js
│ │ └── typeahead.jquery.js
│ ├── search.json
│ └── undocumented.json
└── index.html
├── icon.png
├── jazzy.command
└── spec
├── AppIcon.pdf
├── GATT_Specification_Supplement_v1.1.pdf
└── SocialPreview.pdf
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @ChrisMarshallNY
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Rift Valley Software, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/PRIVACY.md:
--------------------------------------------------------------------------------
1 | # Privacy Declaration
2 |
3 | This project collects **absolutely no information at all**, from anyone, at any time.
4 |
5 | It is hosted on GitHub, so users of the library may need to understand [GitHub's Privacy Policy](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement).
6 |
--------------------------------------------------------------------------------
/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "object": {
3 | "pins": [
4 | {
5 | "package": "RVS_Generic_Swift_Toolbox",
6 | "repositoryURL": "git@github.com:RiftValleySoftware/RVS_Generic_Swift_Toolbox.git",
7 | "state": {
8 | "branch": null,
9 | "revision": "fd0869254d3772ae13c5209f527f4f763c6f170a",
10 | "version": "1.8.1"
11 | }
12 | }
13 | ]
14 | },
15 | "version": 1
16 | }
17 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.5
2 |
3 | /*
4 | © Copyright 2020-2022, The Great Rift Valley Software Company
5 |
6 | LICENSE:
7 |
8 | MIT License
9 |
10 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
11 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
12 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
13 | Software is furnished to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
20 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
22 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
23 | */
24 |
25 | import PackageDescription
26 |
27 | let package = Package(
28 | name: "RVS_BlueThoth",
29 | platforms: [
30 | .iOS(.v13),
31 | .tvOS(.v11),
32 | .macOS(.v10_14),
33 | .watchOS(.v5)
34 | ],
35 | products: [
36 | .library(name: "RVS_BlueThoth",
37 | targets: [
38 | "RVS_BlueThoth"
39 | ]
40 | )
41 | ],
42 | dependencies: [
43 | .package(name: "RVS_Generic_Swift_Toolbox", url: "git@github.com:RiftValleySoftware/RVS_Generic_Swift_Toolbox.git", from: "1.13.1")
44 | ],
45 | targets: [
46 | .target(
47 | name: "RVS_BlueThoth",
48 | dependencies: [.product(name: "RVS_Generic_Swift_Toolbox", package: "RVS_Generic_Swift_Toolbox")]
49 | )
50 | ]
51 | )
52 |
--------------------------------------------------------------------------------
/PrivacyInfo.xcprivacy:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrivacyCollectedDataTypes
6 |
7 | NSPrivacyAccessedAPITypes
8 |
9 | NSPrivacyTrackingDomains
10 |
11 | NSPrivacyTracking
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Project-Meta/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | // This is free software: you can redistribute it and/or modify
2 | // it under the terms of the GNU General Public License as published by
3 | // the Free Software Foundation, either version 2 of the License, or
4 | // (at your option) any later version.
5 | //
6 | // This Software is distributed in the hope that it will be useful,
7 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
8 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 | // GNU General Public License for more details.
10 | //
11 | // You should have received a copy of the GNU General Public License
12 | // along with this code. If not, see .
13 | //
14 | // The Great Rift Valley Software Company: https://riftvalleysoftware.com
15 |
16 | CLANG_ANALYZER_NONNULL = YES
17 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE
18 | CLANG_CXX_LANGUAGE_STANDARD = gnu++14
19 | CLANG_CXX_LIBRARY = libc++
20 | CLANG_ENABLE_MODULES = YES
21 | CLANG_ENABLE_OBJC_ARC = YES
22 | CLANG_ENABLE_OBJC_WEAK = YES
23 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES
24 | CLANG_WARN_BOOL_CONVERSION = YES
25 | CLANG_WARN_COMMA = YES
26 | CLANG_WARN_CONSTANT_CONVERSION = YES
27 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES
28 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR
29 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES
30 | CLANG_WARN_EMPTY_BODY = YES
31 | CLANG_WARN_ENUM_CONVERSION = YES
32 | CLANG_WARN_FLOAT_CONVERSION = YES_ERROR
33 | CLANG_WARN_INFINITE_RECURSION = YES
34 | CLANG_WARN_INT_CONVERSION = YES
35 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES
36 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
37 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES
38 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR
39 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES
40 | CLANG_WARN_STRICT_PROTOTYPES = YES
41 | CLANG_WARN_SUSPICIOUS_MOVE = YES
42 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
43 | CLANG_WARN_UNREACHABLE_CODE = YES
44 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
45 | GCC3_VERSION = 3.3
46 | GCC_C_LANGUAGE_STANDARD = gnu11
47 | GCC_INLINES_ARE_PRIVATE_EXTERN = YES
48 | GCC_NO_COMMON_BLOCKS = YES
49 | GCC_PFE_FILE_C_DIALECTS = c objective-c c++ objective-c++
50 | GCC_SYMBOLS_PRIVATE_EXTERN = YES
51 | GCC_THUMB_SUPPORT = YES
52 | GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES
53 | GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES
54 | GCC_TREAT_WARNINGS_AS_ERRORS = YES
55 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0
56 | GCC_VERSION_IDENTIFIER = com_apple_compilers_llvm_clang_1_0
57 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES
58 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR
59 | GCC_WARN_UNDECLARED_SELECTOR = YES
60 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE
61 | GCC_WARN_UNUSED_FUNCTION = YES
62 | GCC_WARN_UNUSED_VARIABLE = YES
63 | SWIFT_COMPILATION_MODE = wholemodule
64 | SWIFT_OPTIMIZATION_LEVEL = -O
65 | SWIFT_TREAT_WARNINGS_AS_ERRORS = YES
66 | SWIFT_VERSION = 5.0
67 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcodeproj/xcshareddata/xcschemes/RVS_BlueThoth.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
57 |
58 |
59 |
60 |
62 |
63 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcodeproj/xcshareddata/xcschemes/RVS_BlueThoth_Test_Harness_MacOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
45 |
51 |
52 |
53 |
54 |
60 |
62 |
68 |
69 |
70 |
71 |
73 |
74 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcodeproj/xcshareddata/xcschemes/RVS_BlueThoth_Test_Harness_iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
45 |
51 |
52 |
53 |
54 |
60 |
62 |
68 |
69 |
70 |
71 |
73 |
74 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcworkspace/.xcodesamplecode.plist:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
9 |
10 |
12 |
13 |
15 |
16 |
18 |
19 |
21 |
22 |
23 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RVS_BlueThoth.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "rvs_generic_swift_toolbox",
5 | "kind" : "remoteSourceControl",
6 | "location" : "git@github.com:RiftValleySoftware/RVS_Generic_Swift_Toolbox.git",
7 | "state" : {
8 | "revision" : "e85e1e83cdd2f57aacda13b13d75b9edb3252546",
9 | "version" : "1.13.1"
10 | }
11 | },
12 | {
13 | "identity" : "rvs_persistentprefs",
14 | "kind" : "remoteSourceControl",
15 | "location" : "git@github.com:RiftValleySoftware/RVS_PersistentPrefs.git",
16 | "state" : {
17 | "revision" : "c6885ac24b20563507a52e6fc4638733af7f5dea",
18 | "version" : "1.3.7"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Sources/Meta/MacOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | $(MARKETING_VERSION)
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSHumanReadableCopyright
22 | Copyright © 2020 Rift Valley Software, Inc. All rights reserved.
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Sources/Meta/TVOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | $(MARKETING_VERSION)
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSHumanReadableCopyright
22 | Copyright © 2020 Rift Valley Software, Inc. All rights reserved.
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Sources/Meta/WatchOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | $(MARKETING_VERSION)
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSHumanReadableCopyright
22 | Copyright © 2020 Rift Valley Software, Inc. All rights reserved.
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Sources/Meta/iOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | $(MARKETING_VERSION)
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSHumanReadableCopyright
22 | Copyright © 2020 Rift Valley Software, Inc. All rights reserved.
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Sources/README-PUBLIC.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | RVS_BlueThoth (Public SDK Documentation)
4 | =
5 |
6 | This is a Bluetooth SDK for "Central" (Client) Core Bluetooth (BLE) implementation.
7 |
8 | It abstracts some of the more "tedious" aspects of using Core Bluetooth; allowing the app to easily implement a Bluetooth Client functionality.
9 |
10 | [This is the GitHub repo for this project.](https://github.com/RiftValleySoftware/RVS_BlueThoth) It is 100% open-source, MIT-licensed code.
11 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_BatteryLevel.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Battery Level Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the Battery Level Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_BatteryLevel: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | - returns: 0-100 (percentage of battery), or nil.
35 | */
36 | public var batteryLevel: Int? {
37 | guard let intValue = intValue else { return nil }
38 | return Int(truncatingIfNeeded: intValue)
39 | }
40 |
41 | /* ################################################################## */
42 | /**
43 | - returns: the battery level, as a String.
44 | */
45 | public override var stringValue: String? {
46 | guard let intValue = batteryLevel else { return nil }
47 | return String(intValue)
48 | }
49 |
50 | /* ################################################################## */
51 | /**
52 | This returns a unique GATT UUID String for the Characteristic.
53 | */
54 | public class override var uuid: String { "2A19" }
55 | }
56 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_FirmwareRevision.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Firmware Revision Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the Firmware Revision Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_FirmwareRevision: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | This returns a unique GATT UUID String for the Characteristic.
35 | */
36 | public class override var uuid: String { "2A26" }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_HardwareRevision.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Hardware Revision Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the Hardware Revision Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_HardwareRevision: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | This returns a unique GATT UUID String for the Characteristic.
35 | */
36 | internal class override var uuid: String { "2A27" }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_ManufacturerName.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Manufacturer Name Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the Manufacturer Name Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_ManufacturerName: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | This returns a unique GATT UUID String for the Characteristic.
35 | */
36 | public class override var uuid: String { "2A29" }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_ModelNumber.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Model Number Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the Model Number Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_ModelNumber: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | This returns a unique GATT UUID String for the Characteristic.
35 | */
36 | public class override var uuid: String { "2A24" }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_SerialNumber.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Serial Number Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the Serial Number Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_SerialNumber: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | This returns a unique GATT UUID String for the Characteristic.
35 | */
36 | public class override var uuid: String { "2A25" }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_SoftwareRevision.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Software Revision Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the Software Revision Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_SoftwareRevision: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | This returns a unique GATT UUID String for the Characteristic.
35 | */
36 | public class override var uuid: String { "2A28" }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Characteristics/CGA_Bluetooth_Characteristic_SystemID.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - System ID Characteristic Wrapper Class -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds a specialized accessor to the System ID Characteristic.
30 | */
31 | public class CGA_Bluetooth_Characteristic_SystemID: CGA_Bluetooth_Characteristic {
32 | /* ################################################################## */
33 | /**
34 | - returns: The 40-bit Manufacturer ID
35 | */
36 | public var manufacturerID: UInt64? {
37 | var id = UInt64(0)
38 | guard var data = value else { return nil }
39 | data.castInto(&id)
40 |
41 | id &= 0xFFFFFFFFFF000000
42 |
43 | return id >> 24
44 | }
45 |
46 | /* ################################################################## */
47 | /**
48 | - returns: The 24-bit Organizationally Unique ID
49 | */
50 | public var ouID: UInt32? {
51 | var id = UInt64(0)
52 | guard var data = value else { return nil }
53 | data.castInto(&id)
54 |
55 | id &= 0x0000000000FFFFFF
56 |
57 | return UInt32(id)
58 | }
59 |
60 | /* ################################################################## */
61 | /**
62 | - returns: the ID as a String.
63 | */
64 | public override var stringValue: String? {
65 | guard let intValue = intValue else { return nil }
66 | return String(format: "%016X", UInt64(intValue))
67 | }
68 |
69 | /* ################################################################## */
70 | /**
71 | This returns a unique GATT UUID String for the Characteristic.
72 | */
73 | public class override var uuid: String { "2A23" }
74 | }
75 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Descriptors/CGA_Bluetooth_Descriptor_AggregateFormat.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Wrapper Class for the Characteristic Aggregate Format Descriptor -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This class "wraps" instances of The Characteristic Aggregate Format CBDescriptor.
30 | */
31 | public class CGA_Bluetooth_Descriptor_AggregateFormat: CGA_Bluetooth_Descriptor {
32 | /* ################################################################## */
33 | /**
34 | This is the UUID for the Characteristic Aggregate Format Descriptor.
35 | */
36 | internal class override var uuid: String { CBUUIDCharacteristicAggregateFormatString }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Descriptors/CGA_Bluetooth_Descriptor_CBUUIDL2CAPPSMCharacteristic.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Wrapper Class for the L2CAP Channel PSM Descriptor -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This class "wraps" instances of The L2CAP Channel PSM CBDescriptor.
30 | */
31 | public class CGA_Bluetooth_Descriptor_CBUUIDL2CAPPSMCharacteristic: CGA_Bluetooth_Descriptor {
32 | /* ################################################################## */
33 | /**
34 | This is the UUID for the L2CAP Channel PSM Descriptor.
35 | */
36 | internal class override var uuid: String { CBUUIDL2CAPPSMCharacteristicString }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Descriptors/CGA_Bluetooth_Descriptor_Characteristic_Extended_Properties.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Wrapper Class for the Client Characteristic Configuration Descriptor -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This class "wraps" instances of The Characteristic Extended Properties CBDescriptor, adding some functionality, and linking the hierarchy.
30 | */
31 | public class CGA_Bluetooth_Descriptor_Characteristic_Extended_Properties: CGA_Bluetooth_Descriptor {
32 | /* ################################################################## */
33 | /**
34 | - returns: True, if the Characteristic has Reliable Write Enabled.
35 | */
36 | public var isReliableWriteEnabled: Bool {
37 | guard let value = cbElementInstance?.value as? Int8 else { return false }
38 | return 1 == value & 0x01
39 | }
40 |
41 | /* ################################################################## */
42 | /**
43 | - returns: True, if the Characteristic has Writable Auxiliaries enabled.
44 | */
45 | public var isWritableAuxiliariesEnabled: Bool {
46 | guard let value = cbElementInstance?.value as? Int8 else { return false }
47 | return 2 == value & 0x02
48 | }
49 |
50 | /* ################################################################## */
51 | /**
52 | This is the UUID for the Client Characteristic Configuration Descriptor.
53 | */
54 | internal class override var uuid: String { CBUUIDCharacteristicExtendedPropertiesString }
55 | }
56 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Descriptors/CGA_Bluetooth_Descriptor_ClientCharacteristicConfiguration.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Wrapper Class for the Client Characteristic Configuration Descriptor -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This class "wraps" instances of The Client Characteristic Configuration CBDescriptor, adding some functionality, and linking the hierarchy.
30 | */
31 | public class CGA_Bluetooth_Descriptor_ClientCharacteristicConfiguration: CGA_Bluetooth_Descriptor {
32 | /* ################################################################## */
33 | /**
34 | - returns: True, if the Characteristic is currently notifying.
35 | */
36 | public var isNotifying: Bool {
37 | guard let value = intValue else { return false }
38 | return 1 == value & 0x01
39 | }
40 |
41 | /* ################################################################## */
42 | /**
43 | - returns: True, if the Characteristic is currently indicating.
44 | */
45 | public var isIndicating: Bool {
46 | guard let value = intValue else { return false }
47 | return 2 == value & 0x02
48 | }
49 |
50 | /* ################################################################## */
51 | /**
52 | This is the UUID for the Client Characteristic Configuration Descriptor.
53 | */
54 | internal class override var uuid: String { CBUUIDClientCharacteristicConfigurationString }
55 | }
56 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Descriptors/CGA_Bluetooth_Descriptor_ServerCharacteristicConfiguration.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Wrapper Class for the Server Characteristic Configuration Descriptor -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This class "wraps" instances of The Server Characteristic Configuration CBDescriptor.
30 | */
31 | public class CGA_Bluetooth_Descriptor_ServerCharacteristicConfiguration: CGA_Bluetooth_Descriptor {
32 | /* ################################################################## */
33 | /**
34 | This is the UUID for the Server Characteristic Configuration Descriptor.
35 | */
36 | internal class override var uuid: String { CBUUIDServerCharacteristicConfigurationString }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Descriptors/CGA_Bluetooth_Descriptor_UserDescription.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Wrapper Class for the Client Characteristic Configuration Descriptor -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This class "wraps" instances of The User Description CBDescriptor.
30 | */
31 | public class CGA_Bluetooth_Descriptor_UserDescription: CGA_Bluetooth_Descriptor {
32 | /* ################################################################## */
33 | /**
34 | This is the UUID for the User Description Descriptor.
35 | */
36 | internal class override var uuid: String { CBUUIDCharacteristicUserDescriptionString }
37 | }
38 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Services/CGA_Bluetooth_Service_Battery.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Service Specialization for Battery Service -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds some specialized accessors.
30 | */
31 | public class CGA_Bluetooth_Service_Battery: CGA_Bluetooth_Service {
32 | /* ################################################################## */
33 | /**
34 | - returns: 0-100 (percentage of battery), or nil.
35 | */
36 | public var batteryLevel: Int? { (sequence_contents[CBUUID(string: CGA_Bluetooth_Characteristic_BatteryLevel.cbUUIDString)] as? CGA_Bluetooth_Characteristic_BatteryLevel)?.batteryLevel }
37 |
38 | /* ################################################################## */
39 | /**
40 | This returns a unique GATT UUID String for the Service.
41 | */
42 | public class override var uuid: String { "180F" }
43 | }
44 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Implementation/Services/CGA_Bluetooth_Service_DeviceInfo.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - Service Specialization for Device Info -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This adds some specialized accessors.
30 | */
31 | public class CGA_Bluetooth_Service_DeviceInfo: CGA_Bluetooth_Service {
32 | /* ################################################################## */
33 | /**
34 | This returns The manufacturer name for the Service (if provided).
35 | */
36 | public var manufacturerName: String? { (sequence_contents[CBUUID(string: CGA_Bluetooth_Characteristic_ManufacturerName.cbUUIDString)] as? CGA_Bluetooth_Characteristic_ManufacturerName)?.stringValue }
37 |
38 | /* ################################################################## */
39 | /**
40 | This returns The model number for the Service (if provided).
41 | */
42 | public var modelNumber: String? { (sequence_contents[CBUUID(string: CGA_Bluetooth_Characteristic_ModelNumber.cbUUIDString)] as? CGA_Bluetooth_Characteristic_ModelNumber)?.stringValue }
43 |
44 | /* ################################################################## */
45 | /**
46 | This returns a unique GATT UUID String for the Service.
47 | */
48 | internal class override var uuid: String { "180A" }
49 | }
50 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Protocols/internal/CGA_Bluetooth_Characteristic_Protocol_Internal.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Internal Face of Characteristics -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This protocol publishes an internal interface for our Characteristic wrapper classes.
30 | */
31 | internal protocol CGA_Bluetooth_Characteristic_Protocol_Internal: CGA_Bluetooth_Characteristic_Protocol {
32 | /* ################################################################## */
33 | /**
34 | This is the UUID for the Characteristic type. It is not used for external purposes.
35 | */
36 | static var uuid: String { get }
37 |
38 | /* ################################################################## */
39 | /**
40 | This will contain any required scan criteria. It simply passes on the Central criteria.
41 | */
42 | var scanCriteria: RVS_BlueThoth.ScanCriteria? { get }
43 |
44 | /* ################################################################## */
45 | /**
46 | This casts the parent as a Service Wrapper.
47 | */
48 | var service: CGA_Bluetooth_Service? { get }
49 |
50 | /* ################################################################## */
51 | /**
52 | This is a convenience init that should always be used.
53 |
54 | - parameter parent: The Service instance that "owns" this instance.
55 | - parameter cbElementInstance: This is the actual CBharacteristic instance to be associated with this instance.
56 | */
57 | init(parent: CGA_Bluetooth_Service, cbElementInstance: CBCharacteristic)
58 |
59 | /* ################################################################## */
60 | /**
61 | Called to add a Descriptor to our main Array.
62 |
63 | - parameter inDescriptor: The Descriptor to add.
64 | */
65 | func addDescriptor(_ inDescriptor: CGA_Bluetooth_Descriptor)
66 | }
67 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Protocols/internal/CGA_Bluetooth_Descriptor_Protocol_Internal.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Main Wrapper Class for the Descriptors -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This class "wraps" instances of CBDescriptor, adding some functionality, and linking the hierarchy.
30 | */
31 | internal protocol CGA_Bluetooth_Descriptor_Protocol_Internal: CGA_Bluetooth_Descriptor_Protocol {
32 | /* ################################################################## */
33 | /**
34 | This is the UUID for the Descriptor type. It is not used for external purposes.
35 | */
36 | static var uuid: String { get }
37 |
38 | /* ################################################################## */
39 | /**
40 | This is used to reference an "owning instance" of this instance, and it should be a CGA_Bluetooth_Characteristic
41 | */
42 | var parent: CGA_Class_Protocol? { get }
43 |
44 | /* ################################################################## */
45 | /**
46 | This will contain any required scan criteria. It simply passes on the Central criteria.
47 | */
48 | var scanCriteria: RVS_BlueThoth.ScanCriteria? { get }
49 |
50 | /* ################################################################## */
51 | /**
52 | This returns the parent Central Manager
53 | */
54 | var central: RVS_BlueThoth? { get }
55 | }
56 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Protocols/public/CGA_Bluetooth_Descriptor_Protocol.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 |
25 | /* ###################################################################################################################################### */
26 | // MARK: - The Public Face of Descriptors -
27 | /* ###################################################################################################################################### */
28 | /**
29 | This protocol publishes a public interface for our Descriptor wrapper classes.
30 | */
31 | public protocol CGA_Bluetooth_Descriptor_Protocol: CGA_Class_Protocol {
32 | /* ################################################################## */
33 | /**
34 | This returns a unique UUID String for the instance.
35 | */
36 | var id: String { get }
37 |
38 | /* ################################################################## */
39 | /**
40 | If the Descriptor has a value, it is returned here. It is completely untyped, as each descriptor has its own types.
41 | */
42 | var value: Any? { get }
43 |
44 | /* ################################################################## */
45 | /**
46 | This holds the instance of CBDescriptor that is used by this instance.
47 | */
48 | var cbElementInstance: CBDescriptor? { get }
49 |
50 | /* ################################################################## */
51 | /**
52 | This casts the parent as a Characteristic Wrapper.
53 | */
54 | var characteristic: CGA_Bluetooth_Characteristic? { get }
55 |
56 | /* ################################################################## */
57 | /**
58 | The Peripheral is asked to read our value.
59 | */
60 | func readValue()
61 | }
62 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/Protocols/public/CGA_Bluetooth_Service_Protocol.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import CoreBluetooth
24 | import RVS_Generic_Swift_Toolbox
25 |
26 | /* ###################################################################################################################################### */
27 | // MARK: - The Public Face of Services -
28 | /* ###################################################################################################################################### */
29 | /**
30 | This protocol publishes a public interface for our Service wrapper classes.
31 | */
32 | public protocol CGA_Bluetooth_Service_Protocol: AnyObject, RVS_SequenceProtocol {
33 | /* ################################################################## */
34 | /**
35 | This is used to reference an "owning instance" of this instance, and it should be a CGA_Bluetooth_Peripheral
36 | */
37 | var parent: CGA_Class_Protocol? { get }
38 |
39 | /* ################################################################## */
40 | /**
41 | This returns a unique UUID String for the instance.
42 | */
43 | var id: String { get }
44 |
45 | /* ################################################################## */
46 | /**
47 | This returns the parent Central Manager
48 | */
49 | var central: RVS_BlueThoth? { get }
50 |
51 | /* ################################################################## */
52 | /**
53 | This casts the parent as a Peripheral Wrapper.
54 | */
55 | var peripheral: CGA_Bluetooth_Peripheral? { get }
56 |
57 | // MARK: Public Methods
58 |
59 | /* ################################################################## */
60 | /**
61 | The required init, with a "primed" sequence.
62 |
63 | - parameter sequence_contents: The initial value of the Array cache.
64 | */
65 | init(sequence_contents: [Element])
66 | }
67 |
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/AddFramework.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/AddFramework.png
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/CheckoutsDir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/CheckoutsDir.png
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/InFrameworksDir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/InFrameworksDir.png
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/IncludeProjectFile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/IncludeProjectFile.png
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/SelectTarget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/SelectTarget.png
--------------------------------------------------------------------------------
/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/icon.png
--------------------------------------------------------------------------------
/Sources/img/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Sources/img/icon.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Meta/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | LSApplicationCategoryType
24 | public.app-category.developer-tools
25 | LSMinimumSystemVersion
26 | $(MACOSX_DEPLOYMENT_TARGET)
27 | NSBluetoothAlwaysUsageDescription
28 | The App Needs to Discover and Connect to Bluetooth Devices.
29 | NSHumanReadableCopyright
30 | Copyright © 2020 The Great Rift Valley Software Company. All rights reserved.
31 | NSMainStoryboardFile
32 | Main
33 | NSPrincipalClass
34 | NSApplication
35 | NSSupportsAutomaticTermination
36 |
37 | NSSupportsSuddenTermination
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Meta/RVS_BlueThoth_Test_Harness_MacOS.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.device.bluetooth
8 |
9 | com.apple.security.files.user-selected.read-only
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_16x16.png",
5 | "scale" : "1x",
6 | "idiom" : "mac",
7 | "size" : "16x16"
8 | },
9 | {
10 | "size" : "16x16",
11 | "scale" : "2x",
12 | "filename" : "icon_16x16@2x.png",
13 | "idiom" : "mac"
14 | },
15 | {
16 | "idiom" : "mac",
17 | "size" : "32x32",
18 | "filename" : "icon_32x32.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "idiom" : "mac",
23 | "filename" : "icon_32x32@2x.png",
24 | "scale" : "2x",
25 | "size" : "32x32"
26 | },
27 | {
28 | "scale" : "1x",
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "filename" : "icon_128x128.png"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "filename" : "icon_128x128@2x.png",
36 | "scale" : "2x",
37 | "size" : "128x128"
38 | },
39 | {
40 | "filename" : "icon_256x256.png",
41 | "idiom" : "mac",
42 | "size" : "256x256",
43 | "scale" : "1x"
44 | },
45 | {
46 | "size" : "256x256",
47 | "scale" : "2x",
48 | "filename" : "icon_256x256@2x.png",
49 | "idiom" : "mac"
50 | },
51 | {
52 | "idiom" : "mac",
53 | "size" : "512x512",
54 | "scale" : "1x",
55 | "filename" : "icon_512x512.png"
56 | },
57 | {
58 | "idiom" : "mac",
59 | "filename" : "icon_512x512@2x.png",
60 | "scale" : "2x",
61 | "size" : "512x512"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-AppIcon.appiconset/icon_512x512@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_16x16.png",
5 | "idiom" : "mac",
6 | "scale" : "1x",
7 | "size" : "16x16"
8 | },
9 | {
10 | "scale" : "2x",
11 | "filename" : "icon_16x16@2x.png",
12 | "idiom" : "mac",
13 | "size" : "16x16"
14 | },
15 | {
16 | "size" : "32x32",
17 | "scale" : "1x",
18 | "filename" : "icon_32x32.png",
19 | "idiom" : "mac"
20 | },
21 | {
22 | "scale" : "2x",
23 | "filename" : "icon_32x32@2x.png",
24 | "size" : "32x32",
25 | "idiom" : "mac"
26 | },
27 | {
28 | "size" : "128x128",
29 | "filename" : "icon_128x128.png",
30 | "scale" : "1x",
31 | "idiom" : "mac"
32 | },
33 | {
34 | "filename" : "icon_128x128@2x.png",
35 | "size" : "128x128",
36 | "idiom" : "mac",
37 | "scale" : "2x"
38 | },
39 | {
40 | "filename" : "icon_256x256.png",
41 | "idiom" : "mac",
42 | "scale" : "1x",
43 | "size" : "256x256"
44 | },
45 | {
46 | "scale" : "2x",
47 | "filename" : "icon_256x256@2x.png",
48 | "idiom" : "mac",
49 | "size" : "256x256"
50 | },
51 | {
52 | "size" : "512x512",
53 | "filename" : "icon_512x512.png",
54 | "idiom" : "mac",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "512x512",
59 | "idiom" : "mac",
60 | "scale" : "2x",
61 | "filename" : "icon_512x512@2x.png"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/MacOS-Framework-AppIcon.appiconset/icon_512x512@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/reload-icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "reload-icon~universal@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "reload-icon~universal@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "reload-icon~universal@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | },
23 | "properties" : {
24 | "template-rendering-intent" : "template"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/reload-icon.imageset/reload-icon~universal@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/reload-icon.imageset/reload-icon~universal@1x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/reload-icon.imageset/reload-icon~universal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/reload-icon.imageset/reload-icon~universal@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/reload-icon.imageset/reload-icon~universal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Resources/Assets.xcassets/reload-icon.imageset/reload-icon~universal@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_MacOS/Source/Window Controllers/RVS_BlueThoth_MacOS_Test_Harness_Base_WindowController.swift:
--------------------------------------------------------------------------------
1 | /**
2 | © Copyright 2019, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import Cocoa
24 | import RVS_Generic_Swift_Toolbox
25 |
26 | /* ################################################################################################################################## */
27 | // MARK: - Basic Window Controller Class
28 | /* ################################################################################################################################## */
29 | /**
30 | The main reason for creating this class was to allow us to interpret settings, and to fix an issue with Interface Builder.
31 | */
32 | class RVS_BlueThoth_MacOS_Test_Harness_Base_WindowController: NSWindowController {
33 | /* ################################################################## */
34 | /**
35 | This accounts for a bug in Xcode, where the [`restorable`](https://developer.apple.com/documentation/appkit/nswindow/1526255-restorable) flag is ignored. If you set the name here, it will restore.
36 | */
37 | override func windowDidLoad() {
38 | super.windowDidLoad()
39 | window?.title = window?.title.localizedVariant ?? "ERROR"
40 | self.windowFrameAutosaveName = window?.title ?? "ERROR" // This is because there seems to be a bug (maybe in IB), where the auto-restore setting is not saved unless we do this.
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "images" : [
7 | {
8 | "role" : "notificationCenter",
9 | "size" : "24x24",
10 | "filename" : "icon38mm@2x.png",
11 | "subtype" : "38mm",
12 | "scale" : "2x",
13 | "idiom" : "watch"
14 | },
15 | {
16 | "scale" : "2x",
17 | "role" : "notificationCenter",
18 | "size" : "27.5x27.5",
19 | "filename" : "icon42mm@2x.png",
20 | "subtype" : "42mm",
21 | "idiom" : "watch"
22 | },
23 | {
24 | "filename" : "icon-settings@2x.png",
25 | "idiom" : "watch",
26 | "role" : "companionSettings",
27 | "scale" : "2x",
28 | "size" : "29x29"
29 | },
30 | {
31 | "idiom" : "watch",
32 | "role" : "companionSettings",
33 | "size" : "29x29",
34 | "filename" : "icon-settings@3x.png",
35 | "scale" : "3x"
36 | },
37 | {
38 | "filename" : "icon-launcher@2x.png",
39 | "scale" : "2x",
40 | "idiom" : "watch",
41 | "role" : "appLauncher",
42 | "subtype" : "38mm",
43 | "size" : "40x40"
44 | },
45 | {
46 | "filename" : "icon-quicklook38mm@2x.png",
47 | "idiom" : "watch",
48 | "role" : "quickLook",
49 | "subtype" : "38mm",
50 | "scale" : "2x",
51 | "size" : "86x86"
52 | },
53 | {
54 | "idiom" : "watch",
55 | "size" : "98x98",
56 | "scale" : "2x",
57 | "filename" : "icon-quicklook42mm@2x.png",
58 | "subtype" : "42mm",
59 | "role" : "quickLook"
60 | },
61 | {
62 | "idiom" : "watch-marketing",
63 | "scale" : "1x",
64 | "size" : "1024x1024",
65 | "filename" : "watch-marketing.png"
66 | },
67 | {
68 | "scale" : "2x",
69 | "filename" : "icon40mm@2x.png",
70 | "role" : "appLauncher",
71 | "size" : "44x44",
72 | "idiom" : "watch",
73 | "subtype" : "40mm"
74 | },
75 | {
76 | "filename" : "icon44mm@2x.png",
77 | "idiom" : "watch",
78 | "subtype" : "44mm",
79 | "size" : "50x50",
80 | "scale" : "2x",
81 | "role" : "appLauncher"
82 | },
83 | {
84 | "idiom" : "watch",
85 | "scale" : "2x",
86 | "subtype" : "44mm",
87 | "filename" : "icon-quicklook44mm@2x.png",
88 | "size" : "108x108",
89 | "role" : "quickLook"
90 | }
91 | ]
92 | }
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-launcher@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-launcher@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-quicklook38mm@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-quicklook38mm@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-quicklook42mm@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-quicklook42mm@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-quicklook44mm@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-quicklook44mm@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-settings@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-settings@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-settings@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon-settings@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon38mm@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon38mm@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon40mm@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon40mm@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon42mm@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon42mm@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon44mm@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/icon44mm@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/watch-marketing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/AppIcon.appiconset/watch-marketing.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_App/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | $(PRODUCT_NAME)
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSBluetoothAlwaysUsageDescription
24 | The App Needs to Discover and Connect to Bluetooth Devices.
25 | NSBluetoothPeripheralUsageDescription
26 | The App Needs to Discover and Connect to Bluetooth Devices.
27 | NSHumanReadableCopyright
28 | Copyright © 2020 Rift Valley Software, Inc. All rights reserved.
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationPortraitUpsideDown
33 |
34 | WKWatchKitApp
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_Extension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | $(PRODUCT_NAME)
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSBluetoothAlwaysUsageDescription
24 | The App Needs to Discover and Connect to Bluetooth Devices.
25 | NSBluetoothPeripheralUsageDescription
26 | The App Needs to Discover and Connect to Bluetooth Devices.
27 | NSExtension
28 |
29 | NSExtensionAttributes
30 |
31 | WKAppBundleIdentifier
32 | com.littlegreenviper.RVS-BlueToth-WatchOS-Test-Harness.watchkitapp
33 |
34 | NSExtensionPointIdentifier
35 | com.apple.watchkit
36 |
37 | NSHumanReadableCopyright
38 | Copyright © 2020 Rift Valley Software, Inc. All rights reserved.
39 | WKExtensionDelegateClassName
40 | $(PRODUCT_MODULE_NAME).RVS_BlueThoth_Test_Harness_WatchOS_ExtensionDelegate
41 | WKWatchOnly
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_Extension/Table Controllers/RVS_BlueThoth_Test_Harness_WatchOS_CharacteristicTableController.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import WatchKit
24 | import Foundation
25 | import RVS_BlueThoth
26 |
27 | /* ###################################################################################################################################### */
28 | // MARK: - Main Watch App Characteristic Table Controller -
29 | /* ###################################################################################################################################### */
30 | class RVS_BlueThoth_Test_Harness_WatchOS_CharacteristicTableController: NSObject {
31 | /* ################################################################## */
32 | /**
33 | Each table item has an associated Service.
34 | */
35 | var characteristicInstance: CGA_Bluetooth_Characteristic? {
36 | didSet {
37 | if let characteristicInstance = characteristicInstance {
38 | characteristicLabel?.setText(characteristicInstance.id.localizedVariant)
39 | }
40 | }
41 | }
42 |
43 | /* ################################################################## */
44 | /**
45 | This displays the Characteristic ID.
46 | */
47 | @IBOutlet weak var characteristicLabel: WKInterfaceLabel!
48 | }
49 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_Extension/Table Controllers/RVS_BlueThoth_Test_Harness_WatchOS_DiscoveryTableController.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import WatchKit
24 | import Foundation
25 | import RVS_BlueThoth
26 |
27 | /* ###################################################################################################################################### */
28 | // MARK: - Main Watch App Discovery Peripheral Table Controller -
29 | /* ###################################################################################################################################### */
30 | class RVS_BlueThoth_Test_Harness_WatchOS_DiscoveryTableController: NSObject {
31 | /* ################################################################## */
32 | /**
33 | Each table item has an associated Peripheral, denoted by discovery data.
34 | */
35 | var deviceDiscoveryData: RVS_BlueThoth.DiscoveryData! {
36 | didSet {
37 | var name = deviceDiscoveryData.preferredName
38 |
39 | if name.isEmpty {
40 | name = "SLUG-NO-DEVICE-NAME".localizedVariant
41 | }
42 |
43 | deviceLabel?.setText(name)
44 | }
45 | }
46 |
47 | /* ################################################################## */
48 | /**
49 | This displays the Peripheral name.
50 | */
51 | @IBOutlet weak var deviceLabel: WKInterfaceLabel!
52 | }
53 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_WatchOS/RVS_BlueThoth_Test_Harness_WatchOS_Extension/Table Controllers/RVS_BlueThoth_Test_Harness_WatchOS_ServiceTableController.swift:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | import WatchKit
24 | import Foundation
25 | import RVS_BlueThoth
26 |
27 | /* ###################################################################################################################################### */
28 | // MARK: - Main Watch App Service Table Controller -
29 | /* ###################################################################################################################################### */
30 | class RVS_BlueThoth_Test_Harness_WatchOS_ServiceTableController: NSObject {
31 | /* ################################################################## */
32 | /**
33 | Each table item has an associated Service.
34 | */
35 | var serviceInstance: CGA_Bluetooth_Service? {
36 | didSet {
37 | serviceLabel?.setText(serviceInstance?.id)
38 | }
39 | }
40 |
41 | /* ################################################################## */
42 | /**
43 | This displays the Service ID.
44 | */
45 | @IBOutlet weak var serviceLabel: WKInterfaceLabel!
46 | }
47 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Meta/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | $(MARKETING_VERSION)
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | InfoScreenCopyrightSiteURL
22 | https://riftvalleysoftware.com
23 | InfoScreenHelpSiteURL
24 | https://riftvalleysoftware.com
25 | LSRequiresIPhoneOS
26 |
27 | NSBluetoothAlwaysUsageDescription
28 | The App Needs to Discover and Connect to Bluetooth Devices.
29 | NSBluetoothPeripheralUsageDescription
30 | The App Needs to Discover and Connect to Bluetooth Devices.
31 | NSHumanReadableCopyright
32 | Copyright © 2020 Rift Valley Software, Inc. All rights reserved.
33 | UILaunchStoryboardName
34 | LaunchScreen
35 | UIMainStoryboardFile
36 | Main
37 | UIRequiredDeviceCapabilities
38 |
39 | armv7
40 |
41 | UISupportedInterfaceOrientations
42 |
43 | UIInterfaceOrientationPortrait
44 | UIInterfaceOrientationLandscapeLeft
45 | UIInterfaceOrientationLandscapeRight
46 |
47 | UISupportedInterfaceOrientations~ipad
48 |
49 | UIInterfaceOrientationPortrait
50 | UIInterfaceOrientationPortraitUpsideDown
51 | UIInterfaceOrientationLandscapeLeft
52 | UIInterfaceOrientationLandscapeRight
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-40.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-72.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-72@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-76.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small-50.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small-50@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon-small@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/icon@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/ios-marketing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/ios-marketing.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon~ipad.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-AppIcon.appiconset/notification-icon~ipad@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-40.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-72.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-72@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-76.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small-50.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small-50@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon-small@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/icon@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/ios-marketing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/ios-marketing.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon@3x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon~ipad.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_iOS/Source/Resources/Assets.xcassets/iOS-Framework-AppIcon.appiconset/notification-icon~ipad@2x.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Meta/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | $(MARKETING_VERSION)
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | arm64
30 |
31 | UIUserInterfaceStyle
32 | Automatic
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/BottomLayer2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/BottomLayer2.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "BottomLayer2.png",
5 | "idiom" : "tv"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "TopLayer2.png",
5 | "idiom" : "tv"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/TopLayer2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/TopLayer2.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "MiddleLayer2.png",
5 | "idiom" : "tv"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/MiddleLayer2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/MiddleLayer2.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/BottomLayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/BottomLayer.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "BottomLayer.png",
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | }
12 | ],
13 | "info" : {
14 | "author" : "xcode",
15 | "version" : 1
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "TopLayer.png",
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | }
12 | ],
13 | "info" : {
14 | "author" : "xcode",
15 | "version" : 1
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/TopLayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/TopLayer.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "MiddleLayer.png",
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | }
12 | ],
13 | "info" : {
14 | "author" : "xcode",
15 | "version" : 1
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/MiddleLayer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/MiddleLayer.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "assets" : [
3 | {
4 | "filename" : "App Icon - App Store.imagestack",
5 | "idiom" : "tv",
6 | "role" : "primary-app-icon",
7 | "size" : "1280x768"
8 | },
9 | {
10 | "filename" : "App Icon.imagestack",
11 | "idiom" : "tv",
12 | "role" : "primary-app-icon",
13 | "size" : "400x240"
14 | },
15 | {
16 | "filename" : "Top Shelf Image Wide.imageset",
17 | "idiom" : "tv",
18 | "role" : "top-shelf-image-wide",
19 | "size" : "2320x720"
20 | },
21 | {
22 | "filename" : "Top Shelf Image.imageset",
23 | "idiom" : "tv",
24 | "role" : "top-shelf-image",
25 | "size" : "1920x720"
26 | }
27 | ],
28 | "info" : {
29 | "author" : "xcode",
30 | "version" : 1
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/AppIcon-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/AppIcon-1.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/AppIcon-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/AppIcon-2.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "AppIcon-2.png",
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "tv-marketing",
14 | "scale" : "1x"
15 | },
16 | {
17 | "filename" : "AppIcon-1.png",
18 | "idiom" : "tv-marketing",
19 | "scale" : "2x"
20 | }
21 | ],
22 | "info" : {
23 | "author" : "xcode",
24 | "version" : 1
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "TopShelf.png",
9 | "idiom" : "tv",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "tv-marketing",
14 | "scale" : "1x"
15 | },
16 | {
17 | "filename" : "TopShelf-1.png",
18 | "idiom" : "tv-marketing",
19 | "scale" : "2x"
20 | }
21 | ],
22 | "info" : {
23 | "author" : "xcode",
24 | "version" : 1
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/TopShelf-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/TopShelf-1.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/TopShelf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/TopShelf.png
--------------------------------------------------------------------------------
/Tests/RVS_BlueThoth_Test_Harness_tvOS/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/BlueThothLogo.imageset/AppIcon~universal@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/BlueThothLogo.imageset/AppIcon~universal@1x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/BlueThothLogo.imageset/AppIcon~universal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/BlueThothLogo.imageset/AppIcon~universal@2x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/BlueThothLogo.imageset/AppIcon~universal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/BlueThothLogo.imageset/AppIcon~universal@3x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/BlueThothLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "AppIcon~universal@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "AppIcon~universal@2x.png",
10 | "scale" : "2x",
11 | "idiom" : "universal"
12 | },
13 | {
14 | "scale" : "3x",
15 | "idiom" : "universal",
16 | "filename" : "AppIcon~universal@3x.png"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/Gear.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "Gear~universal@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "Gear~universal@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "Gear~universal@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | },
23 | "properties" : {
24 | "template-rendering-intent" : "template"
25 | }
26 | }
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/Gear.imageset/Gear~universal@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/Gear.imageset/Gear~universal@1x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/Gear.imageset/Gear~universal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/Gear.imageset/Gear~universal@2x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/Gear.imageset/Gear~universal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/Gear.imageset/Gear~universal@3x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/NoBT.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "NoBT~universal@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "NoBT~universal@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "NoBT~universal@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/NoBT.imageset/NoBT~universal@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/NoBT.imageset/NoBT~universal@1x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/NoBT.imageset/NoBT~universal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/NoBT.imageset/NoBT~universal@2x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/NoBT.imageset/NoBT~universal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/NoBT.imageset/NoBT~universal@3x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/background-gradient.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "background-gradient~universal@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "background-gradient~universal@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "background-gradient~universal@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/background-gradient.imageset/background-gradient~universal@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/background-gradient.imageset/background-gradient~universal@1x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/background-gradient.imageset/background-gradient~universal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/background-gradient.imageset/background-gradient~universal@2x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Assets.xcassets/background-gradient.imageset/background-gradient~universal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/Tests/Shared/Resources/Assets.xcassets/background-gradient.imageset/background-gradient~universal@3x.png
--------------------------------------------------------------------------------
/Tests/Shared/Resources/Base.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /*
2 | © Copyright 2020-2022, The Great Rift Valley Software Company
3 |
4 | LICENSE:
5 |
6 | MIT License
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
9 | files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
10 | modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 | The Great Rift Valley Software Company: https://riftvalleysoftware.com
21 | */
22 |
23 | /* [Details here](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW20) */
24 | "NSBluetoothAlwaysUsageDescription" = "The App Needs to Discover and Connect to Bluetooth Devices.";
25 | "NSBluetoothPeripheralUsageDescription" = "The App Needs to Discover and Connect to Bluetooth Devices.";
26 | "NSHumanReadableCopyright" = "©2020 The Great Rift Valley Software Company";
27 | "InfoScreenCopyrightSiteURL" = "https://riftvalleysoftware.com/";
28 | "InfoScreenHelpSiteURL" = "https://riftvalleysoftware.com/";
29 |
--------------------------------------------------------------------------------
/docs/framework-internal/badge.svg:
--------------------------------------------------------------------------------
1 |
29 |
--------------------------------------------------------------------------------
/docs/framework-internal/css/highlight.css:
--------------------------------------------------------------------------------
1 | /*! Jazzy - https://github.com/realm/jazzy
2 | * Copyright Realm Inc.
3 | * SPDX-License-Identifier: MIT
4 | */
5 | /* Credit to https://gist.github.com/wataru420/2048287 */
6 | .highlight .c {
7 | color: #999988;
8 | font-style: italic; }
9 |
10 | .highlight .err {
11 | color: #a61717;
12 | background-color: #e3d2d2; }
13 |
14 | .highlight .k {
15 | color: #000000;
16 | font-weight: bold; }
17 |
18 | .highlight .o {
19 | color: #000000;
20 | font-weight: bold; }
21 |
22 | .highlight .cm {
23 | color: #999988;
24 | font-style: italic; }
25 |
26 | .highlight .cp {
27 | color: #999999;
28 | font-weight: bold; }
29 |
30 | .highlight .c1 {
31 | color: #999988;
32 | font-style: italic; }
33 |
34 | .highlight .cs {
35 | color: #999999;
36 | font-weight: bold;
37 | font-style: italic; }
38 |
39 | .highlight .gd {
40 | color: #000000;
41 | background-color: #ffdddd; }
42 |
43 | .highlight .gd .x {
44 | color: #000000;
45 | background-color: #ffaaaa; }
46 |
47 | .highlight .ge {
48 | color: #000000;
49 | font-style: italic; }
50 |
51 | .highlight .gr {
52 | color: #aa0000; }
53 |
54 | .highlight .gh {
55 | color: #999999; }
56 |
57 | .highlight .gi {
58 | color: #000000;
59 | background-color: #ddffdd; }
60 |
61 | .highlight .gi .x {
62 | color: #000000;
63 | background-color: #aaffaa; }
64 |
65 | .highlight .go {
66 | color: #888888; }
67 |
68 | .highlight .gp {
69 | color: #555555; }
70 |
71 | .highlight .gs {
72 | font-weight: bold; }
73 |
74 | .highlight .gu {
75 | color: #aaaaaa; }
76 |
77 | .highlight .gt {
78 | color: #aa0000; }
79 |
80 | .highlight .kc {
81 | color: #000000;
82 | font-weight: bold; }
83 |
84 | .highlight .kd {
85 | color: #000000;
86 | font-weight: bold; }
87 |
88 | .highlight .kp {
89 | color: #000000;
90 | font-weight: bold; }
91 |
92 | .highlight .kr {
93 | color: #000000;
94 | font-weight: bold; }
95 |
96 | .highlight .kt {
97 | color: #445588; }
98 |
99 | .highlight .m {
100 | color: #009999; }
101 |
102 | .highlight .s {
103 | color: #d14; }
104 |
105 | .highlight .na {
106 | color: #008080; }
107 |
108 | .highlight .nb {
109 | color: #0086B3; }
110 |
111 | .highlight .nc {
112 | color: #445588;
113 | font-weight: bold; }
114 |
115 | .highlight .no {
116 | color: #008080; }
117 |
118 | .highlight .ni {
119 | color: #800080; }
120 |
121 | .highlight .ne {
122 | color: #990000;
123 | font-weight: bold; }
124 |
125 | .highlight .nf {
126 | color: #990000; }
127 |
128 | .highlight .nn {
129 | color: #555555; }
130 |
131 | .highlight .nt {
132 | color: #000080; }
133 |
134 | .highlight .nv {
135 | color: #008080; }
136 |
137 | .highlight .ow {
138 | color: #000000;
139 | font-weight: bold; }
140 |
141 | .highlight .w {
142 | color: #bbbbbb; }
143 |
144 | .highlight .mf {
145 | color: #009999; }
146 |
147 | .highlight .mh {
148 | color: #009999; }
149 |
150 | .highlight .mi {
151 | color: #009999; }
152 |
153 | .highlight .mo {
154 | color: #009999; }
155 |
156 | .highlight .sb {
157 | color: #d14; }
158 |
159 | .highlight .sc {
160 | color: #d14; }
161 |
162 | .highlight .sd {
163 | color: #d14; }
164 |
165 | .highlight .s2 {
166 | color: #d14; }
167 |
168 | .highlight .se {
169 | color: #d14; }
170 |
171 | .highlight .sh {
172 | color: #d14; }
173 |
174 | .highlight .si {
175 | color: #d14; }
176 |
177 | .highlight .sx {
178 | color: #d14; }
179 |
180 | .highlight .sr {
181 | color: #009926; }
182 |
183 | .highlight .s1 {
184 | color: #d14; }
185 |
186 | .highlight .ss {
187 | color: #990073; }
188 |
189 | .highlight .bp {
190 | color: #999999; }
191 |
192 | .highlight .vc {
193 | color: #008080; }
194 |
195 | .highlight .vg {
196 | color: #008080; }
197 |
198 | .highlight .vi {
199 | color: #008080; }
200 |
201 | .highlight .il {
202 | color: #009999; }
203 |
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleIdentifier
6 | com.jazzy.
7 | CFBundleName
8 |
9 | DocSetPlatformFamily
10 |
11 | isDashDocset
12 |
13 | dashIndexFilePath
14 | index.html
15 | isJavaScriptEnabled
16 |
17 | DashDocSetFamily
18 | dashtoc
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/css/highlight.css:
--------------------------------------------------------------------------------
1 | /*! Jazzy - https://github.com/realm/jazzy
2 | * Copyright Realm Inc.
3 | * SPDX-License-Identifier: MIT
4 | */
5 | /* Credit to https://gist.github.com/wataru420/2048287 */
6 | .highlight .c {
7 | color: #999988;
8 | font-style: italic; }
9 |
10 | .highlight .err {
11 | color: #a61717;
12 | background-color: #e3d2d2; }
13 |
14 | .highlight .k {
15 | color: #000000;
16 | font-weight: bold; }
17 |
18 | .highlight .o {
19 | color: #000000;
20 | font-weight: bold; }
21 |
22 | .highlight .cm {
23 | color: #999988;
24 | font-style: italic; }
25 |
26 | .highlight .cp {
27 | color: #999999;
28 | font-weight: bold; }
29 |
30 | .highlight .c1 {
31 | color: #999988;
32 | font-style: italic; }
33 |
34 | .highlight .cs {
35 | color: #999999;
36 | font-weight: bold;
37 | font-style: italic; }
38 |
39 | .highlight .gd {
40 | color: #000000;
41 | background-color: #ffdddd; }
42 |
43 | .highlight .gd .x {
44 | color: #000000;
45 | background-color: #ffaaaa; }
46 |
47 | .highlight .ge {
48 | color: #000000;
49 | font-style: italic; }
50 |
51 | .highlight .gr {
52 | color: #aa0000; }
53 |
54 | .highlight .gh {
55 | color: #999999; }
56 |
57 | .highlight .gi {
58 | color: #000000;
59 | background-color: #ddffdd; }
60 |
61 | .highlight .gi .x {
62 | color: #000000;
63 | background-color: #aaffaa; }
64 |
65 | .highlight .go {
66 | color: #888888; }
67 |
68 | .highlight .gp {
69 | color: #555555; }
70 |
71 | .highlight .gs {
72 | font-weight: bold; }
73 |
74 | .highlight .gu {
75 | color: #aaaaaa; }
76 |
77 | .highlight .gt {
78 | color: #aa0000; }
79 |
80 | .highlight .kc {
81 | color: #000000;
82 | font-weight: bold; }
83 |
84 | .highlight .kd {
85 | color: #000000;
86 | font-weight: bold; }
87 |
88 | .highlight .kp {
89 | color: #000000;
90 | font-weight: bold; }
91 |
92 | .highlight .kr {
93 | color: #000000;
94 | font-weight: bold; }
95 |
96 | .highlight .kt {
97 | color: #445588; }
98 |
99 | .highlight .m {
100 | color: #009999; }
101 |
102 | .highlight .s {
103 | color: #d14; }
104 |
105 | .highlight .na {
106 | color: #008080; }
107 |
108 | .highlight .nb {
109 | color: #0086B3; }
110 |
111 | .highlight .nc {
112 | color: #445588;
113 | font-weight: bold; }
114 |
115 | .highlight .no {
116 | color: #008080; }
117 |
118 | .highlight .ni {
119 | color: #800080; }
120 |
121 | .highlight .ne {
122 | color: #990000;
123 | font-weight: bold; }
124 |
125 | .highlight .nf {
126 | color: #990000; }
127 |
128 | .highlight .nn {
129 | color: #555555; }
130 |
131 | .highlight .nt {
132 | color: #000080; }
133 |
134 | .highlight .nv {
135 | color: #008080; }
136 |
137 | .highlight .ow {
138 | color: #000000;
139 | font-weight: bold; }
140 |
141 | .highlight .w {
142 | color: #bbbbbb; }
143 |
144 | .highlight .mf {
145 | color: #009999; }
146 |
147 | .highlight .mh {
148 | color: #009999; }
149 |
150 | .highlight .mi {
151 | color: #009999; }
152 |
153 | .highlight .mo {
154 | color: #009999; }
155 |
156 | .highlight .sb {
157 | color: #d14; }
158 |
159 | .highlight .sc {
160 | color: #d14; }
161 |
162 | .highlight .sd {
163 | color: #d14; }
164 |
165 | .highlight .s2 {
166 | color: #d14; }
167 |
168 | .highlight .se {
169 | color: #d14; }
170 |
171 | .highlight .sh {
172 | color: #d14; }
173 |
174 | .highlight .si {
175 | color: #d14; }
176 |
177 | .highlight .sx {
178 | color: #d14; }
179 |
180 | .highlight .sr {
181 | color: #009926; }
182 |
183 | .highlight .s1 {
184 | color: #d14; }
185 |
186 | .highlight .ss {
187 | color: #990073; }
188 |
189 | .highlight .bp {
190 | color: #999999; }
191 |
192 | .highlight .vc {
193 | color: #008080; }
194 |
195 | .highlight .vg {
196 | color: #008080; }
197 |
198 | .highlight .vi {
199 | color: #008080; }
200 |
201 | .highlight .il {
202 | color: #009999; }
203 |
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/carat.png
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/dash.png
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/gh.png
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/img/spinner.gif
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/js/jazzy.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | window.jazzy = {'docset': false}
6 | if (typeof window.dash != 'undefined') {
7 | document.documentElement.className += ' dash'
8 | window.jazzy.docset = true
9 | }
10 | if (navigator.userAgent.match(/xcode/i)) {
11 | document.documentElement.className += ' xcode'
12 | window.jazzy.docset = true
13 | }
14 |
15 | function toggleItem($link, $content) {
16 | var animationDuration = 300;
17 | $link.toggleClass('token-open');
18 | $content.slideToggle(animationDuration);
19 | }
20 |
21 | function itemLinkToContent($link) {
22 | return $link.parent().parent().next();
23 | }
24 |
25 | // On doc load + hash-change, open any targetted item
26 | function openCurrentItemIfClosed() {
27 | if (window.jazzy.docset) {
28 | return;
29 | }
30 | var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token');
31 | $content = itemLinkToContent($link);
32 | if ($content.is(':hidden')) {
33 | toggleItem($link, $content);
34 | }
35 | }
36 |
37 | $(openCurrentItemIfClosed);
38 | $(window).on('hashchange', openCurrentItemIfClosed);
39 |
40 | // On item link ('token') click, toggle its discussion
41 | $('.token').on('click', function(event) {
42 | if (window.jazzy.docset) {
43 | return;
44 | }
45 | var $link = $(this);
46 | toggleItem($link, itemLinkToContent($link));
47 |
48 | // Keeps the document from jumping to the hash.
49 | var href = $link.attr('href');
50 | if (history.pushState) {
51 | history.pushState({}, '', href);
52 | } else {
53 | location.hash = href;
54 | }
55 | event.preventDefault();
56 | });
57 |
58 | // Clicks on links to the current, closed, item need to open the item
59 | $("a:not('.token')").on('click', function() {
60 | if (location == this.href) {
61 | openCurrentItemIfClosed();
62 | }
63 | });
64 |
65 | // KaTeX rendering
66 | if ("katex" in window) {
67 | $($('.math').each( (_, element) => {
68 | katex.render(element.textContent, element, {
69 | displayMode: $(element).hasClass('m-block'),
70 | throwOnError: false,
71 | trust: true
72 | });
73 | }))
74 | }
75 |
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/Documents/js/jazzy.search.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | $(function(){
6 | var $typeahead = $('[data-typeahead]');
7 | var $form = $typeahead.parents('form');
8 | var searchURL = $form.attr('action');
9 |
10 | function displayTemplate(result) {
11 | return result.name;
12 | }
13 |
14 | function suggestionTemplate(result) {
15 | var t = '
';
16 | t += '' + result.name + '';
17 | if (result.parent_name) {
18 | t += '' + result.parent_name + '';
19 | }
20 | t += '
';
21 | return t;
22 | }
23 |
24 | $typeahead.one('focus', function() {
25 | $form.addClass('loading');
26 |
27 | $.getJSON(searchURL).then(function(searchData) {
28 | const searchIndex = lunr(function() {
29 | this.ref('url');
30 | this.field('name');
31 | this.field('abstract');
32 | for (const [url, doc] of Object.entries(searchData)) {
33 | this.add({url: url, name: doc.name, abstract: doc.abstract});
34 | }
35 | });
36 |
37 | $typeahead.typeahead(
38 | {
39 | highlight: true,
40 | minLength: 3,
41 | autoselect: true
42 | },
43 | {
44 | limit: 10,
45 | display: displayTemplate,
46 | templates: { suggestion: suggestionTemplate },
47 | source: function(query, sync) {
48 | const lcSearch = query.toLowerCase();
49 | const results = searchIndex.query(function(q) {
50 | q.term(lcSearch, { boost: 100 });
51 | q.term(lcSearch, {
52 | boost: 10,
53 | wildcard: lunr.Query.wildcard.TRAILING
54 | });
55 | }).map(function(result) {
56 | var doc = searchData[result.ref];
57 | doc.url = result.ref;
58 | return doc;
59 | });
60 | sync(results);
61 | }
62 | }
63 | );
64 | $form.removeClass('loading');
65 | $typeahead.trigger('focus');
66 | });
67 | });
68 |
69 | var baseURL = searchURL.slice(0, -"search.json".length);
70 |
71 | $typeahead.on('typeahead:select', function(e, result) {
72 | window.location = baseURL + result.url;
73 | });
74 | });
75 |
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/docsets/.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/docs/framework-internal/docsets/.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/docsets/.tgz
--------------------------------------------------------------------------------
/docs/framework-internal/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/icon.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/AddFramework.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/AddFramework.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/CheckoutsDir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/CheckoutsDir.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/InFrameworksDir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/InFrameworksDir.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/IncludeProjectFile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/IncludeProjectFile.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/SelectTarget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/SelectTarget.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/carat.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/dash.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/gh.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/icon.png
--------------------------------------------------------------------------------
/docs/framework-internal/img/spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-internal/img/spinner.gif
--------------------------------------------------------------------------------
/docs/framework-internal/js/jazzy.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | window.jazzy = {'docset': false}
6 | if (typeof window.dash != 'undefined') {
7 | document.documentElement.className += ' dash'
8 | window.jazzy.docset = true
9 | }
10 | if (navigator.userAgent.match(/xcode/i)) {
11 | document.documentElement.className += ' xcode'
12 | window.jazzy.docset = true
13 | }
14 |
15 | function toggleItem($link, $content) {
16 | var animationDuration = 300;
17 | $link.toggleClass('token-open');
18 | $content.slideToggle(animationDuration);
19 | }
20 |
21 | function itemLinkToContent($link) {
22 | return $link.parent().parent().next();
23 | }
24 |
25 | // On doc load + hash-change, open any targetted item
26 | function openCurrentItemIfClosed() {
27 | if (window.jazzy.docset) {
28 | return;
29 | }
30 | var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token');
31 | $content = itemLinkToContent($link);
32 | if ($content.is(':hidden')) {
33 | toggleItem($link, $content);
34 | }
35 | }
36 |
37 | $(openCurrentItemIfClosed);
38 | $(window).on('hashchange', openCurrentItemIfClosed);
39 |
40 | // On item link ('token') click, toggle its discussion
41 | $('.token').on('click', function(event) {
42 | if (window.jazzy.docset) {
43 | return;
44 | }
45 | var $link = $(this);
46 | toggleItem($link, itemLinkToContent($link));
47 |
48 | // Keeps the document from jumping to the hash.
49 | var href = $link.attr('href');
50 | if (history.pushState) {
51 | history.pushState({}, '', href);
52 | } else {
53 | location.hash = href;
54 | }
55 | event.preventDefault();
56 | });
57 |
58 | // Clicks on links to the current, closed, item need to open the item
59 | $("a:not('.token')").on('click', function() {
60 | if (location == this.href) {
61 | openCurrentItemIfClosed();
62 | }
63 | });
64 |
65 | // KaTeX rendering
66 | if ("katex" in window) {
67 | $($('.math').each( (_, element) => {
68 | katex.render(element.textContent, element, {
69 | displayMode: $(element).hasClass('m-block'),
70 | throwOnError: false,
71 | trust: true
72 | });
73 | }))
74 | }
75 |
--------------------------------------------------------------------------------
/docs/framework-internal/js/jazzy.search.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | $(function(){
6 | var $typeahead = $('[data-typeahead]');
7 | var $form = $typeahead.parents('form');
8 | var searchURL = $form.attr('action');
9 |
10 | function displayTemplate(result) {
11 | return result.name;
12 | }
13 |
14 | function suggestionTemplate(result) {
15 | var t = '';
16 | t += '' + result.name + '';
17 | if (result.parent_name) {
18 | t += '' + result.parent_name + '';
19 | }
20 | t += '
';
21 | return t;
22 | }
23 |
24 | $typeahead.one('focus', function() {
25 | $form.addClass('loading');
26 |
27 | $.getJSON(searchURL).then(function(searchData) {
28 | const searchIndex = lunr(function() {
29 | this.ref('url');
30 | this.field('name');
31 | this.field('abstract');
32 | for (const [url, doc] of Object.entries(searchData)) {
33 | this.add({url: url, name: doc.name, abstract: doc.abstract});
34 | }
35 | });
36 |
37 | $typeahead.typeahead(
38 | {
39 | highlight: true,
40 | minLength: 3,
41 | autoselect: true
42 | },
43 | {
44 | limit: 10,
45 | display: displayTemplate,
46 | templates: { suggestion: suggestionTemplate },
47 | source: function(query, sync) {
48 | const lcSearch = query.toLowerCase();
49 | const results = searchIndex.query(function(q) {
50 | q.term(lcSearch, { boost: 100 });
51 | q.term(lcSearch, {
52 | boost: 10,
53 | wildcard: lunr.Query.wildcard.TRAILING
54 | });
55 | }).map(function(result) {
56 | var doc = searchData[result.ref];
57 | doc.url = result.ref;
58 | return doc;
59 | });
60 | sync(results);
61 | }
62 | }
63 | );
64 | $form.removeClass('loading');
65 | $typeahead.trigger('focus');
66 | });
67 | });
68 |
69 | var baseURL = searchURL.slice(0, -"search.json".length);
70 |
71 | $typeahead.on('typeahead:select', function(e, result) {
72 | window.location = baseURL + result.url;
73 | });
74 | });
75 |
--------------------------------------------------------------------------------
/docs/framework-internal/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 |
4 | ],
5 | "source_directory": "/Users/chrismarshall/Development/RiftValley/RVS_BlueThoth"
6 | }
--------------------------------------------------------------------------------
/docs/framework-public/badge.svg:
--------------------------------------------------------------------------------
1 |
29 |
--------------------------------------------------------------------------------
/docs/framework-public/css/highlight.css:
--------------------------------------------------------------------------------
1 | /*! Jazzy - https://github.com/realm/jazzy
2 | * Copyright Realm Inc.
3 | * SPDX-License-Identifier: MIT
4 | */
5 | /* Credit to https://gist.github.com/wataru420/2048287 */
6 | .highlight .c {
7 | color: #999988;
8 | font-style: italic; }
9 |
10 | .highlight .err {
11 | color: #a61717;
12 | background-color: #e3d2d2; }
13 |
14 | .highlight .k {
15 | color: #000000;
16 | font-weight: bold; }
17 |
18 | .highlight .o {
19 | color: #000000;
20 | font-weight: bold; }
21 |
22 | .highlight .cm {
23 | color: #999988;
24 | font-style: italic; }
25 |
26 | .highlight .cp {
27 | color: #999999;
28 | font-weight: bold; }
29 |
30 | .highlight .c1 {
31 | color: #999988;
32 | font-style: italic; }
33 |
34 | .highlight .cs {
35 | color: #999999;
36 | font-weight: bold;
37 | font-style: italic; }
38 |
39 | .highlight .gd {
40 | color: #000000;
41 | background-color: #ffdddd; }
42 |
43 | .highlight .gd .x {
44 | color: #000000;
45 | background-color: #ffaaaa; }
46 |
47 | .highlight .ge {
48 | color: #000000;
49 | font-style: italic; }
50 |
51 | .highlight .gr {
52 | color: #aa0000; }
53 |
54 | .highlight .gh {
55 | color: #999999; }
56 |
57 | .highlight .gi {
58 | color: #000000;
59 | background-color: #ddffdd; }
60 |
61 | .highlight .gi .x {
62 | color: #000000;
63 | background-color: #aaffaa; }
64 |
65 | .highlight .go {
66 | color: #888888; }
67 |
68 | .highlight .gp {
69 | color: #555555; }
70 |
71 | .highlight .gs {
72 | font-weight: bold; }
73 |
74 | .highlight .gu {
75 | color: #aaaaaa; }
76 |
77 | .highlight .gt {
78 | color: #aa0000; }
79 |
80 | .highlight .kc {
81 | color: #000000;
82 | font-weight: bold; }
83 |
84 | .highlight .kd {
85 | color: #000000;
86 | font-weight: bold; }
87 |
88 | .highlight .kp {
89 | color: #000000;
90 | font-weight: bold; }
91 |
92 | .highlight .kr {
93 | color: #000000;
94 | font-weight: bold; }
95 |
96 | .highlight .kt {
97 | color: #445588; }
98 |
99 | .highlight .m {
100 | color: #009999; }
101 |
102 | .highlight .s {
103 | color: #d14; }
104 |
105 | .highlight .na {
106 | color: #008080; }
107 |
108 | .highlight .nb {
109 | color: #0086B3; }
110 |
111 | .highlight .nc {
112 | color: #445588;
113 | font-weight: bold; }
114 |
115 | .highlight .no {
116 | color: #008080; }
117 |
118 | .highlight .ni {
119 | color: #800080; }
120 |
121 | .highlight .ne {
122 | color: #990000;
123 | font-weight: bold; }
124 |
125 | .highlight .nf {
126 | color: #990000; }
127 |
128 | .highlight .nn {
129 | color: #555555; }
130 |
131 | .highlight .nt {
132 | color: #000080; }
133 |
134 | .highlight .nv {
135 | color: #008080; }
136 |
137 | .highlight .ow {
138 | color: #000000;
139 | font-weight: bold; }
140 |
141 | .highlight .w {
142 | color: #bbbbbb; }
143 |
144 | .highlight .mf {
145 | color: #009999; }
146 |
147 | .highlight .mh {
148 | color: #009999; }
149 |
150 | .highlight .mi {
151 | color: #009999; }
152 |
153 | .highlight .mo {
154 | color: #009999; }
155 |
156 | .highlight .sb {
157 | color: #d14; }
158 |
159 | .highlight .sc {
160 | color: #d14; }
161 |
162 | .highlight .sd {
163 | color: #d14; }
164 |
165 | .highlight .s2 {
166 | color: #d14; }
167 |
168 | .highlight .se {
169 | color: #d14; }
170 |
171 | .highlight .sh {
172 | color: #d14; }
173 |
174 | .highlight .si {
175 | color: #d14; }
176 |
177 | .highlight .sx {
178 | color: #d14; }
179 |
180 | .highlight .sr {
181 | color: #009926; }
182 |
183 | .highlight .s1 {
184 | color: #d14; }
185 |
186 | .highlight .ss {
187 | color: #990073; }
188 |
189 | .highlight .bp {
190 | color: #999999; }
191 |
192 | .highlight .vc {
193 | color: #008080; }
194 |
195 | .highlight .vg {
196 | color: #008080; }
197 |
198 | .highlight .vi {
199 | color: #008080; }
200 |
201 | .highlight .il {
202 | color: #009999; }
203 |
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleIdentifier
6 | com.jazzy.
7 | CFBundleName
8 |
9 | DocSetPlatformFamily
10 |
11 | isDashDocset
12 |
13 | dashIndexFilePath
14 | index.html
15 | isJavaScriptEnabled
16 |
17 | DashDocSetFamily
18 | dashtoc
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/Documents/css/highlight.css:
--------------------------------------------------------------------------------
1 | /*! Jazzy - https://github.com/realm/jazzy
2 | * Copyright Realm Inc.
3 | * SPDX-License-Identifier: MIT
4 | */
5 | /* Credit to https://gist.github.com/wataru420/2048287 */
6 | .highlight .c {
7 | color: #999988;
8 | font-style: italic; }
9 |
10 | .highlight .err {
11 | color: #a61717;
12 | background-color: #e3d2d2; }
13 |
14 | .highlight .k {
15 | color: #000000;
16 | font-weight: bold; }
17 |
18 | .highlight .o {
19 | color: #000000;
20 | font-weight: bold; }
21 |
22 | .highlight .cm {
23 | color: #999988;
24 | font-style: italic; }
25 |
26 | .highlight .cp {
27 | color: #999999;
28 | font-weight: bold; }
29 |
30 | .highlight .c1 {
31 | color: #999988;
32 | font-style: italic; }
33 |
34 | .highlight .cs {
35 | color: #999999;
36 | font-weight: bold;
37 | font-style: italic; }
38 |
39 | .highlight .gd {
40 | color: #000000;
41 | background-color: #ffdddd; }
42 |
43 | .highlight .gd .x {
44 | color: #000000;
45 | background-color: #ffaaaa; }
46 |
47 | .highlight .ge {
48 | color: #000000;
49 | font-style: italic; }
50 |
51 | .highlight .gr {
52 | color: #aa0000; }
53 |
54 | .highlight .gh {
55 | color: #999999; }
56 |
57 | .highlight .gi {
58 | color: #000000;
59 | background-color: #ddffdd; }
60 |
61 | .highlight .gi .x {
62 | color: #000000;
63 | background-color: #aaffaa; }
64 |
65 | .highlight .go {
66 | color: #888888; }
67 |
68 | .highlight .gp {
69 | color: #555555; }
70 |
71 | .highlight .gs {
72 | font-weight: bold; }
73 |
74 | .highlight .gu {
75 | color: #aaaaaa; }
76 |
77 | .highlight .gt {
78 | color: #aa0000; }
79 |
80 | .highlight .kc {
81 | color: #000000;
82 | font-weight: bold; }
83 |
84 | .highlight .kd {
85 | color: #000000;
86 | font-weight: bold; }
87 |
88 | .highlight .kp {
89 | color: #000000;
90 | font-weight: bold; }
91 |
92 | .highlight .kr {
93 | color: #000000;
94 | font-weight: bold; }
95 |
96 | .highlight .kt {
97 | color: #445588; }
98 |
99 | .highlight .m {
100 | color: #009999; }
101 |
102 | .highlight .s {
103 | color: #d14; }
104 |
105 | .highlight .na {
106 | color: #008080; }
107 |
108 | .highlight .nb {
109 | color: #0086B3; }
110 |
111 | .highlight .nc {
112 | color: #445588;
113 | font-weight: bold; }
114 |
115 | .highlight .no {
116 | color: #008080; }
117 |
118 | .highlight .ni {
119 | color: #800080; }
120 |
121 | .highlight .ne {
122 | color: #990000;
123 | font-weight: bold; }
124 |
125 | .highlight .nf {
126 | color: #990000; }
127 |
128 | .highlight .nn {
129 | color: #555555; }
130 |
131 | .highlight .nt {
132 | color: #000080; }
133 |
134 | .highlight .nv {
135 | color: #008080; }
136 |
137 | .highlight .ow {
138 | color: #000000;
139 | font-weight: bold; }
140 |
141 | .highlight .w {
142 | color: #bbbbbb; }
143 |
144 | .highlight .mf {
145 | color: #009999; }
146 |
147 | .highlight .mh {
148 | color: #009999; }
149 |
150 | .highlight .mi {
151 | color: #009999; }
152 |
153 | .highlight .mo {
154 | color: #009999; }
155 |
156 | .highlight .sb {
157 | color: #d14; }
158 |
159 | .highlight .sc {
160 | color: #d14; }
161 |
162 | .highlight .sd {
163 | color: #d14; }
164 |
165 | .highlight .s2 {
166 | color: #d14; }
167 |
168 | .highlight .se {
169 | color: #d14; }
170 |
171 | .highlight .sh {
172 | color: #d14; }
173 |
174 | .highlight .si {
175 | color: #d14; }
176 |
177 | .highlight .sx {
178 | color: #d14; }
179 |
180 | .highlight .sr {
181 | color: #009926; }
182 |
183 | .highlight .s1 {
184 | color: #d14; }
185 |
186 | .highlight .ss {
187 | color: #990073; }
188 |
189 | .highlight .bp {
190 | color: #999999; }
191 |
192 | .highlight .vc {
193 | color: #008080; }
194 |
195 | .highlight .vg {
196 | color: #008080; }
197 |
198 | .highlight .vi {
199 | color: #008080; }
200 |
201 | .highlight .il {
202 | color: #009999; }
203 |
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/carat.png
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/dash.png
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/gh.png
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/docsets/.docset/Contents/Resources/Documents/img/spinner.gif
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/Documents/js/jazzy.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | window.jazzy = {'docset': false}
6 | if (typeof window.dash != 'undefined') {
7 | document.documentElement.className += ' dash'
8 | window.jazzy.docset = true
9 | }
10 | if (navigator.userAgent.match(/xcode/i)) {
11 | document.documentElement.className += ' xcode'
12 | window.jazzy.docset = true
13 | }
14 |
15 | function toggleItem($link, $content) {
16 | var animationDuration = 300;
17 | $link.toggleClass('token-open');
18 | $content.slideToggle(animationDuration);
19 | }
20 |
21 | function itemLinkToContent($link) {
22 | return $link.parent().parent().next();
23 | }
24 |
25 | // On doc load + hash-change, open any targetted item
26 | function openCurrentItemIfClosed() {
27 | if (window.jazzy.docset) {
28 | return;
29 | }
30 | var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token');
31 | $content = itemLinkToContent($link);
32 | if ($content.is(':hidden')) {
33 | toggleItem($link, $content);
34 | }
35 | }
36 |
37 | $(openCurrentItemIfClosed);
38 | $(window).on('hashchange', openCurrentItemIfClosed);
39 |
40 | // On item link ('token') click, toggle its discussion
41 | $('.token').on('click', function(event) {
42 | if (window.jazzy.docset) {
43 | return;
44 | }
45 | var $link = $(this);
46 | toggleItem($link, itemLinkToContent($link));
47 |
48 | // Keeps the document from jumping to the hash.
49 | var href = $link.attr('href');
50 | if (history.pushState) {
51 | history.pushState({}, '', href);
52 | } else {
53 | location.hash = href;
54 | }
55 | event.preventDefault();
56 | });
57 |
58 | // Clicks on links to the current, closed, item need to open the item
59 | $("a:not('.token')").on('click', function() {
60 | if (location == this.href) {
61 | openCurrentItemIfClosed();
62 | }
63 | });
64 |
65 | // KaTeX rendering
66 | if ("katex" in window) {
67 | $($('.math').each( (_, element) => {
68 | katex.render(element.textContent, element, {
69 | displayMode: $(element).hasClass('m-block'),
70 | throwOnError: false,
71 | trust: true
72 | });
73 | }))
74 | }
75 |
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/Documents/js/jazzy.search.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | $(function(){
6 | var $typeahead = $('[data-typeahead]');
7 | var $form = $typeahead.parents('form');
8 | var searchURL = $form.attr('action');
9 |
10 | function displayTemplate(result) {
11 | return result.name;
12 | }
13 |
14 | function suggestionTemplate(result) {
15 | var t = '';
16 | t += '' + result.name + '';
17 | if (result.parent_name) {
18 | t += '' + result.parent_name + '';
19 | }
20 | t += '
';
21 | return t;
22 | }
23 |
24 | $typeahead.one('focus', function() {
25 | $form.addClass('loading');
26 |
27 | $.getJSON(searchURL).then(function(searchData) {
28 | const searchIndex = lunr(function() {
29 | this.ref('url');
30 | this.field('name');
31 | this.field('abstract');
32 | for (const [url, doc] of Object.entries(searchData)) {
33 | this.add({url: url, name: doc.name, abstract: doc.abstract});
34 | }
35 | });
36 |
37 | $typeahead.typeahead(
38 | {
39 | highlight: true,
40 | minLength: 3,
41 | autoselect: true
42 | },
43 | {
44 | limit: 10,
45 | display: displayTemplate,
46 | templates: { suggestion: suggestionTemplate },
47 | source: function(query, sync) {
48 | const lcSearch = query.toLowerCase();
49 | const results = searchIndex.query(function(q) {
50 | q.term(lcSearch, { boost: 100 });
51 | q.term(lcSearch, {
52 | boost: 10,
53 | wildcard: lunr.Query.wildcard.TRAILING
54 | });
55 | }).map(function(result) {
56 | var doc = searchData[result.ref];
57 | doc.url = result.ref;
58 | return doc;
59 | });
60 | sync(results);
61 | }
62 | }
63 | );
64 | $form.removeClass('loading');
65 | $typeahead.trigger('focus');
66 | });
67 | });
68 |
69 | var baseURL = searchURL.slice(0, -"search.json".length);
70 |
71 | $typeahead.on('typeahead:select', function(e, result) {
72 | window.location = baseURL + result.url;
73 | });
74 | });
75 |
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/docsets/.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/docs/framework-public/docsets/.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/docsets/.tgz
--------------------------------------------------------------------------------
/docs/framework-public/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/icon.png
--------------------------------------------------------------------------------
/docs/framework-public/img/AddFramework.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/AddFramework.png
--------------------------------------------------------------------------------
/docs/framework-public/img/CheckoutsDir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/CheckoutsDir.png
--------------------------------------------------------------------------------
/docs/framework-public/img/InFrameworksDir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/InFrameworksDir.png
--------------------------------------------------------------------------------
/docs/framework-public/img/IncludeProjectFile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/IncludeProjectFile.png
--------------------------------------------------------------------------------
/docs/framework-public/img/SelectTarget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/SelectTarget.png
--------------------------------------------------------------------------------
/docs/framework-public/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/carat.png
--------------------------------------------------------------------------------
/docs/framework-public/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/dash.png
--------------------------------------------------------------------------------
/docs/framework-public/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/gh.png
--------------------------------------------------------------------------------
/docs/framework-public/img/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/icon.png
--------------------------------------------------------------------------------
/docs/framework-public/img/spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/docs/framework-public/img/spinner.gif
--------------------------------------------------------------------------------
/docs/framework-public/js/jazzy.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | window.jazzy = {'docset': false}
6 | if (typeof window.dash != 'undefined') {
7 | document.documentElement.className += ' dash'
8 | window.jazzy.docset = true
9 | }
10 | if (navigator.userAgent.match(/xcode/i)) {
11 | document.documentElement.className += ' xcode'
12 | window.jazzy.docset = true
13 | }
14 |
15 | function toggleItem($link, $content) {
16 | var animationDuration = 300;
17 | $link.toggleClass('token-open');
18 | $content.slideToggle(animationDuration);
19 | }
20 |
21 | function itemLinkToContent($link) {
22 | return $link.parent().parent().next();
23 | }
24 |
25 | // On doc load + hash-change, open any targetted item
26 | function openCurrentItemIfClosed() {
27 | if (window.jazzy.docset) {
28 | return;
29 | }
30 | var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token');
31 | $content = itemLinkToContent($link);
32 | if ($content.is(':hidden')) {
33 | toggleItem($link, $content);
34 | }
35 | }
36 |
37 | $(openCurrentItemIfClosed);
38 | $(window).on('hashchange', openCurrentItemIfClosed);
39 |
40 | // On item link ('token') click, toggle its discussion
41 | $('.token').on('click', function(event) {
42 | if (window.jazzy.docset) {
43 | return;
44 | }
45 | var $link = $(this);
46 | toggleItem($link, itemLinkToContent($link));
47 |
48 | // Keeps the document from jumping to the hash.
49 | var href = $link.attr('href');
50 | if (history.pushState) {
51 | history.pushState({}, '', href);
52 | } else {
53 | location.hash = href;
54 | }
55 | event.preventDefault();
56 | });
57 |
58 | // Clicks on links to the current, closed, item need to open the item
59 | $("a:not('.token')").on('click', function() {
60 | if (location == this.href) {
61 | openCurrentItemIfClosed();
62 | }
63 | });
64 |
65 | // KaTeX rendering
66 | if ("katex" in window) {
67 | $($('.math').each( (_, element) => {
68 | katex.render(element.textContent, element, {
69 | displayMode: $(element).hasClass('m-block'),
70 | throwOnError: false,
71 | trust: true
72 | });
73 | }))
74 | }
75 |
--------------------------------------------------------------------------------
/docs/framework-public/js/jazzy.search.js:
--------------------------------------------------------------------------------
1 | // Jazzy - https://github.com/realm/jazzy
2 | // Copyright Realm Inc.
3 | // SPDX-License-Identifier: MIT
4 |
5 | $(function(){
6 | var $typeahead = $('[data-typeahead]');
7 | var $form = $typeahead.parents('form');
8 | var searchURL = $form.attr('action');
9 |
10 | function displayTemplate(result) {
11 | return result.name;
12 | }
13 |
14 | function suggestionTemplate(result) {
15 | var t = '';
16 | t += '' + result.name + '';
17 | if (result.parent_name) {
18 | t += '' + result.parent_name + '';
19 | }
20 | t += '
';
21 | return t;
22 | }
23 |
24 | $typeahead.one('focus', function() {
25 | $form.addClass('loading');
26 |
27 | $.getJSON(searchURL).then(function(searchData) {
28 | const searchIndex = lunr(function() {
29 | this.ref('url');
30 | this.field('name');
31 | this.field('abstract');
32 | for (const [url, doc] of Object.entries(searchData)) {
33 | this.add({url: url, name: doc.name, abstract: doc.abstract});
34 | }
35 | });
36 |
37 | $typeahead.typeahead(
38 | {
39 | highlight: true,
40 | minLength: 3,
41 | autoselect: true
42 | },
43 | {
44 | limit: 10,
45 | display: displayTemplate,
46 | templates: { suggestion: suggestionTemplate },
47 | source: function(query, sync) {
48 | const lcSearch = query.toLowerCase();
49 | const results = searchIndex.query(function(q) {
50 | q.term(lcSearch, { boost: 100 });
51 | q.term(lcSearch, {
52 | boost: 10,
53 | wildcard: lunr.Query.wildcard.TRAILING
54 | });
55 | }).map(function(result) {
56 | var doc = searchData[result.ref];
57 | doc.url = result.ref;
58 | return doc;
59 | });
60 | sync(results);
61 | }
62 | }
63 | );
64 | $form.removeClass('loading');
65 | $typeahead.trigger('focus');
66 | });
67 | });
68 |
69 | var baseURL = searchURL.slice(0, -"search.json".length);
70 |
71 | $typeahead.on('typeahead:select', function(e, result) {
72 | window.location = baseURL + result.url;
73 | });
74 | });
75 |
--------------------------------------------------------------------------------
/docs/framework-public/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 |
4 | ],
5 | "source_directory": "/Users/chrismarshall/Development/RiftValley/RVS_BlueThoth"
6 | }
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | RVS_BlueThoth Documentation
6 |
7 |
8 |
9 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/icon.png
--------------------------------------------------------------------------------
/jazzy.command:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | CWD="$(pwd)"
3 | MY_SCRIPT_PATH=`dirname "${BASH_SOURCE[0]}"`
4 | cd "${MY_SCRIPT_PATH}"
5 |
6 | rm -drf docs/framework-public/*
7 | rm -drf docs/framework-internal/*
8 |
9 | mkdir -p docs/framework-public/img
10 | mkdir -p docs/framework-internal/img
11 |
12 | echo "Creating Public API Docs for the iOS Framework\n"
13 |
14 | jazzy --readme ./Sources/RVS_BlueThoth/README-PUBLIC.md \
15 | --github_url https://github.com/RiftValleySoftware/RVS_BlueThoth \
16 | --title RVS_BlueThoth\ Doumentation \
17 | --min_acl public \
18 | --theme fullwidth \
19 | --exclude ./Sources/RVS_BlueThoth/Implementation/Peripherals/CGA_Bluetooth_Peripheral_Callbacks.swift,./Sources/RVS_BlueThoth/RVS_BlueThoth_Callbacks.swift \
20 | --output docs/framework-public \
21 | --build-tool-arguments -scheme,"RVS_BlueThoth"
22 | cp ./Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/* docs/framework-public/img
23 | cp ./icon.png docs/framework-public/icon.png
24 |
25 | echo "\nCreating Internal API Docs for the iOS Framework\n"
26 |
27 | jazzy --readme ./README.md \
28 | --github_url https://github.com/RiftValleySoftware/RVS_BlueThoth/ \
29 | --title RVS_BlueThoth\ Doumentation \
30 | --min_acl private \
31 | --theme fullwidth \
32 | --output docs/framework-internal \
33 | --build-tool-arguments -scheme,"RVS_BlueThoth"
34 | cp ./Sources/RVS_BlueThoth/RVS_BlueThoth.docc/Resources/* docs/framework-internal/img
35 | cp ./icon.png docs/framework-internal/icon.png
36 |
37 | cd "${CWD}"
38 |
--------------------------------------------------------------------------------
/spec/AppIcon.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/spec/AppIcon.pdf
--------------------------------------------------------------------------------
/spec/GATT_Specification_Supplement_v1.1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/spec/GATT_Specification_Supplement_v1.1.pdf
--------------------------------------------------------------------------------
/spec/SocialPreview.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RiftValleySoftware/RVS_BlueThoth/fd3ba2073293f89a56d6d759c9aa04b3b9d4abc5/spec/SocialPreview.pdf
--------------------------------------------------------------------------------