//******************************************************************************
// COPYRIGHT    : ソニー株式会社
// DIVISION     :
// AUTHOR       : ソニー株式会社
// FILENAME     : BrewNap.h
//
// @(s) CONTENT :
// NOTE			:
//
// VERSION      : $Revision:$
//
// HISTORY      : -------- 概要 -----------------------------------------------
// [ PTX-804向け ]
//	Version	UIQ/TRK	OutLine
//	   0.05			PTX-804 BREW-20050303002 NJK 牧瀬 宏壽
//						SMS送信対応
//	   0.08			PTX-804 EMUI-20050323002 NJK 今坂 英樹
//						MALLOC,FREEをメモリマネージャに変更
//	   0.08			PTX-804 BREW-20050325001 NJK 今坂 英樹
//						電番入力対応
//	   0.09			PTX-804 BREW-20050331001 NJK 今坂 英樹
//						個別にNativeキャンセルを行っていたものを統合する
//	   0.13	TRK243	PTX-804 BREW-20050426001 NJK 牧瀬 宏壽
//						btob連携対応
//	   0.13			PTX-804 BREW-20050426001 NJK 今坂 英樹
//						PKIControl連携対応
//	   0.13			PTX-804 BREW-20050430001 NJK 山口 智
//						BREW終了要求(BREWNAP_DEAD)時の終了理由追加
//	   0.14	TRK90	PTX-804 BREW-20050511002 NJK 牧瀬 宏壽
//						DF,MSDFのNative連携追加要望対応
//	   0.50	TRK1305	PTX-804 BREW101-804TRK1305:20050617002 NJK 高橋 直美
//						安心ナビ位置確認（位置確認メール）受信でメール本文が
//						正しく表示されない不具合修正(その２)
//	   0.50	TRK2530	PTX-804 BREW102-804TRK2530:20050620001 NJK 牧瀬 宏壽
//						キーロック解除対応
//	   0.74	TRK5221	PTX-804 BREW103-20050729001 NJK 今坂 英樹
//						ステータスポップアップ対応
// [ PTX-805向け ]
//	Version	UIQ/TRK	OutLine
//	   0.00			PTX-804 BREW200-20050729001 NJK 今坂 英樹
//						IMPNet拡張
// 00.10.00			PTX-805 BREW201 20050915001 NJK 今坂 英樹
//						ＩＭＰ終了ポップアップ対応
// 00.10.00			PTX-805 BREW202 20050921001 NJK 高橋 直美
//						メーラ連携(atmailview)対応
// 00.15.00			PTX-805 BREW203 20050926001 NJK 今坂 英樹
//						impmailto スキーム対応
// HISTORY      : -------- 概要 -----------------------------------------------
// [ PTX-808向け ]
//	Version	 UIQ/TRK	OutLine
// 	00.15.00 TRK-132	PTX-808 BREW300 20060206 NJK 花田 正信
//						Nativeアドレス帳選択UIApp連携処理追加
// [ PTX-812向け ]
//	Version	UIQ/TRK	OutLine
// 00.05.00			PTX-812 BREW-20060219001 NEU HuangJun
//						BrewUIWaitApp終了用パラメータ追加
// 00.11.00	UIQ35	PTX-812 BREW302-20060403001 NEU zhoujh
//						BrewNativeCall_XXX => proxy/ADP
//
//*****************************************************************************/

#if !defined(__BREWNAP_H__)
#define __BREWNAP_H__

//**********************************************************************
//	Includes
//**********************************************************************
#include "Apm.h"
#include "AppTask.h"
#include "AppEntry.h"
#include "AppEvent.h"
#include "EditApp.h"
#include "DfApp.h"
#include "BookSearchMain.h"

#include "AlertApp.h"
#include "LockNoApp.h"
#include "ApiDb.h"
#include "CommonAppSendSelect.h"
#include "BrewRpc.h"
#include "ApiGPSOne.h"
#include "EzNavigationApp.h"
#include "ApiIrc.h"
#include "BrewGPSOneApp.h"
#include	"MemMgr.h"
#include "BrewPKIControlApp.h"
#include "MemoryStickApp.h"
#include "BookBrewQuote.h"													/*** PTX-808 BREW300 ***/

//**********************************************************************
//	記号定数
//**********************************************************************
// コールバックで指定される Nativeアプリの終了コード
enum {
	BREWNAP_RSLT_SUCCESS,				// 正常終了
	BREWNAP_RSLT_CANCEL,				// キャンセル
	BREWNAP_RSLT_ABORT,					// 強制終了(終話キー)
	BREWNAP_RSLT_NINTR,					// PTX633-TRK-2626:Native割り込み強制終了(EDITのみ)
};

// メーラ連携のスキーム種別
enum {
	BREW_BROWSEURL_AT2MAILTO = 0,			// at2mailto*														/*** PTX-805 BREW202 ***/
	BREW_BROWSEURL_ATMAILVIEW,				// atmailview														/*** PTX-805 BREW202 ***/
};

// Native アプリ停止要求イベント
typedef struct {
	unsigned long		RpcCmd;					// ＲＰＣコマンド
//	int					NapType;
} ST_BREW_RPC_APSTOP;

// ブラウザアプリケーションパラメータ
typedef struct {
	char			Url[1024];					// URL
}ST_BREW_NAPPRM_BROWSER;

// メーラーアプリケーションパラメータ
//Email起動パラメータ
typedef struct {																											/*** PTX-805 BREW202 ***/
	BYTE			Address[640+3];				// 宛先データ																/*** PTX-805 BREW202 ***/
	BYTE			Subject[100+1];				// 件名データ																/*** PTX-805 BREW202 ***/
	BYTE			Content[10000+1];			// 本文データ																/*** PTX-805 BREW202 ***/
	BYTE			ReturnID;					// 終了画面指定(1固定)														/*** PTX-805 BREW202 ***/
	int				Attach[5];					// 添付ファイル																/*** PTX-805 BREW203 ***/
}ST_BREW_EMAIL_STARTPRM;																									/*** PTX-805 BREW202 ***/

typedef struct {
	int							SchemeType;					// スキーム種別													/*** PTX-805 BREW202 ***/
	ST_BREW_EMAIL_STARTPRM		EmailPram;					// Email起動パラメータ											/*** PTX-805 BREW202 ***/
}ST_BREW_NAPPRM_MAIL;


//******************************************************************
// 発信選択パラメータ
//******************************************************************
typedef struct {
/// 発信選択起動パラメータ
	int						id;			// 発信選択ID(任意)
	BYTE					Mail;		// 処理区分　TRUE(Cﾒｰﾙ送信時), FALSE(音声発信時)
	BYTE					Mode;		// 発信状態　0:待受中起動, 1:通話中起動
	BYTE					*Name;		// 発信先名前
	BYTE					*DialNo;	// 発信先電話番号
/// 発信選択終了パラメータ格納先
	ST_ENDPARAMS_SENDSELECT	EndParam;
} ST_BREW_NATIVE_CALL;

//******************************************************************
// テキスト入力パラメータ
//******************************************************************
typedef struct {
/// エディタ起動パラメータ
	int				id;			// EditAppID(0固定)
	BYTE			FromWho;	// 起動場所(EDIT_NORMAL_MODE固定)
	BYTE			FontSel;	// フォントサイズ(LCD_FONT_SIZE_12暫定)
	HFWD			type;		// 入力可能文字列タイプ
	unsigned long	typeopt;	// 入力可能な文字列のタイプの追加情報

	MEM_MGR_ID		MemID_Char;	// CharBufのメモリＩＤ
	BYTE			*CharBuf;	// 文字列格納バッファ

	BYTE			*Yomi;		// 未使用(名前の読み)

	MEM_MGR_ID		MemID_Title;	// TitleBufのメモリＩＤ
	BYTE			*TitleBuf;	// タイトル文字列
	BYTE			SizeType;	// 文字数(サイズタイプ(バッファサイズ or 文字数))(EDIT_SIZE_CHAR固定)
	HFWD			size;		// バッファサイズ
	HFWD			len;		// 文字数
	void			*pTextState;// 未使用(テキストステータス EZ(通常)時使用)
	unsigned long	ExInput;	// ExInput : 外部入力指定
	HFWD			CursorPos;	// カーソル位置

/// エディタ終了パラメータ格納先
	ST_ENDPARAMS_EDITAPP EndParam;
} ST_BREW_NATIVE_EDIT;			//ST_BREW_NAPPRM_EDIT;


//******************************************************************
// ポップアップパラメータ
//******************************************************************
typedef struct {
/// ポップアップ起動パラメータ
	int						id;
	const ST_ALERT_ROMITEM	*RomItem;
	ST_ALERT_RAMITEM		*RamItem;
/// ポップアップ終了パラメータ格納先
	ST_ENDPARAMS_ALERT		EndParam;
} ST_BREW_NATIVE_POPUP;

//******************************************************************
// ダイアログアパラメータ
//******************************************************************
typedef struct {
/// ダイアログ起動パラメータ
	int						id;
	const ST_DIALOG_ROMITEM *RomItem;
	ST_DIALOG_RAMITEM		*RamItem;
	const BYTE 				*Enabler;				/*** PTX-805 BREW201 ***/
	int						ItemNo;
/// ダイアログ終了パラメータ格納先
	ST_ENDPARAMS_DIALOG		EndParam;
} ST_BREW_NATIVE_DIALOG;

//******************************************************************
// DF選択UIパラメータ
//******************************************************************
typedef struct {
/// DF選択UI起動パラメータ
	int						id;
	ST_PLURAL_BREW_DFAPP	StartParam;
/// DF選択UI終了パラメータ
	ST_ENDPARAMS_DFAPP		EndParam;
} ST_BREW_NATIVE_DFSELECT;

//******************************************************************		/*** PTX-808 BREW300 ***/
// アドレス帳選択UIパラメータ												/*** PTX-808 BREW300 ***/
//******************************************************************		/*** PTX-808 BREW300 ***/
typedef struct {															/*** PTX-808 BREW300 ***/
/// アドレス帳選択UI起動パラメータ											/*** PTX-808 BREW300 ***/
	int							id;											/*** PTX-808 BREW300 ***/
	ST_SELECTUI_ADDRBOOK		StartParam;									/*** PTX-808 BREW300 ***/
/// アドレス帳選択UI終了パラメータ											/*** PTX-808 BREW300 ***/
	ST_ENDPARAMS_BOOKBREWQUOTE	EndParam;									/*** PTX-808 BREW300 ***/
} ST_BREW_NATIVE_ADDRSELECT;												/*** PTX-808 BREW300 ***/

//******************************************************************
// DF削除UIパラメータ
//******************************************************************
typedef struct {
/// DF削除UI起動パラメータ
	int						id;
	unsigned int			DeleteSize;
/// DF削除UI終了パラメータ
	ST_ENDPARAMS_DFAPP		EndParam;
} ST_BREW_NATIVE_DFDEL;

//******************************************************************
// MSDF選択UIパラメータ
//******************************************************************
typedef struct {
/// MSDF選択UI起動パラメータ
	ST_STARTPARAMS_MS_LISTPLURALBREWAPP		StartParam;
/// MSDF選択UI終了パラメータ
	ST_ENDPARAMS_MS_LISTPLURALBREWAPP		EndParam;
} ST_BREW_NATIVE_MSDFSELECT;

//******************************************************************
// EZNAVI(GPS情報修正)パラメータ
//******************************************************************
typedef struct {
/// 起動パラメータ
	BYTE                          suspend_inf;         /* BREWｱﾌﾟﾘSuspend情報 */
	ST_EZNAVIGATION_GPS_INFO      *loc;                /* GPS修正情報格納ｴﾘｱへのﾎﾟｲﾝﾀ */
	ST_EZNAVIGATION_TARGET_INFO   *pTargetInfo;        /* 更新対象情報格納ｴﾘｱへのﾎﾟｲﾝﾀ */
/// 終了パラメータ格納先
 	ST_ENDPARAMS_EZNAVIGATION_GPSCORRECTINF EndParam;
} ST_BREW_NATIVE_GPSCORRECT;

//******************************************************************
// EZNAVI(Myｽﾎﾟｯﾄ書き込み)パラメータ
//******************************************************************
typedef struct {
/// 起動パラメータ
	EN_EZNAVIGATION_CLIENT_ID     client_id;           /* 起動元ID */
	ST_EZNAVIGATION_GPS_INFO      *loc;                /* GPS修正情報格納ｴﾘｱへのﾎﾟｲﾝﾀ */
	ST_EZNAVIGATION_TARGET_INFO   **ppTargetInfo;      /* 更新対象情報格納ｴﾘｱﾎﾟｲﾝﾀへのﾎﾟｲﾝﾀ */
/// 終了パラメータ格納先
	ST_ENDPARAMS_EZNAVIGATION_MYSPOTWRITE	EndParam;
} ST_BREW_NATIVE_GPSMYSPOT;


//******************************************************************
// EZNAVI(GPS情報読み取り)パラメータ
//******************************************************************
typedef struct {
/// 起動パラメータ
	ST_EZNAVIGATION_GPS_INFO      *loc;                /* GPS修正情報格納ｴﾘｱへのﾎﾟｲﾝﾀ */
	ST_EZNAVIGATION_TARGET_INFO   **ppTargetInfo;      /* 更新対象情報格納ｴﾘｱﾎﾟｲﾝﾀへのﾎﾟｲﾝﾀ */
/// 終了パラメータ格納先
	ST_ENDPARAMS_EZNAVIGATION_GETLOCATION	EndParam;
} ST_BREW_NATIVE_GPSGETLOCATION;


//******************************************************************
// バックライトパラメータ
//******************************************************************
typedef struct {
	int      OnOff;                /* バックライト情報 */
	int		Ctrl;									/* 制御先			*/
} ST_BREW_NATIVE_ONOFF;


//******************************************************************
// ディスプレイ更新パラメータ
//******************************************************************
typedef struct {
	int		DispSize;								/* 画面サイズ */
} ST_BREW_NATIVE_DISPCTRL;


//******************************************************************
// IRCパラメータ
//******************************************************************
typedef struct {
	char 					aiteMdn[12];		// 相手MDN
	char 					control;			// 番号表示可否
	char 					message[101];		// メッセージ本文
	int 					messageSize;		// メッセージ本文サイズ
	UN_IRC_EVENT_IRC_TO_UI	EndParam;			// 終了パラメータ
} ST_BREW_NATIVE_IRC;

//******************************************************************
// GPS測位パラメータ
//******************************************************************
typedef struct {
	ST_BREWGPSONEAPP_START	StartParam;			// 起動パラメータ
	ST_BREWGPSONEAPP_END	EndParam;			// 終了パラメータ格納先
} ST_BREW_NATIVE_GPSONE;

//******************************************************************
// 電番入力パラメータ
//******************************************************************
typedef struct {
	int							id;
	ST_DIALINPUT_SET			StartParam;			// 起動パラメータ
	ST_ENDPARAMS_DIALINSELECT	EndParam;			// 終了パラメータ格納先
} ST_BREW_NATIVE_TELNOINPUT;

//******************************************************************
// PKIControl
//******************************************************************
typedef struct {
	int							id;
	ST_BREWPKICONTROLAPP_START	StartParam;			// 起動パラメータ
	ST_ENDPARAMS_PKICONTROL		EndParam;			// 終了パラメータ格納先
} ST_BREW_NATIVE_PKICONTROL;

//******************************************************************
// ロックNo入力パラメータ
//******************************************************************
typedef struct {
	int							StartId;			// 起動ID
	ST_ENDPARAMS_LOCKNO			EndParam;			// 終了パラメータ
} ST_BREW_NATIVE_LOCKNOINPUT;

#define	BREW_LOCKNO_START_AUTO 		0				// オートロック解除
#define BREW_LOCKNO_START_EZAPP		1				// EZアプリ制限解除

//******************************************************************
// キーロックアラート入力パラメータ
//******************************************************************
typedef struct {
	int							StartID;			// 起動ID
	ST_ENDPARAMS_ALERT			EndParam;			// 終了パラメータ
} ST_BREW_NATIVE_KEYLOCK;

//******************************************************************
// ステータスポップアップパラメータ
//******************************************************************
typedef struct {
#define BREWSTATUSPOPUP_USERNO 0x100
	int						id;
#define	BREWSTATUSPOPUP_SSL		0		// SSL/TLS接続中
#define	BREWSTATUSPOPUP_NEG		1		// 認証中
#define	BREWSTATUSPOPUP_SIGN	2		// 署名データ作成中…
	unsigned int			PopupType;
} ST_BREW_NATIVE_STATUSPOPUP;

//******************************************************************
// IMPNet Requestパラメータ
//******************************************************************
typedef struct {

	char *cpurl;
	char *cphead;
	char *cpentity;
	int  cpentitysize;
	void *userdata;
	uint32 handle;
	uint32 uhandle;
	BYTE   Httpmethod;
} ST_BREW_NATIVE_IMPRECV;

//******************************************************************
// Nativeキャンセル
//******************************************************************
typedef struct {
	int NativeType;
	int	UserNo;
} ST_BREW_NATIVE_CANCEL;


//******************************************************************
//  BREW終了要求(BREWNAP_DEAD)時の終了理由
//******************************************************************
typedef struct {
	BYTE 	Reason;
} ST_BREW_NATIVE_DEAD;

//*** PTX-812 BREW-20060219003 NEU HuangJun[S] ***/
//******************************************************************
//  BREWUIWaitApp終了要求(BREWNAP_UIWAITDEAD)時の終了理由
//******************************************************************
typedef struct {
	AEECLSID	cls;				// AEECLSID of offender
	int			ReasonCode;	// Reason code
	uint32		nType;			// KBRDG_ERR
} ST_BREW_NATIVE_UIWAITDEAD;
//*** PTX-812 BREW-20060219003 NEU HuangJun[E] ***/


// アプリケーションパラメータ
typedef union {
	ST_BREW_NAPPRM_BROWSER			Browser;		// ブラウザアプリケーション用パラメータ
	ST_BREW_NAPPRM_MAIL				Mail;			// メーラーアプリケーション用パラメータ
	ST_BREW_NATIVE_CALL				Call;			// 発信アプリケーション用パラメータ
	ST_BREW_NATIVE_EDIT				Edit;			// テキスト入力アプリケーション用パラメータ
	ST_BREW_NATIVE_POPUP			Popup;			// ポップアップアプリケーション用パラメータ
	ST_BREW_NATIVE_DIALOG			Dialog;			// ダイアログアプリケーション用パラメータ
	ST_BREW_NATIVE_DFSELECT			DfSelect;		// DF選択UIアプリケーション用パラメータ
	ST_BREW_NATIVE_ADDRSELECT		AddrSelect;		// アドレス帳選択アプリケーション用パラメータ				/*** PTX-808 BREW300 ***/
	ST_BREW_NATIVE_DFDEL			Dfdel;			// DF削除UIアプリケーション用パラメータ
	ST_BREW_NATIVE_MSDFSELECT		MsDfSelect;		// MSDF選択UIアプリケーション用パラメータ
	ST_BREW_NATIVE_GPSCORRECT		GpsCorrect;		// ＧＰＳ情報修正アプリケーション用パラメータ
	ST_BREW_NATIVE_GPSMYSPOT		GpsMySpot;		// ＧＰＳＭｙスポット書き込みアプリケーション用パラメータ
	ST_BREW_NATIVE_GPSGETLOCATION	GpsGetLocation;	// ＧＰＳ情報読み取りアプリケーション用パラメータ
	ST_BREW_NATIVE_ONOFF			BackRight;		// バックライトＯＮ/ＯＦＦ
	ST_BREW_NATIVE_DISPCTRL			DispCtrl;		// ディスプレイ更新パラメータ
	ST_BREW_NATIVE_IRC				Irc;			// IRCアプリケーション用パラメータ
	ST_BREW_NATIVE_GPSONE			GpsOne;			// GPS測位アプリケーション用パラメータ
	ST_BREW_NATIVE_TELNOINPUT		TelNoInput;		// 電話番号入力
	ST_BREW_NATIVE_CANCEL			Cancel;			// Nativeキャンセル
	ST_BREW_NATIVE_LOCKNOINPUT		LockNo;			// ロックNo入力
	ST_BREW_NATIVE_KEYLOCK			KeyLock;		// キーロックアラート
	ST_BREW_NATIVE_DEAD				Dead;			// BREW終了要求理由
	ST_BREW_NATIVE_STATUSPOPUP		StatusPopup;	// クリアキーの効かないポップアップ
	ST_BREW_NATIVE_IMPRECV			IMPAppRecv;		// OEMIMP->IMPControlApp パラメータ
//*** PTX-812 BREW-20060219001 NEU HuangJun[S] ***/
	ST_BREW_NATIVE_UIWAITDEAD				UIWaitDead;			// BREWUIWaitApp終了要求理由
//*** PTX-812 BREW-20060219001 NEU HuangJun[E] ***/	
} ST_BREW_NAPPRM;


//**********************************************************************
//	Native 起動/停止ＡＰＩ使用領域初期化
//**********************************************************************
extern void BrewAppNapInit(void);
extern void BrewNapInitCBInfo(void);
extern unsigned long BrewAppNapStartPopup(int popupkind);
// [PTX812_KCPCORE_NEU] zhoujh Delete Start at 2006/04/03 For UIQ35 BREW302
// extern int	BrewNapBrewUIStart(void);
// extern int	BrewNapBrewUIEnd(BYTE);
// extern int	BrewNapBrewTaskEnd(void);
// [PTX812_KCPCORE_NEU] zhoujh Delete End at 2006/04/03 For UIQ35 BREW302
extern int	BrewNapFMRadioCtrl(int Action);

/***** End Of List ***************************************************/
#endif /* !defined(__BREWNAP_H__) */
