summaryrefslogtreecommitdiff
path: root/SmartDeviceLink/SDLSystemCapability.m
blob: 25f6389120e98008d94e950e4d97d95483dff826 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//
//  SDLSystemCapability.m
//  SmartDeviceLink-iOS
//
//  Created by Joel Fischer on 7/10/17.
//  Copyright © 2017 smartdevicelink. All rights reserved.
//

#import "SDLSystemCapability.h"

#import "NSMutableDictionary+Store.h"
#import "SDLNames.h"
#import "SDLNavigationCapability.h"
#import "SDLPhoneCapability.h"
#import "SDLSystemCapabilityType.h"
#import "SDLVideoStreamingCapability.h"

NS_ASSUME_NONNULL_BEGIN

@implementation SDLSystemCapability

- (instancetype)initWithPhoneCapability:(SDLPhoneCapability *)capability {
    self = [self init];
    if (!self) {
        return nil;
    }

    self.systemCapabilityType = SDLSystemCapabilityTypePhoneCall;
    self.phoneCapability = capability;

    return self;
}

- (instancetype)initWithNavigationCapability:(SDLNavigationCapability *)capability {
    self = [self init];
    if (!self) {
        return nil;
    }

    self.systemCapabilityType = SDLSystemCapabilityTypeNavigation;
    self.navigationCapability = capability;

    return self;
}

- (instancetype)initWithVideoStreamingCapability:(SDLVideoStreamingCapability *)capability {
    self = [self init];
    if (!self) {
        return nil;
    }

    self.systemCapabilityType = SDLSystemCapabilityTypeVideoStreaming;
    self.videoStreamingCapability = capability;

    return self;
}

- (void)setSystemCapabilityType:(SDLSystemCapabilityType)type {
    [store sdl_setObject:type forName:SDLNameSystemCapabilityType];
}

- (SDLSystemCapabilityType)systemCapabilityType {
    return [store sdl_objectForName:SDLNameSystemCapabilityType];
}

// TODO: Nav / Phone Capability

- (void)setNavigationCapability:(nullable SDLNavigationCapability *)navigationCapability {
    [store sdl_setObject:navigationCapability forName:SDLNameNavigationCapability];
}

- (nullable SDLNavigationCapability *)navigationCapability {
    return [store sdl_objectForName:SDLNameNavigationCapability ofClass:SDLNavigationCapability.class];
}

- (void)setPhoneCapability:(nullable SDLPhoneCapability *)phoneCapability {
    [store sdl_setObject:phoneCapability forName:SDLNamePhoneCapability];
}

- (nullable SDLPhoneCapability *)phoneCapability {
    return [store sdl_objectForName:SDLNamePhoneCapability ofClass:SDLPhoneCapability.class];
}

- (void)setVideoStreamingCapability:(nullable SDLVideoStreamingCapability *)videoStreamingCapability {
    [store sdl_setObject:videoStreamingCapability forName:SDLNameVideoStreamingCapability];
}

- (nullable SDLVideoStreamingCapability *)videoStreamingCapability {
    return [store sdl_objectForName:SDLNameVideoStreamingCapability ofClass:SDLVideoStreamingCapability.class];
}

@end

NS_ASSUME_NONNULL_END