]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Skinny: allow skinny-default-soft-key-set-set per device
authorMathieu Parent <math.parent@gmail.com>
Sat, 4 Sep 2010 08:06:07 +0000 (10:06 +0200)
committerMathieu Parent <math.parent@gmail.com>
Sat, 4 Sep 2010 08:06:07 +0000 (10:06 +0200)
conf/directory/default/skinny-example.xml
src/mod/endpoints/mod_skinny/mod_skinny.h
src/mod/endpoints/mod_skinny/skinny_server.c

index 2f19710136912e032d613d37a30b13f9c5a855b6..8a61ae5be53c0599f2d6cb862b4399524871ae72 100644 (file)
@@ -3,6 +3,7 @@
    <params>
     <!-- for devices requesting firmware via SCCP, like ATA186
     <param name="skinny-firmware-version" value="ATA030101SCCP04"
+    <param name="skinny-default-soft-key-set-set" value="default"
     -->
     <param name="foo" value="bar"/>
    </params>
index 99b52b6fb88afa2ce3a8893bfdf1e39d0c47de66..3dec3e9abb74fc2d327e313f7a0440ff0d5cb370 100644 (file)
@@ -135,6 +135,7 @@ struct listener {
     uint32_t device_type;
     
        char firmware_version[16];
+       char *default_soft_key_set_set;
 
     switch_socket_t *sock;
     switch_memory_pool_t *pool;
index de4fdbd1cc22a22b868b64188ffe38c1dbd1398b..7325a6cb5fdeca483f00362ebe586ce69bf58617 100644 (file)
@@ -999,6 +999,8 @@ switch_status_t skinny_handle_register(listener_t *listener, skinny_message_t *r
                                const char *value = switch_xml_attr_soft(xparam, "value");
                                if (!strcasecmp(name, "skinny-firmware-version")) {
                                        strncpy(listener->firmware_version, value, 16);
+                               } else if (!strcasecmp(name, "skinny-default-soft-key-set-set")) {
+                                       listener->default_soft_key_set_set = switch_core_strdup(profile->pool, value);
                                }
                        }
                }
@@ -1693,14 +1695,19 @@ end:
 
 switch_status_t skinny_handle_soft_key_set_request(listener_t *listener, skinny_message_t *request)
 {
-       skinny_message_t *message;
+       skinny_message_t *message = NULL;
 
-       message = switch_core_hash_find(listener->profile->soft_key_set_sets_hash, "default");
+       if (listener->default_soft_key_set_set) {
+               message = switch_core_hash_find(listener->profile->soft_key_set_sets_hash, listener->default_soft_key_set_set);
+       }
+       if (!message) {
+               message = switch_core_hash_find(listener->profile->soft_key_set_sets_hash, "default");
+       }
        if (message) {
                skinny_send_reply(listener, message);
        } else {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
-                       "Profile %s doesn't have a default <soft-key-set-set>. Profile ignored.\n", listener->profile->name);
+                       "Profile %s doesn't have a default <soft-key-set-set>.\n", listener->profile->name);
        }
 
        /* Init the states */