View Issue Details

IDProjectCategoryView StatusLast Update
00031271 - BacklogBugpublic2019-03-02 01:30
ReporterWA9PIEAssigned ToWA9PIE 
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionopen 
Summary0003127: Gaps in the band plan need to be resolved
DescriptionFor many years now, we have had a number of reports for mode being wrong when a spot is selected for certain frequencies. The cause of this is that there are gaps in the band plan for certain frequencies in the ITU Region band plans. It may be specific to rigs and/or manufacturers.
Steps To ReproducePer the customer:

When you see a spot for F5KEQ which is on 3.536Mhz CW when I click on the band folder my FTdx-5000 goes to CW and the correct frequency
but if I click in the cluster then the FTdx-5000 goes to the correct frequency only to CW.
Do you have an idea what I can do because it works but only with a band folder
That is very strange.
and then only between 3,530 - 3,540 Mhz
Additional InformationIn code, there's a whole convoluted section that tries to determine what the appropriate modes are by radio manufacturer and model:

if ((strRadio=="FTDX-9000") || (strRadio =="FTDX-5000") || (strRadio =="FT-2000")||

                           (strRadio=="FT-450") || (strRadio =="FT-950") || (strRadio =="FTDX-3000"))

Then the band plan looks like this:

int CDXClusterDlg::OpModeC(long Freq)

{

       //

       // Check Frequency Ranges of Frequency b4 spotting

       //

 

 

       // 2.4 GHZ

 

       // if((Freq >= 1200000L) && (Freq < 1295000L)) return(IC_FM);

       // if((Freq >= 1295000L) && (Freq < 1297000L)) return(IC_USB);

       // if((Freq >= 1297000L) && (Freq < 1300000L)) return(IC_FSK);

 

       // 1.2 GHZ

 

 

 

       if((Freq >= 1200000L) && (Freq < 1295000L)) return(IC_FM);

       if((Freq >= 1295000L) && (Freq < 1297000L)) return(IC_USB);

       if((Freq >= 1297000L) && (Freq < 1300000L)) return(IC_USB);

 

 

       //

       // 440 MHZ

       //

       if((Freq >= 432000L) && (Freq < 432110L)) return(IC_CW);

       if((Freq >= 432100L) && (Freq < 438000L)) return(IC_USB);

       if((Freq >= 438000L) && (Freq < 450000L)) return(IC_FM);

 

       //

       // 222 MHZ

       //

 

       //

       // 2 Meters

       //

       if((Freq >= 144000L) && (Freq < 144110L)) return(IC_CW);

       if((Freq >= 144110L) && (Freq < 144600L)) return(IC_USB);

       if((Freq >= 144600L) && (Freq < 145500L)) return(IC_FM);

       if((Freq >= 145500L) && (Freq < 146000L)) return(IC_USB);

       if((Freq >= 146000L) && (Freq < 148000L)) return(IC_FM);

 

       //

       //

       // 6 Meters

       //

       if((Freq >= 50000U) && (Freq < 50100U)) return(IC_CW);

       if((Freq >= 50100U) && (Freq < 50290U)) return(IC_USB);

       if((Freq >= 50290U) && (Freq < 50291U)) return(IC_PSK);

       if((Freq >= 50291U) && (Freq < 51000U)) return(IC_USB);

       if((Freq >= 51000U) && (Freq < 54000U)) return(IC_FM);

 

 

       //

       // 10 Meters

       //

       if((Freq >= 28000) && (Freq < 28080)) return(IC_CW);

       if((Freq >= 28080) && (Freq < 28100)) return(IC_FSK);

       if((Freq >= 28100) && (Freq < 28120)) return(IC_CW);

       if((Freq >= 28120) && (Freq < 28121)) return(IC_PSK);

       if((Freq >= 28121) && (Freq < 28300)) return(IC_CW);

       if((Freq >= 28300) && (Freq < 29500)) return(IC_USB);

       if((Freq >= 29500) && (Freq < 29700)) return(IC_FM);

 

       //

       // 12 Meters

       //

       if((Freq >= 24890) && (Freq < 24920)) return(IC_CW);

       if((Freq >= 24920) && (Freq < 24921)) return(IC_PSK);

       if((Freq >= 24930) && (Freq < 24990)) return(IC_USB);

 

       //

       // 15 Meters

       //

       if((Freq >= 21000) && (Freq < 21070)) return(IC_CW);

       if((Freq >= 21070) && (Freq < 21071)) return(IC_PSK);

       if((Freq >= 21071) && (Freq < 21100)) return(IC_FSK);

       if((Freq >= 21100) && (Freq < 21200)) return(IC_CW);

       if((Freq >= 21200) && (Freq < 21450)) return(IC_USB);

 

       //

       // 17 Meters

       //

       if((Freq >= 18068) && (Freq < 18100)) return(IC_CW);

       if((Freq >= 18100) && (Freq < 18101)) return(IC_PSK);

       if((Freq >= 18101) && (Freq < 18110)) return(IC_FSK);

       if((Freq >= 18110) && (Freq < 18168)) return(IC_USB);

 

       //

       // 20 Meters

       //

       if((Freq >= 14000) && (Freq < 14070)) return(IC_CW);

       if((Freq >= 14070) && (Freq < 14071)) return(IC_PSK);

       if((Freq >= 14071) && (Freq < 14080)) return(IC_CW);

       if((Freq >= 14080) && (Freq < 14100)) return(IC_FSK);

       if((Freq >= 14100) && (Freq < 14150)) return(IC_FSK);

       if((Freq >= 14150) && (Freq < 14350)) return(IC_USB);

 

       //

       //

       // 30 Meters

       //

       if((Freq >= 10100) && (Freq < 10137)) return(IC_CW);

       if((Freq >= 10138) && (Freq < 10142)) return(IC_PSK);

       if((Freq >= 10142) && (Freq < 10150)) return(IC_FSK);

       //

       // 40 Meters

       //

       if((Freq >= 7000) && (Freq < 7040)) return(IC_CW);

       //if((Freq >= 7032) && (Freq < 7040)) return(IC_FSK);

       if((Freq >= 7040) && (Freq < 7041)) return(IC_PSK);

       if((Freq >= 7041) && (Freq < 7100)) return(IC_FSK);

       //if((Freq >= 7075) && (Freq < 7100)) return(IC_FSK);

       if((Freq >= 7100) && (Freq < 7125)) return(IC_CW);

       if((Freq >= 7125) && (Freq < 7300)) return(IC_LSB);

 

       //

       // 80 Meters

       //

       if((Freq >= 3500) && (Freq < 3530)) return(IC_CW);

       if((Freq >= 3530) && (Freq < 3540)) return(IC_FSK);

       if((Freq >= 3540) && (Freq < 3577)) return(IC_CW);

       if((Freq >= 3580) && (Freq < 3581)) return(IC_PSK); //psk

       if((Freq >= 3581) && (Freq < 3600)) return(IC_CW);

       if((Freq >= 3600) && (Freq < 4000)) return(IC_LSB);

 

       //

       //

       // 160 Meters ( Check this )

       //

       if((Freq >= 1800) && (Freq < 1838)) return(IC_CW);

       if((Freq >= 1838) && (Freq < 1839)) return(IC_PSK); //PSK

       if((Freq >= 1839) && (Freq < 2000)) return(IC_LSB);

 

 

       return(IC_OOB);

}

 

int CDXClusterDlg::GetKenwoodOpMode(long Freq)

{

       //

       // Check Frequency Ranges of Frequency b4 spotting

       //

 

       //

       // 440 MHZ

       //

       if((Freq >= 432000L) && (Freq < 432110L)) return(CW);

       if((Freq >= 432100L) && (Freq < 438000L)) return(USB);

       if((Freq >= 438000L) && (Freq < 450000L)) return(FM);

       //

       // 220 MHZ

       //

       if((Freq >= 222000L) && (Freq < 222100L)) return(CW);

       if((Freq >= 222100L) && (Freq < 222200L)) return(USB);

       if((Freq >= 222200L) && (Freq < 225000L)) return(FM);

       //

       // 2 Meters

       //

       if((Freq >= 144000L) && (Freq < 144110L)) return(CW);

       if((Freq >= 144110L) && (Freq < 144600L)) return(USB);

       if((Freq >= 144600L) && (Freq < 145500L)) return(FM);

       if((Freq >= 145500L) && (Freq < 146000L)) return(USB);

       if((Freq >= 146000L) && (Freq < 148000L)) return(FM);

 

 

       //

       // 6 Meters

       //

       if((Freq >= 50000U) && (Freq < 50100U)) return(CW);

       if((Freq >= 50100U) && (Freq < 51000U)) return(USB);

       if((Freq >= 51000U) && (Freq < 54000U)) return(FM);

 

 

       // 10 Meters

       //

       if((Freq >= 28000) && (Freq < 28080)) return(CW);

       if((Freq >= 28080) && (Freq < 28100)) return(USB);

       if((Freq >= 28100) && (Freq < 28117)) return(CW);

       if((Freq >= 28117) && (Freq < 28123)) return(USB);

       if((Freq >= 28123) && (Freq < 28300)) return(CW);

       if((Freq >= 28300) && (Freq < 29500)) return(USB);

       if((Freq >= 29500) && (Freq < 29700)) return(FM);

 

       //

       // 12 Meters

       //

       if((Freq >= 24890) && (Freq < 24920)) return(CW);

       if((Freq >= 24920) && (Freq < 24930)) return(USB);

       if((Freq >= 24930) && (Freq < 24990)) return(USB);

 

       //

       // 15 Meters

       //

       if((Freq >= 21000) && (Freq < 21070)) return(CW);

       if((Freq >= 21070) && (Freq < 21083)) return(USB);

       if((Freq >= 21083) && (Freq < 21100)) return(USB);

       if((Freq >= 21100) && (Freq < 21200)) return(CW);

       if((Freq >= 21200) && (Freq < 21450)) return(USB);

 

       //

       // 17 Meters

       //

       if((Freq >= 18068) && (Freq < 18097)) return(CW);

       if((Freq >= 18097) && (Freq < 18103)) return(USB);

       if((Freq >= 18103) && (Freq < 18110)) return(USB);

       if((Freq >= 18110) && (Freq < 18168)) return(USB);

 

       //

       // 20 Meters

       //

       if((Freq >= 14000) && (Freq < 14067)) return(CW);

       if((Freq >= 14067) && (Freq < 14073)) return(USB);

       if((Freq >= 14072) && (Freq < 14080)) return(CW);

       if((Freq >= 14080) && (Freq < 14100)) return(USB);

       if((Freq >= 14100) && (Freq < 14150)) return(CW);

       if((Freq >= 14150) && (Freq < 14350)) return(USB);

 

       //

       //

       // 30 Meters

       //

       if((Freq >= 10100) && (Freq < 10137)) return(CW);

       if((Freq >= 10137) && (Freq < 10143)) return(USB);

       if((Freq >= 10143) && (Freq < 10150)) return(USB);

       //

       // 40 Meters

       //

       if((Freq >= 7000) && (Freq < 7032)) return(CW);

       if((Freq >= 7032) && (Freq < 7038)) return(USB);

       if((Freq >= 7038) && (Freq < 7050)) return(CW);

       if((Freq >= 7050) && (Freq < 7075)) return(LSB);

       if((Freq >= 7075) && (Freq < 7100)) return(USB);

       if((Freq >= 7100) && (Freq < 7125)) return(CW);

       if((Freq >= 7125) && (Freq < 7300)) return(LSB);

 

       //

       // 80 Meters

       //

       if((Freq >= 3500) && (Freq < 3530)) return(CW);

       if((Freq >= 3530) && (Freq < 3540)) return(USB);

       if((Freq >= 3540) && (Freq < 3577)) return(CW);

       if((Freq >= 3577) && (Freq < 3583)) return(USB); //psk

       if((Freq >= 3583) && (Freq < 3600)) return(CW);

       if((Freq >= 3600) && (Freq < 4000)) return(LSB);

 

       //

       //

       // 160 Meters ( Check this )

       //

       if((Freq >= 1800) && (Freq < 1835)) return(CW);

       if((Freq >= 1835) && (Freq < 1840)) return(USB); //PSK

       if((Freq >= 1840) && (Freq < 2000)) return(LSB);

 

       return(0);

}

 

 

int CDXClusterDlg::GetYaesuOpMode(long Freq)

{

       //

       // Check Frequency Ranges of Frequency b4 spotting

 

 

       if((Freq >= 432000L) && (Freq < 432110L)) return(FT_CW);

       if((Freq >= 432100L) && (Freq < 438000L)) return(FT_USB);

       if((Freq >= 438000L) && (Freq < 450000L)) return(FT_FM);

       //

       // 220 MHZ

       //

       //if((Freq >= 222000L) && (Freq < 222100L)) return(FT_CW);

       //if((Freq >= 222100L) && (Freq < 222200L)) return(FT_USB);

       //if((Freq >= 222200L) && (Freq < 225000L)) return(FT_FM);

       //

       // 2 Meters

       //

       //

 

 

       if((Freq >= 144000L) && (Freq < 144110L)) return(FT_CW);

       if((Freq >= 144110L) && (Freq < 144600L)) return(FT_USB);

       if((Freq >= 144600L) && (Freq < 145500L)) return(FT_FM);

       if((Freq >= 145500L) && (Freq < 146000L)) return(FT_USB);

       if((Freq >= 146000L) && (Freq < 148000L)) return(FT_FM);

 

 

       //

       if((Freq >= 50000U) && (Freq < 50100U)) return(FT_CW);

       if((Freq >= 50100U) && (Freq < 51000U)) return(FT_USB);

       if((Freq >= 51000U) && (Freq < 54000U)) return(FT_FM);

 

 

       // 10 Meters

       //

       if((Freq >= 28000) && (Freq < 28080)) return(FT_CW);

       if((Freq >= 28080) && (Freq < 28100)) return(FT_USB);

       if((Freq >= 28100) && (Freq < 28117)) return(FT_CW);

       if((Freq >= 28117) && (Freq < 28123)) return(FT_USB);

       if((Freq >= 28123) && (Freq < 28300)) return(FT_CW);

       if((Freq >= 28300) && (Freq < 29500)) return(FT_USB);

       if((Freq >= 29500) && (Freq < 29700)) return(FT_FM);

 

       //

       // 12 Meters

       //

       if((Freq >= 24890) && (Freq < 24920)) return(FT_CW);

       if((Freq >= 24920) && (Freq < 24930)) return(FT_USB);

       if((Freq >= 24930) && (Freq < 24990)) return(FT_USB);

 

       //

       // 15 Meters

       //

       if((Freq >= 21000) && (Freq < 21070)) return(FT_CW);

       if((Freq >= 21070) && (Freq < 21083)) return(FT_USB);

       if((Freq >= 21083) && (Freq < 21100)) return(FT_USB);

       if((Freq >= 21100) && (Freq < 21200)) return(FT_CW);

       if((Freq >= 21200) && (Freq < 21450)) return(FT_USB);

 

       //

       // 17 Meters

       //

       if((Freq >= 18068) && (Freq < 18097)) return(FT_CW);

       if((Freq >= 18097) && (Freq < 18103)) return(FT_USB);

       if((Freq >= 18103) && (Freq < 18110)) return(FT_USB);

       if((Freq >= 18110) && (Freq < 18168)) return(FT_USB);

 

       //

       // 20 Meters

       //

       if((Freq >= 14000) && (Freq < 14067)) return(FT_CW);

       if((Freq >= 14067) && (Freq < 14073)) return(FT_USB);

       if((Freq >= 14072) && (Freq < 14080)) return(FT_CW);

       if((Freq >= 14080) && (Freq < 14100)) return(FT_USB);

       if((Freq >= 14100) && (Freq < 14150)) return(FT_CW);

       if((Freq >= 14150) && (Freq < 14350)) return(FT_USB);

 

       //

       //

       // 30 Meters

       //

       if((Freq >= 10100) && (Freq < 10137)) return(FT_CW);

       if((Freq >= 10137) && (Freq < 10143)) return(FT_USB);

       if((Freq >= 10143) && (Freq < 10150)) return(FT_USB);

       //

       // 40 Meters

       //

       if((Freq >= 7000) && (Freq < 7032)) return(FT_CW);

       if((Freq >= 7032) && (Freq < 7038)) return(FT_USB);

       if((Freq >= 7038) && (Freq < 7050)) return(FT_CW);

       if((Freq >= 7050) && (Freq < 7075)) return(FT_LSB);

       if((Freq >= 7075) && (Freq < 7100)) return(FT_USB);

       if((Freq >= 7100) && (Freq < 7125)) return(FT_CW);

       if((Freq >= 7125) && (Freq < 7300)) return(FT_LSB);

 

       //

       // 80 Meters

       //

       if((Freq >= 3500) && (Freq < 3530)) return(FT_CW);

       if((Freq >= 3530) && (Freq < 3540)) return(FT_USB);

       if((Freq >= 3540) && (Freq < 3577)) return(FT_CW);

       if((Freq >= 3577) && (Freq < 3583)) return(FT_USB); //psk

       if((Freq >= 3583) && (Freq < 3600)) return(FT_CW);

       if((Freq >= 3600) && (Freq < 4000)) return(FT_LSB);

 

       //

       //

       // 160 Meters ( Check this )

       //

       if((Freq >= 1800) && (Freq < 1835)) return(FT_CW);

       if((Freq >= 1835) && (Freq < 1840)) return(FT_USB); //PSK

       if((Freq >= 1840) && (Freq < 2000)) return(FT_LSB);

 

 

       return(FT_OOB);

}
TagsNo tags attached.
ModuleLogbook
Sub-ModuleRig Control
TestingNot Started

Relationships

related to 0001345 acknowledged Logbook Cluster (and application in general) need to use an external xml or txt file configuration for Frequency 

Activities

WA9PIE

2019-01-27 16:46

administrator  

Naamloos.jpg (768,557 bytes)

WA9PIE

2019-01-27 16:56

administrator   ~0007091

I didn't go through all this code, but... just in the first rig, here is an example of the problems:

What happens at:

- 432109L? (overlap needs fixed)
- 21922? (gap between 24921 and 24930)
- 10137.5? (gap between 10137 and 10138)
- 7035? (overlap needs fixed)
- 7080? (overlap/duplication needs fixed)
- 3578 (gap between 3577 and 3580)

K7ZCZ

2019-01-28 10:54

administrator   ~0007098

I don't think this would be hard to fix. What's needed is a clear specification of the desired behviour.

WA9PIE

2019-02-13 15:08

administrator   ~0007383

Somehow we should fix the existing gaps... and then later we can see if there's a better way to do this.

But the desired behavior... by rig model... is that clicking on a spot will change the mode to a mode that has been defined for that frequency on that rig. To that end, such code exists, but it has gaps. I could fairly easily find the gaps, if I can get my hands on this code in Logbook.

WA9PIE

2019-02-13 16:47

administrator   ~0007385

In the end, we should put this in the UI and let folks create their bandplan from a template. Some folks prefer the Data mode for data over the USB mode. So basically, we should have a pre-populated table for this. The catch (or complexity in this) is that all rigs have various different mode options for data.

K7ZCZ

2019-02-13 17:37

administrator   ~0007386

Indeed, the quoted code looks like it has a gap in one of the functions:

greater than or equal 24.890 megahertz, but less than 24.920 megahertz is IC_CW.
24.920 megahertz or more, but less than 24.921 megahertz is IC_PSK.
24.921 megahertz or more, but less than 24.930 is undefined.
24.930 megahertz or more, but less than 24.990 megahertz is IC_USB.


For sure, I see there's an undefined range. But I have no advice about how to fix it. Should the IC_PSK range be extended upward to be below 24.930 megaertz? Should the IC_USB range be extended down tobe 24.921 megahertz and above?

"Somehow we should fix the existing gaps" doesn't give me enough to go on.

Maybe the best way to proceed is to provide a table for each band (each radio model? each manufacturer? ... ?) with the ranges for each mode.

There are other user-editable band ranges in the applications. Is there a reason we don't use one of those? (There are more than one!)

WA9PIE

2019-02-14 23:02

administrator   ~0007397

I could probably pull together a table where we can populate this stuff for the band plans for the three ITU regions. Yes, we should fix the gaps (and there are many). But the game has changed a bit with the popularity of FT8, I suppose.

CW and SSB are easy... and there would be little dispute among hams about the selected modes.
Digital modes where things get messy, as some rigs have a "Data" mode... some don't and need USB... some folks may want FSK for RTTY, instead of AFSK (USB). Sometimes, this can be a matter of personal preference. But there would generally be three sections of each band plan - CW, Data, and Phone.

Then there would be three tables - one for each ITU Region (1, 2, & 3).

I'll ponder it.

WA9PIE

2019-03-01 22:09

administrator   ~0007555

I received another help ticket complaint about this topic today.

Issue History

Date Modified Username Field Change
2019-01-27 16:46 WA9PIE New Issue
2019-01-27 16:46 WA9PIE File Added: Naamloos.jpg
2019-01-27 16:56 WA9PIE Steps to Reproduce Updated View Revisions
2019-01-27 16:56 WA9PIE Additional Information Updated View Revisions
2019-01-27 16:56 WA9PIE Note Added: 0007091
2019-01-28 10:54 K7ZCZ Note Added: 0007098
2019-02-02 11:28 K7ZCZ Assigned To => WA9PIE
2019-02-02 11:28 K7ZCZ Status new => feedback
2019-02-13 15:08 WA9PIE Note Added: 0007383
2019-02-13 15:09 WA9PIE Assigned To WA9PIE => K7ZCZ
2019-02-13 16:47 WA9PIE Note Added: 0007385
2019-02-13 16:47 WA9PIE Status feedback => assigned
2019-02-13 17:37 K7ZCZ Assigned To K7ZCZ => WA9PIE
2019-02-13 17:37 K7ZCZ Note Added: 0007386
2019-02-14 23:02 WA9PIE Note Added: 0007397
2019-03-01 22:09 WA9PIE Note Added: 0007555
2019-03-02 01:30 WA9PIE Relationship added related to 0001345