Hi
here is a patch that fill the SM field in positive reply to call input operation.

Regards,
--
Colin Pitrat (Bull Services Telco)
Bull,  Architect of an Open World (TM)
Tél : +33 (0)  1 30 80 72 93
www.bull.com
--- gateway/gw/smsc/smsc_emi.c  2006-08-18 14:58:05.000000000 +0200
+++ gateway-new/gw/smsc/smsc_emi.c      2006-08-18 15:51:45.000000000 +0200
@@ -609,6 +609,7 @@
                    warning(0, "EMI2[%s]: Couldn't decode message text",
                            octstr_get_cstr(privdata->name));
 
+               //else if (octstr_get_char(emimsg->fields[E01_MT], 0) == '3') 
                msg->sms.msgdata = emimsg->fields[E01_AMSG];
                emimsg->fields[E01_AMSG] = NULL; /* So it's not freed */
 
@@ -652,6 +653,30 @@
        msg->sms.smsc_id = octstr_duplicate(conn->id);
        bb_smscconn_receive(conn, msg);
        reply = emimsg_create_reply(01, emimsg->trn, 1, privdata->name);
+       /* 
+        * Reply should contain SM as field 2 which is AdC:SCTS with :
+        * AdC = Address code recipient, max 16 digits
+        * SCTS = Service center time stamp DDMMYYhhmmss
+        */
+       {
+           time_t t_time;
+           struct tm tm_time;
+           // 13 because the timestamp format is DDMMYYhhmmss
+           char timestamp[13];
+           Octstr *tmpstr;
+           Octstr *tmpstr2;
+
+           time(&t_time);
+           tmpstr = octstr_create(":");
+           tmpstr2 = octstr_cat(emimsg->fields[E01_ADC], tmpstr);
+           octstr_destroy(tmpstr); 
+           gw_strftime(timestamp, sizeof(timestamp), "%d%m%y%H%M%S", 
localtime_r(&t_time, &tm_time));
+           tmpstr = octstr_create(timestamp);
+           reply->fields[1] = octstr_cat(tmpstr2, tmpstr);
+           octstr_destroy(tmpstr);
+           octstr_destroy(tmpstr2);
+       }
+
        if (emi2_emimsg_send(conn, server, reply) < 0) {
            emimsg_destroy(reply);
            return -1;

Reply via email to