1// Copyright © 2018 650 Industries. All rights reserved.
2
3#import "EXSensorsManagerBinding.h"
4
5@interface EXSensorsManagerBinding ()
6
7@property (nonatomic, strong) NSString *scopeKey;
8@property (nonatomic, weak) id<EXSensorsManagerBindingDelegate> kernelService;
9
10@end
11
12@implementation EXSensorsManagerBinding
13
14- (instancetype)initWithScopeKey:(NSString *)scopeKey andKernelService:(id<EXSensorsManagerBindingDelegate>)kernelService
15{
16  if (self = [super init]) {
17    _scopeKey = scopeKey;
18    _kernelService = kernelService;
19  }
20  return self;
21}
22
23- (void)sensorModuleDidSubscribeForAccelerometerUpdates:(id)scopedSensorModule withHandler:(void (^)(NSDictionary *))handlerBlock {
24  [_kernelService sensorModuleDidSubscribeForAccelerometerUpdatesOfExperience:_scopeKey withHandler:handlerBlock];
25}
26
27- (void)sensorModuleDidSubscribeForDeviceMotionUpdates:(id)scopedSensorModule withHandler:(void (^)(NSDictionary *))handlerBlock {
28  [_kernelService sensorModuleDidSubscribeForDeviceMotionUpdatesOfExperience:_scopeKey withHandler:handlerBlock];
29}
30
31- (void)sensorModuleDidSubscribeForGyroscopeUpdates:(id)scopedSensorModule withHandler:(void (^)(NSDictionary *))handlerBlock {
32  [_kernelService sensorModuleDidSubscribeForGyroscopeUpdatesOfExperience:_scopeKey withHandler:handlerBlock];
33}
34
35- (void)sensorModuleDidSubscribeForMagnetometerUncalibratedUpdates:(id)scopedSensorModule withHandler:(void (^)(NSDictionary *))handlerBlock {
36  [_kernelService sensorModuleDidSubscribeForMagnetometerUncalibratedUpdatesOfExperience:_scopeKey withHandler:handlerBlock];
37}
38
39- (void)sensorModuleDidSubscribeForMagnetometerUpdates:(id)scopedSensorModule withHandler:(void (^)(NSDictionary *))handlerBlock {
40  [_kernelService sensorModuleDidSubscribeForMagnetometerUpdatesOfExperience:_scopeKey withHandler:handlerBlock];
41}
42
43- (void)sensorModuleDidSubscribeForBarometerUpdates:(id)scopedSensorModule withHandler:(void (^)(NSDictionary *))handlerBlock {
44  [_kernelService sensorModuleDidSubscribeForBarometerUpdatesOfExperience:_scopeKey withHandler:handlerBlock];
45}
46
47- (void)sensorModuleDidUnsubscribeForAccelerometerUpdates:(id)scopedSensorModule {
48  [_kernelService sensorModuleDidUnsubscribeForAccelerometerUpdatesOfExperience:_scopeKey];
49}
50
51- (void)sensorModuleDidUnsubscribeForDeviceMotionUpdates:(id)scopedSensorModule {
52  [_kernelService sensorModuleDidUnsubscribeForDeviceMotionUpdatesOfExperience:_scopeKey];
53}
54
55- (void)sensorModuleDidUnsubscribeForGyroscopeUpdates:(id)scopedSensorModule {
56  [_kernelService sensorModuleDidUnsubscribeForGyroscopeUpdatesOfExperience:_scopeKey];
57}
58
59- (void)sensorModuleDidUnsubscribeForMagnetometerUncalibratedUpdates:(id)scopedSensorModule {
60  [_kernelService sensorModuleDidUnsubscribeForMagnetometerUncalibratedUpdatesOfExperience:_scopeKey];
61}
62
63- (void)sensorModuleDidUnsubscribeForMagnetometerUpdates:(id)scopedSensorModule {
64  [_kernelService sensorModuleDidUnsubscribeForMagnetometerUpdatesOfExperience:_scopeKey];
65}
66
67- (void)sensorModuleDidUnsubscribeForBarometerUpdates:(id)scopedSensorModule {
68  [_kernelService sensorModuleDidUnsubscribeForBarometerUpdatesOfExperience:_scopeKey];
69}
70
71- (void)setAccelerometerUpdateInterval:(NSTimeInterval)intervalMs {
72  [_kernelService setAccelerometerUpdateInterval:intervalMs];
73}
74
75- (BOOL)isAccelerometerAvailable {
76  return [_kernelService isAccelerometerAvailable];
77}
78
79- (void)setDeviceMotionUpdateInterval:(NSTimeInterval)intervalMs {
80  [_kernelService setDeviceMotionUpdateInterval:intervalMs];
81}
82
83- (float)getGravity {
84  return [_kernelService getGravity];
85}
86
87- (BOOL)isDeviceMotionAvailable {
88  return [_kernelService isDeviceMotionAvailable];
89}
90
91- (void)setGyroscopeUpdateInterval:(NSTimeInterval)intervalMs {
92  [_kernelService setGyroscopeUpdateInterval:intervalMs];
93}
94
95- (BOOL)isGyroAvailable {
96  return [_kernelService isGyroAvailable];
97}
98
99- (void)setMagnetometerUncalibratedUpdateInterval:(NSTimeInterval)intervalMs {
100  [_kernelService setMagnetometerUncalibratedUpdateInterval:intervalMs];
101}
102
103- (BOOL)isMagnetometerUncalibratedAvailable {
104  return [_kernelService isMagnetometerUncalibratedAvailable];
105}
106
107- (void)setMagnetometerUpdateInterval:(NSTimeInterval)intervalMs {
108  [_kernelService setMagnetometerUpdateInterval:intervalMs];
109}
110
111- (BOOL)isMagnetometerAvailable {
112  return [_kernelService isMagnetometerAvailable];
113}
114
115- (void)setBarometerUpdateInterval:(NSTimeInterval)intervalMs {
116  [_kernelService setBarometerUpdateInterval:intervalMs];
117}
118
119- (BOOL)isBarometerAvailable {
120  return [_kernelService isBarometerAvailable];
121}
122
123
124+ (const NSArray<Protocol *> *)exportedInterfaces {
125  return @[@protocol(EXAccelerometerInterface), @protocol(EXBarometerInterface),  @protocol(EXDeviceMotionInterface), @protocol(EXGyroscopeInterface), @protocol(EXMagnetometerInterface), @protocol(EXMagnetometerUncalibratedInterface)];
126}
127
128@end
129