OK.this covers hamlib users only since there is no external program to provide power feedback. Perhaps OmniRig is another contender.
Io it adds an S-level on RX and Watts on TX to the status box in the lower left corner. I tested it on two rigs. My Omni VII works on both TX and RX and the ICOM 706MKIIG only on RX (appears you can't get the transmit power level on it). If there is no return nothing is added. I think there may be some question as to what all the rigs may return when in transmit mode but it appears most return watts from what I see. If anybody cares to try this and see how it affects them or if it breaks the interface it would be appreciated. Any funky readings please provide a trace log or at least a rig model# so I can see what it thinks it is providing. 73 Mike W9MDB From: Bill Somerville [mailto:g4...@classdesign.com] Sent: Monday, August 03, 2015 10:40 AM To: wsjt-devel@lists.sourceforge.net Subject: Re: [wsjt-devel] Power/S-Level On 03/08/2015 15:52, Michael Black wrote: Hi Mike, I'm working on patch to add power (attached) and S-level to the transmit/receive status entry in the lower-left corner of WSJT-X. This is a fairly ambitions project as the various ways of achieving rig control are difficult to rationalize to a single function. I'm successfully reading the value and storing it along with frequency and such but am a bit lost on how to get to the value from mainwindow.cpp. There are several issues. Firstly the rig control interface is all done through a common abstract base class called Transceiver. An instance of that is created by TransceiverFactory on behalf of Configuration. The Configuration class instance publishes a common and simple interface for rig control that is suitable for use in the GUI code from in the main GUI thread. Configuration wraps all the calls to the Transceiver instance in a thread safe way by using the Qt signal/slot mechanism. You are basically proposing a new signal to be emitted by the Transceiver class, this in turn needs to be re-emitted by Configuration so that MainWindow for example can connect a slot to it that displays the meter status. An additional complexity is that you will have to poll for the meter status. Currently rig polling is managed generically by PollingTransceiver which is a helper class which sits in the Transceiver class hierarchy above any Transceiver concrete implementation class (HamlibTransceiver, DXLabSuiteCommanderTransceiver, HRDTransceiver at present, OmniRigTransceiver is asynchronous and does not require polling). PollingTransceiver would probably have to be enhanced to run a separate timer for meter polling by running a parallel polling mechanism if different polling rates for the meter and the VFO(s) wre required - See below. TransceiverBase sits just below the Transceiver abstract base class in the hierarchy and provides generic utilities to any transceiver concrete implementation class and would be the place to coordinate signals containing meter status updates. It already does similar stuff to coordinate Transceiver status updates and failure notifications. Here's an example of reading the value from an Omni VII Mon Aug 3 14:47:00 2015 GMT(C:\JTSDK\src\wsjtx\HamlibTransceiver.cpp:49)Debug: Hamlib: tt588_get_level: vfo=currVFO level=1073741824 val=7 Mon Aug 3 14:47:00 2015 GMT(C:\JTSDK\src\wsjtx\HamlibTransceiver.cpp:687)Debug: virtual void HamlibTransceiver::poll() current power/level = 7 Mon Aug 3 14:47:03 2015 GMT(C:\JTSDK\src\wsjtx\HamlibTransceiver.cpp:49)Debug: Hamlib: tt588_get_level: power= 4W Mon Aug 3 14:47:03 2015 GMT(C:\JTSDK\src\wsjtx\HamlibTransceiver.cpp:49)Debug: Hamlib: tt588_get_level: vfo=currVFO level=1073741824 val=4 Mon Aug 3 14:47:03 2015 GMT(C:\JTSDK\src\wsjtx\HamlibTransceiver.cpp:687)Debug: virtual void HamlibTransceiver::poll() current power/level = 4 Mon Aug 3 14:47:06 2015 GMT(C:\JTSDK\src\wsjtx\HamlibTransceiver.cpp:49)Debug: Hamlib: tt588_get_level: level= S7 So in receive mode you'll see "Sn" and transmit mode you'll see "nW" of effective power (or whatever your rig interface returns). I'm not sure polling meter readings at the same rate as other transceiver state is the correct way to do this, one reason being that many rigs and other means of rig control do not have a way of getting this information, also the extra traffic may be an issue. If you were to take this approach then the TransceiverState class in Transceiver.hpp would need to updated with a new member to reflect a common number that represents a meaningful meter reading. Adding to the TransceiverState class would be much easier so long as you had a good way of representing no information (NULL) for the many unsupported rigs and other interfaces. Obviously this should be an option and will eventually handle any 0 returns by not adding anything to the message. Looking through a few rigs in hamlib it seems the RAWSTR and STRENGTH values are handled inconsistently. I have not looked that closely but there does seem to be differences between Hamlib back ends and probably through HRD also. DX Lab Suite Commander has no facility to query meter reading although it can and does display them in its own GUI. HRD can be queried but it is a mess of different protocols on a per rig basis, like DX Labs it already displays meter status through its GUI. Another issue may be that some rigs return the power control setting were others may return RF power at he meter bridge, given that we provide an audio level control the information is not necessarily useful and almost certainly ambiguous. Thoughts? My initial thoughts are that this is well outside of the scope of WSJT-X and should be handled by one of the more specialized rig control programs that we support such as HRD or DX Lab Suite Commander, these applications already have an on screen representation of things like meter readings. Since these applications tend to include logging there is a problem for those that want to use different logging applications that don't provide an interface for other clients to control the rig. IMHO we would do better to encourage the providers of those other applications that require rig control for their other aspects like logging to also provide a means of rig control for the basic subset of functions required for WSJT-X to do its job: Set/query frequency, optionally control PTT, optionally set mode and, optionally enable/disable and set/query a split transmit VFO. We don't require much but getting all that rationalized across all rigs and other rig control applications is non-trivial, adding another facet will increase the complexity considerably. 73 Mike W9MDB 73 Bill G4WJS.
patchpower
Description: Binary data
------------------------------------------------------------------------------
_______________________________________________ wsjt-devel mailing list wsjt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wsjt-devel