/*************************************************************************** * * Copyright 2015-2019 BES. * All rights reserved. All unpublished rights reserved. * * No part of this work may be used or reproduced in any form or by any * means, or stored in a database or retrieval system, without prior written * permission of BES. * * Use of this work is governed by a license granted by BES. * This work contains confidential and proprietary information of * BES. which is protected by copyright, trade secret, * trademark and other intellectual property rights. * ****************************************************************************/ #ifndef __PBAP_I_H__ #define __PBAP_I_H__ #include "obex_i.h" #define PULL_PHONEBOOK_TYPE "x-bt/phonebook" #define PULL_LISTING_TYPE "x-bt/vcard-listing" #define PULL_VCARD_ENTRY_TYPE "x-bt/vcard" typedef uint8 vcard_sort_type; #define VCARD_SORT_ORDER_INDEXED 0x00 /* Indexed sorting */ #define VCARD_SORT_ORDER_ALPHA 0x01 /* Alphabetical sorting */ #define VCARD_SORT_ORDER_PHONETICAL 0x02 /* Phonetical sorting */ typedef uint8 vcard_search_attribute; #define VCARD_SEARCH_ATTRIB_NAME 0x00 /* Search by Name */ #define VCARD_SEARCH_ATTRIB_NUMBER 0x01 /* Search by Number */ #define VCARD_SEARCH_ATTRIB_SOUND 0x02 /* Search by Sound */ struct vcard_filter{ uint32 low; uint32 high; }; #define VCARD_FILTER_VERSION 0 /* Version (Bit 0) */ #define VCARD_FILTER_FN 1 /* Formatted Name (Bit 1) */ #define VCARD_FILTER_N 2 /* Structured Presentation of Name (Bit 2) */ #define VCARD_FILTER_PHOTO 3 /* Associated Image or Photo (Bit 3) */ #define VCARD_FILTER_BDAY 4 /* Birthday (Bit 4) */ #define VCARD_FILTER_ADR 5 /* Delivery Address (Bit 5) */ #define VCARD_FILTER_LABEL 6 /* Delivery (Bit 6) */ #define VCARD_FILTER_TEL 7 /* Telephone (Bit 7) */ #define VCARD_FILTER_EMAIL 8 /* Electronic Mail Address (Bit 8) */ #define VCARD_FILTER_MAILER 9 /* Electronic Mail (Bit 9) */ #define VCARD_FILTER_TZ 10 /* Time Zone (Bit 10) */ #define VCARD_FILTER_GEO 11 /* Geographic Position (Bit 11) */ #define VCARD_FILTER_TITLE 12 /* Job (Bit 12) */ #define VCARD_FILTER_ROLE 13 /* Role within the Organization (Bit 13) */ #define VCARD_FILTER_LOGO 14 /* Organization Logo (Bit 14) */ #define VCARD_FILTER_AGENT 15 /* vCard of Person Representing (Bit 15) */ #define VCARD_FILTER_ORG 16 /* Name of Organization (Bit 16) */ #define VCARD_FILTER_NOTE 17 /* Comments (Bit 17) */ #define VCARD_FILTER_REV 18 /* Revision (Bit 18) */ #define VCARD_FILTER_SOUND 19 /* Pronunciation of Name (Bit 19) */ #define VCARD_FILTER_URL 20 /* Uniform Resource Locator (Bit 20) */ #define VCARD_FILTER_UID 21 /* Unique ID (Bit 21) */ #define VCARD_FILTER_KEY 22 /* Public Encryption Key (Bit 22) */ #define VCARD_FILTER_NICKNAME 23 /* Nickname (Bit 23) */ #define VCARD_FILTER_CATEGORIES 24 /* Categories (Bit 24) */ #define VCARD_FILTER_PRODID 25 /* Product Id (Bit 25) */ #define VCARD_FILTER_CLASS 26 /* Class Information (Bit 26) */ #define VCARD_FILTER_SORT_STRING 27 /* Sort string (Bit 27) */ #define VCARD_FILTER_TIMESTAMP 28 /* Time stamp (Bit 28) */ /* Bits 29-38 Reserved for future use */ #define VCARD_FILTER_PROPRIETARY 39 /* Use of a proprietary filter (Bit 39) */ /* Bits 40-63 Reserved for proprietary filter usage */ typedef uint8 vcard_format; #define VCARD_FORMAT_21 0x00 /* Version 2.1 format */ #define VCARD_FORMAT_30 0x01 /* Version 3.0 format */ typedef uint8 app_parameter_tag; #define PBAP_TAG_ORDER 0x01 /* 1-byte, 0x00 (indexed), 0x01 (alpha), or 0x02 (phonetic) */ #define PBAP_TAG_SEARCH_VALUE 0x02 /* Variable length text string */ #define PBAP_TAG_SEARCH_ATTRIB 0x03 /* 1-byte, 0x00 (Name), 0x01 (Number), or 0x02 (Sound) */ #define PBAP_TAG_MAX_LIST_COUNT 0x04 /* 2-bytes, 0x0000 to 0xFFFF */ #define PBAP_TAG_LIST_OFFSET 0x05 /* 2-bytes, 0x0000 to 0xFFFF */ #define PBAP_TAG_FILTER 0x06 /* 8-bytes, 64 bit mask */ #define PBAP_TAG_FORMAT 0x07 /* 1-byte, 0x00 = 2.1, 0x01 = 3.0 */ #define PBAP_TAG_PHONEBOOK_SIZE 0x08 /* 2-bytes, 0x0000 to 0xFFFF */ #define PBAP_TAG_MISSED_CALLS 0x09 /* 1-byte, 0x00 to 0xFF */ enum pbap_state{ PBAP_TP_CONNECTING, PBAP_TP_DISCONNECTING, PBAP_IDLE, //transport connection idle, connection idle PBAP_DISCONNECTING, //transport connection established, connection discarding PBAP_TP_CONNECTED, //transport connection established, connection idle PBAP_CONNECTING, //transport connection established, connection establishing PBAP_CONNECTED, //transport connection established, connection established PBAP_GET, PBAP_ABORT, PBAP_SET_PATH }; enum pbap_event{ PBAP_EVENT_IDLE, PBAP_EVENT_TP_CONNECTED, PBAP_EVENT_CONNECTED, PBAP_EVENT_CONTINUE, PBAP_EVENT_COMPLETE, #if OBEX_AUTHENTICATION == 1 PBAP_EVENT_AUTH, #endif PBAP_EVENT_NO_CONNECTION, PBAP_EVENT_FAILED, PBAP_EVENT_TIMEOUT }; typedef uint8 pbap_opcode; #define PBAP_OP_NULL 0x00 #define PBAP_OP_CONNECT 0x01 #define PBAP_PULL_PHONEBOOK 0x02 #define PBAP_PULL_VCARDLIST 0x03 #define PBAP_PULL_VCARDENTRY 0x04 #define PBAP_OP_SET_PATH 0x05 #define PBAP_OP_ABORT 0x06 #define PBAP_OP_DISCONNECT 0x07 struct pbap_pull_phonebook_parms{ char name[30]; struct vcard_filter filter; uint8 format; uint16 maxListCount; uint16 listStartOffset; }; struct pbap_pull_list_parms{ char folder[10]; uint8 order; char searchValue[20]; uint8 searchAttribute; uint16 maxListCount; uint16 listStartOffset; }; struct pbap_pull_entry_parms{ char name[10]; struct vcard_filter filter; }; struct pbap_set_path_parms{ char path[10]; }; struct pbap_client{ pbap_opcode opcode; void (*pbap_client_callback)(enum pbap_event event); /*struct pbap_pull_phonebook_parms *pb_parms; struct pbap_pull_list_parms *list_parms; struct pbap_pull_entry_parms *entry_parms; struct pbap_set_path_parms *setPath_parms;*/ void *parms; uint8 *recData; uint16 recLen; }; #if OBEX_AUTHENTICATION == 1 #include "md5.h" #endif struct pbap_control_t{ enum pbap_state state; uint8 connectID[4]; #if OBEX_AUTHENTICATION == 1 uint8 challenge[AUTH_NONCE_LEN]; uint8 response[AUTH_NONCE_LEN]; uint8 challenge_length; #endif struct pbap_client *pbap_client_app; }; #define PBAP_SEM_TIMEOUT 100 int8 pbap_connectReq(void); int8 pbap_disconnectReq(void); //void pbap_pull_phonebook(struct pbap_pull_phonebook_parms *parms); //void pbap_set_path(char *pathName); //void pbap_pull_vCardListing(struct pbap_pull_list_parms *parms); //void pbap_pull_vCardEntry(struct pbap_pull_entry_parms *parms); int8 pbap_pull_phonebook(void); int8 pbap_set_path(void); int8 pbap_pull_vCardListing(void); int8 pbap_pull_vCardEntry(void); int8 pbap_abort(void); void pbap_client_init(struct pbap_client *client); void pbap_client_exit(void); void vcard_filter_set_bit(struct vcard_filter *filter, uint8 bit); void vcard_filter_clear_bit(struct vcard_filter *filter, uint8 bit); enum pbap_state pbap_getState(void); int8 pbap_get_continue(void); #endif /* __PBAP_I_H__ */