Index: channels/chan_dahdi.c =================================================================== --- channels/chan_dahdi.c (revision 400905) +++ channels/chan_dahdi.c (working copy) @@ -718,9 +718,9 @@ 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 */ @@ -15690,15 +15690,20 @@ switch (cmd) { case CLI_INIT: - e->command = "dahdi set hwgain"; + e->command = "dahdi set hwgain {rx|tx}"; e->usage = "Usage: dahdi set hwgain \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" " which direction do you want to change (relative to our module)\n" " is the channel number relative to the device\n" - " is the gain in dB (e.g. -3.5 for -3.5dB)\n"; + " 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; @@ -15759,12 +15764,13 @@ switch (cmd) { case CLI_INIT: - e->command = "dahdi set swgain"; + e->command = "dahdi set swgain {rx|tx}"; e->usage = "Usage: dahdi set swgain \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" " which direction do you want to change (relative to our module)\n" " is the channel number relative to the device\n" " is the gain in dB (e.g. -3.5 for -3.5dB)\n"; @@ -15808,6 +15814,12 @@ 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);