public int GetPhoneBookCount(PbapFolder Folder) { int length = 0; using (ObexGetStream Stream = PullPhoneBook(Folder, 0, 0)) { byte[] lengsData = Stream.ResponseHeaders.GetByteSeq(ObexHeaderId.AppParameters); if (lengsData == null) { return(0); } if (lengsData.Length < 3) { return(0); } if (lengsData[0] != 8 || lengsData[1] != 2) { return(0); } length = (lengsData[2] << 8 | lengsData[3]); } return(length); }
public PhoneBook[] GetPhoneBooks(PbapFolder Folder, int MaxNum) { List <PhoneBook> phoneBookList = new List <PhoneBook>(); var t = Task.Factory.StartNew(() => { int length = GetPhoneBookCount(Folder); if (MaxNum > 0) { length = Math.Min(length, MaxNum); } for (int i = 0; i < length; i += 10) { using (ObexGetStream Stream = PullPhoneBook(Folder, 10, i)) { byte[] ba = new byte[UInt16.MaxValue]; int readSize = Stream.Read(ba, 0, UInt16.MaxValue); phoneBookList.AddRange(VCardReader.ParseVCard(UTF8Encoding.UTF8.GetString(ba, 0, readSize))); } } SessionConnect(); }); t.Wait(); return(phoneBookList.ToArray()); }
private ObexGetStream PullvCardListing(PbapFolder Folder, int MaxListCount, int ListStartOffset, string PhoneNumber = "") { session.SetPathReset(); session.SetPath("telecom"); ObexHeaderCollection headers = new ObexHeaderCollection(); headers.AddType("x-bt/vcard-listing"); headers.Add(ObexHeaderId.Name, Folder.Name()); List <byte> paramList = new List <byte>(); paramList.AddRange(new byte[] { 0x01, 0x01, 0x01 }); // Order byte[] searchValue = UTF8Encoding.UTF8.GetBytes(PhoneNumber); if (!String.IsNullOrWhiteSpace(PhoneNumber)) { paramList.AddRange(new byte[] { 0x02, (byte)searchValue.Length }); paramList.AddRange(searchValue); // SearchValue } paramList.AddRange(new byte[] { 0x03, 0x01, 0x01, // SearchAttribute 0x00:Name 0x01:Number 0x02:Sound 0x04, 0x02, (byte)((MaxListCount >> 8) & 0xFF), (byte)(MaxListCount & 0xFF), // MaxListCount 0x05, 0x02, (byte)((ListStartOffset >> 8) & 0xFF), (byte)(ListStartOffset & 0xFF) // ListStartOffset }); headers.Add(ObexHeaderId.AppParameters, paramList.ToArray()); return(session.Get(headers)); }
public PhoneBook GetPhoneBookFromPhoneNumber(PbapFolder Folder, string PhoneNumber) { PhoneBook book = null; var t = Task.Factory.StartNew(() => { string handle = String.Empty; using (ObexGetStream Stream = PullvCardListing(Folder, 1, 0, PhoneNumber)) { byte[] ba = new byte[UInt16.MaxValue]; int readSize = Stream.Read(ba, 0, UInt16.MaxValue); handle = VCardReader.ParseVCardListenXML(UTF8Encoding.UTF8.GetString(ba, 0, readSize)); } if (!String.IsNullOrWhiteSpace(handle)) { book = GetPhoneBook(Folder, handle); } }); t.Wait(); return(book); }
private ObexGetStream PullvCardEntry(PbapFolder Folder, string ObjectName) { session.SetPath(Folder.Name()); ObexHeaderCollection headers = new ObexHeaderCollection(); headers.AddType("x-bt/vcard"); headers.Add(ObexHeaderId.Name, ObjectName); return(session.Get(headers)); }
private ObexGetStream PullPhoneBook(PbapFolder Folder, int MaxListCount, int ListStartOffset) { ObexHeaderCollection headers = new ObexHeaderCollection(); headers.AddType("x-bt/phonebook"); headers.Add(ObexHeaderId.Name, Folder.FullPath()); headers.Add(ObexHeaderId.AppParameters, new byte[] { 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Filter 0x07, 0x01, 0x01, // Format 0x00 = 2.1 0x01 = 3.0 0x04, 0x02, (byte)((MaxListCount >> 8) & 0xFF), (byte)(MaxListCount & 0xFF), // MaxListCount 0x05, 0x02, (byte)((ListStartOffset >> 8) & 0xFF), (byte)(ListStartOffset & 0xFF) }); // ListStartOffset return(session.Get(headers)); }
private PhoneBook GetPhoneBook(PbapFolder Folder, string handle) { using (ObexGetStream Stream = PullvCardEntry(Folder, handle)) { byte[] ba = new byte[UInt16.MaxValue]; int readSize = Stream.Read(ba, 0, UInt16.MaxValue); List <PhoneBook> phoneBookList = VCardReader.ParseVCard(UTF8Encoding.UTF8.GetString(ba, 0, readSize)); if (phoneBookList.Count > 0) { return(phoneBookList[0]); } } return(null); }
public PhoneBook[] getPhoneBooks(PbapFolder Folder, int MaxNum = -1) { return(ProfilePbap.GetPhoneBooks(Folder, MaxNum)); }
public static string Name(this PbapFolder pbapFolder) { return(pbapFolder.ToString()); }
public static string FullPath(this PbapFolder pbapFolder) { return(String.Format("telecom/{0}.vcf", pbapFolder.ToString())); }