Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix some RemoteControlCapabilities parameters having the wrong type #1444

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
30 changes: 26 additions & 4 deletions SmartDeviceLink/SDLRemoteControlCapabilities.m
Expand Up @@ -80,19 +80,41 @@ - (void)setAudioControlCapabilities:(nullable NSArray<SDLAudioControlCapabilitie
}

- (void)setHmiSettingsControlCapabilities:(nullable NSArray<SDLHMISettingsControlCapabilities *> *)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<SDLHMISettingsControlCapabilities *> *)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<SDLLightControlCapabilities *> *)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<SDLLightControlCapabilities *> *)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
Expand Down