Implemented connection type "tcp" (GCT_TCP), use <hostname>:<port> as "port"
[gnokii.git] / xgnokii / xgnokii_lowlevel.h
1 /*
2
3   $Id$
4   
5   X G N O K I I
6
7   A Linux/Unix GUI for Nokia mobile phones.
8   Copyright (C) 1999 Pavel Janík ml., Hugh Blemings
9   & Ján Derfiòák <ja@mail.upjs.sk>.
10
11   Released under the terms of the GNU GPL, see file COPYING for more details.
12
13   $Log$
14   Revision 1.1.1.4  2002/04/03 00:08:33  short
15   Found in "gnokii-working" directory, some November-patches version
16
17   Revision 1.9  2001/09/14 13:09:26  pkot
18   Xgnokii calendar updates
19
20   Revision 1.8  2001/02/02 08:09:57  ja
21   New dialogs for 6210/7110 in xgnokii. Fixed the smsd for new capabilty code.
22
23   Revision 1.7  2001/01/29 15:22:22  machek
24   Use integer as bitfield instead of struct of int:1.
25
26   Be able to read phonebook saved in gnokii format from xgnokii.
27
28   Revision 1.6  2001/01/17 02:54:57  chris
29   More 7110 work.  Use with care! (eg it is not possible to delete phonebook entries)
30   I can now edit my phonebook in xgnokii but it is 'work in progress'.
31
32   Revision 1.5  2001/01/15 21:10:20  ja
33   Better status reporting in xgnokii, fixed phone capabilities detection in xgnokii.
34
35   
36 */
37
38 #ifndef XGNOKII_LOWLEVEL_H
39 #define XGNOKII_LOWLEVEL_H
40
41 #include <pthread.h>
42 #include <glib.h>
43 #include "gsm-common.h"
44
45 #define INCALL_NUMBER_LENGTH    20
46 #define NETMON_SCREEN_LENGTH    60
47
48 typedef enum {
49   CS_Idle,
50   CS_Waiting,
51   CS_InProgress
52 } CallState;
53
54 typedef enum {
55   Event_GetMemoryStatus,
56   Event_GetMemoryLocation,
57   Event_GetMemoryLocationAll,
58   Event_WriteMemoryLocation,
59   Event_WriteMemoryLocationAll,
60   Event_GetCalendarNote,
61   Event_GetCalendarNoteAll,
62   Event_WriteCalendarNote,
63   Event_DeleteCalendarNote,
64   Event_GetCallerGroup,
65   Event_SendCallerGroup,
66   Event_GetSMSCenter,
67   Event_SetSMSCenter,
68   Event_SendSMSMessage,
69   Event_SaveSMSMessage,
70   Event_DeleteSMSMessage,
71   Event_GetSpeedDial,
72   Event_SendSpeedDial,
73   Event_SendDTMF,
74   Event_NetMonitorOnOff,
75   Event_NetMonitor,
76   Event_DialVoice,
77   Event_GetAlarm,
78   Event_SetAlarm,
79   Event_SendKeyStroke,
80   Event_GetBitmap,
81   Event_SetBitmap,
82   Event_GetNetworkInfo,
83   Event_Exit
84 } PhoneAction;
85
86 typedef struct {
87   PhoneAction event;
88   gpointer    data;
89 } PhoneEvent;
90
91 typedef struct {
92   GSM_SpeedDial entry;
93   GSM_Error status;
94 } D_SpeedDial;
95
96 typedef struct {
97   GSM_SMSMessage *sms;
98   GSM_Error status;
99 } D_SMSMessage;
100
101 typedef struct {
102   GSM_MessageCenter *center;
103   GSM_Error status;
104 } D_SMSCenter;
105
106 typedef struct {
107   guchar number;
108   gchar  text[256];
109   gint   status;
110 } D_CallerGroup;
111
112 typedef struct {
113   GSM_DateTime time;
114   gint status;
115 } D_Alarm;
116
117 typedef struct {
118   GSM_MemoryStatus memoryStatus;
119   gint status;
120 } D_MemoryStatus;
121
122 typedef struct {
123   GSM_PhonebookEntry *entry;
124   gint status;
125 } D_MemoryLocation;
126
127 typedef struct {
128   gint min;
129   gint max;
130   GSM_MemoryType type;
131   gint status;
132   gint (*InsertEntry)(GSM_PhonebookEntry *);
133   gint (*ReadFailed)(gint);
134 } D_MemoryLocationAll;
135
136 typedef struct {
137   GSM_CalendarNote *entry;
138   gint status;
139 } D_CalendarNote;
140
141 typedef struct {
142   gint status;
143   gint (*InsertEntry)(GSM_CalendarNote *);
144   gint (*ReadFailed)(gint);
145 } D_CalendarNoteAll;
146
147 typedef struct {
148   GSM_Error status;
149   GSM_Bitmap *bitmap;
150 } D_Bitmap;
151
152 typedef struct {
153   GSM_Error status;
154   GSM_NetworkInfo *info;
155 } D_NetworkInfo;
156
157 typedef struct {
158   gfloat rfLevel;
159   gfloat batteryLevel;
160   GSM_PowerSource powerSource;
161   gchar *working;
162   bool alarm;
163   struct {
164     gchar *model;
165     gchar *imei;
166     gchar *revision;
167     gchar *version;
168   } phone;
169   struct {
170     gint    unRead;
171     gint    used;
172     gint    slots;
173     GSList *messages;
174   } sms;
175   struct {
176     CallState callInProgress;
177     gchar     callNum[INCALL_NUMBER_LENGTH];
178   } call;
179   struct {
180     gint  number;
181     gchar screen[NETMON_SCREEN_LENGTH];
182     gchar screen3[NETMON_SCREEN_LENGTH];
183     gchar screen4[NETMON_SCREEN_LENGTH];
184     gchar screen5[NETMON_SCREEN_LENGTH];
185   } netmonitor;
186   gint supported;
187 } PhoneMonitor;
188
189 extern pthread_t monitor_th;
190 extern PhoneMonitor phoneMonitor;
191 extern pthread_mutex_t memoryMutex;
192 extern pthread_cond_t  memoryCond;
193 extern pthread_mutex_t calendarMutex;
194 extern pthread_cond_t  calendarCond;
195 extern pthread_mutex_t smsMutex;
196 extern pthread_mutex_t sendSMSMutex;
197 extern pthread_cond_t  sendSMSCond;
198 extern pthread_mutex_t saveSMSMutex;
199 extern pthread_cond_t  saveSMSCond;
200 extern pthread_mutex_t callMutex;
201 extern pthread_mutex_t netMonMutex;
202 extern pthread_mutex_t speedDialMutex;
203 extern pthread_cond_t  speedDialCond;
204 extern pthread_mutex_t callerGroupMutex;
205 extern pthread_cond_t  callerGroupCond;
206 extern pthread_mutex_t smsCenterMutex;
207 extern pthread_cond_t  smsCenterCond;
208 extern pthread_mutex_t alarmMutex;
209 extern pthread_cond_t  alarmCond;
210 extern pthread_mutex_t getBitmapMutex;
211 extern pthread_cond_t  getBitmapCond;
212 extern pthread_mutex_t setBitmapMutex;
213 extern pthread_cond_t  setBitmapCond;
214 extern pthread_mutex_t getNetworkInfoMutex;
215 extern pthread_cond_t  getNetworkInfoCond;
216 extern void GUI_InitPhoneMonitor (void);
217 extern void *GUI_Connect (void *a);
218 extern void GUI_InsertEvent (PhoneEvent *event);
219
220 #endif