1 /*
2 
3   $Id$
4 
5   X G N O K I I
6 
7   A Linux/Unix GUI for the mobile phones.
8 
9   This file is part of gnokii.
10 
11   Gnokii is free software; you can redistribute it and/or modify
12   it under the terms of the GNU General Public License as published by
13   the Free Software Foundation; either version 2 of the License, or
14   (at your option) any later version.
15 
16   Gnokii is distributed in the hope that it will be useful,
17   but WITHOUT ANY WARRANTY; without even the implied warranty of
18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   GNU General Public License for more details.
20 
21   You should have received a copy of the GNU General Public License
22   along with gnokii; if not, write to the Free Software
23   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
24 
25   Copyright (C) 1999 Pavel Jan�k ml., Hugh Blemings
26   & 1999-2005 Jan Derfinak.
27   Copyright (C) 2002      Markus Plail
28   Copyright (C) 2002-2003 Pawel Kot, BORBELY Zoltan
29   Copyright (C) 2003      Tomi Ollila
30 
31 */
32 
33 #ifndef XGNOKII_LOWLEVEL_H
34 #define XGNOKII_LOWLEVEL_H
35 
36 #include <pthread.h>
37 #include <glib.h>
38 #include "gnokii.h"
39 
40 #define INCALL_NUMBER_LENGTH	20
41 #define NETMON_SCREEN_LENGTH	60
42 
43 typedef enum {
44 	CS_Idle,
45 	CS_Waiting,
46 	CS_InProgress
47 } CallState;
48 
49 typedef enum {
50 	Event_GetMemoryStatus,
51 	Event_GetMemoryLocation,
52 	Event_GetMemoryLocationAll,
53 	Event_WriteMemoryLocation,
54 	Event_WriteMemoryLocationAll,
55 	Event_DeleteMemoryLocation,
56 	Event_GetCalendarNote,
57 	Event_GetCalendarNoteAll,
58 	Event_WriteCalendarNote,
59 	Event_DeleteCalendarNote,
60 	Event_GetCallerGroup,
61 	Event_SendCallerGroup,
62 	Event_GetSMSCenter,
63 	Event_SetSMSCenter,
64 	Event_SendSMSMessage,
65 	Event_DeleteSMSMessage,
66 	Event_GetSpeedDial,
67 	Event_SendSpeedDial,
68 	Event_SendDTMF,
69 	Event_NetMonitorOnOff,
70 	Event_NetMonitor,
71 	Event_DialVoice,
72 	Event_GetAlarm,
73 	Event_SetAlarm,
74 	Event_PressKey,
75 	Event_ReleaseKey,
76 	Event_GetBitmap,
77 	Event_SetBitmap,
78 	Event_GetNetworkInfo,
79 	Event_PlayTone,
80 	Event_GetRingtone,
81 	Event_SetRingtone,
82 	Event_DeleteRingtone,
83 	Event_GetRingtoneList,
84 	Event_Exit
85 } PhoneAction;
86 
87 typedef struct {
88 	PhoneAction event;
89 	gpointer data;
90 } PhoneEvent;
91 
92 typedef struct {
93 	gn_speed_dial entry;
94 	gn_error status;
95 } D_SpeedDial;
96 
97 typedef struct {
98 	gn_sms *sms;
99 	gn_error status;
100 } D_SMSMessage;
101 
102 typedef struct {
103 	gn_sms_message_center *center;
104 	gn_error status;
105 } D_SMSCenter;
106 
107 typedef struct {
108 	guchar number;
109 	gchar text[256];
110 	gint status;
111 } D_CallerGroup;
112 
113 typedef struct {
114 	gn_calnote_alarm alarm;
115 	gint status;
116 } D_Alarm;
117 
118 typedef struct {
119 	gn_memory_status memoryStatus;
120 	gint status;
121 } D_MemoryStatus;
122 
123 typedef struct {
124 	gn_phonebook_entry *entry;
125 	gint status;
126 } D_MemoryLocation;
127 
128 typedef struct {
129 	gint min;
130 	gint max;
131 	gint used;
132 	gn_memory_type type;
133 	gint status;
134 	gint (*InsertEntry)(gn_phonebook_entry *);
135 	gint(*ReadFailed) (gint);
136 } D_MemoryLocationAll;
137 
138 typedef struct {
139 	gn_calnote *entry;
140 	gint status;
141 } D_CalendarNote;
142 
143 typedef struct {
144 	gint status;
145 	gint (*InsertEntry)(gn_calnote *);
146 	gint(*ReadFailed) (gint);
147 } D_CalendarNoteAll;
148 
149 typedef struct {
150 	gn_error status;
151 	gn_bmp *bitmap;
152 } D_Bitmap;
153 
154 typedef struct {
155 	gn_error status;
156 	gn_network_info *info;
157 } D_NetworkInfo;
158 
159 typedef struct {
160 	int frequency;
161 	int volume;
162 	int usec;
163 } D_PlayTone;
164 
165 typedef struct {
166 	gn_ringtone *ringtone;
167 	gn_error status;
168 } D_Ringtone;
169 
170 typedef struct {
171 	gfloat rfLevel;
172 	gfloat batteryLevel;
173 	gn_power_source powerSource;
174 	gchar *working;
175 	bool alarm;
176 	struct {
177 		gchar *model;
178 		gchar *imei;
179 		gchar *revision;
180 		gchar *product_name;
181 	} phone;
182 	struct {
183 		gint unRead;
184 		gint number;
185 		gint changed;
186 		GSList *messages;
187 	} sms;
188 	struct {
189 		CallState callInProgress;
190 		gchar callNum[INCALL_NUMBER_LENGTH];
191 	} call;
192 	struct {
193 		gint number;
194 		gchar screen[NETMON_SCREEN_LENGTH];
195 		gchar screen3[NETMON_SCREEN_LENGTH];
196 		gchar screen4[NETMON_SCREEN_LENGTH];
197 		gchar screen5[NETMON_SCREEN_LENGTH];
198 	} netmonitor;
199 	gint supported;
200 } PhoneMonitor;
201 
202 extern pthread_t monitor_th;
203 extern PhoneMonitor phoneMonitor;
204 extern pthread_mutex_t memoryMutex;
205 extern pthread_cond_t memoryCond;
206 extern pthread_mutex_t calendarMutex;
207 extern pthread_cond_t calendarCond;
208 extern pthread_mutex_t smsMutex;
209 extern pthread_mutex_t sendSMSMutex;
210 extern pthread_cond_t sendSMSCond;
211 extern pthread_mutex_t callMutex;
212 extern pthread_mutex_t netMonMutex;
213 extern pthread_mutex_t speedDialMutex;
214 extern pthread_cond_t speedDialCond;
215 extern pthread_mutex_t callerGroupMutex;
216 extern pthread_cond_t callerGroupCond;
217 extern pthread_mutex_t smsCenterMutex;
218 extern pthread_cond_t smsCenterCond;
219 extern pthread_mutex_t alarmMutex;
220 extern pthread_cond_t alarmCond;
221 extern pthread_mutex_t getBitmapMutex;
222 extern pthread_cond_t getBitmapCond;
223 extern pthread_mutex_t setBitmapMutex;
224 extern pthread_cond_t setBitmapCond;
225 extern pthread_mutex_t getNetworkInfoMutex;
226 extern pthread_cond_t getNetworkInfoCond;
227 extern pthread_mutex_t ringtoneMutex;
228 extern pthread_cond_t ringtoneCond;
229 extern void GUI_InitPhoneMonitor(void);
230 extern void *GUI_Connect(void *a);
231 extern void GUI_InsertEvent(PhoneEvent * event);
232 extern gn_error GUI_InitSMSFolders(void);
233 extern int isSMSactivated;
234 extern struct gn_statemachine *statemachine;
235 
236 #endif
237