View Issue Details

IDProjectCategoryView StatusLast Update
0003401Ham Radio DeluxeEnhancementpublic2019-11-08 02:31
ReporterDOUGAssigned ToK7ZCZ 
PriorityhighSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version 
Target VersionFixed in Version6.7.0.244 
Summary0003401: Add feature in QLM for panadapter
DescriptionAdd feature in QLM for panadapter and add a method to be able to tell if it is enabled for a given user.
TagsNo tags attached.
ModuleSW License Mgmt
Testing Beta Successful


related to 0003441 closedK7ZCZ add UI to show licensing status of all features 



2019-08-11 14:48

developer   ~0008372

I added functionality to implement this in 6.7.
You can do it a couple of different ways. First, you can just ask for the users expiration date, and enable/disable based on date. Second, you can define a new feature in HRDSoracoLicenser.h and specify the date required in HRDSoracoLicenser.cpp.

Some sample code of how it can be used below.

COleDateTime expireDate;
    COleDateTime featureMinDate;
    CString msg;

    msg.Format(_T("This feature is from '%s'"), expireDate.Format());

    if (HRDCheckFeature(HF_PAN_ADAPTER))
        AfxMessageBox(_T("You can use the Pan Adapter "));

        AfxMessageBox(_T("Howdy future man."));
        AfxMessageBox(_T("You cannot use this fake feature of the future."));

    if ( !HRDCheckFeature(HF_FAKE_FEATURE_OF_THE_FUTURE, &expireDate, &featureMinDate))

        msg.Format(_T("You cannot use this fake feature of the future. You expired '%s', this feature is from '%s' "),
            expireDate.Format(), featureMinDate.Format());


2019-08-12 16:31

administrator   ~0008392

Change set 5115 edits HRDStationLicense.h and HRStationLicense.cpp with lines that use two spaces instead of tabs for indentation. In this project, we use tabs set at every fourth column. Can the indenting style be fixed, please?

HRD_FEATURES is an enum, but HRDCheckFeature takes an int for the feature ID. Seems like it should take an enum type.

I'm not perfectly sure I understand the business logic. Looks like HRDCheckFeature will return TRUE if the user's license expries after a certain date. For a given feature, how od we decide which date to compare against? Which date should be used for the panadapter feature, for example?


2019-08-14 00:58

developer   ~0008404

Fixed the indents (i think). think I got rid of all the leading spaces.
Changed it to the int to the correct enum

Logic goes likes, for each new feature we..
1. Add it to the HRD_FEATURES enum
2. Add the valid logic (i.e. checking the min date) to the switch in HRDCheckFeature

Right now the pan adapter is .....

        featureMinDate = COleDateTime(2020, 1, 1, 0, 0, 0);

        if ( expDate > featureMinDate)
            bRetVal = TRUE;

Where the 1/1/2020 is just an arbitrary date I picked.

There are 3 way to do this..
Option #1 -So simple way is...
 if (HRDCheckFeature(HF_PAN_ADAPTER))
        AfxMessageBox(_T("You can use the Pan Adapter "));

Option #2 - So this way, will give you some dates back in case you want to show a message or something....
    if ( !HRDCheckFeature(HF_FAKE_FEATURE_OF_THE_FUTURE, &expireDate, &featureMinDate))
    msg.Format(_T("You cannot use this fake feature of the future. You expired '%s', this feature is from '%s' "),
            expireDate.Format(), featureMinDate.Format());

Option #3 - Just gets the users expiration date, and make your own logic, we probably want to use the feature id, but this gives us some flexibility.
   COleDateTime featureMinDate;


2019-08-22 10:53

administrator   ~0008427

Several spec issues have been raised, and are waiting on your feedback.


2019-08-26 05:14

administrator   ~0008441

My responses have been sent via email now. The text of that response is as follow:
Perahps the message you mean to send is that I should be guessing at what's required and trying to make progress even if I'm not sure, and the team hasn't agreed, upon what we're writing. If so, I can take a stab at a functional description for the panadapter's exposure:
The Rig Control app gets a couple of new menu items; one for "Panadapter (main)" and one for "Panadapter (sub)". [Approved]
These menu items are always enabled; they're never "greyed-out". [Approved]
[Scenario is "entitlement=Y" and "compatibility=N"] If the user selects a menu item when their radio doesn't suport the panadapter feature, or the configuration of the radio isn't correct for the panadapter display to work, they'll get a message that epxlains the issue. Dismissing the message closes it and the application doesn't take any further action. (It doesn't display the panadapter window.) [Approved]
[Scenario is "entitlement=N" and "compatibility=Y"] If the user selects the menu item when their radio does support the feature and is correctly configured, but their license doesn't allow the feature, they get a message explaining the issue. That message, when dismissed, does not show the feature. [Approved]
[Scenario is "entitlement=N" and "compatibilty=N"] If both conditions are true (the radio can't handle the feature and the license is expired) and the user selects one of the panadapter menu items, a message is displayed describing both problems. When dismissed, the feature is not revealed. [Approved]
[Scenario is "entitlement=Y" and "compatibilty=Y"] If the radio does support the feature, is configured correctly, and the license is in a good state, then when the user clicks one of the panadapter menu items, the panadapter window is opened attached to the corresponding tuner and is displayed. [Approved]
These descriptions consider the state of the license, so that's worth describing:
If the license is an un-expired trial license, then the feature is available; [Clarification; ANY trial license will have the feature enabled regardless of its expiry. There's no need to analyze anything beyond "LicenseModel='trial'" in this case because the trial will simply stop functioning when the trial expires. Nothing works after the trial because the key will not longer allow the software to launch.]
otherwise, the expiration date of the license is considered. If the lincese has an expiry date after the release date of the feature, then the feature is enabled. [If "LicenseModel='permanent'", yes, we should compare the MaintenanceRenewalDate for that key in QLM to the feature release date to enable/disable the feature.]
The feature's release date is set in release builds for the date of the release of the feature. [Approved]
Release dates in beta builds may be adjusted for the beta build as testing requires. [Approved]
As for the logic related to trial and permanent licenses, I would like to restate it for clarification in a way that I can understand it.
If the "LicenseModel = trial", then all features are unlocked regardless of the expiration date. (Trial keys don't have a "MaintenanceRenewalDate". The trial is enabled based on a different date.)
If the "LicenseModel = permanent", and the "MaintenanceRenewalDate" for that key comes after the release date of the feature, then the feature is enabled.
Hope that helps.


2019-08-28 14:16

administrator   ~0008457

Checked in with this change set:


2019-09-22 19:40

administrator   ~0008591

I've tested this. But we need some beta testers to confirm.

Point of this change is... if your SM&S expiration is before the release of this feature, you should not be able to run this feature.


2019-09-23 05:35

viewer   ~0008594

The Panadapter loads with my IC-7610 connected to Rig Control.
Switching to Demomatic connection shows a "Feature not available" message.


2019-09-24 00:22

administrator   ~0008629

John - can I temporarily back-date your Software Maintenance and Support date and see what message you get when you attempt to run it while connected to the IC-7610?


2019-09-24 01:30

viewer   ~0008630

Yes Mike. Go ahead.


2019-09-24 14:00

administrator   ~0008633

Ok John... I set you back a few years. I'll change it back after you can confirm this change.

What you should see is a message indicating that you're not entitled to the feature based on your SM&S expiry.


2019-09-24 14:29

viewer   ~0008634

"Feature not available". Fixed


2019-09-24 14:55

administrator   ~0008635

Ok John. I reset your year back to where it was. You should be able to access the feature now.

I'm going to mark this validated.

Issue History

Date Modified Username Field Change
2019-07-22 21:49 DOUG New Issue
2019-07-22 21:49 DOUG Status new => assigned
2019-07-22 21:49 DOUG Assigned To => DOUG
2019-07-23 09:22 K7ZCZ Module (select) => SW License Mgmt
2019-08-11 14:45 DOUG Assigned To DOUG => K7ZCZ
2019-08-11 14:48 DOUG Note Added: 0008372
2019-08-12 16:31 K7ZCZ Note Added: 0008392
2019-08-12 16:31 K7ZCZ Assigned To K7ZCZ => DOUG
2019-08-14 00:58 DOUG Assigned To DOUG => K7ZCZ
2019-08-14 00:58 DOUG Status assigned => resolved
2019-08-14 00:58 DOUG Resolution open => fixed
2019-08-14 00:58 DOUG Note Added: 0008404
2019-08-22 10:53 K7ZCZ Note Added: 0008427
2019-08-22 10:53 K7ZCZ Assigned To K7ZCZ => WA9PIE
2019-08-22 10:53 K7ZCZ Status resolved => feedback
2019-08-22 10:53 K7ZCZ Resolution fixed => reopened
2019-08-26 05:14 WA9PIE Note Added: 0008441
2019-08-26 05:14 WA9PIE Assigned To WA9PIE => K7ZCZ
2019-08-27 14:50 K7ZCZ Relationship added related to 0003441
2019-08-28 14:16 K7ZCZ Status feedback => resolved
2019-08-28 14:16 K7ZCZ Resolution reopened => fixed
2019-08-28 14:16 K7ZCZ Note Added: 0008457
2019-08-30 13:25 K7ZCZ Project 1 - Backlog => 3 - Current Dev List
2019-08-30 14:54 K7ZCZ Fixed in Version =>
2019-09-22 19:40 WA9PIE Note Added: 0008591
2019-09-23 05:35 g3ucq Note Added: 0008594
2019-09-24 00:22 WA9PIE Note Added: 0008629
2019-09-24 01:30 g3ucq Note Added: 0008630
2019-09-24 14:00 WA9PIE Note Added: 0008633
2019-09-24 14:29 g3ucq Note Added: 0008634
2019-09-24 14:55 WA9PIE Status resolved => closed
2019-09-24 14:55 WA9PIE Testing Not Started => Beta Successful
2019-09-24 14:55 WA9PIE Note Added: 0008635
2019-11-08 02:16 WA9PIE Fixed in Version =>
2019-11-08 02:31 WA9PIE Project 3 - Current Dev List => Ham Radio Deluxe