//
//  Bluetooth.h
//  ZeroRec/Komadori
//
//  Created by AIG-Soft on 11/05/06.
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import <Foundation/Foundation.h>
@import MultipeerConnectivity;	// frameworkのリンクも含めて行ってくれるらしい;Enable Modules = YESにしておく必要がある
@class Bluetooth;


@protocol BluetoothDelegate <NSObject>
@required
- (void)bluetoothDidRecieve:(NSData *)data peer:(MCPeerID *)peerID;
- (void)bluetoothSelectShow:(MCBrowserViewController *)mvc;

@optional
- (void)bluetoothDidConnected:(Bluetooth *)bluetooth;
- (void)bluetoothCancelConnect:(Bluetooth *)bluetooth;

@end


typedef enum { // fconnect状態
	BT_CONNECT_CLOSE=-1,	// close処理直後
	BT_CONNECT_NONE=0,		// 未接続
	BT_CONNECT_SESSION,		// session作成	1
	BT_CONNECT_START,		// 接続処理開始	2
	BT_CONNECT_CANCEL,		// 接続解除直後	3
	BT_CONNECT_OK,			// 接続完了		4
} BT_CONNECT;


typedef enum { // fremote状態
	BT_REMOTE_CANCEL=-1,	// 接続先選択中にキャンセルされた
	BT_REMOTE_NO=0,			// レコーダーモード
	BT_REMOTE_YES,			// リモコンモード
} BT_REMOTE;

@interface Bluetooth : NSObject

@property (nonatomic) BT_CONNECT fconnect;	// 接続状態
@property (nonatomic) BT_REMOTE	 fremote;	// リモコンモードかどうか
@property (nonatomic,assign) id <BluetoothDelegate> delegate;

-(id)init;
-(void)open:(NSString *)dispName;
-(void)close;
-(void)send:(unichar)command;
-(void)clearReceiveBuff;
-(unichar)readReceiveBuff;

// sendで通信するコマンド
#define	BT_COMMAND_NONE			0x0000	// 有効コマンドなし
#define BT_COMMAND_NSHOT		'N'		// NShot
#define BT_COMMAND_SHUTTER		'A'		// 1shot/alarm
#define BT_COMMAND_RECEND		'C'		// RecEnd/RecCancel
#define	BT_COMMAND_RESULT		'T'		// コマンド応答
#define BT_COMMAND_REMOTE		'R'		// リモードモード要請
#define BT_COMMAND_RECORDER		'r'		// レコーダーモード要請
#define BT_COMMAND_RECSTART		's'		// RecStart
#define BT_COMMAND_DISCONNECT	'D'		// 接続解除
#define BT_COMMAND_ERROR		'E'		// エラー発生

@end
