58 lines
1.9 KiB
Objective-C
58 lines
1.9 KiB
Objective-C
//
|
|
// EQNRilevamento.m
|
|
// Earthquake Network
|
|
//
|
|
// Created by Luca Beretta on 19/09/18.
|
|
// Copyright © 2018 Luca Beretta. All rights reserved.
|
|
//
|
|
|
|
#import "EQNRilevamento.h"
|
|
#import <CoreMotion/CoreMotion.h>
|
|
#import "EQNMath.h"
|
|
#import "EQNAccelerometroManager.h"
|
|
|
|
@implementation EQNRilevamento
|
|
|
|
#pragma mark - Init
|
|
|
|
- (instancetype)initWithMedia:(float)media deviazione:(float)deviazione maxAssoluto:(float)maxAssoluto rilievo:(EQNRilevamentoSoglia)rilievo timestamp:(NSDate *)timestamp
|
|
{
|
|
self = [super init];
|
|
if (self) {
|
|
self.media = media;
|
|
self.deviazione = deviazione;
|
|
self.maxAssoluto = maxAssoluto;
|
|
self.rilievo = rilievo;
|
|
self.timestamp = timestamp;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
#pragma mark - Public
|
|
|
|
+ (void)startRilevamentoWithCalibrazione:(EQNCalibrazione *)cal result:(calibrationCompletion)rilevamento
|
|
{
|
|
if (!cal) {
|
|
rilevamento(nil);
|
|
return;
|
|
}
|
|
|
|
[EQNAccelerometroManager avviaLetturaAccellerometroIsCalibrazione:NO withCompletion:^(NSArray *dati) {
|
|
float media = [[EQNMath meanOf:dati] floatValue];
|
|
float deviazione = [[EQNMath standardDeviationOf:dati] floatValue];
|
|
NSDictionary *rDic = [EQNMath rLimiti:dati];
|
|
float max = [rDic[rMax] floatValue] - cal.media;
|
|
float maxAssoluto = fabsf(max);
|
|
EQNRilevamentoSoglia rilievo = (deviazione > SOGLIA_DEVIAZIONE_RILIEVO*cal.deviazione) ? EQNRilevamentoSogliaPositivo : EQNRilevamentoSogliaNegativo;
|
|
|
|
EQNRilevamento *aRilievo = [[EQNRilevamento alloc] initWithMedia:media
|
|
deviazione:deviazione
|
|
maxAssoluto:maxAssoluto
|
|
rilievo:rilievo
|
|
timestamp:[NSDate date]];
|
|
|
|
rilevamento(aRilievo);
|
|
}];
|
|
}
|
|
@end
|