sms: Handle "USIM Download" SMS type.
authorAndrzej Zaborowski <andrew.zaborowski@intel.com>
Sun, 7 Nov 2010 17:42:19 +0000 (18:42 +0100)
committerDenis Kenzior <denkenz@gmail.com>
Mon, 8 Nov 2010 19:36:47 +0000 (13:36 -0600)
src/sms.c

index 456dda9..eba4564 100644 (file)
--- a/src/sms.c
+++ b/src/sms.c
@@ -1415,6 +1415,8 @@ static inline gboolean handle_mwi(struct ofono_sms *sms, struct sms *s)
 void ofono_sms_deliver_notify(struct ofono_sms *sms, unsigned char *pdu,
                                int len, int tpdu_len)
 {
+       struct ofono_modem *modem = __ofono_atom_get_modem(sms->atom);
+       struct ofono_atom *stk_atom;
        struct sms s;
        enum sms_class cls;
 
@@ -1479,13 +1481,22 @@ void ofono_sms_deliver_notify(struct ofono_sms *sms, unsigned char *pdu,
                break;
        case SMS_PID_TYPE_USIM_DOWNLOAD:
        case SMS_PID_TYPE_ANSI136:
-               if (cls == SMS_CLASS_2) {
-                       ofono_error("(U)SIM Download messages not supported");
+               /* If not Class 2, handle in a "normal" way */
+               if (cls != SMS_CLASS_2)
+                       break;
+
+               stk_atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_STK);
+
+               if (!stk_atom)
                        return;
-               }
 
-               /* Otherwise handle in a "normal" way */
-               break;
+               __ofono_sms_sim_download(__ofono_atom_get_data(stk_atom),
+                                               &s, NULL, sms);
+
+               /* Passing the USIM response back to network is not
+                * currently support */
+               /* TODO: store in EFsms if not handled */
+               return;
        default:
                break;
        }