#ifndef _IADDR_H_
#define _IADDR_H_
/*===========================================================================================

FILE            : IADDR.h

SERVICES        : IADDR Interface

DESCRIPTION     :
   This file provides the interface specification for
   the ADDRBOOK Interface for KDDI

PUBLIC CLASSES  : Not Applicable

INITIALIZATION AND SEQUENCING REQUIREMENTS :

      Copyright ｩ 1999-2004 QUALCOMM Incorporated.
               All Rights Reserved.
            QUALCOMM Proprietary/GTDR

===========================================================================================*/

/*===========================================================================================

                        EDIT HISTORY FOR MODULE

When        Who    what, where, why
----------  -----  --------------------------------------------------------------------------
10/26/04           新規作成
05/30/05    桐山   「ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH」の定義値を45から256に変更 @PTX804-001
05/30/05    桐山   重複定義削除                                                     @PTX804-002
05/30/05    桐山   構造体「ADDR_BOOK_INFO」のメンバ「wMailNum」追加対応             @PTX804-003
【PTX805に伴う改版履歴】
10/19/05    桐山   include追加 (KDDI_ADDR_CREDENTIAL.BID)                           @PTX805-004

===========================================================================================*/
/******************************************************************************
//  [PTX-804改修履歴]
//		PTX-804 BREW-20050304002 NJK 高橋 直美
//		       IAddr_SearchNo、IAddr_GetGroupNameの実装もれ対応
******************************************************************************/

/*===========================================================================================
 INCLUDES AND VARIABLE DEFINITIONS
===========================================================================================*/
/*-------------------------------------------------------------------------------------------
   Defines
-------------------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------------------
   Include Files
-------------------------------------------------------------------------------------------*/
#include "AEE.h"
#include "IADDR.BID"
/* .Start ADD Kiriyama @PTX805-004 */
#include "KDDI_ADDR_CREDENTIAL.BID"
/* .End   ADD Kiriyama @PTX805-004 */

typedef struct IAddr IAddr;

/*-------------------------------------------------------------------------------------------
   Constant Declarations
-------------------------------------------------------------------------------------------*/
#define ADDR_BOOK_RECORD_VERSION                 1

#define ADDRBOOK_MAX_NAME_LENGTH                24    // 名前
#define ADDRBOOK_MAX_YOMI_LENGTH                24    // 読み
#define ADDRBOOK_MAX_TEL_NO_LENGTH              36    // 電話番号
#define ADDRBOOK_MAX_MAIL_ADDR_LENGTH           64    // Eメールアドレス
#define ADDRBOOK_MAX_BIRTHDAY_LENGTH            10    // 誕生日
#define ADDRBOOK_MAX_HOBBY_LENGTH               20    // 趣味
#define ADDRBOOK_MAX_ADDRESS_LENGTH             80    // 住所
#define ADDRBOOK_MAX_URL_LENGTH                 256   // URL
#define ADDRBOOK_MAX_MEMO_LENGTH                80    // メモ
#define ADDRBOOK_MAX_LOCATION_LENGTH            66    // 位置情報
/* .Start Kiriyama @PTX804-001 */
//#define ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH     45    // PHOTO
#define ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH     256   // PHOTO
/* .End   Kiriyama @PTX804-001 */
#define ADDRBOOK_MAX_POSTAL_NO_LENGTH           10    // 郵便番号
#define ADDRBOOK_MAX_ORGANIZATION_LENGTH        40    // 組織名称
#define ADDRBOOK_MAX_SECTION_LENGTH             40    // 所属


#define FIELD_MASK_LAST_MODIFY            0x00000001  // 最終改定日時
#define FIELD_MASK_GROUP_NO               0x00000002  // グループNo.
#define FIELD_MASK_MEMORY_NO              0x00000004  // メモリNo.
#define FIELD_MASK_SECRET                 0x00000008  // シークレット
#define FIELD_MASK_NAME                   0x00000010  // 名前
#define FIELD_MASK_YOMI                   0x00000020  // 読み
#define FIELD_MASK_TEL_NO1                0x00000040  // 電話番号１
#define FIELD_MASK_TEL_NO2                0x00000080  // 電話番号２
#define FIELD_MASK_TEL_NO3                0x00000100  // 電話番号３
#define FIELD_MASK_MAIL_ADDR1             0x00000200  // Eメールアドレス１
#define FIELD_MASK_MAIL_ADDR2             0x00000400  // Eメールアドレス２
#define FIELD_MASK_MAIL_ADDR3             0x00000800  // Eメールアドレス３
#define FIELD_MASK_BIRTHDAY               0x00001000  // 誕生日
#define FIELD_MASK_HOBBY                  0x00002000  // 趣味
#define FIELD_MASK_ADDRESS                0x00004000  // 住所
#define FIELD_MASK_URL                    0x00008000  // URL
#define FIELD_MASK_MEMO                   0x00010000  // メモ
#define FIELD_MASK_CONSTELLATION          0x00020000  // 星座
#define FIELD_MASK_BLOOD                  0x00040000  // 血液型
#define FIELD_MASK_LOCATION               0x00080000  // 位置情報
#define FIELD_MASK_PHOTO                  0x00100000  // PHOTO
#define FIELD_MASK_POSTAL_NO              0x00200000  // 郵便番号
#define FIELD_MASK_ORGANIZATION           0x00400000  // 組織名称
#define FIELD_MASK_SECTION                0x00800000  // 所属

//▼PTX-804 EMUI-20050218001 NJK 高橋 直美

//
//	構造体のバージョン番号
//
/* .Start Kiriyama @PTX804-002 */
//#define	ADDR_BOOK_RECORD_VERSION				1
/* .End   Kiriyama @PTX804-002 */
//
//	各フィールドの最大長
//
//	文字列であるフィールドの最大長を示す。この長さは終端文字(0x00)は含まれない。
//
/* .Start Kiriyama @PTX804-002 */
//#define	ADDRBOOK_MAX_NAME_LENGTH 				24		// 名前
//#define	ADDRBOOK_MAX_YOMI_LENGTH 				24		// 読み
//#define	ADDRBOOK_MAX_TEL_NO_LENGTH 			36		// 電話番号
//#define	ADDRBOOK_MAX_MAIL_ADDR_LENGTH 		64		// Eメールアドレス
//#define	ADDRBOOK_MAX_BIRTHDAY_LENGTH 			10		// 誕生日
//#define	ADDRBOOK_MAX_HOBBY_LENGTH 				20		// 趣味
//#define	ADDRBOOK_MAX_ADDRESS_LENGTH 			80		// 住所
//#define	ADDRBOOK_MAX_URL_LENGTH 				256	// URL
//#define	ADDRBOOK_MAX_MEMO_LENGTH 				80		// メモ
// Porting Package-Nakagomi-11/21/03 [S]
//#define	ADDRBOOK_MAX_LOCATION_LENGTH 			66		// 位置情報
// Porting Package-Nakagomi-11/21/03 [E]
//#define	ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH	45		// 画像ファイル名
//#define	ADDRBOOK_MAX_POSTAL_NO_LENGTH			10		// 郵便番号
//#define	ADDRBOOK_MAX_ORGANIZATION_LENGTH		40		// 組織
//#define	ADDRBOOK_MAX_SECTION_LENGTH			40		// 所属
//▲PTX-804 EMUI-20050218001 NJK 高橋 直美
/* .End   Kiriyama @PTX804-002 */

//
//	電話属性
//
#define ADDRBOOK_TEL_ATTR_NONE                  0     // なし
#define ADDRBOOK_TEL_ATTR_CELLULAR              1     // 携帯
#define ADDRBOOK_TEL_ATTR_PHS                   2     // PHS
#define ADDRBOOK_TEL_ATTR_HOME                  3     // 自宅
#define ADDRBOOK_TEL_ATTR_OFFICE                4     // 仕事
#define ADDRBOOK_TEL_ATTR_FAX                   5     // FAX

//
//	EMAIL属性
//
#define ADDRBOOK_EMAIL_ATTR_NONE                0     // なし
#define ADDRBOOK_EMAIL_ATTR_CELLULAR            1     // 携帯
#define ADDRBOOK_EMAIL_ATTR_PHS                 2     // PHS
#define ADDRBOOK_EMAIL_ATTR_HOME                3     // 自宅
#define ADDRBOOK_EMAIL_ATTR_SCHOOL              4     // 学校
#define ADDRBOOK_EMAIL_ATTR_OFFICE              5     // 仕事

//
//	住所属性
//
#define ADDRBOOK_ADDRESS_ATTR_NONE              0     // なし
#define ADDRBOOK_ADDRESS_ATTR_HOME              1     // 自宅
#define ADDRBOOK_ADDRESS_ATTR_OFFICE            2     // 仕事

//
//	血液型
//
#define ADDRBOOK_BLOOD_NONE                     0     // なし
#define ADDRBOOK_BLOOD_A                        1     // A型
#define ADDRBOOK_BLOOD_B                        2     // B型
#define ADDRBOOK_BLOOD_O                        3     // O型
#define ADDRBOOK_BLOOD_AB                       4     // AB型

//
//	星座
//
#define ADDRBOOK_CONSTELLATION_NONE             0     // なし
#define ADDRBOOK_CONSTELLATION_ARIES            1     // 牡羊座
#define ADDRBOOK_CONSTELLATION_TAURUS           2     // 牡牛座
#define ADDRBOOK_CONSTELLATION_GEMINI           3     // 双子座
#define ADDRBOOK_CONSTELLATION_CANCER           4     // 蟹座
#define ADDRBOOK_CONSTELLATION_LEO              5     // 獅子座
#define ADDRBOOK_CONSTELLATION_VIRGO            6     // 乙女座
#define ADDRBOOK_CONSTELLATION_LIBRA            7     // 天秤座
#define ADDRBOOK_CONSTELLATION_SCORPIO          8     // 蠍座
#define ADDRBOOK_CONSTELLATION_OPHIUCHUS        9     // 蛇遣座
#define ADDRBOOK_CONSTELLATION_SAGITTARIUS      10    // 射手座
#define ADDRBOOK_CONSTELLATION_CAPRICORN        11    // 山羊座
#define ADDRBOOK_CONSTELLATION_AQUARIUS         12    // 水瓶座
#define ADDRBOOK_CONSTELLATION_PISCES           13    // 魚座


#define MEM_NO_STATUS_UNUSED                    0     // 未使用
#define MEM_NO_STATUS_USED                      1     // 使用中
#define MEM_NO_STATUS_SECRET                    2     // シークレットで使用中


#define MEMORY_NO_AUTO                     0xffff     //  メモリ番号自動取得

//▼PTX-804 BREW-20050304002 NJK 高橋 直美
#define SEARCHNO_INPUTMODE_DIALNUM						0
#define SEARCHNO_INPUTMODE_MAILADD						1
#define SEARCHNO_OUTPUTMODE_MEMORYNUM					0
#define SEARCHNO_OUTPUTMODE_GROUPNUM					1
//▲PTX-804 BREW-20050304002 NJK 高橋 直美

/*-------------------------------------------------------------------------------------------
   Type Declarations
-------------------------------------------------------------------------------------------*/

typedef struct _ADDR_BOOK_RECORD {
   uint32   dwVersionNo;
   uint32   dwLastModify;
   uint16   wGroupNo;
   uint16   wMemoryNo;
   boolean  bSecret;
   char     szName[ADDRBOOK_MAX_NAME_LENGTH+1];
   char     szYomi[ADDRBOOK_MAX_YOMI_LENGTH+1];
   char     szTelNo1[ADDRBOOK_MAX_TEL_NO_LENGTH+1];
   byte     byTelNo1Attr;
   char     szTelNo2[ADDRBOOK_MAX_TEL_NO_LENGTH+1];
   byte     byTelNo2Attr;
   char     szTelNo3[ADDRBOOK_MAX_TEL_NO_LENGTH+1];
   byte     byTelNo3Attr;
   char     szEmailAddr[ADDRBOOK_MAX_MAIL_ADDR_LENGTH+1];
   byte     byEmail1Attr;
   char     szEmailAddr2[ADDRBOOK_MAX_MAIL_ADDR_LENGTH+1];
   byte     byEmail2Attr;
   char     szEmailAddr3[ADDRBOOK_MAX_MAIL_ADDR_LENGTH+1];
   byte     byEmail3Attr;
   char     szBirthday[ADDRBOOK_MAX_BIRTHDAY_LENGTH+1];
   char     szHobby[ADDRBOOK_MAX_HOBBY_LENGTH+1];
   char     szAddress[ADDRBOOK_MAX_ADDRESS_LENGTH+1];
   byte     byAddressAttr;
   char     szUrl[ADDRBOOK_MAX_URL_LENGTH+1];
   char     szMemo[ADDRBOOK_MAX_MEMO_LENGTH+1];
   byte     byConstellation;
   byte     byBlood;
   char     szLocation[ADDRBOOK_MAX_LOCATION_LENGTH+1];
   char     szPhotoFileName[ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH+1];
   char     szPostalNo[ADDRBOOK_MAX_POSTAL_NO_LENGTH+1];
   char     szOrganization[ADDRBOOK_MAX_ORGANIZATION_LENGTH+1];
   char     szSection[ADDRBOOK_MAX_SECTION_LENGTH+1];
} ADDR_BOOK_RECORD;


typedef struct _ADDR_BOOK_INFO{
   uint16   wMaxMno;
   uint16   wHistryNum;
/* .Start Kiriyama @PTX804-003 */
   uint16   wMailNum;
/* .End   Kiriyama @PTX804-003 */
} ADDR_BOOK_INFO;


typedef struct _MEMORY_NO_STATUS{
   byte     byStatus;
   uint32   dwLastModify;
}MEMORY_NO_STATUS;

//
//	メモリ番号ステータス
//
#define	MEM_NO_STATUS_UNUSED					0		// 未使用
#define	MEM_NO_STATUS_USED					1		// 使用中
#define	MEM_NO_STATUS_SECRET					2		// シークレットで使用中

/*-------------------------------------------------------------------------------------------
   Macros Declarations
-------------------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------------------
   Function Declarations
-------------------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------------------
   Data Declarations
-------------------------------------------------------------------------------------------*/


/*===========================================================================================
 FUNCTION DECLARATIONS AND INLINE FUNCTION DEFINITIONS
===========================================================================================*/
/*-------------------------------------------------------------------------------------------
   Interface Definitions
-------------------------------------------------------------------------------------------*/
AEEINTERFACE(IAddr)
{
   INHERIT_IBase(IAddr);
   int (*Get)           (IAddr * pIAddr, uint16 wMemoryNo, uint32 dwFieldMask, ADDR_BOOK_RECORD * pAddrBookRecord);
   int (*GetInfo)       (IAddr * pIAddr, ADDR_BOOK_INFO * pAddrBookInfo);
   int (*GetMemNoStatus)(IAddr * pIAddr, MEMORY_NO_STATUS MemoryNoStatus[]);
   int (*Put)           (IAddr * pIAddr, uint16 * pwMemoryNo, uint32 dwFieldMask, ADDR_BOOK_RECORD * pAddrBookRecord, boolean bUpdate);
   int (*SearchNo)      (IAddr * pIAddr, int nInputMode, int nSearchMode, char * pInbuf, uint16 * pnRet);
   int (*GetGroupName)  (IAddr * pIAddr, uint16 usGroupNum, char * pszGroupName, int * pnSize);
};


/*-------------------------------------------------------------------------------------------
   Access Macros
-------------------------------------------------------------------------------------------*/
#define IADDR_AddRef(po)                  AEEGETPVTBL(po,IAddr)->AddRef(po)
#define IADDR_Release(po)                 AEEGETPVTBL(po,IAddr)->Release(po)
#define IADDR_Get(po,mn,fm,prec)          AEEGETPVTBL(po,IAddr)->Get(po,mn,fm,prec)
#define IADDR_GetInfo(po,pinf)            AEEGETPVTBL(po,IAddr)->GetInfo(po,pinf)
#define IADDR_GetMemNoStatus(po,ms)       AEEGETPVTBL(po,IAddr)->GetMemNoStatus(po,ms)
#define IADDR_Put(po,pmn,fm,prec,bu)      AEEGETPVTBL(po,IAddr)->Put(po,pmn,fm,prec,bu)
#define IADDR_SearchNo(po,ni,ns,pb,pn)    AEEGETPVTBL(po,IAddr)->SearchNo(po,ni,ns,pb,pn)
#define IADDR_GetGroupName(po,us,psz,pn)  AEEGETPVTBL(po,IAddr)->GetGroupName(po,us,psz,pn)


/*===========================================================================================
   DATA STRUCTURE DOCUMENTATION
=============================================================================================
=============================================================================================
ADDR_BOOK_RECORD

Description:
   アドレス帳データ構造体。文字列のフィールドは、全て0x00 終端である。

Definition:

   typedef struct _ADDR_BOOK_RECORD {
      uint32   dwVersionNo;
      uint32   dwLastModify;
      uint16   wGroupNo;
      uint16   wMemoryNo;
      boolean  bSecret;
      char     szName[ADDRBOOK_MAX_NAME_LENGTH+1];
      char     szYomi[ADDRBOOK_MAX_YOMI_LENGTH+1];
      char     szTelNo1[ADDRBOOK_MAX_TEL_NO_LENGTH+1];
      byte     byTelNo1Attr;
      char     szTelNo2[ADDRBOOK_MAX_TEL_NO_LENGTH+1];
      byte     byTelNo2Attr;
      char     szTelNo3[ADDRBOOK_MAX_TEL_NO_LENGTH+1];
      byte     byTelNo3Attr;
      char     szEmailAddr[ADDRBOOK_MAX_MAIL_ADDR_LENGTH+1];
      byte     byEmail1Attr;
      char     szEmailAddr2[ADDRBOOK_MAX_MAIL_ADDR_LENGTH+1];
      byte     byEmail2Attr;
      char     szEmailAddr3[ADDRBOOK_MAX_MAIL_ADDR_LENGTH+1];
      byte     byEmail3Attr;
      char     szBirthday[ADDRBOOK_MAX_BIRTHDAY_LENGTH+1];
      char     szHobby[ADDRBOOK_MAX_HOBBY_LENGTH+1];
      char     szAddress[ADDRBOOK_MAX_ADDRESS_LENGTH+1];
      byte     byAddressAttr;
      char     szUrl[ADDRBOOK_MAX_URL_LENGTH+1];
      char     szMemo[ADDRBOOK_MAX_MEMO_LENGTH+1];
      byte     byConstellation;
      byte     byBlood;
      char     szLocation[ADDRBOOK_MAX_LOCATION_LENGTH+1];
      char     szPhotoFileName[ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH+1];
      char     szPostalNo[ADDRBOOK_MAX_POSTAL_NO_LENGTH+1];
      char     szOrganization[ADDRBOOK_MAX_ORGANIZATION_LENGTH+1];
      char     szSection[ADDRBOOK_MAX_SECTION_LENGTH+1];
   } ADDR_BOOK_RECORD;

Members:
   dwVersionNo:      構造体のバージョン
   dwLastModify:     最終改定日時。現地時間に調節した1980 年1 月6 日00:00:00 からの秒数
   wGroupNo:         グループNo.
   wMemoryNo:        メモリNo.
   bSecret:          シークレット設定
                     FALSE 非シークレット
                     TRUE  シークレット。移動機がシークレットモードの場合のみアクセス可能
   szName:           名前
   szYomi:           読み
   szTelNo1:         電話番号1
   byTelNo1Attr:     電話番号1 属性
   szTelNo2:         電話番号2
   byTelNo2Attr:     電話番号2 属性
   szTelNo3:         電話番号3
   byTelNo3Attr:     電話番号3 属性
   szEmailAddr:      E メールアドレス1
   byEmail1Attr:     E メールアドレス1 属性
   szEmailAddr2:     E メールアドレス2
   byEmail2Attr:     E メールアドレス2 属性
   szEmailAddr3:     E メールアドレス3
   byEmail3Attr:     E メールアドレス3 属性
   szBirthday:       誕生日yyyymmdd
   szHobby:          趣味
   szAddress:        住所
   byAddressAttr:    住所属性
   szUrl:            URL
   szMemo:           メモ
   byConstellation:  星座
   byBlood:          血液型
   szLocation:       位置情報
   szPhotoFileName:  PHOTO
   szPostalNo:       郵便番号
   szOrganization:   組織名称
   szSection:        所属

Comments:
   本構造体をIADDR_Get() / IADDR_Put()の引数として指定する場合、メンバであるdwVersionNo(構造
   体のバージョン番号)には必ずADDR_BOOK_RECORD_VERSION を設定しなければならない。

   ADDR_BOOK_RECORD_VERSION   1  構造体のバージョン番号

See Also:
   無し

=============================================================================================
各フィールドの最大長

Description:
   文字列であるフィールドの最大長を示す。この長さは終端文字(0x00)は含まれない。

Definition:
   ADDRBOOK_MAX_NAME_LENGTH:               24    名前
   ADDRBOOK_MAX_YOMI_LENGTH:               24    読み
   ADDRBOOK_MAX_TEL_NO_LENGTH:             36    電話番号
   ADDRBOOK_MAX_MAIL_ADDR_LENGTH:          64    Eメールアドレス
   ADDRBOOK_MAX_BIRTHDAY_LENGTH:           10    誕生日
   ADDRBOOK_MAX_HOBBY_LENGTH:              20    趣味
   ADDRBOOK_MAX_ADDRESS_LENGTH:            80    住所
   ADDRBOOK_MAX_URL_LENGTH:                256   URL
   ADDRBOOK_MAX_MEMO_LENGTH:               80    メモ
   ADDRBOOK_MAX_LOCATION_LENGTH:           66    位置情報
// .Start Kiriyama @PTX804-001
// ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH:    45    PHOTO
   ADDRBOOK_MAX_PHOTO_FILE_NAME_LENGTH:    256   PHOTO
// .End   Kiriyama @PTX804-001
   ADDRBOOK_MAX_POSTAL_NO_LENGTH           10    郵便番号
   ADDRBOOK_MAX_ORGANIZATION_LENGTH        40    組織名称
   ADDRBOOK_MAX_SECTION_LENGTH             40    所属

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
フィールドマスク

Description:
   アドレス帳にアクセスする場合に使用する、各フィールドに対応したマスクを以下に定義する。

Definition:
   FIELD_MASK_LAST_MODIFY            0x00000001  最終改定日時
   FIELD_MASK_GROUP_NO               0x00000002  グループNo.
   FIELD_MASK_MEMORY_NO              0x00000004  メモリNo.
   FIELD_MASK_SECRET                 0x00000008  シークレット
   FIELD_MASK_NAME                   0x00000010  名前
   FIELD_MASK_YOMI                   0x00000020  読み
   FIELD_MASK_TEL_NO1                0x00000040  電話番号１
   FIELD_MASK_TEL_NO2                0x00000080  電話番号２
   FIELD_MASK_TEL_NO3                0x00000100  電話番号３
   FIELD_MASK_MAIL_ADDR1             0x00000200  Eメールアドレス１
   FIELD_MASK_MAIL_ADDR2             0x00000400  Eメールアドレス２
   FIELD_MASK_MAIL_ADDR3             0x00000800  Eメールアドレス３
   FIELD_MASK_BIRTHDAY               0x00001000  誕生日
   FIELD_MASK_HOBBY                  0x00002000  趣味
   FIELD_MASK_ADDRESS                0x00004000  住所
   FIELD_MASK_URL                    0x00008000  URL
   FIELD_MASK_MEMO                   0x00010000  メモ
   FIELD_MASK_CONSTELLATION          0x00020000  星座
   FIELD_MASK_BLOOD                  0x00040000  血液型
   FIELD_MASK_LOCATION               0x00080000  位置情報
   FIELD_MASK_PHOTO                  0x00100000  PHOTO
   FIELD_MASK_POSTAL_NO              0x00200000  郵便番号
   FIELD_MASK_ORGANIZATION           0x00400000  組織名称
   FIELD_MASK_SECTION                0x00800000  所属

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
電話属性

Description:
   無し

Definition:
   ADDRBOOK_TEL_ATTR_NONE                  0     なし
   ADDRBOOK_TEL_ATTR_CELLULAR              1     携帯
   ADDRBOOK_TEL_ATTR_PHS                   2     PHS
   ADDRBOOK_TEL_ATTR_HOME                  3     自宅
   ADDRBOOK_TEL_ATTR_OFFICE                4     仕事
   ADDRBOOK_TEL_ATTR_FAX                   5     FAX

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
EMAIL 属性

Description:
   無し

Definition:
   ADDRBOOK_EMAIL_ATTR_NONE                0     なし
   ADDRBOOK_EMAIL_ATTR_CELLULAR            1     携帯
   ADDRBOOK_EMAIL_ATTR_PHS                 2     PHS
   ADDRBOOK_EMAIL_ATTR_HOME                3     自宅
   ADDRBOOK_EMAIL_ATTR_SCHOOL              4     学校
   ADDRBOOK_EMAIL_ATTR_OFFICE              5     仕事

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
住所属性

Description:
   無し

Definition:
   ADDRBOOK_ADDRESS_ATTR_NONE              0     なし
   ADDRBOOK_ADDRESS_ATTR_HOME              1     自宅
   ADDRBOOK_ADDRESS_ATTR_OFFICE            2     仕事

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
血液型

Description:
   無し

Definition:
   ADDRBOOK_BLOOD_NONE                     0     なし
   ADDRBOOK_BLOOD_A                        1     A型
   ADDRBOOK_BLOOD_B                        2     B型
   ADDRBOOK_BLOOD_O                        3     O型
   ADDRBOOK_BLOOD_AB                       4     AB型

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
星座

Description:
   無し

Definition:
   ADDRBOOK_CONSTELLATION_NONE             0     なし
   ADDRBOOK_CONSTELLATION_ARIES            1     牡羊座
   ADDRBOOK_CONSTELLATION_TAURUS           2     牡牛座
   ADDRBOOK_CONSTELLATION_GEMINI           3     双子座
   ADDRBOOK_CONSTELLATION_CANCER           4     蟹座
   ADDRBOOK_CONSTELLATION_LEO              5     獅子座
   ADDRBOOK_CONSTELLATION_VIRGO            6     乙女座
   ADDRBOOK_CONSTELLATION_LIBRA            7     天秤座
   ADDRBOOK_CONSTELLATION_SCORPIO          8     蠍座
   ADDRBOOK_CONSTELLATION_OPHIUCHUS        9     蛇遣座
   ADDRBOOK_CONSTELLATION_SAGITTARIUS      10    射手座
   ADDRBOOK_CONSTELLATION_CAPRICORN        11    山羊座
   ADDRBOOK_CONSTELLATION_AQUARIUS         12    水瓶座
   ADDRBOOK_CONSTELLATION_PISCES           13    魚座

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
ADDR_BOOK_INFO

Description:
   アドレス帳情報データ構造体

Definition:
   typedef struct _ADDR_BOOK_INFO{
      uint16   wMaxMno;
      uint16   wHistryNum;
// .Start Kiriyama @PTX804-003
      uint16   wMailNum;
// .End   Kiriyama @PTX804-003
   } ADDR_BOOK_INFO;

Members:
   wMaxMno:       最大メモリ番号
   wHistryNum:    登録済みレコード数
// .Start Kiriyama @PTX804-003
   wMailNum:      Eメールアドレスが登録されているレコードの数
// .End   Kiriyama @PTX804-003

Comments:
// .Start Kiriyama @PTX804-003
   wMaxMnoに格納される値は0基準であることに注意。
   wMailNumの値は、Eメールアドレス1～3が全て登録されていても、1件として扱うこと。
   シークレットモードOFFの場合に返却する値は、メンバ毎に下記のように異なる点に注意すること
      wHistryNum：シークレット登録されているレコードもカウントする
      wMailNum：シークレット登録されているレコードはカウントしない
// .End   Kiriyama @PTX804-003

See Also:
   無し

=============================================================================================
MEMORY_NO_STATUS

Description:
   アドレス帳情報構造体

Definition:
   typedef struct _MEMORY_NO_STATUS{
      byte     byStatus;
      uint32   dwLastModify;
   }MEMORY_NO_STATUS;

Members:
   byStatus:      下記の状態を示す
                  MEM_NO_STATUS_UNUSED    0  未使用
                  MEM_NO_STATUS_USED      1  使用中
                  MEM_NO_STATUS_SECRET    2  シークレットで使用中

   dwLastModify:  最終更新日付。現地時間に調節した1980 年1 月6 日00:00:00 からの秒数

Comments:
   無し

See Also:
   無し

=============================================================================================
メモリ番号自動取得用定義値

Description:
   アドレス帳新規登録の場合、メモリ番号として下記の値を指定すると、自動的にメモリ番
   号が取得される。

Definition:
   MEMORY_NO_AUTO    0xffff   メモリ番号自動取得

Members:
   無し

Comments:
   無し

See Also:
   無し

=============================================================================================
=============================================================================================
   INTERFACE DOCUMENTATION
=============================================================================================

Interface Name: IADDRインターフェース

Description:
   IADDRはKDDI仕様であるアドレス帳に対する、読み出し、書き込み、その他情報取得をサポートする。

   ・指定可能フィールド
     IADDRにてアクセス可能なフィールドは以下の通り。
        No   項目
        1    最終改訂日時
        2    シークレット
        3    名前
        4    よみ
        5    電話番号１
        6    電話番号１属性
        7    電話番号２
        8    電話番号２属性
        9    電話番号３
        10   電話番号３属性
        11   Eメールアドレス１
        12   Eメールアドレス１属性
        13   Eメールアドレス２
        14   Eメールアドレス２属性
        15   Eメールアドレス３
        16   Eメールアドレス３属性
        17   グループNo.
        18   メモリNo.
        19   誕生日
        20   趣味
        21   住所
        22   住所属性
        23   URL
        24   星座
        25   血液型
        26   メモ
        27   位置情報
        28   PHOTO
        29   郵便番号
        30   組織名称
        31   所属

   ・最終改訂日時、メモリNo
      本フィールドに対しては、読み込みのみを可能とし、書き込みはサポートしない。

   ・Photo
      本フィールドに格納される情報は、データフォルダ内の実ファイル名とする。
      また、本フィールドへの書き込みは、データフォルダ内に対象のファイルが存在する時のみ可能とする。
      なお、ファイルパスに関しては、「BREW3.1 搭載移動機実装要求仕様書 ストレージ編」を参照のこと。

   ・推奨フィールドの扱い
      アドレス帳の仕様で「推奨」扱いとなっているフィールドに関してはNativeのアドレス帳がサポート
      している場合のみ対応する。なお、アドレス帳でサポートしていない場合に、本フィールドに対して
      書き込み、または読み込み処理を行った際には、処理を成功とした上で、文字列情報を格納する
      フィールドは「終端文字」を、数値情報を格納するフィールドは｢0｣をそれぞれ書き込み/読み込みす
      ること。
      詳細な処理は、「5.5 IADDR_Put()」、「5.2 IADDR_Get()」を参照のこと。
      なお、推奨扱いのフィールドは以下のとおり。

      ・電話番号３
      ・電話番号３属性
      ・Eメールアドレス３
      ・Eメールアドレス３属性
      ・郵便番号
      ・組織名称
      ・所属


Functions in this interface include:
   IADDR_AddRef
   IADDR_Release
   IADDR_Get
   IADDR_GetInfo
   IADDR_GetMemNoStatus
   IADDR_Put
   IADDR_SearchNo
   IADDR_GetGroupName
=============================================================================================
IADDR_AddRef()

Description:
   インターフェイスオブジェクトの参照カウンタをインクリメントする。

Prototype:
   uint32 IADDR_AddRef(IAddr * pIAddr);

Parameters:
   pIAddr : IAddr Interfaceオブジェクトのポインタ

Return Value:
   インクリメント後のオブジェクト参照カウンタ値

Comments:
   オブジェクトが有効な場合、正の参照カウンタ値を返す。

Side Effects:
   無し

See Also:
   IADDR_Release()

=============================================================================================
IADDR_Get()

Description:
   アドレス帳から指定したメモリ番号のレコードを取得する。

Prototype:
   int IADDR_Get(IAddr * pIAddr, uint16 wMemoryNo, uint32 dwFieldMask, ADDR_BOOK_RECORD * pAddrBookRecord);

Parameters:
   pIAddr          : IAddr Interfaceオブジェクトのポインタ
   wMemoryNo       : 取得すべきレコードのメモリ番号
   dwFieldMask     : 取得すべきフィールドに対応したビットマスク、複数指定する際にはORで指定する
   pAddrBookRecord : 取得したレコードが格納される領域のポインタ

Return Value:
   KDDI_SUCCESS      成功.
   KDDI_EFAILED      失敗
   KDDI_EBADPARAM    メモリ番号が不正
   KDDI_ERESTRICTED  アドレス帳アクセスが制限されている
   KDDI_ESECRET      シークレットレコードにアクセス

Comments:
   ・アドレス帳に項目は存在しても内容が設定されていない状態（「なし」や「未選択」と選択されて
     いる状態）であった場合は、文字列情報の場合は「終端文字」を、数値情報の場合は「0」をそれ
     ぞれ返却すること。
   ・アドレス帳仕様にて推奨扱いのフィールド(電話番号３、電話番号３属性、Eメールアドレス３、
     Eメールアドレス３属性、郵便番号、組織名称、所属)に対して読み込みを行った際、本フィールド
     がアドレス帳にて対応されていなかった場合には、文字列情報持つフィールドであれば「終端文字」、
     数値情報を持つフィールドであれば「0」を取得し、戻り値として「KDDI_SUCCESS」を返却すること。
   ・メモリ番号として0xffffが指定された際には、プロフィールを返却すること。
     なお、その際の挙動は全て通常のレコード取得時と同様とすること。

See Also:
   無し

=============================================================================================
IADDR_GetInfo()

Description:
   アドレス帳情報を取得する。

Prototype:
   int IADDR_GetInfo(IAddr * pIAddr, ADDR_BOOK_INFO * pAddrBookInfo);

Parameters:
   pIAddr         : IAddr Interfaceオブジェクトのポインタ
   pAddrBookInfo  : アドレス帳情報が返却される領域のポインタ
                    情報としては、最大メモリ番号、登録済みレコード数等が返却される

Return Value:
   KDDI_SUCCESS      成功.
   KDDI_EFAILED      失敗
   KDDI_ERESTRICTED  アドレス帳アクセスが制限されている

Comments:
   ・登録レコード数を返却する際には、シークレット登録されているデータも含めて返却すること。
   ・プロフィールは本関数におけるカウントの対象外とすること。

See Also:
   None

=============================================================================================
IADDR_GetMemNoStatus()

Description:
   メモリ番号の状態を取得する。本APIを使用する場合は、IADDR_GetInfo()で
   移動機で使用できる最大メモリ番号を取得し、全体が格納できるだけのメモリ領域を
   用意しなければならない。

Prototype:
   int IADDR_GetMemNoStatus(IAddr * pIAddr, MEMORY_NO_STATUS MemoryNoStatus[]);

Parameters:
   pIAddr         : IAddr Interfaceオブジェクトのポインタ
   MemoryNoStatus : MEMORY_NO_STATUSの配列を指定する。
                    この配列は、最大メモリ番号数だけ用意しなければならない｡
                    各メモリ番号に対応した領域に各メモリ番号に対応したレコード情報が返却される。

Return Value:
   KDDI_SUCCESS      成功.
   KDDI_EFAILED      失敗
   KDDI_ERESTRICTED  アドレス帳アクセスが制限されている

Comments:
   無し

See Also:
   無し

=============================================================================================
IADDR_Put()

Description:
   指定したレコードをアドレス帳に書き込む。

Prototype:
   int IADDR_Put(IAddr * pIAddr, uint16 * pwMemoryNo, uint32 dwFieldMask, ADDR_BOOK_RECORD * pAddrBookRecord, boolean bUpdate);

Parameters:
   pIAddr          : IAddr Interfaceオブジェクトのポインタ
   pwMemoryNo      : 書き込むべきレコードのメモリ番号が格納されている領域のポインタを指定する。
                     MEMORY_NO_AUTOが指定された場合は、メモリ番号が返却される。
                     この指定は、新規登録の場合のみ有効である｡
   dwFieldMask     : 取得すべきフィールドに対応したビットマスク
   pAddrBookRecord : 取得したレコードが格納される領域のポインタ
   bUpdate         : 更新か新規かを示す

                     TRUE 更新（上書き）を示す。（登録が無くてもエラーにしない）
                          フィールドマスクで指定されたフィールドのみが書き込まれる。
                          フィールドマスクで指定されていないフィールドは変更しない。

                     FALSE 新規登録を示す。指定したメモリ番号にレコードが既に登録されている場合は、
                           エラーになる。フィールドマスクで指定されたフィールド以外は初期値が書き込まれる。

Return Value:
   KDDI_SUCCESS      成功.
   KDDI_EFAILED      失敗
   KDDI_EALREADY     既に登録済み
   KDDI_EBADPARAM    メモリ番号が不正
   KDDI_ERESTRICTED  アドレス帳アクセスが制限されている
   KDDI_ESECRET      シークレットレコードにアクセス
   KDDI_EFULL        空きメモリ番号がない

Comments:
   ・アドレス帳仕様にて推奨扱いのフィールド(電話番号３、電話番号３属性、Eメールアドレス３、
     Eメールアドレス３属性、郵便番号、組織名称、所属)に対して読み込みを行った際、本フィールド
     がアドレス帳にて対応されていなかった場合には、書き込みは行わず、戻り値として
     「KDDI_SUCCESS」を返却すること。

   ・「よみ」で使用される文字種に応じた処理は以下の通りとすること。

      入力文字種     戻り値
      漢字           KDDI_EFAILEDを返却
      ひらがな       KDDI_EFAILEDを返却
      改行           KDDI_EFAILEDを返却
      絵文字         KDDI_EFAILEDを返却
      全角カタカナ   半角に変換し、KDDI_SUCCESSを返却
      全角英数字     半角に変換し、KDDI_SUCCESSを返却
      全角記号       半角に変換し、KDDI_SUCCESSを返却
      半角カタカナ   KDDI_SUCCESSを返却
      半角英数字     KDDI_SUCCESSを返却
      半角記号       KDDI_SUCCESSを返却

   ・「PHOTO」項目の書き込み時、データフォルダ内に対象のファイルが存在しなかった場合は、
     「KDDI_EBADPARM」を返却すること。

   ・登録先の指定に関連するIADDR_Put()の連携パラメータは、以下の5つを想定している。
      ① IADDR_Put()の第2引数pwMemoryNo にメモリ番号を指定
      ② IADDR_Put()の第2引数pwMemoryNo にMEMORY_NO_AUTO を指定
      ③ ADDR_BOOK_RECORD 構造体のwMemoryNo にメモリ番号を指定
      ④ IADDR_Put()の第5引数bUpdate にTRUE（上書き）を指定
      ⑤ IADDR_Put()の第5引数bUpdate にFALSE（新規登録）を指定

      上記パラメータの組み合わせのパターン及び動作を、以下の通り規定する。
      組合せ      動作                                   備考
      ①＋③＋④  ①で指定されたメモリ番号に上書き登録
      ①＋③＋⑤  ①で指定されたメモリ番号に新規登録     登録済みの場合は「KDDI_EALREADY」を返却
      ①＋④      ①で指定されたメモリ番号に上書き登録
      ①＋⑤      ①で指定されたメモリ番号に新規登録     登録済みの場合は「KDDI_EALREADY」を返却

      組合せ      動作                                   備考
      ②＋③＋④  「KDDI_EBADPARM」を返却
      ②＋③＋⑤  一番若い空き番号に新規登録
      ②＋④      「KDDI_EBADPARM」を返却
      ②＋⑤      一番若い空き番号に新規登録

      組合せ      動作                                   備考
      ③＋④     「KDDI_EBADPARM」を返却
      ③＋⑤     「KDDI_EBADPARM」を返却

      組合せ      動作                                   備考
      ④         「KDDI_EBADPARM」を返却

      組合せ      動作                                   備考
      ⑤         「KDDI_EBADPARM」を返却

   ・フィールド情報が「終端文字」のみであった場合、エラーとせずに書き込みを行うこと。
   ・移動機が使用する有効な値が、パラメータに１つでも指定されていれば、書き込み可能とすること。
   ・上書き時、書き込まないフィールドに対しては、文字列情報であれば「終端文字」、数値情報で
     あれば「0」を格納すること。
   ・アドレス帳の項目に於いて、オプション項目の最大登録件数が、アドレス帳レコード最大登録件数
     を下回り、且つ上限数を超えてオプション項目を登録しようとした場合にはエラーとして
     「KDDI_EFULL」を返却すること。
     （例：最大登録件数500件に対し、オプションの登録上限数100件の状態で、101件のオプション項目
       を登録しようとした場合）

See Also:
   None

=============================================================================================
IADDR_SearchNo()

Description:
   特定のフィールド情報を持つレコードのメモリ番号またはグループ番号を検索する。

Prototype:
   int IADDR_SearchNo(IAddr * pIAddr, int nInputMode, int nSearchMode, char * pInbuf, uint16 * pnRet);

Parameters:
   pIAddr      : IADDR Interface オブジェクトのポインタ
   nInputMode  : 入力モード
                 0 : 電話番号（0から9までの数値のみでMAX36+1byteのNULL終端）
                 1 : Eメールアドレス（MAX64+1byteのNULL終端）
   nSearchMode : 検索モード
                 0 : メモリ番号モード
                 1 : グループ番号モード
   pInbuf      : 検索用のフィールド情報を入力するバッファ
   pnRet       : 検索結果
                 レコードのメモリ番号   : 入力メールアドレスを持つレコードが存在し、
                                          検索モードが0(メモリ番号モード)の時
                 レコードのグループ番号 : 入力メールアドレスを持つレコードが存在し
                                          検索モードが1(グループ番号モード)の時

Return Value:
   KDDI_SUCCESS      成功.
   KDDI_EFAILED      失敗
   KDDI_EBADPARAM    パラメータ不正
   KDDI_EUNSUPPORTED 入力メールアドレスを持つレコードが存在しない

Comments:
   ・入力メールアドレスを持つレコードが複数存在した場合には先勝ちとすること。
   ・グループ番号モード時、入力アドレスを持つレコードにグループ番号が登録されていなかった
     場合には、「KDDI_EUNSUPPORTED」を返却すること。
   ・シークレット登録されているレコードであっても番号を返却すること。
   ・本関数においては、アドレス帳制限時であってもエラーとせずに正常に処理を行うこと。
   ・プロフィールは本処理の対象外とすること。

Side Effects:
   無し

See Also:
   無し

=============================================================================================
IADDR_GetGroupName

Description:
   指定したグループ番号のグループ名を取得する。

Prototype:
   int IADDR_GetGroupName(IAddr * pIAddr, uint16 usGroupNum, char * pszGroupName, int * pnSize);

Parameters:
   pIAddr       : IADDR Interface オブジェクトのポインタ
   usGroupNum   : 取得すべきグループ番号
   pszGroupName : 取得したグループ名が格納される領域のポインタ。
   pnSize       : pGroupNameのサイズを指定する。リターン時に項目サイズが返却される。

Return Value:
   KDDI_SUCCESS      成功.
   KDDI_EFAILED      失敗
   KDDI_EBADPARAM    パラメータが不正
   KDDI_EUNSUPPORTED 対応するグループ名称が未登録

Comments:
   ・pGroupNameにNULLが指定されてた場合には、pSizeに返却するグループ名のバイト数（終端文字を含む）
     を返却すること。
   ・返却するグループ名がpSizeで指定された値よりも大きかった場合には、KDDI_EBADPARAMを返却すること。
   ・指定したグループ番号に対してグループ名が設定されていなかった際には、「KDDI_EUNSUPPORTED」を返却し、pszGroupNameには「終端文字」のみを、pnSizeには「0」を返却すること。
   ・本関数はアドレス帳制限時であっても、エラーとせずに正常に処理を行うこと。

Side Effects:
   無し

See Also:
   None

=============================================================================================
IADDR_Release()

Description:
   インターフェイスオブジェクトの参照カウンタをデクリメントする。

Prototype:
   uint32 IADDR_Release(IAddr * pIAddr)

Parameters:
   pIAddr : IAddr Interfaceオブジェクトのポインタ

Return Value:
   デクリメント後のオブジェクト参照カウンタ値
   0 (ゼロ) オブジェクトが解放され、無効となっている場合

Comments:
   None

Side Effects:
   None

See Also:
   IADDR_AddRef()

===========================================================================================*/


#endif //_IADDR_H_
