summaryrefslogtreecommitdiff
path: root/libgammu
diff options
context:
space:
mode:
authorMichal Čihař <nijel@debian.org>2016-02-03 10:49:01 +0100
committerMichal Čihař <nijel@debian.org>2016-02-03 10:49:01 +0100
commita3fdc2e4eec54580a080fa8dcb020b9125fed442 (patch)
treeb1ba7b4bffdb2dc3fa28893dc51a872c17eba5ec /libgammu
parent7e916328a9cc2b241a5068d16fdc24fc9859112f (diff)
Imported Upstream version 1.37.0
Diffstat (limited to 'libgammu')
-rw-r--r--libgammu/CMakeLists.txt4
-rw-r--r--libgammu/gsmcomon.c6
-rw-r--r--libgammu/gsmphones.c41
-rw-r--r--libgammu/gsmstate.c2
-rw-r--r--libgammu/phone/at/at-sms.c17
-rw-r--r--libgammu/phone/at/atgen.c34
-rw-r--r--libgammu/phone/at/atgen.h2
-rw-r--r--libgammu/phone/at/sonyericsson.c10
8 files changed, 56 insertions, 60 deletions
diff --git a/libgammu/CMakeLists.txt b/libgammu/CMakeLists.txt
index 7131200..120fff4 100644
--- a/libgammu/CMakeLists.txt
+++ b/libgammu/CMakeLists.txt
@@ -93,9 +93,9 @@ endif (OSX_BLUE_FOUND)
if (WIN32 AND NOT CYGWIN)
list (APPEND LIBRARY_SRC device/bluetoth/blue_w32.c)
endif (WIN32 AND NOT CYGWIN)
-if (NOT WIN32 AND HAVE_PTHREAD)
+if (NOT WIN32 AND HAVE_PTHREAD AND HAVE_SIGTIMEDWAIT)
list (APPEND LIBRARY_SRC device/proxy/proxy.c)
-endif (NOT WIN32 AND HAVE_PTHREAD)
+endif (NOT WIN32 AND HAVE_PTHREAD AND HAVE_SIGTIMEDWAIT)
if (CYGWIN OR NOT WIN32 AND NOT DJGPP)
list (APPEND LIBRARY_SRC device/serial/ser_unx.c)
diff --git a/libgammu/gsmcomon.c b/libgammu/gsmcomon.c
index 1651842..9fed2fa 100644
--- a/libgammu/gsmcomon.c
+++ b/libgammu/gsmcomon.c
@@ -154,6 +154,12 @@ static PrintErrorEntry PrintErrorEntries[] = {
{ERR_INSTALL_NOT_FOUND, "INSTALL_NOT_FOUND", N_("Installation data not found, please consult debug log and/or documentation for more details.")},
{ERR_READ_ONLY, "READ_ONLY", N_("Entry is read only.")},
{ERR_NETWORK_ERROR, "NETWORK_ERROR", N_("Network error.")},
+ {ERR_DB_VERSION, "DB_VERSION", N_("Invalid database version.")},
+ {ERR_DB_DRIVER, "DB_DRIVER", N_("Failed to initialize DB driver.")},
+ {ERR_DB_CONFIG, "DB_CONFIG", N_("Failed to configure DB driver.")},
+ {ERR_DB_CONNECT, "DB_CONNECT", N_("Failed to connect to database.")},
+ {ERR_DB_TIMEOUT, "DB_TIMEOUT", N_("Database connection timeout.")},
+ {ERR_SQL, "SQL", N_("Error in executing SQL query.")},
{0, "", ""}
};
diff --git a/libgammu/gsmphones.c b/libgammu/gsmphones.c
index bbbf2aa..cdf4973 100644
--- a/libgammu/gsmphones.c
+++ b/libgammu/gsmphones.c
@@ -127,6 +127,8 @@ GSM_FeatureName AllFeatureNames[] = {
{"NO_STOP_CUSD", F_NO_STOP_CUSD},
{"READ_SMSTEXTMODE", F_READ_SMSTEXTMODE},
{"RESET_AFTER_TIMEOUT", F_RESET_AFTER_TIMEOUT},
+ {"HUAWEI_INIT", F_HUAWEI_INIT},
+ {"ZTE_INIT", F_ZTE_INIT},
{"", 0},
};
@@ -940,26 +942,29 @@ GSM_PhoneModel allmodels[] = {
/* Huawei */
{"E17X", "E17X", "", {F_NO_UCS2, 0}},
{"E220", "E220", "", {0}},
- {"E160", "E160", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E160E", "E160E", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E160X", "E160X", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E161", "E161", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E162", "E162", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E160G", "E160G", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E162G", "E162G", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E169", "E169", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E169G", "E169G", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E171", "E171", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E173", "E173", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E367", "E367", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E1556", "E1556", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E1550", "E1550", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
+ {"E160", "E160", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E160E", "E160E", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E160X", "E160X", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E161", "E161", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E162", "E162", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E160G", "E160G", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E162G", "E162G", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E169", "E169", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E169G", "E169G", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E171", "E171", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E173", "E173", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E367", "E367", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E1556", "E1556", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E1550", "E1550", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
{"E1750", "E1750", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
{"E1752", "E1752", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"EM770W", "EM770W", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E3372", "E3372", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"E3276", "E3276", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
- {"K3765", "K3765", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}},
+ {"EM770W", "EM770W", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E3372", "E3372", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"E3276", "E3276", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+ {"K3765", "K3765", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}},
+
+ /* ZTE */
+ {"MF190", "MF190", "", {F_ZTE_INIT, 0}},
/* Ubinetics */
{"GDC201", "GDC201", "", {F_SMS_NO_ME, 0}},
diff --git a/libgammu/gsmstate.c b/libgammu/gsmstate.c
index f76eab1..d876ee3 100644
--- a/libgammu/gsmstate.c
+++ b/libgammu/gsmstate.c
@@ -329,7 +329,7 @@ static GSM_Error GSM_RegisterAllConnections(GSM_StateMachine *s, const char *con
#ifdef GSM_ENABLE_BLUEOBEX
GSM_RegisterConnection(s, GCT_BLUEOBEX, &BlueToothDevice,&OBEXProtocol);
#endif
-#if !defined(WIN32) && defined(HAVE_PTHREAD)
+#ifdef GSM_ENABLE_PROXY
#ifdef GSM_ENABLE_S60
GSM_RegisterConnection(s, GCT_PROXYS60, &ProxyDevice,&S60Protocol);
#endif
diff --git a/libgammu/phone/at/at-sms.c b/libgammu/phone/at/at-sms.c
index dd3ea1d..7a72a53 100644
--- a/libgammu/phone/at/at-sms.c
+++ b/libgammu/phone/at/at-sms.c
@@ -167,12 +167,6 @@ GSM_Error ATGEN_GetSMSMemories(GSM_StateMachine *s)
GSM_Error error;
GSM_Phone_ATGENData *Priv = &s->Phone.Data.Priv.ATGEN;
- error = ATGEN_GetManufacturer(s);
-
- if (error != ERR_NONE) {
- return error;
- }
-
smprintf(s, "Getting available SMS memories\n");
error = ATGEN_WaitForAutoLen(s, "AT+CPMS=?\r", 0x00, 200, ID_GetSMSMemories);
@@ -1000,11 +994,6 @@ GSM_Error ATGEN_GetSMS(GSM_StateMachine *s, GSM_MultiSMSMessage *sms)
goto fail;
}
}
- error = ATGEN_GetManufacturer(s);
-
- if (error != ERR_NONE) {
- goto fail;
- }
s->Phone.Data.GetSMSMessage = sms;
smprintf(s, "Getting SMS\n");
error = ATGEN_WaitFor(s, req, length, 0x00, 50, ID_GetSMSMessage);
@@ -1677,12 +1666,6 @@ GSM_Error ATGEN_MakeSMSFrame(GSM_StateMachine *s, GSM_SMSMessage *message, unsig
}
break;
case SMS_AT_TXT:
- error = ATGEN_GetManufacturer(s);
-
- if (error != ERR_NONE) {
- return error;
- }
-
if (Priv->Manufacturer != AT_Nokia) {
if (message->Coding != SMS_Coding_Default_No_Compression) {
return ERR_NOTSUPPORTED;
diff --git a/libgammu/phone/at/atgen.c b/libgammu/phone/at/atgen.c
index a7d7026..b8dab77 100644
--- a/libgammu/phone/at/atgen.c
+++ b/libgammu/phone/at/atgen.c
@@ -1911,6 +1911,8 @@ GSM_Error ATGEN_ReplyGetManufacturer(GSM_Protocol_Message *msg, GSM_StateMachine
{"Motorola", AT_Motorola},
{"Option", AT_Option},
{"Wavecom", AT_Wavecom},
+ {"Qualcomm", AT_Qualcomm},
+ {"ZTE", AT_ZTE},
{"\0", 0}
};
vendors_t *vendor;
@@ -2056,9 +2058,6 @@ GSM_Error ATGEN_GetFirmware(GSM_StateMachine *s)
if (s->Phone.Data.Version[0] != 0) return ERR_NONE;
- error = ATGEN_GetManufacturer(s);
- if (error != ERR_NONE) return error;
-
smprintf(s, "Getting firmware versions\n");
error = ATGEN_WaitForAutoLen(s, "AT+CGMR\r", 0x00, 16, ID_GetFirmware);
@@ -2075,10 +2074,9 @@ GSM_Error ATGEN_GetFirmware(GSM_StateMachine *s)
GSM_Error ATGEN_PostConnect(GSM_StateMachine *s)
{
- GSM_Phone_ATGENData *Priv = &s->Phone.Data.Priv.ATGEN;
GSM_Error error;
- if (Priv->Manufacturer == AT_Huawei) {
+ if (GSM_IsPhoneFeatureAvailable(s->Phone.Data.ModelInfo, F_HUAWEI_INIT)) {
/* Disable Huawei specific unsolicited codes */
error = ATGEN_WaitForAutoLen(s, "AT^CURC=0\r", 0x00, 10, ID_SetIncomingCall);
if (error != ERR_NONE) {
@@ -2098,6 +2096,20 @@ GSM_Error ATGEN_PostConnect(GSM_StateMachine *s)
}
}
+ if (GSM_IsPhoneFeatureAvailable(s->Phone.Data.ModelInfo, F_ZTE_INIT)) {
+ /* Disable CDROM mode */
+ error = ATGEN_WaitForAutoLen(s, "AT+ZCDRUN=8\r", 0x00, 10, ID_Initialise);
+ if (error != ERR_NONE) {
+ return error;
+ }
+
+ /* Stay online */
+ error = ATGEN_WaitForAutoLen(s, "AT+ZOPRT=5\r", 0x00, 10, ID_Initialise);
+ if (error != ERR_NONE) {
+ return error;
+ }
+ }
+
return ERR_NONE;
}
@@ -2518,10 +2530,6 @@ GSM_Error ATGEN_SetCharset(GSM_StateMachine *s, GSM_AT_Charset_Preference Prefer
Priv->Charset = AT_CHARSET_GSM;
}
}
- /* We need to know manufacturer */
- error = ATGEN_GetManufacturer(s);
- if (error != ERR_NONE) return error;
-
/* Get available charsets */
error = ATGEN_WaitForAutoLen(s, "AT+CSCS=?\r", 0x00, 10, ID_GetMemoryCharset);
@@ -4145,9 +4153,6 @@ GSM_Error ATGEN_PrivGetMemory (GSM_StateMachine *s, GSM_MemoryEntry *entry, int
if (entry->Location == 0x00) return ERR_INVALIDLOCATION;
- error = ATGEN_GetManufacturer(s);
- if (error != ERR_NONE) return error;
-
/* For reading we prefer unicode */
error = ATGEN_SetCharset(s, AT_PREF_CHARSET_UNICODE);
if (error != ERR_NONE) return error;
@@ -4223,9 +4228,6 @@ GSM_Error ATGEN_GetNextMemory (GSM_StateMachine *s, GSM_MemoryEntry *entry, gboo
GSM_Error error;
int step = 0;
- error = ATGEN_GetManufacturer(s);
- if (error != ERR_NONE) return error;
-
if (entry->MemoryType == MEM_ME) {
if (Priv->PBKSBNR == 0) {
ATGEN_CheckSBNR(s);
@@ -6196,6 +6198,8 @@ GSM_Reply_Function ATGENReplyFunctions[] = {
{ATGEN_GenericReply, "AT+CFUN=" ,0x00,0x00,ID_SetPower },
{ATGEN_GenericReply, "AT^CURC=" ,0x00,0x00,ID_SetIncomingCall },
{ATGEN_GenericReply, "AT^PORTSEL=" ,0x00,0x00,ID_SetIncomingCall },
+{ATGEN_GenericReply, "AT+ZCDRUN=" ,0x00,0x00,ID_Initialise },
+{ATGEN_GenericReply, "AT+ZOPRT=" ,0x00,0x00,ID_Initialise },
{ATGEN_GenericReply, "AT\r" ,0x00,0x00,ID_Initialise },
{ATGEN_GenericReply, "AT\n" ,0x00,0x00,ID_Initialise },
{ATGEN_GenericReply, "OK" ,0x00,0x00,ID_Initialise },
diff --git a/libgammu/phone/at/atgen.h b/libgammu/phone/at/atgen.h
index 5549a70..250b7cd 100644
--- a/libgammu/phone/at/atgen.h
+++ b/libgammu/phone/at/atgen.h
@@ -79,6 +79,8 @@ typedef enum {
AT_Wavecom,
AT_Philips,
AT_Huawei,
+ AT_Qualcomm,
+ AT_ZTE,
AT_Unknown
} GSM_AT_Manufacturer;
diff --git a/libgammu/phone/at/sonyericsson.c b/libgammu/phone/at/sonyericsson.c
index e997084..25c3ae2 100644
--- a/libgammu/phone/at/sonyericsson.c
+++ b/libgammu/phone/at/sonyericsson.c
@@ -90,7 +90,6 @@ GSM_Error SONYERICSSON_Reply_Screenshot(GSM_Protocol_Message *msg, GSM_StateMach
const char *string;
int line;
int h, w, param3, param4;
- GSM_Error result = ERR_UNKNOWNRESPONSE;
switch (Priv->ReplyState) {
case AT_Reply_OK:
@@ -134,7 +133,6 @@ GSM_Error SONYERICSSON_Reply_Screenshot(GSM_Protocol_Message *msg, GSM_StateMach
/* Remember the screen size */
Priv->ScreenWidth = w;
Priv->ScreenHeigth = h;
- result = ERR_NONE;
}
line++;
@@ -149,13 +147,11 @@ GSM_Error SONYERICSSON_Reply_Screenshot(GSM_Protocol_Message *msg, GSM_StateMach
case AT_Reply_CMEError:
return ATGEN_HandleCMEError(s);
default:
+ s->Phone.Data.Picture->Type = PICTURE_BMP;
+ s->Phone.Data.Picture->Buffer = NULL;
+ s->Phone.Data.Picture->Length = 0;
return ERR_UNKNOWNRESPONSE;
}
-
- s->Phone.Data.Picture->Type = PICTURE_BMP;
- s->Phone.Data.Picture->Buffer = NULL;
- s->Phone.Data.Picture->Length = 0;
- return result;
}
static void u32_store(u8 *p, u32 data) {