99 lines
2.4 KiB
Objective-C
99 lines
2.4 KiB
Objective-C
//
|
|
// ReferenceManager.m
|
|
// react-native-bt-device
|
|
//
|
|
// Created by Ran Zhao on 9/2/24.
|
|
//
|
|
|
|
#import "ReferenceManager.h"
|
|
|
|
@implementation ReferenceManager
|
|
|
|
- (instancetype)init {
|
|
self = [super init];
|
|
if (self) {
|
|
self.refList = [NSMutableArray array];
|
|
self.curReference = nil;
|
|
self.mCurrentReference = nil;
|
|
self.kCount = -1;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (Reference *)getRefValue {
|
|
return self.curReference;
|
|
}
|
|
|
|
- (void)addCurrentReference:(double)value index:(NSInteger)index {
|
|
self.mCurrentReference = [[Reference alloc] initWithValue:value index:index];
|
|
}
|
|
|
|
- (void)addReference:(double)value time:(NSDate *)time {
|
|
Reference *ref = [[Reference alloc] initWithValue:value time:time];
|
|
if (![self isExist:ref]) {
|
|
[self.refList addObject:ref];
|
|
}
|
|
[self.refList sortUsingComparator:^NSComparisonResult(Reference *lhs, Reference *rhs) {
|
|
return [lhs.time compare:rhs.time];
|
|
}];
|
|
}
|
|
|
|
- (BOOL)isExist:(Reference *)bgRef {
|
|
for (Reference *bg in self.refList) {
|
|
if ([bg.time timeIntervalSince1970] == [bgRef.time timeIntervalSince1970]) {
|
|
return YES;
|
|
}
|
|
}
|
|
return NO;
|
|
}
|
|
|
|
- (BOOL)isCalK {
|
|
return self.kCount == 0;
|
|
}
|
|
|
|
- (BOOL)isWaitCalK {
|
|
return self.kCount == 2 || self.kCount == 1;
|
|
}
|
|
|
|
- (Reference *)findReferenceByDate:(NSDate *)curTime {
|
|
for (Reference *d in self.refList) {
|
|
double interval = ([curTime timeIntervalSince1970] - [d.time timeIntervalSince1970]) / 60.0;
|
|
if (interval <= 0.0) {
|
|
self.kCount -= 1;
|
|
return nil;
|
|
}
|
|
if (interval <= 3.0) {
|
|
self.kCount = 2;
|
|
self.curReference = d;
|
|
return d;
|
|
}
|
|
}
|
|
self.kCount -= 1;
|
|
return nil;
|
|
}
|
|
|
|
- (Reference *)findReferenceByIndex:(NSInteger)index {
|
|
double interval = (index - self.mCurrentReference.index) * 3;
|
|
if (interval < 0.0) {
|
|
self.kCount -= 1;
|
|
return nil;
|
|
}
|
|
if (interval <= 3.0) {
|
|
self.kCount = 2;
|
|
self.curReference = self.mCurrentReference;
|
|
return self.mCurrentReference;
|
|
}
|
|
self.kCount -= 1;
|
|
return nil;
|
|
}
|
|
|
|
+ (NSDate *)stringToDate:(NSString *)dateStr {
|
|
NSString *formatStr = @"yyyy/MM/dd HH:mm:ss";
|
|
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
|
|
[formatter setDateFormat:formatStr];
|
|
NSDate *date = [formatter dateFromString:dateStr];
|
|
return date;
|
|
}
|
|
|
|
@end
|