diff options
-rw-r--r-- | src/mm-generic-gsm.c | 39 | ||||
-rw-r--r-- | src/mm-generic-gsm.h | 18 |
2 files changed, 47 insertions, 10 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c index bcc158e6..a91da044 100644 --- a/src/mm-generic-gsm.c +++ b/src/mm-generic-gsm.c @@ -1439,9 +1439,16 @@ mm_generic_gsm_enable_complete (MMGenericGsm *self, g_free (cmd); /* Enable SMS notifications */ - mm_at_serial_port_queue_command (priv->primary, "+CNMI=2,1,2,1,0", 3, NULL, NULL); - /* Set SMS storage location to ME */ - mm_at_serial_port_queue_command (priv->primary, "+CPMS=\"ME\",\"ME\",\"ME\"", 3, NULL, NULL); + g_object_get (G_OBJECT (info->modem), MM_GENERIC_GSM_SMS_INDICATION_ENABLE_CMD, &cmd, NULL); + if (cmd && strlen (cmd)) + mm_at_serial_port_queue_command (priv->primary, cmd, 3, NULL, NULL); + g_free (cmd); + + /* Set SMS storage locations */ + g_object_get (G_OBJECT (info->modem), MM_GENERIC_GSM_SMS_STORAGE_LOCATION_CMD, &cmd, NULL); + if (cmd && strlen (cmd)) + mm_at_serial_port_queue_command (priv->primary, cmd, 3, NULL, NULL); + g_free (cmd); mm_at_serial_port_queue_command (priv->primary, "+CIND=?", 3, cind_cb, self); @@ -5615,6 +5622,8 @@ set_property (GObject *object, guint prop_id, case MM_GENERIC_GSM_PROP_USSD_NETWORK_REQUEST: case MM_GENERIC_GSM_PROP_USSD_NETWORK_NOTIFICATION: case MM_GENERIC_GSM_PROP_FLOW_CONTROL_CMD: + case MM_GENERIC_GSM_PROP_SMS_INDICATION_ENABLE_CMD: + case MM_GENERIC_GSM_PROP_SMS_STORAGE_LOCATION_CMD: break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -5726,6 +5735,14 @@ get_property (GObject *object, guint prop_id, /* By default, try to set XOFF/XON flow control */ g_value_set_string (value, "+IFC=1,1"); break; + case MM_GENERIC_GSM_PROP_SMS_INDICATION_ENABLE_CMD: + /* Enable SMS notifications */ + g_value_set_string (value, "+CNMI=2,1,2,1,0"); + break; + case MM_GENERIC_GSM_PROP_SMS_STORAGE_LOCATION_CMD: + /* Use always ME to store SMS */ + g_value_set_string (value, "+CPMS=\"ME\",\"ME\",\"ME\""); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -5878,5 +5895,21 @@ mm_generic_gsm_class_init (MMGenericGsmClass *klass) "Flow control configuration command (errors ignored)", "+IFC=1,1", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property + (object_class, MM_GENERIC_GSM_PROP_SMS_INDICATION_ENABLE_CMD, + g_param_spec_string (MM_GENERIC_GSM_SMS_INDICATION_ENABLE_CMD, + "SmsIndicationEnableCommand", + "SMS indication enable command (errors ignored)", + "+CNMI=2,1,2,1,0", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property + (object_class, MM_GENERIC_GSM_PROP_SMS_STORAGE_LOCATION_CMD, + g_param_spec_string (MM_GENERIC_GSM_SMS_STORAGE_LOCATION_CMD, + "SmsStorageLocationCommand", + "SMS storage location command (errors ignored)", + "+CPMS=\"ME\",\"ME\",\"ME\"", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } diff --git a/src/mm-generic-gsm.h b/src/mm-generic-gsm.h index c6cb7fb2..0e582e98 100644 --- a/src/mm-generic-gsm.h +++ b/src/mm-generic-gsm.h @@ -33,11 +33,13 @@ #define MM_IS_GENERIC_GSM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_GENERIC_GSM)) #define MM_GENERIC_GSM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_GENERIC_GSM, MMGenericGsmClass)) -#define MM_GENERIC_GSM_POWER_UP_CMD "power-up-cmd" -#define MM_GENERIC_GSM_POWER_DOWN_CMD "power-down-cmd" -#define MM_GENERIC_GSM_INIT_CMD "init-cmd" -#define MM_GENERIC_GSM_INIT_CMD_OPTIONAL "init-cmd-optional" -#define MM_GENERIC_GSM_FLOW_CONTROL_CMD "flow-control-cmd" +#define MM_GENERIC_GSM_POWER_UP_CMD "power-up-cmd" +#define MM_GENERIC_GSM_POWER_DOWN_CMD "power-down-cmd" +#define MM_GENERIC_GSM_INIT_CMD "init-cmd" +#define MM_GENERIC_GSM_INIT_CMD_OPTIONAL "init-cmd-optional" +#define MM_GENERIC_GSM_FLOW_CONTROL_CMD "flow-control-cmd" +#define MM_GENERIC_GSM_SMS_INDICATION_ENABLE_CMD "sms-enable-cmd" +#define MM_GENERIC_GSM_SMS_STORAGE_LOCATION_CMD "sms-storage-cmd" typedef enum { MM_GENERIC_GSM_PROP_FIRST = 0x2000, @@ -58,7 +60,9 @@ typedef enum { MM_GENERIC_GSM_PROP_USSD_STATE, MM_GENERIC_GSM_PROP_USSD_NETWORK_REQUEST, MM_GENERIC_GSM_PROP_USSD_NETWORK_NOTIFICATION, - MM_GENERIC_GSM_PROP_FLOW_CONTROL_CMD + MM_GENERIC_GSM_PROP_FLOW_CONTROL_CMD, + MM_GENERIC_GSM_PROP_SMS_INDICATION_ENABLE_CMD, + MM_GENERIC_GSM_PROP_SMS_STORAGE_LOCATION_CMD, } MMGenericGsmProp; typedef enum { @@ -163,7 +167,7 @@ MMModemCharset mm_generic_gsm_get_charset (MMGenericGsm *modem); /* Called to asynchronously update the current allowed operating mode that the * device is allowed to use when connecting to a network. This isn't the - * specific access technology the device is currently using (see + * specific access technology the device is currently using (see * mm_generic_gsm_set_access_technology() for that) but the mode the device is * allowed to choose from when connecting. */ |