From 8aac1f9c239f1411b0a219e9a4cb67548e463703 Mon Sep 17 00:00:00 2001 From: Shinichiro Oba Date: Wed, 3 Oct 2018 01:08:24 +0100 Subject: [PATCH 1/6] Update BoostBLEKit, Xcode, and Swift --- BoostRemote.xcodeproj/project.pbxproj | 4 ++-- BoostRemote/AppDelegate.swift | 2 +- BoostRemote/ControllerViewController.swift | 2 +- BoostRemote/MoveHubManager.swift | 2 ++ BoostRemote/Reducer.swift | 2 ++ Cartfile.resolved | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/BoostRemote.xcodeproj/project.pbxproj b/BoostRemote.xcodeproj/project.pbxproj index fa22316..29e470f 100644 --- a/BoostRemote.xcodeproj/project.pbxproj +++ b/BoostRemote.xcodeproj/project.pbxproj @@ -387,6 +387,7 @@ SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -439,6 +440,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -458,7 +460,6 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.bricklife.ios.boost-remote"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -477,7 +478,6 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.bricklife.ios.boost-remote"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/BoostRemote/AppDelegate.swift b/BoostRemote/AppDelegate.swift index 4beaf09..3c30cf5 100644 --- a/BoostRemote/AppDelegate.swift +++ b/BoostRemote/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { MoveHubManager.shared.start() return true diff --git a/BoostRemote/ControllerViewController.swift b/BoostRemote/ControllerViewController.swift index 30ba8ad..a13c061 100644 --- a/BoostRemote/ControllerViewController.swift +++ b/BoostRemote/ControllerViewController.swift @@ -20,7 +20,7 @@ class ControllerViewController: UIViewController { let supportedPorts: [BoostBLEKit.Port] = [.A, .B, .C, .D] private var controllers: [Controller] { - return childViewControllers.compactMap { $0 as? Controller } + return children.compactMap { $0 as? Controller } } private let connectionState = MutableProperty(ConnectionState.disconnected) diff --git a/BoostRemote/MoveHubManager.swift b/BoostRemote/MoveHubManager.swift index 08fc78c..f1832eb 100644 --- a/BoostRemote/MoveHubManager.swift +++ b/BoostRemote/MoveHubManager.swift @@ -145,6 +145,8 @@ extension MoveHubManager: CBPeripheralDelegate { connectedHub?.connectedIOs[portId] = ioType case .disconnected(let portId): connectedHub?.connectedIOs[portId] = nil + default: + break } } } diff --git a/BoostRemote/Reducer.swift b/BoostRemote/Reducer.swift index efd71f1..87646c1 100644 --- a/BoostRemote/Reducer.swift +++ b/BoostRemote/Reducer.swift @@ -53,6 +53,8 @@ struct Reducer { state[portId] = ioType case .disconnected(let portId): state[portId] = nil + default: + break } return state diff --git a/Cartfile.resolved b/Cartfile.resolved index f89f3e5..6828482 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,4 +1,4 @@ github "ReSwift/ReSwift" "4.0.1" github "ReactiveCocoa/ReactiveSwift" "4.0.0" github "antitypical/Result" "4.0.0" -github "bricklife/BoostBLEKit" "2.0.1" +github "bricklife/BoostBLEKit" "2.1.0" From 0f9910695c4ba19be89dd5a3bc69e656a5c82007 Mon Sep 17 00:00:00 2001 From: Felix Mueller Date: Wed, 17 Oct 2018 17:26:14 +0200 Subject: [PATCH 2/6] Fix Japanese InfoPlist.strings key / Add German localization (#12) --- BoostRemote.xcodeproj/project.pbxproj | 21 ++++++++- .../Settings.bundle/de.lproj/Root.strings | 4 ++ BoostRemote/de.lproj/InfoPlist.strings | 1 + BoostRemote/de.lproj/Localizable.strings | 8 ++++ BoostRemote/de.lproj/Main.strings | 44 +++++++++++++++++++ BoostRemote/ja.lproj/InfoPlist.strings | 2 +- 6 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 BoostRemote/Settings.bundle/de.lproj/Root.strings create mode 100644 BoostRemote/de.lproj/InfoPlist.strings create mode 100644 BoostRemote/de.lproj/Localizable.strings create mode 100644 BoostRemote/de.lproj/Main.strings diff --git a/BoostRemote.xcodeproj/project.pbxproj b/BoostRemote.xcodeproj/project.pbxproj index 29e470f..66ed043 100644 --- a/BoostRemote.xcodeproj/project.pbxproj +++ b/BoostRemote.xcodeproj/project.pbxproj @@ -35,6 +35,7 @@ CBF9D2B91F3CACA800B97E11 /* MoveHubManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF9D2B81F3CACA800B97E11 /* MoveHubManager.swift */; }; CBF9D2D61F3CB52800B97E11 /* MoveHubService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF9D2D51F3CB52800B97E11 /* MoveHubService.swift */; }; CBF9D2F61F3CDAC700B97E11 /* Data+HexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF9D2F51F3CDAC700B97E11 /* Data+HexString.swift */; }; + DC1E38FB2111EE4900DA9522 /* Main.strings in Resources */ = {isa = PBXBuildFile; fileRef = DC1E38F92111EE4900DA9522 /* Main.strings */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -71,7 +72,7 @@ CB70D812201A82D500EAB1D6 /* FeedbackGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackGenerator.swift; sourceTree = ""; }; CB7390C8201AB89900EAE3A7 /* UIImage+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Extension.swift"; sourceTree = ""; }; CB84A381201BA3D300C02CD8 /* JoystickView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoystickView.swift; sourceTree = ""; }; - CB8C7EB3201FEF6500274A09 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; + CB8C7EB3201FEF6500274A09 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; CBA46E771F882F0C0017E5C2 /* ReactiveSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactiveSwift.framework; path = Carthage/Build/iOS/ReactiveSwift.framework; sourceTree = ""; }; CBA46E791F882F0F0017E5C2 /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/iOS/Result.framework; sourceTree = ""; }; CBA46E7B1F882F800017E5C2 /* ReSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReSwift.framework; path = Carthage/Build/iOS/ReSwift.framework; sourceTree = ""; }; @@ -82,6 +83,10 @@ CBF9D2B81F3CACA800B97E11 /* MoveHubManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoveHubManager.swift; sourceTree = ""; }; CBF9D2D51F3CB52800B97E11 /* MoveHubService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoveHubService.swift; sourceTree = ""; }; CBF9D2F51F3CDAC700B97E11 /* Data+HexString.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Data+HexString.swift"; sourceTree = ""; }; + DC1E38F82111EE2D00DA9522 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + DC1E38FA2111EE4900DA9522 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; }; + DC1E38FC2111EE8100DA9522 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; }; + DCEE1D2B2111EDFC00FFCFAF /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -121,6 +126,7 @@ children = ( CB3BE8B01F2FF2F4000561F7 /* AppDelegate.swift */, CB3BE8B41F2FF2F4000561F7 /* Main.storyboard */, + DC1E38F92111EE4900DA9522 /* Main.strings */, CB8C7EB3201FEF6500274A09 /* SettingsViewController.swift */, CB3BE8B21F2FF2F4000561F7 /* ControllerViewController.swift */, CBC72DF9201AC35C00ABE096 /* Controller.swift */, @@ -215,6 +221,7 @@ en, Base, ja, + de, ); mainGroup = CB3BE8A41F2FF2F4000561F7; productRefGroup = CB3BE8AE1F2FF2F4000561F7 /* Products */; @@ -235,6 +242,7 @@ CB5891F9200D2DF300E15F92 /* InfoPlist.strings in Resources */, CB3BE8BB1F2FF2F4000561F7 /* LaunchScreen.storyboard in Resources */, CB3BE8B81F2FF2F4000561F7 /* Assets.xcassets in Resources */, + DC1E38FB2111EE4900DA9522 /* Main.strings in Resources */, CB385A4A1F4E35210061EBE4 /* Settings.bundle in Resources */, CB3BE8B61F2FF2F4000561F7 /* Main.storyboard in Resources */, ); @@ -300,6 +308,7 @@ children = ( CB3BE8B51F2FF2F4000561F7 /* Base */, CB28BF14208A2C9700F5C15B /* ja */, + DC1E38FC2111EE8100DA9522 /* de */, ); name = Main.storyboard; sourceTree = ""; @@ -316,6 +325,7 @@ isa = PBXVariantGroup; children = ( CB5891F4200D2CEA00E15F92 /* ja */, + DCEE1D2B2111EDFC00FFCFAF /* de */, ); name = Localizable.strings; sourceTree = ""; @@ -324,10 +334,19 @@ isa = PBXVariantGroup; children = ( CB5891FA200D2DF300E15F92 /* ja */, + DC1E38F82111EE2D00DA9522 /* de */, ); name = InfoPlist.strings; sourceTree = ""; }; + DC1E38F92111EE4900DA9522 /* Main.strings */ = { + isa = PBXVariantGroup; + children = ( + DC1E38FA2111EE4900DA9522 /* de */, + ); + name = Main.strings; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ diff --git a/BoostRemote/Settings.bundle/de.lproj/Root.strings b/BoostRemote/Settings.bundle/de.lproj/Root.strings new file mode 100644 index 0000000..553e9de --- /dev/null +++ b/BoostRemote/Settings.bundle/de.lproj/Root.strings @@ -0,0 +1,4 @@ +/* A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. */ + +"Version" = "Version"; +"Licenses" = "Lizenzen"; diff --git a/BoostRemote/de.lproj/InfoPlist.strings b/BoostRemote/de.lproj/InfoPlist.strings new file mode 100644 index 0000000..ff7f62d --- /dev/null +++ b/BoostRemote/de.lproj/InfoPlist.strings @@ -0,0 +1 @@ +NSBluetoothPeripheralUsageDescription="Diese App verwendet Bluetooth LE zur Steuerung des LEGO Boost Move Hub"; diff --git a/BoostRemote/de.lproj/Localizable.strings b/BoostRemote/de.lproj/Localizable.strings new file mode 100644 index 0000000..831ec53 --- /dev/null +++ b/BoostRemote/de.lproj/Localizable.strings @@ -0,0 +1,8 @@ +/* CAUTION */ +"CAUTION" = "WARNUNG"; + +/* Turn on Bluetooth */ +"Turn on Bluetooth" = "Bluetooth einschalten"; + +/* Unsupported Device */ +"Unsupported Device" = "Nicht unterstütztes Gerät"; diff --git a/BoostRemote/de.lproj/Main.strings b/BoostRemote/de.lproj/Main.strings new file mode 100644 index 0000000..9f1d743 --- /dev/null +++ b/BoostRemote/de.lproj/Main.strings @@ -0,0 +1,44 @@ +/* Class = "UITableViewSection"; headerTitle = "Controller Type for Motor A & B"; ObjectID = "1vK-ll-SMg"; */ +"1vK-ll-SMg.headerTitle" = "Reglertyp für Motoren A & B"; + +/* Class = "UITableViewSection"; headerTitle = "Motor Directions"; ObjectID = "9KN-vQ-WBx"; */ +"9KN-vQ-WBx.headerTitle" = "Laufrichtungen der Motoren"; + +/* Class = "UINavigationItem"; title = "Settings"; ObjectID = "EDE-ue-qdZ"; */ +"EDE-ue-qdZ.title" = "Einstellungen"; + +/* Class = "UILabel"; text = "Port D"; ObjectID = "fYO-cN-YCM"; */ +"fYO-cN-YCM.text" = "Anschluss D"; + +/* Class = "UILabel"; text = "Joystick type"; ObjectID = "IYt-gU-rJE"; */ +"IYt-gU-rJE.text" = "Joystick"; + +/* Class = "UILabel"; text = "Twin Sticks type"; ObjectID = "kHV-9y-xeo"; */ +"kHV-9y-xeo.text" = "Schieberegler"; + +/* Class = "UILabel"; text = "Port A"; ObjectID = "nxb-Sh-8Vf"; */ +"nxb-Sh-8Vf.text" = "Anschluss A"; + +/* Class = "UILabel"; text = "Port C"; ObjectID = "QQF-LJ-BZe"; */ +"QQF-LJ-BZe.text" = "Anschluss C"; + +/* Class = "UILabel"; text = "Port B"; ObjectID = "t51-4l-aJ5"; */ +"t51-4l-aJ5.text" = "Anschluss B"; + +/* Class = "UITableViewSection"; headerTitle = "Number of Steps of Motor Power"; ObjectID = "XP7-lg-vY3"; */ +"XP7-lg-vY3.headerTitle" = "Schritte der Motorleistung"; + +/* Class = "UILabel"; headerTitle = "1 step (On / Off)"; ObjectID = "pYf-8e-0Vh"; */ +"pYf-8e-0Vh.text" = "1 Schritt (Ein / Aus)"; + +/* Class = "UILabel"; headerTitle = "0 or 100"; ObjectID = "uoD-Hx-d61"; */ +"uoD-Hx-d61.text" = "0 oder 100"; + +/* Class = "UILabel"; headerTitle = "2 steps"; ObjectID = "pGG-TU-DN3"; */ +"pGG-TU-DN3.text" = "2 Schritte"; + +/* Class = "UILabel"; headerTitle = "5 steps"; ObjectID = "EH8-DP-72E"; */ +"EH8-DP-72E.text" = "5 Schritte"; + +/* Class = "UILabel"; headerTitle = "10 steps"; ObjectID = "L74-lo-xZR"; */ +"L74-lo-xZR.text" = "10 Schritte"; diff --git a/BoostRemote/ja.lproj/InfoPlist.strings b/BoostRemote/ja.lproj/InfoPlist.strings index 865ac0c..4fd00f8 100644 --- a/BoostRemote/ja.lproj/InfoPlist.strings +++ b/BoostRemote/ja.lproj/InfoPlist.strings @@ -1 +1 @@ -NSPhotoLibraryUsageDescription="LEGO Boost Move Hubを操作するためにBluetooth LEが必要です"; +NSBluetoothPeripheralUsageDescription="LEGO Boost Move Hubを操作するためにBluetooth LEが必要です"; From 758a9cc5fc27703d99245bce088c8531e8ee4436 Mon Sep 17 00:00:00 2001 From: Shinichiro Oba Date: Wed, 17 Oct 2018 17:02:20 +0100 Subject: [PATCH 3/6] Use submodules (#14) * Use submodules * Update README.md --- .gitmodules | 12 + BoostRemote.xcodeproj/project.pbxproj | 548 +++++++++++++++++++++++--- Carthage/Checkouts/BoostBLEKit | 1 + Carthage/Checkouts/ReSwift | 1 + Carthage/Checkouts/ReactiveSwift | 1 + Carthage/Checkouts/Result | 1 + README.md | 4 +- 7 files changed, 514 insertions(+), 54 deletions(-) create mode 160000 Carthage/Checkouts/BoostBLEKit create mode 160000 Carthage/Checkouts/ReSwift create mode 160000 Carthage/Checkouts/ReactiveSwift create mode 160000 Carthage/Checkouts/Result diff --git a/.gitmodules b/.gitmodules index e69de29..4b9c9fc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,12 @@ +[submodule "Carthage/Checkouts/ReSwift"] + path = Carthage/Checkouts/ReSwift + url = https://github.com/ReSwift/ReSwift.git +[submodule "Carthage/Checkouts/ReactiveSwift"] + path = Carthage/Checkouts/ReactiveSwift + url = https://github.com/ReactiveCocoa/ReactiveSwift.git +[submodule "Carthage/Checkouts/Result"] + path = Carthage/Checkouts/Result + url = https://github.com/antitypical/Result.git +[submodule "Carthage/Checkouts/BoostBLEKit"] + path = Carthage/Checkouts/BoostBLEKit + url = https://github.com/bricklife/BoostBLEKit.git diff --git a/BoostRemote.xcodeproj/project.pbxproj b/BoostRemote.xcodeproj/project.pbxproj index 66ed043..210799f 100644 --- a/BoostRemote.xcodeproj/project.pbxproj +++ b/BoostRemote.xcodeproj/project.pbxproj @@ -15,7 +15,6 @@ CB3BE8B61F2FF2F4000561F7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CB3BE8B41F2FF2F4000561F7 /* Main.storyboard */; }; CB3BE8B81F2FF2F4000561F7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CB3BE8B71F2FF2F4000561F7 /* Assets.xcassets */; }; CB3BE8BB1F2FF2F4000561F7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CB3BE8B91F2FF2F4000561F7 /* LaunchScreen.storyboard */; }; - CB4345A8200FC0D200D82D7D /* BoostBLEKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB4345A7200FC0D100D82D7D /* BoostBLEKit.framework */; }; CB44B8531F73C11400D0D250 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB44B8521F73C11400D0D250 /* Store.swift */; }; CB547EBB201A62A400B00D8C /* TwinSticksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB547EBA201A62A400B00D8C /* TwinSticksViewController.swift */; }; CB547EBD201B5C3D00B00D8C /* JoystickViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB547EBC201B5C3D00B00D8C /* JoystickViewController.swift */; }; @@ -25,10 +24,15 @@ CB7390C9201AB89900EAE3A7 /* UIImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB7390C8201AB89900EAE3A7 /* UIImage+Extension.swift */; }; CB84A382201BA3D300C02CD8 /* JoystickView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB84A381201BA3D300C02CD8 /* JoystickView.swift */; }; CB8C7EB4201FEF6500274A09 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB8C7EB3201FEF6500274A09 /* SettingsViewController.swift */; }; - CBA46E781F882F0C0017E5C2 /* ReactiveSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBA46E771F882F0C0017E5C2 /* ReactiveSwift.framework */; }; - CBA46E7A1F882F0F0017E5C2 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBA46E791F882F0F0017E5C2 /* Result.framework */; }; - CBA46E7D1F882F800017E5C2 /* ReSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBA46E7B1F882F800017E5C2 /* ReSwift.framework */; }; CBC72DFA201AC35C00ABE096 /* Controller.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBC72DF9201AC35C00ABE096 /* Controller.swift */; }; + CBD2D09D217790ED0036C5C8 /* BoostBLEKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D037217790320036C5C8 /* BoostBLEKit.framework */; }; + CBD2D09E217790ED0036C5C8 /* BoostBLEKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D037217790320036C5C8 /* BoostBLEKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + CBD2D0A1217790F20036C5C8 /* ReactiveSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D061217790420036C5C8 /* ReactiveSwift.framework */; }; + CBD2D0A2217790F20036C5C8 /* ReactiveSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D061217790420036C5C8 /* ReactiveSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + CBD2D0A5217790FD0036C5C8 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D079217790520036C5C8 /* Result.framework */; }; + CBD2D0A6217790FD0036C5C8 /* Result.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D079217790520036C5C8 /* Result.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + CBD2D0A9217791060036C5C8 /* ReSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D08E217790580036C5C8 /* ReSwift.framework */; }; + CBD2D0AA217791060036C5C8 /* ReSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CBD2D08E217790580036C5C8 /* ReSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; CBD94E841F391B3F0037ED71 /* State.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBD94E831F391B3F0037ED71 /* State.swift */; }; CBD94E861F391D7F0037ED71 /* Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBD94E851F391D7F0037ED71 /* Action.swift */; }; CBD94E881F391E2E0037ED71 /* Reducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBD94E871F391E2E0037ED71 /* Reducer.swift */; }; @@ -38,6 +42,205 @@ DC1E38FB2111EE4900DA9522 /* Main.strings in Resources */ = {isa = PBXBuildFile; fileRef = DC1E38F92111EE4900DA9522 /* Main.strings */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + CBD2D036217790320036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D031217790310036C5C8 /* BoostBLEKit.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = "BoostBLEKit::BoostBLEKit::Product"; + remoteInfo = BoostBLEKit; + }; + CBD2D038217790320036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D031217790310036C5C8 /* BoostBLEKit.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = "BoostBLEKit::BoostBLEKitTests::Product"; + remoteInfo = BoostBLEKitTests; + }; + CBD2D05C217790420036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D04725EA19E49ED7006002AA; + remoteInfo = "ReactiveSwift-macOS"; + }; + CBD2D05E217790420036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D04725F519E49ED7006002AA; + remoteInfo = "ReactiveSwift-macOSTests"; + }; + CBD2D060217790420036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D047260C19E49F82006002AA; + remoteInfo = "ReactiveSwift-iOS"; + }; + CBD2D062217790420036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D047261619E49F82006002AA; + remoteInfo = "ReactiveSwift-iOSTests"; + }; + CBD2D064217790420036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A9B315541B3940610001CB9C; + remoteInfo = "ReactiveSwift-watchOS"; + }; + CBD2D066217790420036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 57A4D2411BA13D7A00F7D4B1; + remoteInfo = "ReactiveSwift-tvOS"; + }; + CBD2D068217790420036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 7DFBED031CDB8C9500EE435B; + remoteInfo = "ReactiveSwift-tvOSTests"; + }; + CBD2D074217790520036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D45480571A9572F5009D7229; + remoteInfo = "Result-Mac"; + }; + CBD2D076217790520036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D45480671A9572F5009D7229; + remoteInfo = "Result-MacTests"; + }; + CBD2D078217790520036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D454807D1A957361009D7229; + remoteInfo = "Result-iOS"; + }; + CBD2D07A217790520036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D45480871A957362009D7229; + remoteInfo = "Result-iOSTests"; + }; + CBD2D07C217790520036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 57FCDE471BA280DC00130C48; + remoteInfo = "Result-tvOS"; + }; + CBD2D07E217790520036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 57FCDE541BA280E000130C48; + remoteInfo = "Result-tvOSTests"; + }; + CBD2D080217790520036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D03579A31B2B788F005D26AE; + remoteInfo = "Result-watchOS"; + }; + CBD2D08D217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 625E66831C1FF97E0027C288; + remoteInfo = "ReSwift-iOS"; + }; + CBD2D08F217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 625E669A1C1FFA3C0027C288; + remoteInfo = "ReSwift-iOSTests"; + }; + CBD2D091217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 25DBCF7B1C30C4AA00D63A58; + remoteInfo = "ReSwift-macOS"; + }; + CBD2D093217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 25DBCF871C30C4DB00D63A58; + remoteInfo = "ReSwift-macOSTests"; + }; + CBD2D095217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 25DBCF4E1C30C18D00D63A58; + remoteInfo = "ReSwift-tvOS"; + }; + CBD2D097217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 25DBCF641C30C1AC00D63A58; + remoteInfo = "ReSwift-tvOSTests"; + }; + CBD2D099217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 25DBCF371C30BF2B00D63A58; + remoteInfo = "ReSwift-watchOS"; + }; + CBD2D09B217790580036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F13C0E81E7B3E4000D8442C; + remoteInfo = SwiftLintIntegration; + }; + CBD2D09F217790ED0036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D031217790310036C5C8 /* BoostBLEKit.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = "BoostBLEKit::BoostBLEKit"; + remoteInfo = BoostBLEKit; + }; + CBD2D0A3217790F20036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D047260B19E49F82006002AA; + remoteInfo = "ReactiveSwift-iOS"; + }; + CBD2D0A7217790FD0036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D454807C1A957361009D7229; + remoteInfo = "Result-iOS"; + }; + CBD2D0AB217791060036C5C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 625E66821C1FF97E0027C288; + remoteInfo = "ReSwift-iOS"; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ CB3BE8CB1F2FF3AC000561F7 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -45,6 +248,10 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + CBD2D0A6217790FD0036C5C8 /* Result.framework in Embed Frameworks */, + CBD2D0AA217791060036C5C8 /* ReSwift.framework in Embed Frameworks */, + CBD2D09E217790ED0036C5C8 /* BoostBLEKit.framework in Embed Frameworks */, + CBD2D0A2217790F20036C5C8 /* ReactiveSwift.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -63,7 +270,6 @@ CB3BE8B71F2FF2F4000561F7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; CB3BE8BA1F2FF2F4000561F7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; CB3BE8BC1F2FF2F4000561F7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - CB4345A7200FC0D100D82D7D /* BoostBLEKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = BoostBLEKit.framework; path = Carthage/Build/iOS/BoostBLEKit.framework; sourceTree = ""; }; CB44B8521F73C11400D0D250 /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; CB547EBA201A62A400B00D8C /* TwinSticksViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwinSticksViewController.swift; sourceTree = ""; }; CB547EBC201B5C3D00B00D8C /* JoystickViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoystickViewController.swift; sourceTree = ""; }; @@ -73,10 +279,12 @@ CB7390C8201AB89900EAE3A7 /* UIImage+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Extension.swift"; sourceTree = ""; }; CB84A381201BA3D300C02CD8 /* JoystickView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoystickView.swift; sourceTree = ""; }; CB8C7EB3201FEF6500274A09 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; - CBA46E771F882F0C0017E5C2 /* ReactiveSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactiveSwift.framework; path = Carthage/Build/iOS/ReactiveSwift.framework; sourceTree = ""; }; - CBA46E791F882F0F0017E5C2 /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/iOS/Result.framework; sourceTree = ""; }; - CBA46E7B1F882F800017E5C2 /* ReSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReSwift.framework; path = Carthage/Build/iOS/ReSwift.framework; sourceTree = ""; }; CBC72DF9201AC35C00ABE096 /* Controller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Controller.swift; sourceTree = ""; }; + CBD2D02F217790160036C5C8 /* Cartfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Cartfile; sourceTree = ""; }; + CBD2D031217790310036C5C8 /* BoostBLEKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = BoostBLEKit.xcodeproj; path = Carthage/Checkouts/BoostBLEKit/BoostBLEKit.xcodeproj; sourceTree = ""; }; + CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactiveSwift.xcodeproj; path = Carthage/Checkouts/ReactiveSwift/ReactiveSwift.xcodeproj; sourceTree = ""; }; + CBD2D06A217790510036C5C8 /* Result.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Result.xcodeproj; path = Carthage/Checkouts/Result/Result.xcodeproj; sourceTree = ""; }; + CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReSwift.xcodeproj; path = Carthage/Checkouts/ReSwift/ReSwift.xcodeproj; sourceTree = ""; }; CBD94E831F391B3F0037ED71 /* State.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = State.swift; sourceTree = ""; }; CBD94E851F391D7F0037ED71 /* Action.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Action.swift; sourceTree = ""; }; CBD94E871F391E2E0037ED71 /* Reducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reducer.swift; sourceTree = ""; }; @@ -94,10 +302,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CB4345A8200FC0D200D82D7D /* BoostBLEKit.framework in Frameworks */, - CBA46E7A1F882F0F0017E5C2 /* Result.framework in Frameworks */, - CBA46E781F882F0C0017E5C2 /* ReactiveSwift.framework in Frameworks */, - CBA46E7D1F882F800017E5C2 /* ReSwift.framework in Frameworks */, + CBD2D0A5217790FD0036C5C8 /* Result.framework in Frameworks */, + CBD2D0A9217791060036C5C8 /* ReSwift.framework in Frameworks */, + CBD2D09D217790ED0036C5C8 /* BoostBLEKit.framework in Frameworks */, + CBD2D0A1217790F20036C5C8 /* ReactiveSwift.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -108,8 +316,8 @@ isa = PBXGroup; children = ( CB3BE8AF1F2FF2F4000561F7 /* BoostRemote */, + CBD2D02E217790030036C5C8 /* Carthage */, CB3BE8AE1F2FF2F4000561F7 /* Products */, - CBA46E761F882F0B0017E5C2 /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +359,68 @@ path = BoostRemote; sourceTree = ""; }; - CBA46E761F882F0B0017E5C2 /* Frameworks */ = { + CBD2D02E217790030036C5C8 /* Carthage */ = { + isa = PBXGroup; + children = ( + CBD2D02F217790160036C5C8 /* Cartfile */, + CBD2D031217790310036C5C8 /* BoostBLEKit.xcodeproj */, + CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */, + CBD2D06A217790510036C5C8 /* Result.xcodeproj */, + CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */, + ); + name = Carthage; + sourceTree = ""; + }; + CBD2D032217790310036C5C8 /* Products */ = { + isa = PBXGroup; + children = ( + CBD2D037217790320036C5C8 /* BoostBLEKit.framework */, + CBD2D039217790320036C5C8 /* BoostBLEKitTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + CBD2D053217790420036C5C8 /* Products */ = { + isa = PBXGroup; + children = ( + CBD2D05D217790420036C5C8 /* ReactiveSwift.framework */, + CBD2D05F217790420036C5C8 /* ReactiveSwiftTests.xctest */, + CBD2D061217790420036C5C8 /* ReactiveSwift.framework */, + CBD2D063217790420036C5C8 /* ReactiveSwiftTests.xctest */, + CBD2D065217790420036C5C8 /* ReactiveSwift.framework */, + CBD2D067217790420036C5C8 /* ReactiveSwift.framework */, + CBD2D069217790420036C5C8 /* ReactiveSwiftTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + CBD2D06B217790510036C5C8 /* Products */ = { + isa = PBXGroup; + children = ( + CBD2D075217790520036C5C8 /* Result.framework */, + CBD2D077217790520036C5C8 /* Result-MacTests.xctest */, + CBD2D079217790520036C5C8 /* Result.framework */, + CBD2D07B217790520036C5C8 /* Result-iOSTests.xctest */, + CBD2D07D217790520036C5C8 /* Result.framework */, + CBD2D07F217790520036C5C8 /* Result-tvOSTests.xctest */, + CBD2D081217790520036C5C8 /* Result.framework */, + ); + name = Products; + sourceTree = ""; + }; + CBD2D083217790570036C5C8 /* Products */ = { isa = PBXGroup; children = ( - CB4345A7200FC0D100D82D7D /* BoostBLEKit.framework */, - CBA46E771F882F0C0017E5C2 /* ReactiveSwift.framework */, - CBA46E791F882F0F0017E5C2 /* Result.framework */, - CBA46E7B1F882F800017E5C2 /* ReSwift.framework */, + CBD2D08E217790580036C5C8 /* ReSwift.framework */, + CBD2D090217790580036C5C8 /* ReSwift-iOSTests.xctest */, + CBD2D092217790580036C5C8 /* ReSwift.framework */, + CBD2D094217790580036C5C8 /* ReSwift-macOSTests.xctest */, + CBD2D096217790580036C5C8 /* ReSwift.framework */, + CBD2D098217790580036C5C8 /* ReSwift-tvOSTests.xctest */, + CBD2D09A217790580036C5C8 /* ReSwift.framework */, + CBD2D09C217790580036C5C8 /* SwiftLintIntegration.xctest */, ); - name = Frameworks; + name = Products; sourceTree = ""; }; CBF9D2D81F3CB63300B97E11 /* Redux */ = { @@ -184,11 +445,14 @@ CB3BE8AA1F2FF2F4000561F7 /* Frameworks */, CB3BE8AB1F2FF2F4000561F7 /* Resources */, CB3BE8CB1F2FF3AC000561F7 /* Embed Frameworks */, - CBA46E7F1F882FA30017E5C2 /* ShellScript */, ); buildRules = ( ); dependencies = ( + CBD2D0A0217790ED0036C5C8 /* PBXTargetDependency */, + CBD2D0A4217790F20036C5C8 /* PBXTargetDependency */, + CBD2D0A8217790FD0036C5C8 /* PBXTargetDependency */, + CBD2D0AC217791060036C5C8 /* PBXTargetDependency */, ); name = BoostRemote; productName = BoostRemote; @@ -226,6 +490,24 @@ mainGroup = CB3BE8A41F2FF2F4000561F7; productRefGroup = CB3BE8AE1F2FF2F4000561F7 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = CBD2D032217790310036C5C8 /* Products */; + ProjectRef = CBD2D031217790310036C5C8 /* BoostBLEKit.xcodeproj */; + }, + { + ProductGroup = CBD2D053217790420036C5C8 /* Products */; + ProjectRef = CBD2D052217790420036C5C8 /* ReactiveSwift.xcodeproj */; + }, + { + ProductGroup = CBD2D06B217790510036C5C8 /* Products */; + ProjectRef = CBD2D06A217790510036C5C8 /* Result.xcodeproj */; + }, + { + ProductGroup = CBD2D083217790570036C5C8 /* Products */; + ProjectRef = CBD2D082217790570036C5C8 /* ReSwift.xcodeproj */; + }, + ); projectRoot = ""; targets = ( CB3BE8AC1F2FF2F4000561F7 /* BoostRemote */, @@ -233,6 +515,177 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + CBD2D037217790320036C5C8 /* BoostBLEKit.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = BoostBLEKit.framework; + remoteRef = CBD2D036217790320036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D039217790320036C5C8 /* BoostBLEKitTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = file; + path = BoostBLEKitTests.xctest; + remoteRef = CBD2D038217790320036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D05D217790420036C5C8 /* ReactiveSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReactiveSwift.framework; + remoteRef = CBD2D05C217790420036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D05F217790420036C5C8 /* ReactiveSwiftTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = ReactiveSwiftTests.xctest; + remoteRef = CBD2D05E217790420036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D061217790420036C5C8 /* ReactiveSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReactiveSwift.framework; + remoteRef = CBD2D060217790420036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D063217790420036C5C8 /* ReactiveSwiftTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = ReactiveSwiftTests.xctest; + remoteRef = CBD2D062217790420036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D065217790420036C5C8 /* ReactiveSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReactiveSwift.framework; + remoteRef = CBD2D064217790420036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D067217790420036C5C8 /* ReactiveSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReactiveSwift.framework; + remoteRef = CBD2D066217790420036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D069217790420036C5C8 /* ReactiveSwiftTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = ReactiveSwiftTests.xctest; + remoteRef = CBD2D068217790420036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D075217790520036C5C8 /* Result.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Result.framework; + remoteRef = CBD2D074217790520036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D077217790520036C5C8 /* Result-MacTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "Result-MacTests.xctest"; + remoteRef = CBD2D076217790520036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D079217790520036C5C8 /* Result.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Result.framework; + remoteRef = CBD2D078217790520036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D07B217790520036C5C8 /* Result-iOSTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "Result-iOSTests.xctest"; + remoteRef = CBD2D07A217790520036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D07D217790520036C5C8 /* Result.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Result.framework; + remoteRef = CBD2D07C217790520036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D07F217790520036C5C8 /* Result-tvOSTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "Result-tvOSTests.xctest"; + remoteRef = CBD2D07E217790520036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D081217790520036C5C8 /* Result.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Result.framework; + remoteRef = CBD2D080217790520036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D08E217790580036C5C8 /* ReSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReSwift.framework; + remoteRef = CBD2D08D217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D090217790580036C5C8 /* ReSwift-iOSTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "ReSwift-iOSTests.xctest"; + remoteRef = CBD2D08F217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D092217790580036C5C8 /* ReSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReSwift.framework; + remoteRef = CBD2D091217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D094217790580036C5C8 /* ReSwift-macOSTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "ReSwift-macOSTests.xctest"; + remoteRef = CBD2D093217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D096217790580036C5C8 /* ReSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReSwift.framework; + remoteRef = CBD2D095217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D098217790580036C5C8 /* ReSwift-tvOSTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "ReSwift-tvOSTests.xctest"; + remoteRef = CBD2D097217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D09A217790580036C5C8 /* ReSwift.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = ReSwift.framework; + remoteRef = CBD2D099217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + CBD2D09C217790580036C5C8 /* SwiftLintIntegration.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = SwiftLintIntegration.xctest; + remoteRef = CBD2D09B217790580036C5C8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ CB3BE8AB1F2FF2F4000561F7 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -250,30 +703,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - CBA46E7F1F882FA30017E5C2 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(SRCROOT)/Carthage/Build/iOS/Result.framework", - "$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework", - "$(SRCROOT)/Carthage/Build/iOS/ReSwift.framework", - "$(SRCROOT)/Carthage/Build/iOS/BoostBLEKit.framework", - ); - outputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework", - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework", - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReSwift.framework", - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/BoostBLEKit.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/usr/local/bin/carthage copy-frameworks"; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ CB3BE8A91F2FF2F4000561F7 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -302,6 +731,29 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + CBD2D0A0217790ED0036C5C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = BoostBLEKit; + targetProxy = CBD2D09F217790ED0036C5C8 /* PBXContainerItemProxy */; + }; + CBD2D0A4217790F20036C5C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "ReactiveSwift-iOS"; + targetProxy = CBD2D0A3217790F20036C5C8 /* PBXContainerItemProxy */; + }; + CBD2D0A8217790FD0036C5C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Result-iOS"; + targetProxy = CBD2D0A7217790FD0036C5C8 /* PBXContainerItemProxy */; + }; + CBD2D0AC217791060036C5C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "ReSwift-iOS"; + targetProxy = CBD2D0AB217791060036C5C8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ CB3BE8B41F2FF2F4000561F7 /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -471,10 +923,6 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = UV6TAX3ANB; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); INFOPLIST_FILE = BoostRemote/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.bricklife.ios.boost-remote"; @@ -489,10 +937,6 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = UV6TAX3ANB; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); INFOPLIST_FILE = BoostRemote/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.bricklife.ios.boost-remote"; diff --git a/Carthage/Checkouts/BoostBLEKit b/Carthage/Checkouts/BoostBLEKit new file mode 160000 index 0000000..e9e5537 --- /dev/null +++ b/Carthage/Checkouts/BoostBLEKit @@ -0,0 +1 @@ +Subproject commit e9e55374bd71f9e7bdb97eafd1bf521d4d4ac7ba diff --git a/Carthage/Checkouts/ReSwift b/Carthage/Checkouts/ReSwift new file mode 160000 index 0000000..d4cb424 --- /dev/null +++ b/Carthage/Checkouts/ReSwift @@ -0,0 +1 @@ +Subproject commit d4cb4248a51ad90e6f64a6962aefc4302720028f diff --git a/Carthage/Checkouts/ReactiveSwift b/Carthage/Checkouts/ReactiveSwift new file mode 160000 index 0000000..4f6a12a --- /dev/null +++ b/Carthage/Checkouts/ReactiveSwift @@ -0,0 +1 @@ +Subproject commit 4f6a12ae6762e825b0e19a4f7076eafa43847e6e diff --git a/Carthage/Checkouts/Result b/Carthage/Checkouts/Result new file mode 160000 index 0000000..8fc088d --- /dev/null +++ b/Carthage/Checkouts/Result @@ -0,0 +1 @@ +Subproject commit 8fc088dcf72802801efeecba76ea8fb041fb773d diff --git a/README.md b/README.md index 1c77c6a..7cfd515 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Remote Control iOS app for LEGO® BOOST - LEGO® BOOST Move Hub ## Development Environment -- Xcode 9.3 -- Swift 4.1 +- Xcode 10 +- Swift 4.2 ## App Store https://itunes.apple.com/us/app/boost-remote/id1270503610?ls=1&mt=8 From eed28d76f30516f35c02db4ba8cd558b49793551 Mon Sep 17 00:00:00 2001 From: Shinichiro Oba Date: Wed, 17 Oct 2018 18:06:35 +0100 Subject: [PATCH 4/6] Update README.md --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7cfd515..9b2e361 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Boost Remote Remote Control iOS app for LEGO® BOOST -## How to use this app +## How to use 1. Turn on Bluetooth on your iOS device 2. Push the connector button on this app 3. Push the green button on your Move Hub @@ -12,14 +12,16 @@ Remote Control iOS app for LEGO® BOOST - iOS device supporting Bluetooth Low Energy (BLE) - LEGO® BOOST Move Hub -## Development Environment -- Xcode 10 -- Swift 4.2 - ## App Store https://itunes.apple.com/us/app/boost-remote/id1270503610?ls=1&mt=8 ## Demonstration https://youtu.be/WuvGT8WqLrQ +## How to build +1. Install [Xcode 10](https://developer.apple.com/xcode/) +2. Clone this repository including submodules +3. Open BoostRemote.xcodeproj +4. Build + LEGO is a trademark of the LEGO Group. From da786381738869773a5017981e4e892dbd6f0938 Mon Sep 17 00:00:00 2001 From: Shinichiro Oba Date: Wed, 17 Oct 2018 18:53:46 +0100 Subject: [PATCH 5/6] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9b2e361..e2d75eb 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ https://youtu.be/WuvGT8WqLrQ ## How to build 1. Install [Xcode 10](https://developer.apple.com/xcode/) 2. Clone this repository including submodules -3. Open BoostRemote.xcodeproj -4. Build +3. Open `BoostRemote.xcodeproj` +4. Build `BoostRemote` scheme LEGO is a trademark of the LEGO Group. From 1cd7e5650f6bf4ee67b4c9d0a36115b68f13dd7c Mon Sep 17 00:00:00 2001 From: Shinichiro Oba Date: Wed, 17 Oct 2018 19:02:48 +0100 Subject: [PATCH 6/6] Update the version to 1.8.1 (22) --- BoostRemote/Info.plist | 4 ++-- BoostRemote/Settings.bundle/Root.plist | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/BoostRemote/Info.plist b/BoostRemote/Info.plist index d7e17c1..fb2b45f 100644 --- a/BoostRemote/Info.plist +++ b/BoostRemote/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.8.0 + 1.8.1 CFBundleVersion - 21 + 22 LSRequiresIPhoneOS NSBluetoothPeripheralUsageDescription diff --git a/BoostRemote/Settings.bundle/Root.plist b/BoostRemote/Settings.bundle/Root.plist index 4698eea..6f9c82a 100644 --- a/BoostRemote/Settings.bundle/Root.plist +++ b/BoostRemote/Settings.bundle/Root.plist @@ -16,7 +16,7 @@ Type PSTitleValueSpecifier DefaultValue - 1.8.0 + 1.8.1 Title Version Key