--- /dev/null
+/*
+
+ G N O K I I
+
+ A Linux/Unix toolset and driver for Nokia mobile phones.
+
+ Released under the terms of the GNU GPL, see file COPYING for more details.
+
+*/
+
+#ifndef __gsm_phonebook_h
+#define __gsm_phonebook_h
+
+#include "gsm-sms.h"
+
+/* Limits for sizing of array in GSM_PhonebookEntry. Individual handsets may
+ not support these lengths so they have their own limits set. */
+
+#define GSM_MAX_PHONEBOOK_NAME_LENGTH (50) /* For 7110 */
+#define GSM_MAX_PHONEBOOK_NUMBER_LENGTH (48) /* For 7110 */
+#define GSM_MAX_PHONEBOOK_TEXT_LENGTH (60) /* For 7110 */
+#define GSM_MAX_PHONEBOOK_SUB_ENTRIES (8) /* For 7110 */
+#define GSM_MAX_PHONEBOOK_LOGO_LENGTH (126) /* For 7110 */
+ /* 7110 is able to in one
+ * entry 5 numbers and 2
+ * texts [email,notice,postal] */
+
+/* Here is a macro for models that do not support caller groups. */
+
+#define GSM_GROUPS_NOT_SUPPORTED -1
+
+/* This data type is used to report the number of used and free positions in
+ memory (sim or internal). */
+
+typedef struct {
+ GSM_MemoryType MemoryType; /* Type of the memory */
+ int Used; /* Number of used positions */
+ int Free; /* Number of free positions */
+} GSM_MemoryStatus;
+
+/* Some phones (in this moment 6210/7110) supports extended phonebook
+ with additional datas. Here we have structure for them */
+typedef enum
+{
+ GSM_General = 0x0a,
+ GSM_Mobile = 0x03,
+ GSM_Work = 0x06,
+ GSM_Fax = 0x04,
+ GSM_Home = 0x02,
+ GSM_SIM = 0x00
+} GSM_Number_Type;
+
+typedef enum
+{
+ GSM_Number = 0x0b,
+ GSM_Note = 0x0a,
+ GSM_Postal = 0x09,
+ GSM_Email = 0x08,
+ GSM_Name = 0x07,
+ GSM_RingtoneNo = 0x0C,
+ GSM_Date = 0x13, /* Date is used for DC,RC,etc (last calls) */
+ GSM_LogoOn = 0x1C,
+ GSM_GroupLogo = 0x1B,
+ GSM_GroupNo = 0x1E
+} GSM_EntryType;
+
+typedef struct {
+ char Number[GSM_MAX_PHONEBOOK_TEXT_LENGTH+1]; /* Number */
+ GSM_DateTime Date; /* or the last calls list */
+} GSM_SubPhonebookEntrydata;
+
+typedef struct {
+ GSM_EntryType EntryType;
+ GSM_Number_Type NumberType;
+ GSM_SubPhonebookEntrydata data;
+ int BlockNumber;
+} GSM_SubPhonebookEntry;
+
+/* Define datatype for phonebook entry, used for getting/writing phonebook
+ entries. */
+
+typedef struct {
+ bool Empty; /* Is this entry empty? */
+ char Name[GSM_MAX_PHONEBOOK_NAME_LENGTH + 1]; /* Plus 1 for
+ nullterminator. */
+ char Number[GSM_MAX_PHONEBOOK_NUMBER_LENGTH + 1]; /* Number */
+ GSM_MemoryType MemoryType; /* Type of memory */
+ int Group; /* Group */
+ int Location; /* Location */
+ GSM_SubPhonebookEntry SubEntries[GSM_MAX_PHONEBOOK_SUB_ENTRIES];
+ /* For phones with
+ * additional phonebook
+ * entries */
+ int SubEntriesCount; /* Should be 0, if extended
+ phonebook is not used */
+} GSM_PhonebookEntry;
+
+char *GSM_GetVCARD(GSM_PhonebookEntry *entry, int version);
+
+int GSM_SavePhonebookEntryToSMS(GSM_MultiSMSMessage *SMS,
+ GSM_PhonebookEntry *entry, int version);
+
+#endif /* __gsm_phonebook_h */