/*==================================================================================
FILE:  BrewGPS.h                                                                    
                                                                                    
SERVICES:                                                                           
   BrewGPS用                                                                        
                                                                                    
                                                                                    
====================================================================================*/
/*==================================================================================
                                                                                    
                        EDIT HISTORY FOR MODULE                                     
                                                                                    
when       who           what, where, why                                           
--------   ---           -----------------------------------------------------------
06/14/04   otsuka@ISB    [PTX802-TRK6047] 測位キャンセル時の同期処理不具合対応
05/26/04   otsuka@ISB    [PTX802-TRK4102] 測位キャンセル時フリーズ対応
05/17/04   otsuka@ISB    [PTX802-TRK2502] 測位キャンセル中の測位キャンセル対応
04/26/04   otsuka@ISB    [PTX802-TRK734-GPS_BREW] GPS⇔BREW連携PPPｵｰﾌﾟﾝ GPS測位キャンセル時Wait対応
03/10/04   otsuka@ISB    [PTX802-BREW 間 I/F 問題点1] 位置情報データ異常不具合
03/02/04   otsuka@ISB    [PTX802-ORIFNO] 方位情報取得要求変更対応
02/04/04   otsuka@ISB    [PTX802]                                                   
                          GPSOne Service対応として新規作成                          
====================================================================================*/
#if !defined(__BREWGPS_H__)
#define __BREWGPS_H__

//**********************************************************************
//	Includes
//**********************************************************************
#include "AppEvent.h"
#include "ApiGPSOne.h"
#include "BrewRpc.h"
typedef void (*PFNGETGPSINFOCB)(void *pUser, EN_GPSONE_CLIENT_RET nErr, ST_GPSONE_CLIENT_INFO *pInfo);
typedef void (*PFNGETDIRECTIONCB)(void *pUser, EN_GPSONE_CLIENT_RET nErr, ST_GPSONE_REPORT_OR_DIRECTION *info);
typedef void (*PFNGPSCANCELCB)(void *pUser);

//*********************************************************************/
//	Defines
//*********************************************************************/
//enum {
//	BREW_RPC_GPSINFO = BREW_RPCGRP(BREW_RPCGRP_GPS),	// B→A:GPS測位要求
//	BREW_RPC_GPSCAN		,								// B→A:GPS測位キャンセル
//	BREW_RPC_ORSTART,									// B→A:方位角情報サービス開始要求
//	BREW_RPC_ORSTOP,									// B→A:方位角情報サービス終了要求
//	BREW_RPC_ORINFO,									// B→A:方位角情報取得要求
//	BREW_RPC_REQ_GPSINFO,								// A→B:GPS測位情報取得
//	BREW_RPC_REQ_ORINFO,								// A→B:方位角情報取得
//	BREW_RPC_REQ_GPSCAN,								// A→B:GPS測位キャンセル完了
//// [PTX802-TRK4102] 測位状態取得 [S]
//	BREW_RPC_GETSTATUS,									// B→A：測位状態取得
//// [PTX802-TRK4102] 測位状態取得 [E]
//};

//*********************************************************************/
//	構造体
//*********************************************************************/
// BREW制御要求
typedef struct {
	unsigned long		RpcCmd;					// ＲＰＣコマンド
	unsigned long		Prm1;					// パラメータ１
	unsigned long		Prm2;					// パラメータ２
	unsigned long		Prm3;					// パラメータ３
} ST_BREW_RPC_GPS;

typedef struct {
	unsigned long		RpcCmd;					// ＲＰＣコマンド
// [PTX802-BREW 間 I/F 問題点1] 位置情報データ異常不具合 [S]
//	void				* info;					// 測位結果
	ST_GPSONE_CLIENT_INFO info;					// 測位結果
// [PTX802-BREW 間 I/F 問題点1] 位置情報データ異常不具合 [E]
	int					ret;					// 実行結果[EN_GPSONE_CLIENT_RET]
	int					err_code;				// エラーコード[EN_GPSOEN_CMD_ERR_TYPE]
} ST_BREW_RPC_REQ_GPS;
// Callback
typedef struct {
	PFNGETGPSINFOCB pGpsCB;
	void *pUser;
} ST_BREWGPS_CB;
typedef struct {
	void (*pOrCB)(void *pUser, EN_GPSONE_CLIENT_RET nErr, ST_GPSONE_REPORT_OR_DIRECTION *info);
	void *pUser;
} ST_BREWOR_CB;
typedef struct {
	PFNGPSCANCELCB pGpsCanCB;
	void *pUser;
// [PTX802-TRK4102] 測位キャンセル時フリーズ対応 [S]
// [PTX802-TRK734-GPS_BREW] キャンセル中フラグを追加.[S]
//	boolean bCanceling;
// [PTX802-TRK734-GPS_BREW] キャンセル中フラグを追加.[E]
// [PTX802-TRK4102] 測位キャンセル時フリーズ対応 [E]
// [PTX802-TRK2502] キャンセルwait中フラグを追加.[S]
// [PTX802-TRK6047] 同期処理前にキャンセル完了通知の場合無条件でシグナル設定するためフラグ削除 [S]
//	boolean bWaiting;
// [PTX802-TRK6047] 同期処理前にキャンセル完了通知の場合無条件でシグナル設定するためフラグ削除 [E]
// [PTX802-TRK2502] キャンセルwait中フラグを追加.[E]
} ST_BREWGPSCAN_CB;

//**********************************************************************
//	Functions
//**********************************************************************
int BrewGPSOneGetGPSInfo(EN_GPSONE_CLIENT_ID client_id, void *prm, ST_GPSONE_BREW_OPE_PARAM *operation, PFNGETGPSINFOCB pcb, void *pUser);
int BrewGPSOneGetGPSCan(EN_GPSONE_CLIENT_ID client_id, EN_GPSONE_CANCEL_TYPE cancel_type, PFNGPSCANCELCB pcb, void * pUser);
// [PTX802-TRK734-GPS_BREW] Wait用GPS測位キャンセル関数追加.[S]
int BrewGPSOneGetGPSCanSync(EN_GPSONE_CLIENT_ID client_id, PFNGPSCANCELCB pcb, void * pUser);
// [PTX802-TRK734-GPS_BREW] Wait用GPS測位キャンセル関数追加.[E]
// [PTX802-ORIFNO] 方位情報取得要求変更対応. イベント処理削除 [S]
// int BrewGPSOneGetDirection(EN_GPSONE_CLIENT_ID client_id, PFNGETDIRECTIONCB pcb, void *pUser);
int BrewGPSOneGetDirection(EN_GPSONE_CLIENT_ID client_id, ST_GPSONE_REPORT_OR_DIRECTION *reportDir);
// [PTX802-ORIFNO] 方位情報取得要求変更対応. イベント処理削除 [E]
int BrewGPSOneOrServiceStart(EN_GPSONE_CLIENT_ID client_id);
int BrewGPSOneOrServiceEnd(EN_GPSONE_CLIENT_ID client_id);
unsigned long BrewObsRpcGrpGPS(void *pRpcBlk);
unsigned long BrewTaskRpcGrpGPS(void *pRpcBlk);
unsigned long BrewAppGPSOneGetGPSInfo(ST_BREW_RPC_GPS *pRpcBlk);
unsigned long BrewAppGPSOneGetGPSCan(ST_BREW_RPC_GPS *pRpcBlk);
unsigned long BrewAppGPSOneGetDirection(ST_BREW_RPC_GPS *pRpcBlk);
unsigned long BrewAppGPSOneOrServiceStart(ST_BREW_RPC_GPS *pRpcBlk);
unsigned long BrewAppGPSOneOrServiceStop(ST_BREW_RPC_GPS *pRpcBlk);
unsigned long BrewTaskRpcGetGPSInfoCB(ST_BREW_RPC_REQ_GPS *pRpcBlk);
// [PTX802-ORIFNO] 方位情報取得要求変更対応. イベント処理削除 [S]
// unsigned long BrewTaskRpcGetDirectionCB(ST_BREW_RPC_REQ_GPS *pRpcBlk);
// [PTX802-ORIFNO] 方位情報取得要求変更対応. イベント処理削除 [E]
unsigned long BrewTaskRpcGPSCancelCB(ST_BREW_RPC_REQ_GPS *pRpcBlk);
int BrewGPSGetInfoCB(ST_EVENT_GPSONE_CLIENT *pEvent);
// [PTX802-ORIFNO] 方位情報取得要求変更対応. イベント処理削除 [S]
// int BrewGPSGetDirectionCB(ST_EVENT_VECTORONE *pEvent);
// [PTX802-ORIFNO] 方位情報取得要求変更対応. イベント処理削除 [E]
int BrewGPSCancelCB(void *pEvent);
// [PTX802-TRK2502] コールバック初期化処理追加 [S]
void BrewGPSInitCBInfo(void);
// [PTX802-TRK2502] コールバック初期化処理追加 [E]
// [PTX802-TRK4102] 測位状態取得 [S]
unsigned long BrewGPSOneGetStatus();
unsigned long BrewAppGPSOneGetStatus(ST_BREW_RPC_GPS *pRpcBlk);
// [PTX802-TRK4102] 測位状態取得 [E]

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