//
//  Log.h
//  ZeroRec
//
//  Created by AIG-Soft on 11/03/14.
//  Copyright 2011 AIG-Soft. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "main.h"

// 最初クラスにより実装しようとしたが、どうしてメモリ破壊が解消されなかったのでCの構造体により実装する

// イベント名称定義;Localizable.stringsの識別子でC文字列
//							 123456789012
#define	LOG_NAME_ALARM		"LOG_ALARM"
#define	LOG_NAME_RECON		"LOG_RECON"
#define	LOG_NAME_RECOFF		"LOG_RECOFF"
#define	LOG_NAME_NOBATT		"LOG_NOBATT"
#define	LOG_NAME_INIT		"LOG_INIT"
#define	LOG_NAME_SETUP		"LOG_SETUP"
#define LOG_NAME_CNT0		"LOG_CNT0"
#define	LOG_NAME_FERR		"LOG_FERR"
#define	LEN_LOG_NAME		(15+1)	// 名称最大長(EOSを含む)

// 定義だけの部分は、機能定義にかかわらず常時宣言しておく
// ログ
#ifdef DEBUG
#define	LOG_FILE	@"dloglist.dat"	// デバッグ時はファイル名も変えておかないと読み込みで異常を起こしてしまうので
#define	LOG_MAX		20
#else
#define	LOG_FILE	@"loglist.dat"
#define	LOG_MAX		100
#endif	// DEBUG

typedef struct {
	UByte	year;	// 20xx
	UByte	month;
	UByte	day;
	UByte	hour;
	UByte	minute;
	UByte	second;
} Logtime;
#define	SZ_LOGTIME	(sizeof(Logtime))

typedef union {
	Logtime		time;
	UByte		btime[SZ_LOGTIME];
} Ulogtime;

typedef struct {
	char		name[LEN_LOG_NAME];	// C-str
	Ulogtime	utime;
} LogData;

typedef struct {
	NSUInteger		max;				// 最大件数
	NSUInteger		count;				// 現在件数
	NSUInteger		rp,wp;				// リングバッファー制御
	LogData			logdata[LOG_MAX];	// ログ本体
} Log;
#define	SZ_LOG	(sizeof(Log))

#ifdef USE_LOG
void readLog(NSString *logname,NSUInteger max_);
void saveLog(NSString *logname);
void setLog(char *name_);
NSString *strLogAll(void);
#else	// ログを使わないときは、すべての関数を消してしまう(void関数なのでこれだけで良い)
#define readLog(logname,max_)
#define saveLog(logname)
#define setLog(name_)
#define strLogAll(area)
#endif