summaryrefslogtreecommitdiffstats
path: root/src/smsutil.c
diff options
context:
space:
mode:
authorLucas De Marchi <lucas.demarchi@profusion.mobi>2011-01-28 00:39:55 -0200
committerDenis Kenzior <denkenz@gmail.com>2011-01-28 16:14:12 -0600
commit8305ddf32146abb9ecbfb41c1420762c397706bb (patch)
treecdeaec24be58dd82a61a787dbff85ba6c90c5534 /src/smsutil.c
parent304ab32817952e91727fb115f4230a433c576ab7 (diff)
downloadofono-8305ddf32146abb9ecbfb41c1420762c397706bb.tar.bz2
sms: store pending tx pdus on disk
Based on patch from Kristen Carlson Accardi <kristen@linux.intel.com>
Diffstat (limited to 'src/smsutil.c')
-rw-r--r--src/smsutil.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/smsutil.c b/src/smsutil.c
index 3a54fe65..3e5b7cd0 100644
--- a/src/smsutil.c
+++ b/src/smsutil.c
@@ -48,6 +48,10 @@
#define SMS_SR_BACKUP_PATH STORAGEDIR "/%s/sms_sr"
#define SMS_SR_BACKUP_PATH_FILE SMS_SR_BACKUP_PATH "/%s-%s"
+#define SMS_TX_BACKUP_PATH STORAGEDIR "/%s/tx_queue"
+#define SMS_TX_BACKUP_PATH_DIR SMS_TX_BACKUP_PATH "/%lu-%lu-%s"
+#define SMS_TX_BACKUP_PATH_FILE SMS_TX_BACKUP_PATH_DIR "/%03i"
+
#define SMS_ADDR_FMT "%24[0-9A-F]"
#define SMS_MSGID_FMT "%40[0-9A-F]"
@@ -3143,6 +3147,31 @@ void status_report_assembly_expire(struct status_report_assembly *assembly,
}
}
+gboolean sms_tx_backup_store(const char *imsi, unsigned long id,
+ unsigned long flags, const char *uuid,
+ guint8 seq, const unsigned char *pdu,
+ int pdu_len, int tpdu_len)
+{
+ unsigned char buf[177];
+ int len;
+
+ if (!imsi)
+ return FALSE;
+
+ memcpy(buf + 1, pdu, pdu_len);
+ buf[0] = tpdu_len;
+ len = pdu_len + 1;
+
+ /*
+ * file name is: imsi/tx_queue/order-flags-uuid/pdu
+ */
+ if (write_file(buf, len, SMS_BACKUP_MODE, SMS_TX_BACKUP_PATH_FILE,
+ imsi, id, flags, uuid, seq) != len)
+ return FALSE;
+
+ return TRUE;
+}
+
static inline GSList *sms_list_append(GSList *l, const struct sms *in)
{
struct sms *sms;