chan_dahdi: Reflect the set software gain in the CLI "dahdi show channel" output.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 14 Oct 2013 22:06:01 +0000 (22:06 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 14 Oct 2013 22:06:01 +0000 (22:06 +0000)
* Remember the swgain setting from CLI "dahdi set swgain" command so the
CLI "dahdi show channel" output will reflect the current setting.

* Updated CLI "dahdi set hwgain" and "dahdi set swgain" documentation.

(issue ASTERISK-22429)
Reported by: Jaco Kroon
Patches:
      jira_asterisk_22429_v1.8_v2.patch (license #5621) patch uploaded by rmudgett
........

Merged revisions 400907 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 400909 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 400911 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400913 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_dahdi.c
channels/chan_dahdi.h

index e52969b..9f1f1a5 100644 (file)
@@ -15356,15 +15356,20 @@ static char *dahdi_set_hwgain(struct ast_cli_entry *e, int cmd, struct ast_cli_a
 
        switch (cmd) {
        case CLI_INIT:
-               e->command = "dahdi set hwgain";
+               e->command = "dahdi set hwgain {rx|tx}";
                e->usage =
                        "Usage: dahdi set hwgain <rx|tx> <chan#> <gain>\n"
-                       "       Sets the hardware gain on a a given channel, overriding the\n"
-                       "   value provided at module loadtime, whether the channel is in\n"
-                       "   use or not.  Changes take effect immediately.\n"
+                       "   Sets the hardware gain on a given channel.  Changes take effect\n"
+                       "   immediately whether the channel is in use or not.\n"
+                       "\n"
                        "   <rx|tx> which direction do you want to change (relative to our module)\n"
                        "   <chan num> is the channel number relative to the device\n"
-                       "   <gain> is the gain in dB (e.g. -3.5 for -3.5dB)\n";
+                       "   <gain> is the gain in dB (e.g. -3.5 for -3.5dB)\n"
+                       "\n"
+                       "   Please note:\n"
+                       "   * This is currently the only way to set hwgain by the channel driver.\n"
+                       "   * hwgain is only supportable by hardware with analog ports because\n"
+                       "     hwgain works on the analog side of an analog-digital conversion.\n";
                return NULL;
        case CLI_GENERATE:
                return NULL;
@@ -15425,12 +15430,13 @@ static char *dahdi_set_swgain(struct ast_cli_entry *e, int cmd, struct ast_cli_a
 
        switch (cmd) {
        case CLI_INIT:
-               e->command = "dahdi set swgain";
+               e->command = "dahdi set swgain {rx|tx}";
                e->usage =
                        "Usage: dahdi set swgain <rx|tx> <chan#> <gain>\n"
-                       "       Sets the software gain on a a given channel, overriding the\n"
-                       "   value provided at module loadtime, whether the channel is in\n"
-                       "   use or not.  Changes take effect immediately.\n"
+                       "   Sets the software gain on a given channel and overrides the\n"
+                       "   value provided at module loadtime.  Changes take effect\n"
+                       "   immediately whether the channel is in use or not.\n"
+                       "\n"
                        "   <rx|tx> which direction do you want to change (relative to our module)\n"
                        "   <chan num> is the channel number relative to the device\n"
                        "   <gain> is the gain in dB (e.g. -3.5 for -3.5dB)\n";
@@ -15474,6 +15480,12 @@ static char *dahdi_set_swgain(struct ast_cli_entry *e, int cmd, struct ast_cli_a
 
                ast_cli(a->fd, "software %s gain set to %.1f on channel %d\n",
                        tx ? "tx" : "rx", gain, channel);
+
+               if (tx) {
+                       tmp->txgain = gain;
+               } else {
+                       tmp->rxgain = gain;
+               }
                break;
        }
        ast_mutex_unlock(&iflock);
index 45fdc52..eb0a5fb 100644 (file)
@@ -149,9 +149,9 @@ struct dahdi_pvt {
        struct dahdi_pvt *oprpeer;                              /*!< "Operator Services" peer tech_pvt ptr */
        /*! \brief Amount of gain to increase during caller id */
        float cid_rxgain;
-       /*! \brief Rx gain set by chan_dahdi.conf */
+       /*! \brief Software Rx gain set by chan_dahdi.conf */
        float rxgain;
-       /*! \brief Tx gain set by chan_dahdi.conf */
+       /*! \brief Software Tx gain set by chan_dahdi.conf */
        float txgain;
 
        float txdrc; /*!< Dynamic Range Compression factor. a number between 1 and 6ish */