* \brief conversion utility from absolute in mW to relative range * \param rig The rig handle * \param power The location where to store the converted relative power * \param mwpower The power in mW * \param freq The frequency where the conversion should take place * \param mode The mode where the conversion should take place * * Converts a power value expressed in the real transmit p
| 6797 | * \sa rig_power2mW() |
| 6798 | */ |
| 6799 | int HAMLIB_API rig_mW2power(RIG *rig, |
| 6800 | float *power, |
| 6801 | unsigned int mwpower, |
| 6802 | freq_t freq, |
| 6803 | rmode_t mode) |
| 6804 | { |
| 6805 | const freq_range_t *txrange; |
| 6806 | int limited = 0; |
| 6807 | |
| 6808 | if (!rig || !rig->caps || !power || mwpower == 0) |
| 6809 | { |
| 6810 | return -RIG_EINVAL; |
| 6811 | } |
| 6812 | |
| 6813 | ENTERFUNC2; |
| 6814 | |
| 6815 | if (rig->caps->mW2power != NULL) |
| 6816 | { |
| 6817 | RETURNFUNC2(rig->caps->mW2power(rig, power, mwpower, freq, mode)); |
| 6818 | } |
| 6819 | |
| 6820 | txrange = rig_get_range(STATE(rig)->tx_range_list, freq, mode); |
| 6821 | |
| 6822 | if (!txrange) |
| 6823 | { |
| 6824 | /* |
| 6825 | * freq is not on the tx range! |
| 6826 | */ |
| 6827 | RETURNFUNC2(-RIG_EINVAL); /* could be RIG_EINVAL ? */ |
| 6828 | } |
| 6829 | |
| 6830 | if (txrange->high_power == 0) |
| 6831 | { |
| 6832 | *power = 0.0; |
| 6833 | RETURNFUNC2(RIG_OK); |
| 6834 | } |
| 6835 | |
| 6836 | *power = (float)mwpower / (float) txrange->high_power; |
| 6837 | |
| 6838 | if (*power > 1.0) |
| 6839 | { |
| 6840 | *power = 1.0; |
| 6841 | limited = 1; |
| 6842 | } |
| 6843 | else if (*power < 0.0) |
| 6844 | { |
| 6845 | *power = 0; |
| 6846 | limited = 1; |
| 6847 | } |
| 6848 | |
| 6849 | RETURNFUNC2(limited ? RIG_ETRUNC : RIG_OK); |
| 6850 | } |
| 6851 | |
| 6852 | |
| 6853 | /** |