:pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001
[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.1  2001/11/25 21:59:31  short
15   :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Sun Nov 25 22:56 CET 2001
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_DeleteSMSMessage,
70   Event_GetSpeedDial,
71   Event_SendSpeedDial,
72   Event_SendDTMF,
73   Event_NetMonitorOnOff,
74   Event_NetMonitor,
75   Event_DialVoice,
76   Event_GetAlarm,
77   Event_SetAlarm,
78   Event_SendKeyStroke,
79   Event_GetBitmap,
80   Event_SetBitmap,
81   Event_GetNetworkInfo,
82   Event_Exit
83 } PhoneAction;
84
85 typedef struct {
86   PhoneAction event;
87   gpointer    data;
88 } PhoneEvent;
89
90 typedef struct {
91   GSM_SpeedDial entry;
92   GSM_Error status;
93 } D_SpeedDial;
94
95 typedef struct {
96   GSM_SMSMessage *sms;
97   GSM_Error status;
98 } D_SMSMessage;
99
100 typedef struct {
101   GSM_MessageCenter *center;
102   GSM_Error status;
103 } D_SMSCenter;
104
105 typedef struct {
106   guchar number;
107   gchar  text[256];
108   gint   status;
109 } D_CallerGroup;
110
111 typedef struct {
112   GSM_DateTime time;
113   gint status;
114 } D_Alarm;
115
116 typedef struct {
117   GSM_MemoryStatus memoryStatus;
118   gint status;
119 } D_MemoryStatus;
120
121 typedef struct {
122   GSM_PhonebookEntry *entry;
123   gint status;
124 } D_MemoryLocation;
125
126 typedef struct {
127   gint min;
128   gint max;
129   GSM_MemoryType type;
130   gint status;
131   gint (*InsertEntry)(GSM_PhonebookEntry *);
132   gint (*ReadFailed)(gint);
133 } D_MemoryLocationAll;
134
135 typedef struct {
136   GSM_CalendarNote *entry;
137   gint status;
138 } D_CalendarNote;
139
140 typedef struct {
141   gint status;
142   gint (*InsertEntry)(GSM_CalendarNote *);
143   gint (*ReadFailed)(gint);
144 } D_CalendarNoteAll;
145
146 typedef struct {
147   GSM_Error status;
148   GSM_Bitmap *bitmap;
149 } D_Bitmap;
150
151 typedef struct {
152   GSM_Error status;
153   GSM_NetworkInfo *info;
154 } D_NetworkInfo;
155
156 typedef struct {
157   gfloat rfLevel;
158   gfloat batteryLevel;
159   GSM_PowerSource powerSource;
160   gchar *working;
161   bool alarm;
162   struct {
163     gchar *model;
164     gchar *imei;
165     gchar *revision;
166     gchar *version;
167   } phone;
168   struct {
169     gint    unRead;
170     gint    number;
171     GSList *messages;
172   } sms;
173   struct {
174     CallState callInProgress;
175     gchar     callNum[INCALL_NUMBER_LENGTH];
176   } call;
177   struct {
178     gint  number;
179     gchar screen[NETMON_SCREEN_LENGTH];
180     gchar screen3[NETMON_SCREEN_LENGTH];
181     gchar screen4[NETMON_SCREEN_LENGTH];
182     gchar screen5[NETMON_SCREEN_LENGTH];
183   } netmonitor;
184   gint supported;
185 } PhoneMonitor;
186
187 extern pthread_t monitor_th;
188 extern PhoneMonitor phoneMonitor;
189 extern pthread_mutex_t memoryMutex;
190 extern pthread_cond_t  memoryCond;
191 extern pthread_mutex_t calendarMutex;
192 extern pthread_cond_t  calendarCond;
193 extern pthread_mutex_t smsMutex;
194 extern pthread_mutex_t sendSMSMutex;
195 extern pthread_cond_t  sendSMSCond;
196 extern pthread_mutex_t callMutex;
197 extern pthread_mutex_t netMonMutex;
198 extern pthread_mutex_t speedDialMutex;
199 extern pthread_cond_t  speedDialCond;
200 extern pthread_mutex_t callerGroupMutex;
201 extern pthread_cond_t  callerGroupCond;
202 extern pthread_mutex_t smsCenterMutex;
203 extern pthread_cond_t  smsCenterCond;
204 extern pthread_mutex_t alarmMutex;
205 extern pthread_cond_t  alarmCond;
206 extern pthread_mutex_t getBitmapMutex;
207 extern pthread_cond_t  getBitmapCond;
208 extern pthread_mutex_t setBitmapMutex;
209 extern pthread_cond_t  setBitmapCond;
210 extern pthread_mutex_t getNetworkInfoMutex;
211 extern pthread_cond_t  getNetworkInfoCond;
212 extern void GUI_InitPhoneMonitor (void);
213 extern void *GUI_Connect (void *a);
214 extern void GUI_InsertEvent (PhoneEvent *event);
215
216 #endif