/********************************************************************
簡単位置検索アプリおよびエリア自動通知アプリ
拡張インターフェース仕様リファレンスヘッダー
拡張IF実装要求仕様書1.0.1版対応
IKDDI_Seek.h
Version : 1.03 / Release : 2005/04/13
********************************************************************/
#ifndef _IKDDI_SEEK_H
#define _IKDDI_SEEK_H

//#define DEBUG_FS_ALPHA /* alpha版stub用定義*/

/*-------------------------------------------------------------------
      Include Files
-------------------------------------------------------------------*/
#include "AEE.h"
#include "POSITION_SEEK.BID"
#include "ADDRESS_SEEK.BID"
#include "AREA_SEEK.BID"
#include "OEM_SEEK.BID"

/********************************************************************
BREWアプリ ⇒ OEMレイヤー インターフェース
********************************************************************/
/* インスタンスのタイプ宣言 */
typedef struct _IKDDISEEK IKDDISEEK;

/********************************************************************
定義名
********************************************************************/
/* 各種データ長定義 */
#define IKDDISEEK_GSN_LENGTH_MAX				4		// GSN文字列長MAX
#define IKDDISEEK_FRINED_MAX					10		// 許容者数MAX
#define IKDDISEEK_HISTORY_REC_MAX				30		// 履歴レコードMAX
#define IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX 	14		// 電話番号文字列長MAX
#define IKDDISEEK_ADDRBOOK_NAME_LENGTH_MAX		12		// 名前文字列長MAX
#define IKDDISEEK_ALARM_TITLE_LENGTH_MAX		12		// アラームタイトル文字列長MAX
#define IKDDISEEK_MESSAGE_LENGHT_MAX			38		// メッセージ文字列長MAX
#define IKDDISEEK_MYSPOT_MAX					30		// My スポット数MAX
#define IKDDISEEK_MYSPOT_TITLE_LENGTH_MAX		80		// My スポットタイトル文字列長MAX
#define IKDDISEEK_MYSPOT_LAT_LENGTH_MAX			12		// 緯度長MAX
#define IKDDISEEK_MYSPOT_LON_LENGTH_MAX			13		// 経度長MAX

/* 位置検索共通設定パラメータ定義(CPS:Common Permit Setting) */
#define IKDDISEEK_CPS_ALLOW_FRIEND_LR			0		// 位置検索許容設定：許容者リストのみ許容
#define IKDDISEEK_CPS_ALL_REFUSE_LR				1		// 位置検索許容設定：全て拒否
#define IKDDISEEK_CPS_RECEIVE_SMS				0		// 位置検索許容依頼受信：受信する
#define IKDDISEEK_CPS_IGNORE_SMS				1		// 位置検索許容依頼受信：無視する
#define IKDDISEEK_CPS_CONFIRM_ON				0		// 被位置検索確認画面：確認画面あり
#define IKDDISEEK_CPS_CONFIRM_OFF				1		// 被位置検索確認画面：確認画面なし

/* 位置検索個別設定パラメータ定義(FLS:Friend List Setting) */
#define IKDDISEEK_FLS_CONFIRM_ON				0		// 被位置検索確認画面：確認画面あり
#define IKDDISEEK_FLS_CONFIRM_OFF				1		// 被位置検索確認画面：確認画面なし
#define IKDDISEEK_FLS_ALLOW_LR					0		// 位置検索拒否設定：許容
#define IKDDISEEK_FLS_REFUSE_LR					1		// 位置検索拒否設定：拒否

/* 送信SMS User Data定義(UD:User Data) */
#define IKDDISEEK_UD_SMS_HEADER					0x12	// 位置検索&エリア自動通知サービス専用ヘッダー
#define IKDDISEEK_UD_SENDER						0x01	// 送信元判別
#define IKDDISEEK_UD_PAUSE						0x0A	// 区切り文字

#define IKDDISEEK_UD_FRIEND_SEARCH				0x01	// サービス種別：セキュリティー型簡単位置検索アプリ
#define IKDDISEEK_UD_COMMUNICATION_SEARCH		0x02	// サービス種別：コミュニケーション型位置検索アプリ
#define IKDDISEEK_UD_AREA_NOTIFY				0x03	// サービス種別：エリア自動通知アプリ

#define IKDDISEEK_UD_FRIENDLIST_ENTRY_REQ		0x01	// 識別パラメータ：許容者リスト登録依頼
#define IKDDISEEK_UD_FRIENDLIST_ENTRY_PERMIT	0x02	// 識別パラメータ：許容者リスト登録許可
#define IKDDISEEK_UD_FRIEND_SEARCH_REQ			0x03	// 識別パラメータ：相手位置検索要求(セキュリティー型)
#define IKDDISEEK_UD_FIX_RESULT_SEND_REQ		0x04	// 識別パラメータ：位置検索結果通知依頼(セキュリティー型)
#define IKDDISEEK_UD_COM_FRIEND_SEARCH_REQ		0x01	// 識別パラメータ：相手位置検索要求(コミュニケーション型)
#define IKDDISEEK_UD_COM_FIX_RESULT_SEND_REQ	0x02	// 識別パラメータ：位置検索結果通知依頼(コミュニケーション型)
#define IKDDISEEK_UD_AREA_NOTIFI_SEND_REQ		0x01	// 識別パラメータ：エリア自動通知依頼

/* 位置検索中設定定義(コミュニケーション型用) */
#define IKDDISEEK_COM_STATUS_IDLE				0		// Idleステータス
#define IKDDISEEK_COM_STATUS_SEARCH_REQUEST		1		// 相手位置検索要求中ステータス

/* My スポット定義 */
#define IKDDISEEK_MYSPOT_WGS84_DATUM			0		// 世界測地系
#define IKDDISEEK_MYSPOT_TOKYO_DATUM			1		// 日本測地系

#define IKDDISEEK_MYSPOT_DMS_UNIT				0		// 度分秒表示
#define IKDDISEEK_MYSPOT_DEGREE_UNIT			1		// 度表示

/* 履歴操作指定定義 */
#define IKDDISEEK_SEARCH_REQ_HISTORY			0		// 位置検索履歴指定(セキュリティー型)
#define IKDDISEEK_RCV_SEARCH_REQ_HISTORY		1		// 被位置検索履歴指定(セキュリティー型)
#define IKDDISEEK_AREA_NOTIFI_SND_HISTORY		2		// エリア自動通知送信履歴指定【未使用】
#define IKDDISEEK_AREA_NOTIFI_RCV_HISTORY		3		// エリア自動通知受信履歴指定
#define IKDDISEEK_SEARCH_REQ_HISTORY_COM		4		// 位置検索履歴指定(コミュニケーション型)
#define IKDDISEEK_RCV_SEARCH_REQ_HISTORY_COM	5		// 被位置検索履歴指定(コミュニケーション型)

#define IKDDISEEK_DELETE_HISTORY				0		// 履歴削除指定
#define IKDDISEEK_PROTECT_HISTORY				1		// 履歴保護指定
#define IKDDISEEK_CANCEL_PROTECT_HISTORY		2		// 履歴保護解除指定

#define IKDDISEEK_DELETE_ALL_HISTORY			0		// 履歴全削除指定
#define IKDDISEEK_DELETE_EXCEPT_PROTECT			1		// 保護履歴以外削除指定

/* 許容者リスト種別定義 */
#define IKDDISEEK_ENABLE_SEARCH_LIST				0		//検索者リスト
#define IKDDISEEK_RECEIVE_SEARCH_LIST				1		//被検索者リスト

/* 送信SMSのAck/Nack通知 */
#define EVT_SMS_ACK				0x7001			// 新規イベントコード
#define IKDDISEEK_SMS_ACK		0				// Ack受信
#define IKDDISEEK_SMS_NACK		1				// Nack受信

/********************************************************************
列挙型定義
********************************************************************/
/* 測位モード */
enum IkddiSeekPositioningMode
{
	FM_GPS_FIX_MODE = 0,							// GPS-Fixモード
	FM_HYBRID_FIX_MODE,								// Hybrid-Fixモード
	FM_AFLT_FIX_MODE,								// AFLT-Fixモード
	FM_BS_REGION_MODE,								// BS Regionモード
	FM_CELL_SECTOR_CENTER_MODE,					    // Cell Sector Centerモード
	FM_PRE_FIX_MODE									// Pre-Fixモード
};
typedef enum IkddiSeekPositioningMode IkddiSeekPositioningMode;

/* 許容者リストステータス */
enum IkddiSeekFriendSettingStatus
{
	FSS_NONE = 0,									// 未登録
	FSS_NORMAL,										// 通常
	ADD_RECORD_REQUEST,								// 登録依頼中
	ADD_RECORD_SUSPEND,								// 登録保留中
	SEARCH_RECORD_REQUEST							// 検索要求中
};
typedef enum IkddiSeekFriendSettingStatus IkddiSeekFriendSettingStatus;

/* 位置検索履歴ステータス */
enum IkddiSeekSendPositioningStatus
{
	SP_POSITION_SEARCH_END = 0,							// 検索完了
	SP_POSITION_SEARCH_FAILED							// 検索失敗
};
typedef enum IkddiSeekSendPositioningStatus IkddiSeekSendPositioningStatus;

/* 被位置検索履歴ステータス */
enum IkddiSeekReceiveSendPositioningStatus
{
	RSP_POSITION_SEARCH_END = 0,						// 検索完了
	RSP_POSITION_SEARCH_REFUSED,						// 検索キャンセル(検索拒否)
	RSP_POSITION_SEARCH_FAILED							// 検索失敗(測位失敗,通知失敗)
};
typedef enum IkddiSeekReceiveSendPositioningStatus IkddiSeekReceiveSendPositioningStatus;

/* エリア自動通知受信履歴ステータス */
enum IkddiSeekAreaAutoNotifyReceiveStatus
{
	ANR_NOTIFY_END = 0									// 受信完了
};
typedef enum IkddiSeekAreaAutoNotifyReceiveStatus IkddiSeekAreaAutoNotifyReceiveStatus;




/********************************************************************
構造体定義
********************************************************************/

/********************************************************************
汎用パラメータ構造体
********************************************************************/

/* GPS情報構造体 [12byte] */
typedef struct _IKDDISEEK_GPS_INFO
{
	int32	dwLatitude;								// 緯度
	int32	dwLongitude;							// 経度
	IkddiSeekPositioningMode kopPositiongMode;		// 測位モード
} IKDDISEEK_GPS_INFO;

/* 日時情報構造体 [8byte] */
typedef struct _IKDDISEEK_DATE
{
	byte	bYear;									// 年00-99
	byte	bMonth;									// 月1-12
	byte	bDay;									// 日1-31
	byte	bHour;									// 時0-23
	byte	bMinit;									// 分0-59
	char	szReserved[3];							// 予備
} IKDDISEEK_DATE;



/* 位置検索共通設定データ [4byte] */
typedef struct _IKDDISEEK_POSITION_REFERENCE_COMMON
{
	char 	cPermission;							// 位置検索許容設定
	char	cReceive;								// 位置検索許容依頼受信
	char	cCheckScreen;							// 被位置検索確認画面
	char	cReserved;								// 予備
} IKDDISEEK_POSITION_REFERENCE_COMMON;


/* 許容者リスト [92x10byte] */
typedef struct _IKDDISEEK_FRIEND
{
	byte	bUiNo;											// 登録番号
	byte	bListKind;										// 許容者リスト種別
	char	szReserved1[2];									// 予備１
	IkddiSeekFriendSettingStatus	ikfStatus;				// 許容者ステータス
	char szTelNo[IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX+1];	// 電話番号
	char cReserved2;										// 予備２
	AECHAR wszName[IKDDISEEK_ADDRBOOK_NAME_LENGTH_MAX+1];	// 登録者名
	char szReserved3[2];									// 予備３
	IKDDISEEK_DATE	iksDate;								// 登録日時
	byte bChkScreenSMS;										// 検索要求SMS受信時の確認画面表示設定
	byte bRefusalSetting;									// 位置検索拒否設定
	char szReserved4[30];									// 予備４(拡張用自由領域)
} IKDDISEEK_FRIEND;


/********************************************************************
送信SMS User Data
********************************************************************/

/* 汎用送信依頼SMS [99byte] */
typedef struct _IKDDISEEK_BASIC_SEND_SMS
{
	byte	bHeader;										// SMSヘッダ
	byte	bSender;										// 送信元
	byte	bPause1;										// 区切り１
	char	szClassID[8];									// クラスID
	byte	bPause2;										// 区切り２
	char	szGSN[4];										// GSN
	byte	bKind;											// サービス種別
	byte	bParam;											// 識別パラメータ
	char	szReserved[81];									// 予備(予約領域)
} IKDDISEEK_BASIC_SEND_SMS;

/* 位置検索結果通知依頼SMS [99byte] */
typedef struct _IKDDISEEK_FIX_RESULT_SEND_SMS
{
	byte	bHeader;										// SMSヘッダ
	byte	bSender;										// 送信元
	byte	bPause1;										// 区切り１
	char	szClassID[8];									// クラスID
	byte	bPause2;										// 区切り２
	char	szGSN[4];										// GSN
	byte	bKind;											// サービス種別
	byte	bParam;											// 識別パラメータ
	char    szReserved1[2];									// 予備１
	IKDDISEEK_GPS_INFO	kogGpsInfo;							// 測位結果
	char	szReserved2[67];								// 予備２(予約領域)
} IKDDISEEK_FIX_RESULT_SEND_SMS;

/* エリア自動通知依頼SMS [97byte] */
typedef struct _IKDDISEEK_AREA_NOTIFY_SEND_SMS
{
	byte	bHeader;										// SMSヘッダ
	byte	bSender;										// 送信元
	byte	bPause1;										// 区切り１
	char	szClassID[8];									// クラスID
	byte	bPause2;										// 区切り２
	char	szGSN[4];										// GSN
	byte	bKind;											// サービス種別
	byte	bParam;											// 識別パラメータ
	AECHAR  wszMessage[IKDDISEEK_MESSAGE_LENGHT_MAX+1];		// User設定メッセージ
	char	szReserved;										// 予備
} IKDDISEEK_AREA_NOTIFY_SEND_SMS;



/********************************************************************
履歴構造体
********************************************************************/

/* 位置検索履歴(セキュリティー型) [72x30byte] */
typedef struct _IKDDISEEK_SND_HISTORY
{
	byte	bHistoryNo;										// 履歴番号
	boolean	bProtect;										// 保護設定
	char	szReserved1[2];									// 予備１
	AECHAR wszName[IKDDISEEK_ADDRBOOK_NAME_LENGTH_MAX+1];	// 被位置検索者氏名
	char szTelNo[IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX+1];	// 被位置検索者電話番号
	char	szReserved2[3];									// 予備２
	IKDDISEEK_GPS_INFO	kogGpsInfo;							// 測位結果
	IKDDISEEK_DATE	kodDate;								// 測位完了日時
	IkddiSeekSendPositioningStatus	iksPositionSndSts;		// 測位ステータス
} IKDDISEEK_SND_HISTORY;

/* 被位置検索履歴(セキュリティー型) [72x30byte] */
typedef struct _IKDDISEEK_RCV_HISTORY
{
	byte	bHistoryNo;										// 履歴番号
	boolean	bProtect;										// 保護設定
	char	szReserved1[2];									// 予備１
	AECHAR wszName[IKDDISEEK_ADDRBOOK_NAME_LENGTH_MAX+1];	// 被位置検索者氏名
	char szTelNo[IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX+1];	// 被位置検索者電話番号
	char	szReserved2[3];									// 予備２
	IKDDISEEK_GPS_INFO	kogGpsInfo;							// 測位結果
	IKDDISEEK_DATE	kodDate;								// 測位完了日時
	IkddiSeekReceiveSendPositioningStatus iksPositionRcvSts;// 測位ステータス
} IKDDISEEK_RCV_HISTORY;

/* エリア通知受信履歴構造体 [116x30byte] */
typedef struct _IKDDISEEK_AREA_RCVREQ_HISTORY
{
	byte	bHistoryNo;										// 履歴番号
	boolean	bProtect;										// 保護設定
	char	szReserved1[2];									// 予備１
	IKDDISEEK_DATE	kodDate;								// 通知日時
	char szTelNo[IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX+1];	// 相手先電話番号
	char	cReserved2;										// 予備２
	AECHAR	wszMessage[IKDDISEEK_MESSAGE_LENGHT_MAX+1];		// メッセージ
	char	szReserved3[2];									// 予備３
	IkddiSeekAreaAutoNotifyReceiveStatus iksAreaNotifyRcvSts;// エリア自動通知ステータス
} IKDDISEEK_AREA_RCVREQ_HISTORY;

/* 位置検索履歴(コミュニケーション型) [156x30byte] */
typedef struct _IKDDISEEK_SND_HISTORY_COM
{
	byte	bHistoryNo;										// 履歴番号
	boolean	bProtect;										// 保護設定
	char	szReserved1[2];									// 予備１
	AECHAR wszName[IKDDISEEK_ADDRBOOK_NAME_LENGTH_MAX+1];	// 被位置検索者氏名
	char szTelNo[IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX+1];	// 被位置検索者電話番号
	char	szReserved2[3];									// 予備２
	IKDDISEEK_GPS_INFO	kogGpsInfo;							// 測位結果
	IKDDISEEK_DATE	kodDate;								// 測位完了日時
	IkddiSeekSendPositioningStatus	iksPositionSndSts;		// 測位ステータス
	AECHAR	wszMessage[IKDDISEEK_MESSAGE_LENGHT_MAX+1];		// メッセージ
	char	szReserved3[2];									// 予備３
} IKDDISEEK_SND_HISTORY_COM;

/* 被位置検索履歴(コミュニケーション型) [156x30byte] */
typedef struct _IKDDISEEK_RCV_HISTORY_COM
{
	byte	bHistoryNo;										// 履歴番号
	boolean	bProtect;										// 保護設定
	char	szReserved1[2];									// 予備１
	AECHAR wszName[IKDDISEEK_ADDRBOOK_NAME_LENGTH_MAX+1];	// 被位置検索者氏名
	char szTelNo[IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX+1];	// 被位置検索者電話番号
	char	szReserved2[3];									// 予備２
	IKDDISEEK_GPS_INFO	kogGpsInfo;							// 測位結果
	IKDDISEEK_DATE	kodDate;								// 測位完了日時
	IkddiSeekReceiveSendPositioningStatus iksPositionRcvSts;// 測位ステータス
	AECHAR	wszMessage[IKDDISEEK_MESSAGE_LENGHT_MAX+1];		// メッセージ
	char	szReserved3[2];									// 予備３
} IKDDISEEK_RCV_HISTORY_COM;

/* My スポット構造体 [116x30byte] */
typedef struct _IKDDISEEK_POSITION_INFO {
	byte	bNumber;										// 登録番号
	boolean	bValid;											// 有効データ
	char	szTitle[IKDDISEEK_MYSPOT_TITLE_LENGTH_MAX+1];	// タイトル
	byte	bDatum;											// 測位系
	byte	bUnit;											// 要求フォーマット
	char	szLat[IKDDISEEK_MYSPOT_LAT_LENGTH_MAX +1];		// 緯度文字列
	char	szLon[IKDDISEEK_MYSPOT_LON_LENGTH_MAX +1];		// 経度文字列
	IkddiSeekPositioningMode kopPositiongMode;				// 測位モード
} IKDDISEEK_POSITION_INFO;


/********************************************************************
インスタンス構造体宣言
********************************************************************/

QINTERFACE(IKDDISEEK)
{
	DECLARE_IBASE(IKDDISEEK) //IBASE クラスから継承
	uint32 (*CheckGSN)(IKDDISEEK *pIkddiSeek, char *szGsn);
	uint32 (*SetGSN)(IKDDISEEK *pIkddiSeek, char *pNewGsn);
	uint32 (*SetInputGSNCommunication)(IKDDISEEK *pIkddiSeek, boolean bGsnInput);		// GSN入力設定(コミュニケーション型)変更関数
	uint32 (*SetInputGSNAreaNotifi)(IKDDISEEK *pIkddiSeek, boolean bGsnInput);		// GSN入力設定(エリア自動通知)変更関数
	boolean (*GetInputGSNCommunication)(IKDDISEEK *pIkddiSeek);		// GSN入力設定(コミュニケーション型)取得関数
	boolean (*GetInputGSNAreaNotifi)(IKDDISEEK *pIkddiSeek);		// GSN入力設定(エリア自動通知)取得関数
	
	uint32 (*SetCommonPermitSetting)(IKDDISEEK *pIkddiSeek, IKDDISEEK_POSITION_REFERENCE_COMMON *pCommon);
	uint32 (*GetCommonPermitSetting)(IKDDISEEK *pIkddiSeek, IKDDISEEK_POSITION_REFERENCE_COMMON *pCommon);

	uint32 (*GetAllFriendList)(IKDDISEEK *pIkddiSeek, IKDDISEEK_FRIEND *pFriend);
	uint32 (*GetFriendList)(IKDDISEEK *pIkddiSeek, char *pMdn, IKDDISEEK_FRIEND *pFriend, byte bListKind);
	uint32 (*AddFriendList)(IKDDISEEK *pIkddiSeek, IKDDISEEK_FRIEND *pFriend, boolean bGsnFlg);
	uint32 (*SetFriendList)(IKDDISEEK *pIkddiSeek, char *pMdn, IKDDISEEK_FRIEND *pFriend, boolean bGsnFlg, byte bListKind);
	uint32 (*DeleteFriendList)(IKDDISEEK *pIkddiSeek, char *pMdn, byte bListKind);
	uint32 (*FriendListEntryPermit)(IKDDISEEK *pIkddiSeek, IKDDISEEK_BASIC_SEND_SMS *pSmsHeader, char *pMdn);
	uint32 (*FriendListEntryRequest)(IKDDISEEK *pIkddiSeek, IKDDISEEK_BASIC_SEND_SMS *pSmsHeader, char *pMdn);

	uint32 (*FriendSearchRequest)(IKDDISEEK *pIkddiSeek, IKDDISEEK_BASIC_SEND_SMS *pSmsHeader, char *pMdn);
	uint32 (*FixResultSendRequest)(IKDDISEEK *pIkddiSeek, IKDDISEEK_FIX_RESULT_SEND_SMS *pSmsHeader, char *pMdn);
	uint32 (*CancelSendSMS)(IKDDISEEK *pIkddiSeek);
	uint32 (*SetSearchRequestStatus)(IKDDISEEK *pIkddiSeek, byte bStatus, char *pMdn);		// 検索要求中設定関数

	uint32 (*AreaNotifiSendRequest)(IKDDISEEK *pIkddiSeek, IKDDISEEK_AREA_NOTIFY_SEND_SMS *pSmsHeader, char *pMdn);
	uint32 (*GetAllMySpot)(IKDDISEEK *pIkddiSeek, IKDDISEEK_POSITION_INFO *pMySpot);		// My スポット全件取得関数

	uint32 (*GetAllSearchRequestHistory)(IKDDISEEK *pIkddiSeek, IKDDISEEK_SND_HISTORY *pHistory);
	uint32 (*GetAllReceiveSearchRequestHistory)(IKDDISEEK *pIkddiSeek, IKDDISEEK_RCV_HISTORY *pRcvHistory);
	uint32 (*GetAllAreaNotifiReceiveHistory)(IKDDISEEK *pIkddiSeek, IKDDISEEK_AREA_RCVREQ_HISTORY *pSndHistory);
	uint32 (*GetAllSearchRequestHistoryCommunication)(IKDDISEEK *pIkddiSeek, IKDDISEEK_SND_HISTORY_COM *pHistory);
	uint32 (*GetAllReceiveSearchRequestHistoryCommunication)(IKDDISEEK *pIkddiSeek, IKDDISEEK_RCV_HISTORY_COM *pRcvHistory);

	uint32 (*AddSearchRequestHistory)(IKDDISEEK *pIkddiSeek, IKDDISEEK_SND_HISTORY *pSndHistory);
	uint32 (*AddReceiveSearchRequestHistory)(IKDDISEEK *pIkddiSeek, IKDDISEEK_RCV_HISTORY *pRcvHistory);
	uint32 (*AddAreaNotifiReceiveHistory)(IKDDISEEK *pIkddiSeek, IKDDISEEK_AREA_RCVREQ_HISTORY *pRcvHistory);
	uint32 (*AddSearchRequestHistoryCommunication)(IKDDISEEK *pIkddiSeek, IKDDISEEK_SND_HISTORY_COM *pSndHistory);
	uint32 (*AddReceiveSearchRequestHistoryCommunication)(IKDDISEEK *pIkddiSeek, IKDDISEEK_RCV_HISTORY_COM *pRcvHistory);

	uint32 (*HandleHistory)(IKDDISEEK *pIkddiSeek, byte bHistory, byte bHistoryNo, byte bKind);
	uint32 (*DeleteAllHistory)(IKDDISEEK *pIkddiSeek, byte bHistory, byte bKind);

};

/********************************************************************
参照カウンタ機能
********************************************************************/
#define IKDDISEEK_AddRef(pIkddiSeek) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AddRef(pIkddiSeek)
#define IKDDISEEK_Release(pIkddiSeek) GET_PVTBL(pIkddiSeek,IKDDISEEK)->Release(pIkddiSeek)

/********************************************************************
GSN認証/変更機能
********************************************************************/
#define IKDDISEEK_CheckGSN(pIkddiSeek,szGsn) GET_PVTBL(pIkddiSeek,IKDDISEEK)->CheckGSN(pIkddiSeek,szGsn)
#define IKDDISEEK_SetGSN(pIkddiSeek,pNewGsn) GET_PVTBL(pIkddiSeek,IKDDISEEK)->SetGSN(pIkddiSeek,pNewGsn)
#define IKDDISEEK_SetInputGSNCommunication(pIkddiSeek, bGsnInput) GET_PVTBL(pIkddiSeek,IKDDISEEK)->SetInputGSNCommunication(pIkddiSeek, bGsnInput)
#define IKDDISEEK_SetInputGSNAreaNotifi(pIkddiSeek, bGsnInput) GET_PVTBL(pIkddiSeek,IKDDISEEK)->SetInputGSNAreaNotifi(pIkddiSeek, bGsnInput)
#define IKDDISEEK_GetInputGSNCommunication(pIkddiSeek) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetInputGSNCommunication(pIkddiSeek)
#define IKDDISEEK_GetInputGSNAreaNotifi(pIkddiSeek) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetInputGSNAreaNotifi(pIkddiSeek)

/********************************************************************
各種設定機能
********************************************************************/
#define IKDDISEEK_SetCommonPermitSetting(pIkddiSeek,pCommon) GET_PVTBL(pIkddiSeek,IKDDISEEK)->SetCommonPermitSetting(pIkddiSeek,pCommon)
#define IKDDISEEK_GetCommonPermitSetting(pIkddiSeek,pCommon) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetCommonPermitSetting(pIkddiSeek,pCommon)

/********************************************************************
許容者管理機能
********************************************************************/
#define IKDDISEEK_GetAllFriendList(pIkddiSeek,pFriend) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetAllFriendList(pIkddiSeek,pFriend)
#define IKDDISEEK_GetFriendList(pIkddiSeek,pMdn,pFriend,bListKind) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetFriendList(pIkddiSeek,pMdn,pFriend,bListKind)
#define IKDDISEEK_AddFriendList(pIkddiSeek,pFriend,bGsnFlg) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AddFriendList(pIkddiSeek,pFriend,bGsnFlg)
#define IKDDISEEK_SetFriendList(pIkddiSeek,pMdn,pFriend,bGsnFlg,bListKind) GET_PVTBL(pIkddiSeek,IKDDISEEK)->SetFriendList(pIkddiSeek,pMdn,pFriend,bGsnFlg,bListKind)
#define IKDDISEEK_DeleteFriendList(pIkddiSeek,pMdn,bListKind) GET_PVTBL(pIkddiSeek,IKDDISEEK)->DeleteFriendList(pIkddiSeek,pMdn,bListKind)
#define IKDDISEEK_FriendListEntryPermit(pIkddiSeek,pSmsHeader,pMdn) GET_PVTBL(pIkddiSeek,IKDDISEEK)->FriendListEntryPermit(pIkddiSeek,pSmsHeader,pMdn)
#define IKDDISEEK_FriendListEntryRequest(pIkddiSeek,pSmsHeader,pMdn) GET_PVTBL(pIkddiSeek,IKDDISEEK)->FriendListEntryRequest(pIkddiSeek,pSmsHeader,pMdn)

/********************************************************************
位置検索実行機能
********************************************************************/
#define IKDDISEEK_FriendSearchRequest(pIkddiSeek,pSmsHeader,pMdn) GET_PVTBL(pIkddiSeek,IKDDISEEK)->FriendSearchRequest(pIkddiSeek,pSmsHeader,pMdn)
#define IKDDISEEK_FixResultSendRequest(pIkddiSeek,pSmsHeader,pMdn) GET_PVTBL(pIkddiSeek,IKDDISEEK)->FixResultSendRequest(pIkddiSeek,pSmsHeader,pMdn)
#define IKDDISEEK_CancelSendSMS(pIkddiSeek) GET_PVTBL(pIkddiSeek,IKDDISEEK)->CancelSendSMS(pIkddiSeek)
#define IKDDISEEK_SetSearchRequestStatus(pIkddiSeek, bStatus, pMdn) GET_PVTBL(pIkddiSeek, IKDDISEEK)->SetSearchRequestStatus(pIkddiSeek, bStatus, pMdn)

/********************************************************************
エリア自動通知機能
********************************************************************/
#define IKDDISEEK_AreaNotifiSendRequest(pIkddiSeek,pSmsHeader,pMdn) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AreaNotifiSendRequest(pIkddiSeek,pSmsHeader,pMdn)
#define IKDDISEEK_GetAllMySpot(pIkddiSeek, pMySpot) GET_PVTBL(pIkddiSeek, IKDDISEEK)->GetAllMySpot(pIkddiSeek, pMySpot)

/********************************************************************
検索履歴管理機能
********************************************************************/
#define IKDDISEEK_GetAllSearchRequestHistory(pIkddiSeek,pHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetAllSearchRequestHistory(pIkddiSeek,pHistory)
#define IKDDISEEK_GetAllReceiveSearchRequestHistory(pIkddiSeek,pRcvHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetAllReceiveSearchRequestHistory(pIkddiSeek,pRcvHistory)
#define IKDDISEEK_GetAllAreaNotifiReceiveHistory(pIkddiSeek,pSndHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetAllAreaNotifiReceiveHistory(pIkddiSeek,pSndHistory)
#define IKDDISEEK_GetAllSearchRequestHistoryCommunication(pIkddiSeek,pHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetAllSearchRequestHistoryCommunication(pIkddiSeek,pHistory)
#define IKDDISEEK_GetAllReceiveSearchRequestHistoryCommunication(pIkddiSeek,pRcvHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->GetAllReceiveSearchRequestHistoryCommunication(pIkddiSeek,pRcvHistory)

#define IKDDISEEK_AddSearchRequestHistory(pIkddiSeek,pSndHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AddSearchRequestHistory(pIkddiSeek,pSndHistory)
#define IKDDISEEK_AddReceiveSearchRequestHistory(pIkddiSeek,pRcvHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AddReceiveSearchRequestHistory(pIkddiSeek,pRcvHistory)
#define IKDDISEEK_AddAreaNotifiReceiveHistory(pIkddiSeek,pRcvHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AddAreaNotifiReceiveHistory(pIkddiSeek,pRcvHistory)
#define IKDDISEEK_AddSearchRequestHistoryCommunication(pIkddiSeek,pSndHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AddSearchRequestHistoryCommunication(pIkddiSeek,pSndHistory)
#define IKDDISEEK_AddReceiveSearchRequestHistoryCommunication(pIkddiSeek,pRcvHistory) GET_PVTBL(pIkddiSeek,IKDDISEEK)->AddReceiveSearchRequestHistoryCommunication(pIkddiSeek,pRcvHistory)

#define IKDDISEEK_HandleHistory(pIkddiSeek,bHistory,bHistoryNo,bKind) GET_PVTBL(pIkddiSeek,IKDDISEEK)->HandleHistory(pIkddiSeek,bHistory,bHistoryNo,bKind)
#define IKDDISEEK_DeleteAllHistory(pIkddiSeek,bHistory,bKind) GET_PVTBL(pIkddiSeek,IKDDISEEK)->DeleteAllHistory(pIkddiSeek,bHistory,bKind)


#ifdef DEBUG_FS_ALPHA /* alpha版stub用定義*/
/********************************************************************
構造体定義
********************************************************************/
/* Ack/Nack通知コールバック関数用データ */
typedef struct
{
	AEECLSID  unClassID;	// クラスID
	byte      bAckNack;		// Ack Nack識別
							/*	Ack  : 0
								Nack : 1	*/
	byte      bStartFunc;	//SMS起動関数判別
							/*	FriendListEntryRequest() : 0
								FriendListEntryPermit()  : 1
								FriendSearchRequest()    : 2
								FixResultSendRequest()   : 3
								AreaNotifiSendRequest()  : 4
								default                  : 5 */
} AckSndCB;

/* SMSダミー設定情報 */
typedef struct _IKDDISEEK_SMSDUMMYCONFIG
{
	int nTimerFriendListEntryPermit;
	int nTimerFriendListEntryRequest;
	int nTimerFriendSearchRequest;
	int nTimerFixResultSendRequest;
	int nTimerAreaNotifiSendRequest;
} IKDDISEEK_SMSDUMMYCONFIG;

/* Ack-Nack送信フラグ*/
#define IKDDISEEK_ACK_FLAG_MAX 5

#endif /* #ifdef DEBUG_FS_ALPHA */

/********************************************************************
アプレット管理メモリ
********************************************************************/
typedef struct _KDDISEEK
{
	DECLARE_VTBL(IKDDISEEK)
	uint32 m_nRefs; // References to us

#ifdef DEBUG_FS_ALPHA /* alpha版stub用定義*/
	IShell *m_pIShell; // copy of Shell pointer
	IModule *m_pIModule; // IModule interface pointer
	char szGsn[IKDDISEEK_GSN_LENGTH_MAX+1];			// gsn
	boolean m_bGsnInputCommunication;				//GSN入力設定(コミュニケーション型)
	boolean m_bGsnInputAreaNotifi;					//GSN入力設定(エリア自動通知)
	byte m_bSearchRequestStatus;					//検索要求中設定
	char m_szSearchRequestMdn[IKDDISEEK_ADDRBOOK_TEL_NO_LENGTH_MAX+1];//検索要求中設定MDN
	AckSndCB m_AckSendCallBack;						// Ack/Nack通知コールバック関数用データ
	IKDDISEEK_POSITION_REFERENCE_COMMON m_kopCommon;			// 位置検索共通設定データ
	IKDDISEEK_FRIEND m_kofFriend[IKDDISEEK_FRINED_MAX];			// 許容者リスト
	IKDDISEEK_SND_HISTORY m_kohSndReqHistory[IKDDISEEK_HISTORY_REC_MAX];	// 位置検索履歴（セキュリティー型）
	IKDDISEEK_RCV_HISTORY m_kohRcvReqHistory[IKDDISEEK_HISTORY_REC_MAX];	// 被位置検索履歴（セキュリティー型）
	IKDDISEEK_AREA_RCVREQ_HISTORY m_koaAreaRcvReqHistory[IKDDISEEK_HISTORY_REC_MAX]; // エリア通知受信履歴構造体
	IKDDISEEK_SND_HISTORY_COM m_kohSndReqHistoryCommunity[IKDDISEEK_HISTORY_REC_MAX];	// 位置検索履歴（コミュニケーション型）
	IKDDISEEK_RCV_HISTORY_COM m_kohRcvReqHistoryCommunity[IKDDISEEK_HISTORY_REC_MAX];	// 被位置検索履歴（コミュニケーション型）
	IKDDISEEK_SMSDUMMYCONFIG m_SmsConfig;						// SMSダミー設定情報
	IKDDISEEK_POSITION_INFO m_poiMySpot[IKDDISEEK_MYSPOT_MAX];	// My スポット
	byte m_bAckFlag[IKDDISEEK_ACK_FLAG_MAX];//Ack-Nack送信フラグ
#endif /* #ifdef DEBUG_FS_ALPHA */

} KDDISEEK;

#endif	// _IKDDI_SEEK_H
