Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/components/ActivateFilterManager.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const MODES = [
'FST4',
'FST4W',
'FST4W-90',
'FT2',
'FT4',
'FT8',
'HELL',
Expand Down
2 changes: 1 addition & 1 deletion src/components/DXFilterManager.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export const DXFilterManager = ({ filters, onFilterChange, isOpen, onClose, onCl
'2m',
'70cm',
];
const modes = ['CW', 'SSB', 'FT8', 'FT4', 'RTTY', 'PSK', 'JT65', 'JS8', 'SSTV', 'AM', 'FM'];
const modes = ['CW', 'SSB', 'FT8', 'FT4', 'FT2', 'RTTY', 'PSK', 'JT65', 'JS8', 'SSTV', 'AM', 'FM'];

// noinspection DuplicatedCode
const toggleArrayItem = (key, item) => {
Expand Down
1 change: 1 addition & 0 deletions src/components/PSKFilterManager.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const MODES = [
'FST4',
'FST4W',
'FST4W-90',
'FT2',
'FT4',
'FT8',
'HELL',
Expand Down
11 changes: 11 additions & 0 deletions src/hooks/useBandHealth.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,17 @@ const ISLANDS = [
{ mhz: 21.074, mode: 'FT8' },
{ mhz: 24.915, mode: 'FT8' },
{ mhz: 28.074, mode: 'FT8' },
// FT2
{ mhz: 1.843, mode: 'FT2' },
{ mhz: 3.578, mode: 'FT2' },
{ mhz: 5.36, mode: 'FT2' },
{ mhz: 7.052, mode: 'FT2' },
{ mhz: 10.144, mode: 'FT2' },
{ mhz: 14.084, mode: 'FT2' },
{ mhz: 18.108, mode: 'FT2' },
{ mhz: 21.144, mode: 'FT2' },
{ mhz: 24.923, mode: 'FT2' },
{ mhz: 28.184, mode: 'FT2' },
// FT4
{ mhz: 3.575, mode: 'FT4' },
{ mhz: 7.0475, mode: 'FT4' },
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/layers/useVOACAPHeatmap.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ export function useLayer({ map, enabled, opacity, locator }) {
.map((g) => `<option value="${g}" ${g === gridSize ? 'selected' : ''}>${g}°</option>`)
.join('');

const modeOptions = ['SSB', 'CW', 'FT8', 'FT4', 'RTTY', 'AM', 'FM']
const modeOptions = ['SSB', 'CW', 'FT8', 'FT4', 'FT2', 'RTTY', 'AM', 'FM']
.map((m) => `<option value="${m}" ${m === propMode ? 'selected' : ''}>${m}</option>`)
.join('');

Expand Down
2 changes: 1 addition & 1 deletion src/utils/bandPlan.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export const mapModeToRig = (mode, freq) => {
if (m === 'DATA-USB' || m === 'DATA-LSB') return m;

// Digital/data modes → DATA-USB or DATA-LSB based on band convention
const digitalModes = ['DATA', 'FT8', 'FT4', 'JS8', 'WSPR', 'JT65', 'JT9', 'PSK31', 'PSK63', 'RTTY', 'PKT'];
const digitalModes = ['DATA', 'FT8', 'FT4', 'FT2', 'JS8', 'WSPR', 'JT65', 'JT9', 'PSK31', 'PSK63', 'RTTY', 'PKT'];
if (digitalModes.includes(m)) {
return sb === 'USB' ? 'DATA-USB' : 'DATA-LSB';
}
Expand Down
20 changes: 15 additions & 5 deletions src/utils/callsign.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const CONTINENTS = [
/**
* Digital/Voice Modes
*/
export const MODES = ['CW', 'SSB', 'FT8', 'FT4', 'RTTY', 'PSK', 'AM', 'FM'];
export const MODES = ['CW', 'SSB', 'FT8', 'FT4', 'FT2', 'RTTY', 'PSK', 'AM', 'FM'];

/**
* Get band from frequency (in kHz)
Expand Down Expand Up @@ -93,6 +93,7 @@ export const detectMode = (comment, freq) => {
const upper = comment.toUpperCase();
if (upper.includes('FT8')) return 'FT8';
if (upper.includes('FT4')) return 'FT4';
if (upper.includes('FT2')) return 'FT2';
if (upper.includes('CW')) return 'CW';
if (upper.includes('SSB') || upper.includes('LSB') || upper.includes('USB')) return 'SSB';
if (upper.includes('RTTY')) return 'RTTY';
Expand All @@ -113,7 +114,6 @@ export const detectMode = (comment, freq) => {
// DX cluster spots may report slightly off-frequency depending on the spotter's
// rig readout or the audio offset of the specific signal they clicked on.
// 3 kHz was too tight — 24.911 for 12m FT8 (dial 24.915) was being missed.
const TOLERANCE = 0.005;
const DIGITAL_ISLANDS = [
// FT8 calling frequencies
{ mhz: 1.84, mode: 'FT8' },
Expand All @@ -126,6 +126,17 @@ export const detectMode = (comment, freq) => {
{ mhz: 24.915, mode: 'FT8' },
{ mhz: 28.074, mode: 'FT8' },
{ mhz: 50.313, mode: 'FT8' },
// FT2 calling frequencies
{ mhz: 1.843, mode: 'FT2' },
{ mhz: 3.578, mode: 'FT2' },
{ mhz: 5.36, mode: 'FT2' },
{ mhz: 7.052, mode: 'FT2' },
{ mhz: 10.144, mode: 'FT2' },
{ mhz: 14.084, mode: 'FT2' },
{ mhz: 18.108, mode: 'FT2' },
{ mhz: 21.144, mode: 'FT2' },
{ mhz: 24.923, mode: 'FT2' },
{ mhz: 28.184, mode: 'FT2' },
// FT4 calling frequencies
{ mhz: 3.575, mode: 'FT4' },
{ mhz: 7.0475, mode: 'FT4' },
Expand All @@ -145,9 +156,8 @@ export const detectMode = (comment, freq) => {
];

for (const island of DIGITAL_ISLANDS) {
if (Math.abs(mhz - island.mhz) <= TOLERANCE) {
return island.mode;
}
const offset = mhz - island.mhz;
if (offset >= -0.0005 && offset <= 0.0031) return island.mode;
}

// Band plan segments — CW vs SSB by frequency range
Expand Down