From dbdff6cb319fbb1d6e56f3c55f24ce85adf29e8c Mon Sep 17 00:00:00 2001 From: Joel Fischer Date: Tue, 15 Oct 2019 16:58:40 -0400 Subject: [PATCH] Fix errors in getting `RemoteControlCapabilities` parameters * Fix type of `lightControlCapabilities` and `hmiSettingsControlCapabilities` by wrapping in an array --- .../SDLRemoteControlCapabilities.m | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/SmartDeviceLink/SDLRemoteControlCapabilities.m b/SmartDeviceLink/SDLRemoteControlCapabilities.m index 80a1b3f4e..47b747aec 100644 --- a/SmartDeviceLink/SDLRemoteControlCapabilities.m +++ b/SmartDeviceLink/SDLRemoteControlCapabilities.m @@ -80,19 +80,41 @@ - (void)setAudioControlCapabilities:(nullable NSArray *)hmiSettingsControlCapabilities { - [self.store sdl_setObject:hmiSettingsControlCapabilities forName:SDLRPCParameterNameHmiSettingsControlCapabilities]; + // TODO: This parameter should not be an array according to the spec, in a future major version change, this parameter's type should be altered + if (hmiSettingsControlCapabilities.count == 0) { + [self.store sdl_setObject:nil forName:SDLRPCParameterNameHmiSettingsControlCapabilities]; + return; + } + + SDLHMISettingsControlCapabilities *capability = hmiSettingsControlCapabilities.firstObject; + + [self.store sdl_setObject:capability forName:SDLRPCParameterNameHmiSettingsControlCapabilities]; } - (nullable NSArray *)hmiSettingsControlCapabilities { - return [self.store sdl_objectsForName:SDLRPCParameterNameHmiSettingsControlCapabilities ofClass:SDLHMISettingsControlCapabilities.class error:nil]; + SDLHMISettingsControlCapabilities *capability = [self.store sdl_objectForName:SDLRPCParameterNameHmiSettingsControlCapabilities ofClass:SDLHMISettingsControlCapabilities.class error:nil]; + if (capability == nil) { return nil; } + + return @[capability]; } - (void)setLightControlCapabilities:(nullable NSArray *)lightControlCapabilities { - [self.store sdl_setObject:lightControlCapabilities forName:SDLRPCParameterNameLightControlCapabilities]; + // TODO: This parameter should not be an array according to the spec, in a future major version change, this parameter's type should be altered + if (lightControlCapabilities.count == 0) { + [self.store sdl_setObject:nil forName:SDLRPCParameterNameLightControlCapabilities]; + return; + } + + SDLLightControlCapabilities *capability = lightControlCapabilities.firstObject; + + [self.store sdl_setObject:capability forName:SDLRPCParameterNameLightControlCapabilities]; } - (nullable NSArray *)lightControlCapabilities { - return [self.store sdl_objectsForName:SDLRPCParameterNameLightControlCapabilities ofClass:SDLLightControlCapabilities.class error:nil]; + SDLLightControlCapabilities *capability = [self.store sdl_objectForName:SDLRPCParameterNameLightControlCapabilities ofClass:SDLLightControlCapabilities.class error:nil]; + if (capability == nil) { return nil; } + + return @[capability]; } @end