From f0abec39b2082219350b88c168d025d1524b8038 Mon Sep 17 00:00:00 2001 From: Hunter Lang Date: Mon, 23 Mar 2015 10:55:16 -0600 Subject: [PATCH] Update to Beta 3, see associated release for info. --- .../xcschemes/ButtonDrive.xcscheme | 8 +- .../ButtonDrive/ButtonDriveViewController.m | 3 +- .../xcshareddata/HelloWorld.xccheckout | 4 +- .../xcschemes/HelloWorld.xcscheme | 8 +- .../HelloWorld/HelloWorldViewController.m | 3 +- .../xcschemes/HelloWorldSwift.xcscheme | 8 +- .../xcshareddata/xcschemes/Locator.xcscheme | 8 +- samples/Locator/Locator/ViewController.m | 3 +- .../MacroLoader.xcodeproj/project.pbxproj | 12 +- .../xcschemes/MacroLoader.xcscheme | 8 +- .../MacroLoader/MacroLoader/ViewController.m | 3 +- .../MacroSample.xcodeproj/project.pbxproj | 22 +- .../xcschemes/MacroSample.xcscheme | 8 +- .../MacroSample/MacroSampleViewController.m | 3 +- .../HelloWorld_OSX.xcodeproj/project.pbxproj | 435 ++++ .../HelloWorld_OSX/AppDelegate.h | 15 + .../HelloWorld_OSX/AppDelegate.m | 36 + .../HelloWorld_OSX/Base.lproj/Main.storyboard | 721 ++++++ .../AppIcon.appiconset/Contents.json | 58 + .../HelloWorld_OSX/HelloWorld_OSX/Info.plist | 34 + .../HelloWorld_OSX/ViewController.h | 15 + .../HelloWorld_OSX/ViewController.m | 78 + .../OSX/HelloWorld_OSX/HelloWorld_OSX/main.m | 13 + .../HelloWorld_OSXTests/HelloWorld_OSXTests.m | 40 + .../HelloWorld_OSXTests/Info.plist | 24 + .../OptionFlags.xcodeproj/project.pbxproj | 8 + .../xcschemes/OptionFlags.xcscheme | 8 +- .../OptionFlags/OFViewController.m | 3 +- .../OrbBasicLoader.xcodeproj/project.pbxproj | 8 +- .../xcschemes/OrbBasicLoader.xcscheme | 8 +- .../OrbBasicLoader/ViewController.m | 3 +- .../xcschemes/RobotUISample.xcscheme | 8 +- .../RobotUISample/RUISample.storyboard | 3 +- .../RobotUISample/RUISampleViewController.m | 3 +- .../xcshareddata/xcschemes/SelfLevel.xcscheme | 8 +- samples/SelfLevel/SelfLevel/ViewController.m | 3 +- .../xcschemes/SensorStreaming.xcscheme | 8 +- .../SensorStreaming/ViewController.m | 3 +- .../Classes/ViewController.m | 3 +- .../xcschemes/SphereMotionTeapot.xcscheme | 8 +- .../xcschemes/StreamingAnimation.xcscheme | 8 +- .../StreamingAnimation/ViewController.m | 3 +- .../Headers/FWLevel1DiagnosticAsyncData.h | 26 + .../Headers/FWLevel1DiagnosticCommand.h | 34 + .../Headers/FWLevel1DiagnosticResponse.h | 25 + .../Headers/RKBackLEDOutputCommand.h | 4 +- .../Headers/RKByteCommand.h | 2 +- .../Headers/RKCalibrateCommand.h | 2 +- .../Headers/RKCalibrateResponse.h | 3 +- .../RKConfigureCollisionDetectionCommand.h | 6 +- .../Headers/RKConfigureLocatorCommand.h | 2 +- .../Headers/RKDeviceAsyncData.h | 2 +- .../Headers/RKDiscoveryAgent.h | 1 + .../Headers/RKGetBluetoothInfoCommand.h | 2 +- .../Headers/RKGetChassisIdCommand.h | 2 +- .../Headers/RKGetDeviceModeCommand.h | 2 +- .../Headers/RKGetPowerStateCommand.h | 2 +- .../Headers/RKGetSkuCommand.h | 15 + .../Headers/RKGetSkuResponse.h | 15 + .../Headers/RKGoToSleepCommand.h | 21 +- .../Headers/RKJumpToBootloaderCommand.h | 2 +- .../Headers/RKJumpToMainAppCommand.h | 2 +- .../Headers/RKLinkDelegate.h | 1 + .../Headers/RKPingCommand.h | 2 +- .../Headers/RKRGBLEDOutputCommand.h | 8 +- .../Headers/RKRawMotorValuesCommand.h | 4 +- .../Headers/RKRobotBase.h | 5 + .../Headers/RKRobotNotification.h | 4 +- .../Headers/RKRollCommand.h | 22 +- .../Headers/RKRotationRateCommand.h | 2 +- .../Headers/RKSelfLevelCommand.h | 2 +- .../Headers/RKSession.h | 1 + .../Headers/RKSetAutoReconnectCommand.h | 2 +- .../Headers/RKSetBluetoothNameCommand.h | 2 +- .../Headers/RKSetDataStreamingCommand.h | 6 +- .../Headers/RKSetFactoryDeviceModeCommand.h | 2 +- .../Headers/RKSetHeadingCommand.h | 6 +- .../Headers/RKSetInactivityTimeoutCommand.h | 2 +- .../Headers/RKSetMotionTimeoutCommand.h | 2 +- .../RKSetNonPersistentOptionFlagsCommand.h | 4 +- .../Headers/RKSetOptionFlagsCommand.h | 4 +- .../Headers/RKSetPIDCommand.h | 2 +- .../Headers/RKSetPowerNotificationCommand.h | 4 +- .../Headers/RKSetUserHackModeCommand.h | 6 +- .../Headers/RKStabilizationCommand.h | 4 +- .../Headers/RKVersioningCommand.h | 2 +- .../Headers/RKVersioningResponse.h | 13 +- .../Headers/RKWritePersistentPageCommand.h | 15 + .../Headers/RKWritePersistentPageResponse.h | 13 + .../Headers/RobotCommandKit.h | 5 + .../RobotCommandKit.framework/Info.plist | Bin 732 -> 731 bytes .../RobotCommandKit.framework/RobotCommandKit | Bin 3238376 -> 3398184 bytes .../_CodeSignature/CodeDirectory | Bin 171 -> 171 bytes .../_CodeSignature/CodeRequirements | Bin 188 -> 188 bytes .../_CodeSignature/CodeResources | 222 +- .../_CodeSignature/CodeSignature | Bin 4331 -> 4329 bytes .../Headers/RKAccuAngleDriveAddon.h | 1 - .../RobotKitClassic.framework/Info.plist | Bin 733 -> 732 bytes .../RobotKitClassic.framework/RobotKitClassic | Bin 1635896 -> 1641176 bytes .../_CodeSignature/CodeDirectory | Bin 171 -> 171 bytes .../_CodeSignature/CodeRequirements | Bin 188 -> 188 bytes .../_CodeSignature/CodeResources | 6 +- .../_CodeSignature/CodeSignature | Bin 4331 -> 4329 bytes .../Headers/RKDiscoveryAgentLE.h | 17 +- .../Headers/RKLeConnectStrategy.h | 50 +- .../RobotKitLE.framework/Headers/RKLeNode.h | 58 + .../Headers/RKLeProximityConnectStrategy.h | 29 + .../Headers/RKLeRobotLink.h | 41 +- .../Headers/RKLeTouchConnectStrategy.h | 24 - .../RobotKitLE.framework/Headers/RKRobotLE.h | 14 +- .../RobotKitLE.framework/Headers/RobotKitLE.h | 20 +- .../RobotKitLE.framework/Info.plist | Bin 750 -> 749 bytes .../RobotKitLE.framework/RobotKitLE | Bin 1338176 -> 1438376 bytes .../_CodeSignature/CodeDirectory | Bin 166 -> 166 bytes .../_CodeSignature/CodeRequirements | Bin 184 -> 184 bytes .../_CodeSignature/CodeResources | 46 +- .../_CodeSignature/CodeSignature | Bin 4331 -> 4329 bytes .../Headers/RKAppendCompleteOvalCommand.h | 11 + .../Headers/RKAppendCompleteOvalResponse.h | 9 + .../Headers/RKAppendFragmentOvalCommand.h | 12 + .../Headers/RKAppendFragmentOvalResponse.h | 9 + .../Headers/RKMacroEmitMarker.h | 7 +- .../Headers/RKMacroObject+Compatibility.h | 2 +- .../Headers/RKOvalDeviceBroadcast.h | 11 + .../Headers/RKOvalErrorBroadcast.h | 14 + .../Headers/RKResetOvmCommand.h | 11 + .../Headers/RKRunMacroCommand.h | 4 +- .../Headers/RKSaveMacroCommand.h | 6 +- .../RKSaveTemporaryMacroChunkCommand.h | 2 +- .../Headers/RKSaveTemporaryMacroCommand.h | 6 +- .../RobotLanguageKit.framework/Info.plist | Bin 734 -> 733 bytes .../RobotLanguageKit | Bin 1773720 -> 2058208 bytes .../_CodeSignature/CodeDirectory | Bin 172 -> 172 bytes .../_CodeSignature/CodeRequirements | Bin 188 -> 188 bytes .../_CodeSignature/CodeResources | 82 +- .../_CodeSignature/CodeSignature | Bin 4331 -> 4329 bytes .../Headers/RKConvenienceRobot.h | 11 + .../Headers/RKRobotDiscoveryAgent.h | 7 +- .../RobotKit.framework/Headers/RobotKit.h | 11 +- .../RobotKit.framework/Info.plist | Bin 730 -> 729 bytes .../RobotKit.framework/RobotKit | Bin 8286320 -> 8851464 bytes .../_CodeSignature/CodeDirectory | Bin 164 -> 0 bytes .../_CodeSignature/CodeRequirements | Bin 180 -> 0 bytes .../_CodeSignature/CodeResources | 2151 ----------------- .../_CodeSignature/CodeSignature | Bin 4331 -> 0 bytes 145 files changed, 2324 insertions(+), 2551 deletions(-) create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX.xcodeproj/project.pbxproj create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/AppDelegate.h create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/AppDelegate.m create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Base.lproj/Main.storyboard create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Info.plist create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.h create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.m create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSX/main.m create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/HelloWorld_OSXTests.m create mode 100644 samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/Info.plist create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticAsyncData.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticCommand.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticResponse.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuCommand.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuResponse.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageCommand.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageResponse.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotKitLE.framework/Headers/RKLeNode.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotKitLE.framework/Headers/RKLeProximityConnectStrategy.h delete mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotKitLE.framework/Headers/RKLeTouchConnectStrategy.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotLanguageKit.framework/Headers/RKAppendCompleteOvalCommand.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotLanguageKit.framework/Headers/RKAppendCompleteOvalResponse.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotLanguageKit.framework/Headers/RKAppendFragmentOvalCommand.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotLanguageKit.framework/Headers/RKAppendFragmentOvalResponse.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotLanguageKit.framework/Headers/RKOvalDeviceBroadcast.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotLanguageKit.framework/Headers/RKOvalErrorBroadcast.h create mode 100644 samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotLanguageKit.framework/Headers/RKResetOvmCommand.h delete mode 100644 samples/_Frameworks_iOS/RobotKit.framework/_CodeSignature/CodeDirectory delete mode 100644 samples/_Frameworks_iOS/RobotKit.framework/_CodeSignature/CodeRequirements delete mode 100644 samples/_Frameworks_iOS/RobotKit.framework/_CodeSignature/CodeResources delete mode 100644 samples/_Frameworks_iOS/RobotKit.framework/_CodeSignature/CodeSignature diff --git a/samples/ButtonDrive/ButtonDrive.xcodeproj/xcshareddata/xcschemes/ButtonDrive.xcscheme b/samples/ButtonDrive/ButtonDrive.xcodeproj/xcshareddata/xcschemes/ButtonDrive.xcscheme index f6076f8f..5742b486 100644 --- a/samples/ButtonDrive/ButtonDrive.xcodeproj/xcshareddata/xcschemes/ButtonDrive.xcscheme +++ b/samples/ButtonDrive/ButtonDrive.xcodeproj/xcshareddata/xcschemes/ButtonDrive.xcscheme @@ -1,6 +1,6 @@ - + - + IDESourceControlProjectFavoriteDictionaryKey IDESourceControlProjectIdentifier - 76C03263-7527-4DEC-8E15-44DD5F3E2616 + ADA6A42A-5E65-4701-9838-F076CAFF3146 IDESourceControlProjectName HelloWorld IDESourceControlProjectOriginsDictionary @@ -34,7 +34,7 @@ IDESourceControlWCCIdentifierKey 5BE677357093A5A5683A95D324CBCE1546CDC20A IDESourceControlWCCName - Sphero-iOS-SDK + PubliciOSSDK diff --git a/samples/HelloWorld/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme b/samples/HelloWorld/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme index fe87bb81..fbd1a033 100644 --- a/samples/HelloWorld/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme +++ b/samples/HelloWorld/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme @@ -1,6 +1,6 @@ - + - + - + - + - + - + - + - + - + - + + +@interface AppDelegate : NSObject + + +@end + diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/AppDelegate.m b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/AppDelegate.m new file mode 100644 index 00000000..bcfae463 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/AppDelegate.m @@ -0,0 +1,36 @@ +// +// AppDelegate.m +// HelloWorld_OSX +// +// Created by wes on 11/21/14. +// Copyright (c) 2014 Sphero. All rights reserved. +// + +#import "AppDelegate.h" +#import + +@interface AppDelegate () + +@end + +@implementation AppDelegate + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { + // Insert code here to initialize your application +} + +- (void)applicationWillTerminate:(NSNotification *)aNotification { + // Insert code here to tear down your application + [RKRobotDiscoveryAgentLE stopDiscovery]; + [[RKRobotDiscoveryAgentLE sharedAgent] disconnectAll]; +} + +- (void)applicationDidBecomeActive:(NSNotification *)notification { + +} + +- (void)applicationWillResignActive:(NSNotification *)notification { + +} + +@end diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Base.lproj/Main.storyboard b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Base.lproj/Main.storyboard new file mode 100644 index 00000000..adf1db41 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Base.lproj/Main.storyboard @@ -0,0 +1,721 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Images.xcassets/AppIcon.appiconset/Contents.json b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..2db2b1c7 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Info.plist b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Info.plist new file mode 100644 index 00000000..589b6903 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + com.orbotix.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2014 Sphero. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.h b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.h new file mode 100644 index 00000000..a9dfe031 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.h @@ -0,0 +1,15 @@ +// +// ViewController.h +// HelloWorld_OSX +// +// Created by wes on 11/21/14. +// Copyright (c) 2014 Sphero. All rights reserved. +// + +#import + +@interface ViewController : NSViewController + + +@end + diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.m b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.m new file mode 100644 index 00000000..004c0bb2 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/ViewController.m @@ -0,0 +1,78 @@ +// +// ViewController.m +// HelloWorld_OSX +// +// Created by wes on 11/21/14. +// Copyright (c) 2014 Sphero. All rights reserved. +// + +#import "ViewController.h" +#import + +@interface ViewController() + +@property (strong) IBOutlet NSTextField *statusLabel; +@property (strong) IBOutlet NSColorWell *colorWell; +@property (strong) IBOutlet NSButton *sleepButton; +@property (strong) RKConvenienceRobot *robot; +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleAvailable:) name:kRobotIsAvailableNotification object:nil]; + [[RKRobotDiscoveryAgentLE sharedAgent] addNotificationObserver:self selector:@selector(handleRobotChangeState:)]; + [RKRobotDiscoveryAgentLE startDiscovery]; +} + +-(void) handleAvailable:(RKRobotAvailableNotification*) n{ + NSLog(@"%@", n); +} + +-(void) handleRobotChangeState:(RKRobotChangedStateNotification*)n{ + NSLog(@"OSX %@", n); + _robot = [[RKConvenienceRobot alloc] initWithRobot:n.robot]; + + switch(n.type){ + case RKRobotConnecting: { + [_statusLabel setStringValue:[NSString stringWithFormat:@"Connecting %@", _robot.name]]; + break; + } + case RKRobotOnline: { + [_statusLabel setStringValue:_robot.name]; + [_robot setLEDWithRed:0.0 green:1.0 blue:1.0]; + [_sleepButton setHidden:NO]; + [_colorWell setHidden:NO]; + break; + } + case RKRobotDisconnected: { + [_statusLabel setStringValue:@"disconnected"]; + [_sleepButton setHidden:YES]; + [_colorWell setHidden:YES]; + _robot = nil; + break; + } + default: + break; + } +} + +- (IBAction)handleColorChange:(id)sender { + NSColor* color = _colorWell.color; + [_robot sendCommand:[RKRGBLEDOutputCommand commandWithRed:color.redComponent green:color.greenComponent blue:color.blueComponent]]; +} + + +- (void)setRepresentedObject:(id)representedObject { + [super setRepresentedObject:representedObject]; + + // Update the view, if already loaded. +} + +- (IBAction)handleDisconnect:(id)sender { + // TODO disconnect!? confusing - sleep + [_robot sleep]; +} + +@end diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/main.m b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/main.m new file mode 100644 index 00000000..b6ccc511 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSX/main.m @@ -0,0 +1,13 @@ +// +// main.m +// HelloWorld_OSX +// +// Created by wes on 11/21/14. +// Copyright (c) 2014 Sphero. All rights reserved. +// + +#import + +int main(int argc, const char * argv[]) { + return NSApplicationMain(argc, argv); +} diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/HelloWorld_OSXTests.m b/samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/HelloWorld_OSXTests.m new file mode 100644 index 00000000..a444f4e4 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/HelloWorld_OSXTests.m @@ -0,0 +1,40 @@ +// +// HelloWorld_OSXTests.m +// HelloWorld_OSXTests +// +// Created by wes on 11/21/14. +// Copyright (c) 2014 Sphero. All rights reserved. +// + +#import +#import + +@interface HelloWorld_OSXTests : XCTestCase + +@end + +@implementation HelloWorld_OSXTests + +- (void)setUp { + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample { + // This is an example of a functional test case. + XCTAssert(YES, @"Pass"); +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git a/samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/Info.plist b/samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/Info.plist new file mode 100644 index 00000000..8f7e1525 --- /dev/null +++ b/samples/OSX/HelloWorld_OSX/HelloWorld_OSXTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.orbotix.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/samples/OptionFlags/OptionFlags.xcodeproj/project.pbxproj b/samples/OptionFlags/OptionFlags.xcodeproj/project.pbxproj index c271daf8..140672ec 100644 --- a/samples/OptionFlags/OptionFlags.xcodeproj/project.pbxproj +++ b/samples/OptionFlags/OptionFlags.xcodeproj/project.pbxproj @@ -18,6 +18,8 @@ DE53D07219771180006E4C0B /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DE53D07119771180006E4C0B /* Default-568h@2x.png */; }; DE9F26221A263766007DFB5C /* RobotKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE9F26201A263766007DFB5C /* RobotKit.framework */; }; DE9F26231A263766007DFB5C /* RobotUIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE9F26211A263766007DFB5C /* RobotUIKit.framework */; }; + EA7AD4951AB21EA10075BCE1 /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = EA7AD4941AB21EA10075BCE1 /* libc++.dylib */; }; + EA7AD4971AB21EA80075BCE1 /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = EA7AD4961AB21EA80075BCE1 /* libstdc++.dylib */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -37,6 +39,8 @@ DE53D07119771180006E4C0B /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; DE9F26201A263766007DFB5C /* RobotKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RobotKit.framework; path = ../_Frameworks_iOS/RobotKit.framework; sourceTree = ""; }; DE9F26211A263766007DFB5C /* RobotUIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RobotUIKit.framework; path = ../_Frameworks_iOS/RobotUIKit.framework; sourceTree = ""; }; + EA7AD4941AB21EA10075BCE1 /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "usr/lib/libc++.dylib"; sourceTree = SDKROOT; }; + EA7AD4961AB21EA80075BCE1 /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -44,6 +48,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + EA7AD4971AB21EA80075BCE1 /* libstdc++.dylib in Frameworks */, + EA7AD4951AB21EA10075BCE1 /* libc++.dylib in Frameworks */, DE9F26221A263766007DFB5C /* RobotKit.framework in Frameworks */, DE9F26231A263766007DFB5C /* RobotUIKit.framework in Frameworks */, 67DA8D6015C85DF0004B3000 /* UIKit.framework in Frameworks */, @@ -76,6 +82,8 @@ 67DA8D5E15C85DF0004B3000 /* Frameworks */ = { isa = PBXGroup; children = ( + EA7AD4961AB21EA80075BCE1 /* libstdc++.dylib */, + EA7AD4941AB21EA10075BCE1 /* libc++.dylib */, DE9F26201A263766007DFB5C /* RobotKit.framework */, DE9F26211A263766007DFB5C /* RobotUIKit.framework */, 67DA8D5F15C85DF0004B3000 /* UIKit.framework */, diff --git a/samples/OptionFlags/OptionFlags.xcodeproj/xcshareddata/xcschemes/OptionFlags.xcscheme b/samples/OptionFlags/OptionFlags.xcodeproj/xcshareddata/xcschemes/OptionFlags.xcscheme index 4220d5c9..9d9951ce 100644 --- a/samples/OptionFlags/OptionFlags.xcodeproj/xcshareddata/xcschemes/OptionFlags.xcscheme +++ b/samples/OptionFlags/OptionFlags.xcodeproj/xcshareddata/xcschemes/OptionFlags.xcscheme @@ -1,6 +1,6 @@ - + - + - + - + - + - + - + - diff --git a/samples/RobotUISample/RobotUISample/RUISampleViewController.m b/samples/RobotUISample/RobotUISample/RUISampleViewController.m index 0206804f..87ad0140 100644 --- a/samples/RobotUISample/RobotUISample/RUISampleViewController.m +++ b/samples/RobotUISample/RobotUISample/RUISampleViewController.m @@ -110,8 +110,7 @@ - (void)handleRobotStateChangeNotification:(RKRobotChangedStateNotification*)n { self.robot = nil; [RKRobotDiscoveryAgent startDiscovery]; break; - case RKRobotFailedConnect: - // edge case - handle as you will. + default: break; } } diff --git a/samples/SelfLevel/SelfLevel.xcodeproj/xcshareddata/xcschemes/SelfLevel.xcscheme b/samples/SelfLevel/SelfLevel.xcodeproj/xcshareddata/xcschemes/SelfLevel.xcscheme index 67b83a99..e21c4f4b 100644 --- a/samples/SelfLevel/SelfLevel.xcodeproj/xcshareddata/xcschemes/SelfLevel.xcscheme +++ b/samples/SelfLevel/SelfLevel.xcodeproj/xcshareddata/xcschemes/SelfLevel.xcscheme @@ -1,6 +1,6 @@ - + - + - + - + - + - + - + - + + +/*! + * @brief Instances of the class contain the data for level 1 diagnostics. + * + * The level 1 diagnostic data is a human readable string of data that is returned asynchronously + * after issuing a RKLevel1DiagnosticCommand. + * + * @sa RKLevel1DiagnosticCommand + */ +@interface FWLevel1DiagnosticAsyncData : RKAsyncMessage + +/*! A human readable string of the diagnostic data. */ +@property (nonatomic, readonly) NSString *diagString; + +@end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticCommand.h new file mode 100644 index 00000000..83f65005 --- /dev/null +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticCommand.h @@ -0,0 +1,34 @@ +// +// RKLevel1DiagnosticCommand.h +// RobotKit +// +// Created by Jon Carroll on 10/14/11. +// Copyright (c) 2011 Orbotix Inc. All rights reserved. +// + +/*! @file */ + +#import +#import + +/*! + * @brief Class that encapsulates a request for the robot's level 1 diagnostics. + * + * This is a developers-only command to help diagnose aberrant behavior. Upon receipt, active + * stabilization is inhibited, all in-process command(macro, helper app, etc.) are terminated + * and a special diagnostic program is executed upon the sensor system. There are two responses + * to this command: a Simple Response followed by an async stream message containing the + * results of the diagnostic tests. To allow flexibility, the results are sent as a long, + * human-readable text string. After this command has completed it is up to the developer to + * move Sphero from its idle, mindless state into something more useful. + * + * This is a simple command that requires no parameters. + * + * @sa RKLevel1DiagnosticResponse + */ + +@interface FWLevel1DiagnosticCommand : RKDeviceCommand + ++(id) command; + +@end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticResponse.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticResponse.h new file mode 100644 index 00000000..9c38e30c --- /dev/null +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/FWLevel1DiagnosticResponse.h @@ -0,0 +1,25 @@ +// +// RKLevel1DiagnosticResponse.h +// RobotKit +// +// Created by Jon Carroll on 10/14/11. +// Copyright (c) 2011 Orbotix Inc. All rights reserved. +// + +/*! @file */ + +#import + +/*! + * @brief Class that encapsulates the response from a level 1 diagnostic command. + * + * A simple response that provides the error code from a level 1 diagnostic command. + * The level 1 diagnostic data is returned in an asynchronous data packet as human readable + * ASCII string. + * + * @sa RKLevel1DiagnosticCommand + * @sa RKLevel1DiagnosticAsyncData + */ +@interface FWLevel1DiagnosticResponse : RKDeviceResponse + +@end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKBackLEDOutputCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKBackLEDOutputCommand.h index c8f4e16b..57400a89 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKBackLEDOutputCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKBackLEDOutputCommand.h @@ -32,8 +32,8 @@ * @param brightness The brightness value between 0.0 to 1.0 where 0.0 is off and 1.0 is full brightness. * @return The initialized object. */ -- (id) initWithBrightness:(float) brightness; +- (instancetype) initWithBrightness:(float) brightness; -+ (id) commandWithBrightness:(float) brightness; ++ (instancetype) commandWithBrightness:(float) brightness; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKByteCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKByteCommand.h index 78c62658..fed94575 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKByteCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKByteCommand.h @@ -24,6 +24,6 @@ * @param packet the properly formatted raw bytes of a Sphero command. * @return The initialized object. */ -- (id) initWithPacket:(NSData*) packet; +- (instancetype) initWithPacket:(NSData*) packet; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateCommand.h index 379bb573..97f608fa 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateCommand.h @@ -35,6 +35,6 @@ __deprecated_msg("replaced by RKSetHeadingCommand") * when setting the new 0° point. The value is in degrees. * @return The initialized object. */ -- (id) initWithHeading:(float) heading; +- (instancetype) initWithHeading:(float) heading; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateResponse.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateResponse.h index 40b53d7f..3d198bdb 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateResponse.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKCalibrateResponse.h @@ -23,7 +23,8 @@ * @deprecated Replacd by @sa RKSetHeadingResponse */ -@interface RKCalibrateResponse : RKDeviceResponse { +__deprecated_msg("Use RKSetHeadingResponse") +@interface RKCalibrateResponse : RKDeviceResponse { } diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureCollisionDetectionCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureCollisionDetectionCommand.h index ce0ee6de..c97d6666 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureCollisionDetectionCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureCollisionDetectionCommand.h @@ -53,12 +53,12 @@ typedef NS_ENUM(uint8_t, RKCollisionDetectionMethod ){ * * @deprecated initializer contains bug where it sends swapped values of yThreshold and xThresholdSpeed to Sphero */ -- (id) initForMethod:(RKCollisionDetectionMethod) method +- (instancetype) initForMethod:(RKCollisionDetectionMethod) method xThreshold:(uint8_t) theXThreshold yThreshold:(uint8_t) theYThreshold xSpeedThreshold:(uint8_t) theXSpeedThreshold ySpeedThreshold:(uint8_t) theYSpeedThreshold - postTimeDeadZone:(NSTimeInterval) deadZone; + postTimeDeadZone:(NSTimeInterval) deadZone __deprecated_msg("Use -[RKConfigureCollisionDetectionCommand initForMethod:xThreshold:xSpeedThreshold:yThreshold:ySpeedThreshold:postTimeDeadZone:]"); /** * Initializer to set the parameters used to configure the collision detection algorithm. @@ -75,7 +75,7 @@ typedef NS_ENUM(uint8_t, RKCollisionDetectionMethod ){ * @param deadZone A value in seconds that indicates a time to wait after detecting an impact before watching * for the next collision. */ -- (id) initForMethod:(RKCollisionDetectionMethod) method +- (instancetype) initForMethod:(RKCollisionDetectionMethod) method xThreshold:(uint8_t) theXThreshold xSpeedThreshold:(uint8_t) theXSpeedThreshold yThreshold:(uint8_t) theYThreshold diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureLocatorCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureLocatorCommand.h index 03b22f5a..fcb22962 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureLocatorCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKConfigureLocatorCommand.h @@ -68,6 +68,6 @@ typedef NS_ENUM(uint8_t, RKConfigureLocatorFlag) { * with Sphero’s heading coordinate system. When this parameter is set to zero, it means that having * yaw = 0 corresponds to facing down the X- axis in the positive direction. */ -- (id) initForFlag:(RKConfigureLocatorFlag) flag newX:(int16_t) x newY:(int16_t) y newYaw:(int16_t) yaw; +- (instancetype) initForFlag:(RKConfigureLocatorFlag) flag newX:(int16_t) x newY:(int16_t) y newYaw:(int16_t) yaw; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDeviceAsyncData.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDeviceAsyncData.h index b7042f49..ba221f34 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDeviceAsyncData.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDeviceAsyncData.h @@ -9,7 +9,7 @@ #import #import "RKAsyncMessage.h" -__attribute__((deprecated)) // replaced with RKAsyncMessage +__deprecated_msg("Replaced with RKAsyncMessage.") // replaced with RKAsyncMessage @interface RKDeviceAsyncData : RKAsyncMessage diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDiscoveryAgent.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDiscoveryAgent.h index 5de623e9..8527841f 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDiscoveryAgent.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKDiscoveryAgent.h @@ -12,6 +12,7 @@ typedef void (^RKRobotConnectBlock)(id robot); @protocol RKDiscoveryAgent +(BOOL) startDiscovery; ++(BOOL) startDiscoveryAndReturnError:(NSError**) err; +(void) stopDiscovery; diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetBluetoothInfoCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetBluetoothInfoCommand.h index c1f5ae00..f7afcf52 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetBluetoothInfoCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetBluetoothInfoCommand.h @@ -19,6 +19,6 @@ */ @interface RKGetBluetoothInfoCommand : RKDeviceCommand -+(id) command; ++(instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetChassisIdCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetChassisIdCommand.h index 024b6de2..4637e175 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetChassisIdCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetChassisIdCommand.h @@ -6,6 +6,6 @@ @interface RKGetChassisIdCommand : RKDeviceCommand -+(id) command; ++(instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetDeviceModeCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetDeviceModeCommand.h index b19af9d0..cfc55047 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetDeviceModeCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetDeviceModeCommand.h @@ -14,6 +14,6 @@ */ @interface RKGetDeviceModeCommand : RKDeviceCommand -+(id) command; ++(instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetPowerStateCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetPowerStateCommand.h index 6816763a..d8679321 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetPowerStateCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetPowerStateCommand.h @@ -17,6 +17,6 @@ */ @interface RKGetPowerStateCommand : RKDeviceCommand -+(id) command; ++(instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuCommand.h new file mode 100644 index 00000000..778155c8 --- /dev/null +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuCommand.h @@ -0,0 +1,15 @@ +// +// RKGetSkuCommand.h +// RobotCommandKit +// +// Created by wes on 2/5/15. +// Copyright (c) 2015 Orbotix Inc. All rights reserved. +// + +#import + +@interface RKGetSkuCommand : RKDeviceCommand + ++ (id) command; + +@end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuResponse.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuResponse.h new file mode 100644 index 00000000..32d5cedb --- /dev/null +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGetSkuResponse.h @@ -0,0 +1,15 @@ +// +// RKGetSkuResponse.h +// RobotCommandKit +// +// Created by wes on 2/5/15. +// Copyright (c) 2015 Orbotix Inc. All rights reserved. +// + +#import + +@interface RKGetSkuResponse : RKDeviceResponse + +@property (strong, readonly) NSString* sku; + +@end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGoToSleepCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGoToSleepCommand.h index df8aed7b..8d299970 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGoToSleepCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKGoToSleepCommand.h @@ -11,6 +11,17 @@ #import "RKDeviceCommand.h" +/*! + * Types of sleep + * CAUTION: THESE VALUES NEED TO MATCH UNITY OR SLEEP WILL BREAK + */ +typedef NS_ENUM(uint8_t, RKSleepType) { + RKSleep = 0x00, // regular sleep - robot advertises at high rate with + RKSleepDeep = 0x01, + RKSleepLowPower = 0x02, + RKSleepNoMore = 0x03 +}; + /*! Type to represent the sleep time interval in seconds */ typedef uint16_t RKSleepTimeInterval; @@ -40,16 +51,16 @@ typedef uint16_t RKSleepTimeInterval; * @param identifier A system macro id to run upon awaking. This has no effect if the time * interval is set to 0. */ -- (id) initWithWakeUpTimeInterval:(RKSleepTimeInterval) interval macroId:(uint8_t) identifier; +- (instancetype) initWithWakeUpTimeInterval:(RKSleepTimeInterval) interval macroId:(uint8_t) identifier; -- (id) initWithWakeUpTimeInterval:(RKSleepTimeInterval) interval orbbasic:(uint16_t) lineNumber; +- (instancetype) initWithWakeUpTimeInterval:(RKSleepTimeInterval) interval orbbasic:(uint16_t) lineNumber; -+ (id) commandWithWakeUpTimeInterval:(RKSleepTimeInterval) interval macroId:(uint8_t) identifier; ++ (instancetype) commandWithWakeUpTimeInterval:(RKSleepTimeInterval) interval macroId:(uint8_t) identifier; -+ (id) commandWithWakeUpTimeInterval:(RKSleepTimeInterval) interval orbbasic:(uint16_t) lineNumber; ++ (instancetype) commandWithWakeUpTimeInterval:(RKSleepTimeInterval) interval orbbasic:(uint16_t) lineNumber; -+ (id) command; ++ (instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToBootloaderCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToBootloaderCommand.h index f88fd9e1..578cbe36 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToBootloaderCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToBootloaderCommand.h @@ -21,6 +21,6 @@ */ @interface RKJumpToBootloaderCommand : RKDeviceCommand -+(id) command; ++(instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToMainAppCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToMainAppCommand.h index 7438d423..16b25221 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToMainAppCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKJumpToMainAppCommand.h @@ -28,6 +28,6 @@ @interface RKJumpToMainAppCommand : RKDeviceCommand -+(id) command; ++(instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKLinkDelegate.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKLinkDelegate.h index 62466429..2d001e37 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKLinkDelegate.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKLinkDelegate.h @@ -7,6 +7,7 @@ @protocol RKLinkDelegate -(void) didConnect; +-(void) didWake; -(void) didDisconnect; -(void) didUpdateRssi; diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKPingCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKPingCommand.h index 621ccde7..e2636cf5 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKPingCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKPingCommand.h @@ -17,6 +17,6 @@ */ @interface RKPingCommand : RKDeviceCommand -+ (id) command; ++ (instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRGBLEDOutputCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRGBLEDOutputCommand.h index f8d62313..f4499f1d 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRGBLEDOutputCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRGBLEDOutputCommand.h @@ -49,9 +49,9 @@ * full brightness. * @return The initialized object. */ -- (id) initWithRed:(float) red green:(float) green blue:(float) blue; -+ (id) commandWithRed:(float) red green:(float) green blue:(float) blue; -+ (id) commandWithSpheroBlue; +- (instancetype) initWithRed:(float) red green:(float) green blue:(float) blue; ++ (instancetype) commandWithRed:(float) red green:(float) green blue:(float) blue; ++ (instancetype) commandWithSpheroBlue; /*! * Initializer for the object. @@ -65,6 +65,6 @@ * when Sphero first connects and is set when client code closes the connection. * @return The initialized object. */ -- (id) initWithRed:(float) red green:(float) green blue:(float) blue userDefault:(BOOL) defaultState; +- (instancetype) initWithRed:(float) red green:(float) green blue:(float) blue userDefault:(BOOL) defaultState; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRawMotorValuesCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRawMotorValuesCommand.h index 1ff1aab6..68eeacb0 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRawMotorValuesCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRawMotorValuesCommand.h @@ -50,10 +50,10 @@ typedef uint8_t RKRawMotorPower; * @param rightPower A value from 0 to 255 for the power to applied to the motor. * @return Initialized object. */ -- (id) initWithLeftMode:(RKRawMotorMode) leftMode leftPower:(RKRawMotorPower) leftPower +- (instancetype) initWithLeftMode:(RKRawMotorMode) leftMode leftPower:(RKRawMotorPower) leftPower rightMode:(RKRawMotorMode) rightMode rightPower:(RKRawMotorPower) rightPower; -+ (id) commandWithLeftMode:(RKRawMotorMode) leftMode leftPower:(RKRawMotorPower) leftPower ++ (instancetype) commandWithLeftMode:(RKRawMotorMode) leftMode leftPower:(RKRawMotorPower) leftPower rightMode:(RKRawMotorMode) rightMode rightPower:(RKRawMotorPower) rightPower; diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotBase.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotBase.h index dfdf0770..10bd98c4 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotBase.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotBase.h @@ -8,6 +8,7 @@ #import "RKDeviceResponse.h" #import "RKDeviceAsyncData.h" #import "RKVersioningResponse.h" +#import "RKGoToSleepCommand.h" typedef void (^RKDeviceResponseBlock)(RKDeviceResponse* response); @@ -33,8 +34,12 @@ typedef void (^RKDeviceResponseBlock)(RKDeviceResponse* response); -(BOOL) isConnected; +-(BOOL) isOnline; + /*! default sleep mode for a robot. BTLE robots sleep is different from Classic Robots. */ -(void) sleep; +-(void) sleep:(RKSleepType)type; + /*! request this robot disconnect */ -(void) disconnect; diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotNotification.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotNotification.h index 5d90a4f7..42bb4360 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotNotification.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRobotNotification.h @@ -40,7 +40,7 @@ typedef NS_ENUM(uint8_t, RKRobotChangedStateNotificationType) { RKRobotFailedConnect = 90 }; - +/*! Used to notify that a Robot is within range and connectable. */ @interface RKRobotAvailableNotification : RKRobotNotification @property (strong,nonatomic) NSArray* robots; @@ -57,4 +57,6 @@ typedef NS_ENUM(uint8_t, RKRobotChangedStateNotificationType) { +(id) notificationWithRobot:(id) robot andType:(RKRobotChangedStateNotificationType) type; +-(NSString*) typeString; + @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRollCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRollCommand.h index 20c39a92..51474209 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRollCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRollCommand.h @@ -10,8 +10,10 @@ typedef NS_ENUM(NSInteger, RKRollType) { RKRollStop = 0, + /*! arc drive - standard drive mode */ RKRoll = 1, - RKRollCalibrate = 2 + /*! rotate to requested heading then drive */ + RKRollCalibrate = 2 }; @@ -29,6 +31,9 @@ typedef NS_ENUM(NSInteger, RKRollType) { /*! The new velocity for the robot. */ @property ( nonatomic, readonly ) float velocity; /*! Indicates if this command will stop the robot. */ + +@property ( nonatomic, strong, readonly ) NSNumber* distanceInCm; + @property ( nonatomic, assign ) RKRollType type; @property ( readwrite) bool reverse; @@ -41,15 +46,20 @@ typedef NS_ENUM(NSInteger, RKRollType) { * to travel at. * @return The initialized instance. */ -- (id) initWithHeading:(float) heading velocity:(float) velocity; +- (instancetype) initWithHeading:(float) heading velocity:(float) velocity; + +/*! @availability in Sphero FW revision ?.?? (blocked on fw) */ +- (instancetype) initWithHeading:(float)heading velocity:(float)velocity andDistance:(float) distance; + +- (instancetype) initAsCalibrateWithHeading:(float) heading; -- (id) initAsCalibrateWithHeading:(float) heading; +-(instancetype) initWithByteCommand:(RKByteCommand*) bCommand; --(id) initWithByteCommand:(RKByteCommand*) bCommand; ++(instancetype) commandWithHeading:(float) heading andVelocity:(float) velocity; -+(id) commandWithHeading:(float) heading andVelocity:(float) velocity; ++(instancetype) commandWithHeading:(float) heading velocity:(float) velocity andDistance:(float) distance; -+(id) commandWithStopAtHeading:(float) heading; ++(instancetype) commandWithStopAtHeading:(float) heading; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRotationRateCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRotationRateCommand.h index 09d78eff..b8d03bff 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRotationRateCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKRotationRateCommand.h @@ -32,6 +32,6 @@ * range. * @return The initialized object. */ -- (id) initWithRate:(float) rate; +- (instancetype) initWithRate:(float) rate; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSelfLevelCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSelfLevelCommand.h index 5042bc24..81c4a628 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSelfLevelCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSelfLevelCommand.h @@ -63,7 +63,7 @@ typedef NS_ENUM(uint8_t, RKSelfLevelCommandOptions) { /* * Initializer to set up the self level command with custom parameters */ -- (id) initWithOptions:(RKSelfLevelCommandOptions) options +- (instancetype) initWithOptions:(RKSelfLevelCommandOptions) options angleLimit:(uint8_t) angleLimit timeout:(uint8_t) timeout accuracy:(uint8_t) accuracy; diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSession.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSession.h index a53bfc0d..95b06734 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSession.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSession.h @@ -32,6 +32,7 @@ -(void) processRawData:(NSData*) rawBytesFromConnectedDevice; ++ (void)setMaxNativeSequenceNumber:(uint8_t)sequenceNumber; -(NSData*) packetForCommand:(RKDeviceCommand*) command withACK:(BOOL) ack; -(NSData*) packetForCommand:(RKDeviceCommand*) command; diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetAutoReconnectCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetAutoReconnectCommand.h index 2ae35303..4b3ff483 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetAutoReconnectCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetAutoReconnectCommand.h @@ -42,6 +42,6 @@ * @param time the length of time, in seconds, that passes after Sphero is shaken awake * before it attempts to auto reconnect */ -- (id) initWithEnableFlag:(BOOL) flag StartTime:(uint8_t) time; +- (instancetype) initWithEnableFlag:(BOOL) flag StartTime:(uint8_t) time; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetBluetoothNameCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetBluetoothNameCommand.h index 95ef9490..d9721053 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetBluetoothNameCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetBluetoothNameCommand.h @@ -31,6 +31,6 @@ * @param name A localized name to store on the robot. * @return The initialized object, otherwise nil if initialization failed. */ -- (id) initWithName:(NSString *) name; +- (instancetype) initWithName:(NSString *) name; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetDataStreamingCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetDataStreamingCommand.h index cbc5ed26..cb073391 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetDataStreamingCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetDataStreamingCommand.h @@ -132,12 +132,12 @@ typedef NS_ENUM(uint64_t, RKDataStreamingMask) { /*! * Initializer to set up the command. */ -- (id) initWithSampleRateDivisor:(uint16_t) divisor +- (instancetype) initWithSampleRateDivisor:(uint16_t) divisor packetFrames:(uint16_t) frames sensorMask:(RKDataStreamingMask) mask packetCount:(uint8_t) count; -+(id) commandWithStop; -+(id) commandWithRate:(int)hz andMask:(RKDataStreamingMask) mask; ++(instancetype) commandWithStop; ++(instancetype) commandWithRate:(int)hz andMask:(RKDataStreamingMask) mask; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetFactoryDeviceModeCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetFactoryDeviceModeCommand.h index 402a2d0b..d7c2fc96 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetFactoryDeviceModeCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetFactoryDeviceModeCommand.h @@ -27,6 +27,6 @@ * Initiazer that sets the mode for the robot. * @param deviceMode The mode to set for the robot. */ -- (id) initToSetFactoryDeviceMode:(BOOL) factoryDeviceMode password:(UInt32)pass; +- (instancetype) initToSetFactoryDeviceMode:(BOOL) factoryDeviceMode password:(UInt32)pass; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetHeadingCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetHeadingCommand.h index 4ef6c0bc..74511f5b 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetHeadingCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetHeadingCommand.h @@ -35,10 +35,10 @@ * when setting the new 0° point. The value is in degrees. * @return The initialized object. */ -- (id) initWithHeading:(float) heading; +- (instancetype) initWithHeading:(float) heading; -+ (id) commandWithHeading:(float) heading; ++ (instancetype) commandWithHeading:(float) heading; -+ (id) command; ++ (instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetInactivityTimeoutCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetInactivityTimeoutCommand.h index e1e5d868..dbc3c26d 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetInactivityTimeoutCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetInactivityTimeoutCommand.h @@ -35,6 +35,6 @@ /* * Initializer to set up the set inactivity timeout command with a custom parameter */ -- (id) initWithInactivityTimeout:(uint16_t) timeout; +- (instancetype) initWithInactivityTimeout:(uint16_t) timeout; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetMotionTimeoutCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetMotionTimeoutCommand.h index 9e4c3db6..6abe1586 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetMotionTimeoutCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetMotionTimeoutCommand.h @@ -39,6 +39,6 @@ * This value defaults to 2000 ms * @return The initialized object. */ -- (id) initWithTime:(uint16_t) time; +- (instancetype) initWithTime:(uint16_t) time; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetNonPersistentOptionFlagsCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetNonPersistentOptionFlagsCommand.h index 11b2adef..50496eed 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetNonPersistentOptionFlagsCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetNonPersistentOptionFlagsCommand.h @@ -45,7 +45,7 @@ typedef NS_ENUM(uint32_t, RKGetNonPersistentOptionFlagsMask) { * * @param optionFlags A long value in that represents the option flags */ -- (id) initWithOptionFlags:(uint32_t) flags; -+ (id) commandWithFlags:(uint32_t) flags; +- (instancetype) initWithOptionFlags:(uint32_t) flags; ++ (instancetype) commandWithFlags:(uint32_t) flags; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetOptionFlagsCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetOptionFlagsCommand.h index bdd1ecf2..9dd18031 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetOptionFlagsCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetOptionFlagsCommand.h @@ -64,7 +64,7 @@ typedef NS_ENUM(uint32_t, RKGetOptionFlagsMask) { * * @param optionFlags A long value in that represents the option flags */ -- (id) initWithOptionFlags:(uint32_t) flags; -+ (id) commandWithFlags:(uint32_t) flags; +- (instancetype) initWithOptionFlags:(uint32_t) flags; ++ (instancetype) commandWithFlags:(uint32_t) flags; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPIDCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPIDCommand.h index 2e6678df..b382e834 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPIDCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPIDCommand.h @@ -16,6 +16,6 @@ typedef NS_ENUM(Byte, RKAxis){ @interface RKSetPIDCommand : RKDeviceCommand --(id) initWithAxis:(RKAxis) axis andP:(NSNumber*) p andI:(NSNumber*)i andD:(NSNumber*)d; +-(instancetype) initWithAxis:(RKAxis) axis andP:(NSNumber*) p andI:(NSNumber*)i andD:(NSNumber*)d; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPowerNotificationCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPowerNotificationCommand.h index 45522686..cf9833a1 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPowerNotificationCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetPowerNotificationCommand.h @@ -35,8 +35,8 @@ * turn off power state notifications. * @return An initialized RKSetPowerNotificationCommand object. */ -- (id) initWithState:(BOOL) notificationState; +- (instancetype) initWithState:(BOOL) notificationState; -+ (id) commandWithState:(bool) notificationStateEnabled; ++ (instancetype) commandWithState:(bool) notificationStateEnabled; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetUserHackModeCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetUserHackModeCommand.h index d81fee98..4aef032f 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetUserHackModeCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKSetUserHackModeCommand.h @@ -26,9 +26,9 @@ * Initiazer that sets the mode for the robot. * @param deviceMode The mode to set for the robot. */ -- (id) initToSetUserHackMode:(BOOL) userHackMode; +- (instancetype) initToSetUserHackMode:(BOOL) userHackMode; -+(id) commandWithUserHackMode; -+(id) commandWithNormalMode; ++(instancetype) commandWithUserHackMode; ++(instancetype) commandWithNormalMode; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKStabilizationCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKStabilizationCommand.h index bbac1e1e..dc64aa8d 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKStabilizationCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKStabilizationCommand.h @@ -42,8 +42,8 @@ typedef NS_ENUM(uint8_t, RKStabilizationState) { * @param state The new state for the control system stabilization. * @return The initialized object. */ -- (id) initWithState:(RKStabilizationState) state; +- (instancetype) initWithState:(RKStabilizationState) state; -+ (id) commandWithState:(RKStabilizationState) state; ++ (instancetype) commandWithState:(RKStabilizationState) state; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningCommand.h index a4075703..be76682e 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningCommand.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningCommand.h @@ -25,6 +25,6 @@ */ @interface RKVersioningCommand : RKDeviceCommand -+(id) command; ++(instancetype) command; @end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningResponse.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningResponse.h index 7d31f925..2d330287 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningResponse.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKVersioningResponse.h @@ -10,12 +10,13 @@ typedef NS_ENUM( uint8_t, RKRobotModel ){ - SpheroS1 = 0, - SpheroS11 = 1, - SpheroS2 = 2, - SpheroS3 = 3, - Unknown4 = 4, - Ollie01 = 10 + SpheroS1 = 0, + SpheroS11 = 1, + SpheroS2 = 2, + SpheroS3 = 3, + Unknown4 = 4, + Ollie01 = 10, + Ray01 = 30 }; diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageCommand.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageCommand.h new file mode 100644 index 00000000..06382241 --- /dev/null +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageCommand.h @@ -0,0 +1,15 @@ +// +// Copyright (c) 2015 Orbotix Inc. All rights reserved. +// + +#import + +@interface RKWritePersistentPageCommand : RKDeviceCommand + ++ (instancetype)new NS_UNAVAILABLE; ++ (instancetype)commandWithPage:(NSData *)page andBlockId:(ushort)blockId; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithPage:(NSData *)page andBlockId:(ushort)blockId; + +@end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageResponse.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageResponse.h new file mode 100644 index 00000000..8b6bbd9a --- /dev/null +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RKWritePersistentPageResponse.h @@ -0,0 +1,13 @@ +// +// RKWritePersistentPageResponse.h +// RobotCommandKit +// +// Created by Hunter Lang on 3/16/15. +// Copyright (c) 2015 Orbotix Inc. All rights reserved. +// + +#import + +@interface RKWritePersistentPageResponse : RKDeviceResponse + +@end diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RobotCommandKit.h b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RobotCommandKit.h index 3ea0415d..18d3ac2a 100644 --- a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RobotCommandKit.h +++ b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Headers/RobotCommandKit.h @@ -68,6 +68,8 @@ #import "RKSetFactoryDeviceModeCommand.h" #import "RKRollCommand.h" #import "RKSetPIDCommand.h" +#import "RKGetSkuCommand.h" +#import "FWLevel1DiagnosticCommand.h" #pragma mark - LEDS #import "RKGetUserRGBLEDColorCommand.h" @@ -117,6 +119,8 @@ #import "RKGetNonPersistentOptionFlagsResponse.h" #import "RKSetFactoryDeviceModeResponse.h" #import "RKGetChassisIdResponse.h" +#import "RKGetSkuResponse.h" +#import "FWLevel1DiagnosticResponse.h" #pragma mark - Async Data #import "RKCollisionDetectedAsyncData.h" @@ -131,6 +135,7 @@ #import "RKLocatorData.h" #import "RKQuaternionData.h" #import "RKPowerNotificationAsyncData.h" +#import "FWLevel1DiagnosticAsyncData.h" #pragma mark - Async - new naming convention #import "RKSleepWillOccurMessage.h" diff --git a/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Info.plist b/samples/_Frameworks_iOS/RobotKit.framework/Frameworks/RobotCommandKit.framework/Info.plist index 8675fddbbb307a6d8066994dda75eb00ac95294a..a7b2a307625f9f6fe3c09ebc17ec22a79837c9b6 100644 GIT binary patch delta 71 zcmcb^dYg5_7DhEAgXqkHjQqUR{9+3|qcB4w7gGa^aM!%_oXp~kK*KOY6Bl!%%*nSH b8#s)@%$yC44O1s4Ges~aP2R&K&zKGXTsjt! delta 72 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