//
//  RotationControl.h
//  制御部
//  X-BASIC'
//
//  Created by AIG-Soft on 2012/09/19.
//  Copyright 2012-2015 AIG-Soft. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreMotion/CoreMotion.h>

@protocol RotationControlStoreData <NSObject>
@required
-(void)rotationControlStoreData:(CMRotationRate *)xyz;
@end

// 						float値
#define SEC_MS			1000.0	// 1秒のms単位
#define	DEF_SAMPLING	100.0	// デフォルトサンプリングレート(ms)

enum { // データ源番号(dno)＝SegSelectDataの選択肢ß
	MOTION_DEGREE	=0,	// 角度
	MOTION_VELOCITY,	// 角速度
	MOTION_ROTATION,	// オイラー角
};
#define MOTION_EULER		MOTION_ROTATION

@interface RotationControl : NSObject
<RotationControlStoreData>
{
	// データ取得
	CMMotionManager		*motionManager;
	NSOperationQueue	*opQueueMotion;
	// 
	NSTimeInterval		interval;		// サンプリング間隔(秒)
	NSUInteger			datasPerSec;	// 1秒間あたりのデータ数
	//
	NSUInteger			counter;		// サンプリングを利用した簡易時間計測カウンター;単位はintervalで、１秒ならdatasPerSecである
}
@property (nonatomic) NSUInteger 	dno;		// データ源番号:MOTION_VELOCITY〜MOTION_DEGREE
@property (nonatomic) BOOL 			fpause;		// サンプリング一時停止フラグ
@property (nonatomic, strong) NSMutableArray	*datas;	// データを格納する配列:各要素はCMRotationRat
@property (nonatomic, weak) id <RotationControlStoreData> dataStore;// Sampling時のデータ記録用デリゲート

-(id)initWithSampling:(NSUInteger)sampling;
-(void)stopRotationControl;
-(void)startSampling;
-(CMRotationRate)getDatas:(NSUInteger)index;
-(NSUInteger)getDatasCount;
-(void)eraseData;
#if 0	// 今回は使ってないので
-(BOOL)addData:(CMRotationRate *)xyz;
#endif
@end

