diff options
author | Michal Čihař <nijel@debian.org> | 2016-02-03 10:49:01 +0100 |
---|---|---|
committer | Michal Čihař <nijel@debian.org> | 2016-02-03 10:49:01 +0100 |
commit | a3fdc2e4eec54580a080fa8dcb020b9125fed442 (patch) | |
tree | b1ba7b4bffdb2dc3fa28893dc51a872c17eba5ec /libgammu | |
parent | 7e916328a9cc2b241a5068d16fdc24fc9859112f (diff) |
Imported Upstream version 1.37.0
Diffstat (limited to 'libgammu')
-rw-r--r-- | libgammu/CMakeLists.txt | 4 | ||||
-rw-r--r-- | libgammu/gsmcomon.c | 6 | ||||
-rw-r--r-- | libgammu/gsmphones.c | 41 | ||||
-rw-r--r-- | libgammu/gsmstate.c | 2 | ||||
-rw-r--r-- | libgammu/phone/at/at-sms.c | 17 | ||||
-rw-r--r-- | libgammu/phone/at/atgen.c | 34 | ||||
-rw-r--r-- | libgammu/phone/at/atgen.h | 2 | ||||
-rw-r--r-- | libgammu/phone/at/sonyericsson.c | 10 |
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) { |