1 // ---------------------------------------------------------------------------- 2 // Copyright (C) 2014 3 // David Freese, W1HKJ 4 // 5 // This file is part of fldigi 6 // 7 // fldigi is free software; you can redistribute it and/or modify 8 // it under the terms of the GNU General Public License as published by 9 // the Free Software Foundation; either version 3 of the License, or 10 // (at your option) any later version. 11 // 12 // fldigi is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 // GNU General Public License for more details. 16 // 17 // You should have received a copy of the GNU General Public License 18 // along with this program. If not, see <http://www.gnu.org/licenses/>. 19 // ---------------------------------------------------------------------------- 20 21 // Syntax: ELEM_(rsid_code, rsid_tag, fldigi_mode) 22 // fldigi_mode is NUM_MODES if mode is not available in fldigi, 23 // otherwise one of the tags defined in globals.h. 24 // rsid_tag is stringified and may be shown to the user. 25 /* 26 ELEM_(263, ESCAPE, NUM_MODES) \ 27 */ 28 #undef ELEM_ 29 #define RSID_LIST \ 30 \ 31 /* ESCAPE used to transition to 2nd RSID set */ \ 32 \ 33 ELEM_(6, ESCAPE, NUM_MODES) \ 34 \ 35 ELEM_(1, BPSK31, MODE_PSK31) \ 36 ELEM_(110, QPSK31, MODE_QPSK31) \ 37 ELEM_(2, BPSK63, MODE_PSK63) \ 38 ELEM_(3, QPSK63, MODE_QPSK63) \ 39 ELEM_(4, BPSK125, MODE_PSK125) \ 40 ELEM_(5, QPSK125, MODE_QPSK125) \ 41 ELEM_(126, BPSK250, MODE_PSK250) \ 42 ELEM_(127, QPSK250, MODE_QPSK250) \ 43 ELEM_(173, BPSK500, MODE_PSK500) \ 44 \ 45 ELEM_(183, PSK125R, MODE_PSK125R) \ 46 ELEM_(186, PSK250R, MODE_PSK250R) \ 47 ELEM_(187, PSK500R, MODE_PSK500R) \ 48 \ 49 ELEM_(7, PSKFEC31, NUM_MODES) \ 50 ELEM_(8, PSK10, NUM_MODES) \ 51 \ 52 ELEM_(9, MT63_500_LG, MODE_MT63_500L) \ 53 ELEM_(10, MT63_500_ST, MODE_MT63_500S) \ 54 ELEM_(11, MT63_500_VST, NUM_MODES) \ 55 ELEM_(12, MT63_1000_LG, MODE_MT63_1000L) \ 56 ELEM_(13, MT63_1000_ST, MODE_MT63_1000S) \ 57 ELEM_(14, MT63_1000_VST, NUM_MODES) \ 58 ELEM_(15, MT63_2000_LG, MODE_MT63_2000L) \ 59 ELEM_(17, MT63_2000_ST, MODE_MT63_2000S) \ 60 ELEM_(18, MT63_2000_VST, NUM_MODES) \ 61 \ 62 ELEM_(19, PSKAM10, NUM_MODES) \ 63 ELEM_(20, PSKAM31, NUM_MODES) \ 64 ELEM_(21, PSKAM50, NUM_MODES) \ 65 \ 66 ELEM_(22, PSK63F, MODE_PSK63F) \ 67 ELEM_(23, PSK220F, NUM_MODES) \ 68 \ 69 ELEM_(24, CHIP64, NUM_MODES) \ 70 ELEM_(25, CHIP128, NUM_MODES) \ 71 \ 72 ELEM_(26, CW, MODE_CW) \ 73 \ 74 ELEM_(27, CCW_OOK_12, NUM_MODES) \ 75 ELEM_(28, CCW_OOK_24, NUM_MODES) \ 76 ELEM_(29, CCW_OOK_48, NUM_MODES) \ 77 ELEM_(30, CCW_FSK_12, NUM_MODES) \ 78 ELEM_(31, CCW_FSK_24, NUM_MODES) \ 79 ELEM_(33, CCW_FSK_48, NUM_MODES) \ 80 \ 81 ELEM_(34, PACTOR1_FEC, NUM_MODES) \ 82 \ 83 ELEM_(113, PACKET_110, NUM_MODES) \ 84 ELEM_(35, PACKET_300, NUM_MODES) \ 85 ELEM_(36, PACKET_1200, NUM_MODES) \ 86 \ 87 ELEM_(37, RTTY_ASCII_7, MODE_RTTY) \ 88 ELEM_(38, RTTY_ASCII_8, MODE_RTTY) \ 89 ELEM_(39, RTTY_45, MODE_RTTY) \ 90 ELEM_(40, RTTY_50, MODE_RTTY) \ 91 ELEM_(41, RTTY_75, MODE_RTTY) \ 92 \ 93 ELEM_(42, AMTOR_FEC, NUM_MODES) \ 94 \ 95 ELEM_(43, THROB_1, MODE_THROB1) \ 96 ELEM_(44, THROB_2, MODE_THROB2) \ 97 ELEM_(45, THROB_4, MODE_THROB4) \ 98 ELEM_(46, THROBX_1, MODE_THROBX1) \ 99 ELEM_(47, THROBX_2, MODE_THROBX2) \ 100 ELEM_(146, THROBX_4, MODE_THROBX4) \ 101 \ 102 ELEM_(204, CONTESTIA_4_125, MODE_CONTESTIA_4_125) \ 103 ELEM_(55, CONTESTIA_4_250, MODE_CONTESTIA_4_250) \ 104 ELEM_(54, CONTESTIA_4_500, MODE_CONTESTIA_4_500) \ 105 ELEM_(255, CONTESTIA_4_1000, MODE_CONTESTIA_4_1000) \ 106 ELEM_(254, CONTESTIA_4_2000, MODE_CONTESTIA_4_2000) \ 107 \ 108 ELEM_(169, CONTESTIA_8_125, MODE_CONTESTIA_8_125) \ 109 ELEM_(49, CONTESTIA_8_250, MODE_CONTESTIA_8_250) \ 110 ELEM_(52, CONTESTIA_8_500, MODE_CONTESTIA_8_500) \ 111 ELEM_(117, CONTESTIA_8_1000, MODE_CONTESTIA_8_1000) \ 112 ELEM_(247, CONTESTIA_8_2000, MODE_CONTESTIA_8_2000) \ 113 \ 114 ELEM_(275, CONTESTIA_16_250, MODE_CONTESTIA_16_250) \ 115 ELEM_(50, CONTESTIA_16_500, MODE_CONTESTIA_16_500) \ 116 ELEM_(53, CONTESTIA_16_1000, MODE_CONTESTIA_16_1000) \ 117 ELEM_(259, CONTESTIA_16_2000, MODE_CONTESTIA_16_2000) \ 118 \ 119 ELEM_(51, CONTESTIA_32_1000, MODE_CONTESTIA_32_1000) \ 120 ELEM_(201, CONTESTIA_32_2000, MODE_CONTESTIA_32_2000) \ 121 \ 122 ELEM_(194, CONTESTIA_64_500, MODE_CONTESTIA_64_500) \ 123 ELEM_(193, CONTESTIA_64_1000, MODE_CONTESTIA_64_1000) \ 124 ELEM_(191, CONTESTIA_64_2000, MODE_CONTESTIA_64_2000) \ 125 \ 126 ELEM_(56, VOICE, NUM_MODES) \ 127 \ 128 ELEM_(60, MFSK8, MODE_MFSK8) \ 129 ELEM_(57, MFSK16, MODE_MFSK16) \ 130 ELEM_(147, MFSK32, MODE_MFSK32) \ 131 \ 132 ELEM_(148, MFSK11, MODE_MFSK11) \ 133 ELEM_(152, MFSK22, MODE_MFSK22) \ 134 \ 135 ELEM_(61, RTTYM_8_250, NUM_MODES) \ 136 ELEM_(62, RTTYM_16_500, NUM_MODES) \ 137 ELEM_(63, RTTYM_32_1000, NUM_MODES) \ 138 ELEM_(65, RTTYM_8_500, NUM_MODES) \ 139 ELEM_(66, RTTYM_16_1000, NUM_MODES) \ 140 ELEM_(67, RTTYM_4_500, NUM_MODES) \ 141 ELEM_(68, RTTYM_4_250, NUM_MODES) \ 142 ELEM_(119, RTTYM_8_1000, NUM_MODES) \ 143 ELEM_(170, RTTYM_8_125, NUM_MODES) \ 144 \ 145 ELEM_(203, OLIVIA_4_125, MODE_OLIVIA_4_125) \ 146 ELEM_(75, OLIVIA_4_250, MODE_OLIVIA_4_250) \ 147 ELEM_(74, OLIVIA_4_500, MODE_OLIVIA_4_500) \ 148 ELEM_(229, OLIVIA_4_1000, MODE_OLIVIA_4_1000) \ 149 ELEM_(238, OLIVIA_4_2000, MODE_OLIVIA_4_2000) \ 150 \ 151 ELEM_(163, OLIVIA_8_125, MODE_OLIVIA_8_125) \ 152 ELEM_(69, OLIVIA_8_250, MODE_OLIVIA_8_250) \ 153 ELEM_(72, OLIVIA_8_500, MODE_OLIVIA_8_500) \ 154 ELEM_(116, OLIVIA_8_1000, MODE_OLIVIA_8_1000) \ 155 ELEM_(214, OLIVIA_8_2000, MODE_OLIVIA_8_2000) \ 156 \ 157 ELEM_(70, OLIVIA_16_500, MODE_OLIVIA_16_500) \ 158 ELEM_(73, OLIVIA_16_1000, MODE_OLIVIA_16_1000) \ 159 ELEM_(234, OLIVIA_16_2000, MODE_OLIVIA_16_2000) \ 160 \ 161 ELEM_(71, OLIVIA_32_1000, MODE_OLIVIA_32_1000) \ 162 ELEM_(221, OLIVIA_32_2000, MODE_OLIVIA_32_2000) \ 163 \ 164 ELEM_(211, OLIVIA_64_2000, MODE_OLIVIA_64_2000) \ 165 \ 166 ELEM_(76, PAX, NUM_MODES) \ 167 ELEM_(77, PAX2, NUM_MODES) \ 168 ELEM_(78, DOMINOF, NUM_MODES) \ 169 ELEM_(79, FAX, NUM_MODES) \ 170 ELEM_(81, SSTV, NUM_MODES) \ 171 \ 172 ELEM_(84, DOMINOEX_4, MODE_DOMINOEX4) \ 173 ELEM_(85, DOMINOEX_5, MODE_DOMINOEX5) \ 174 ELEM_(86, DOMINOEX_8, MODE_DOMINOEX8) \ 175 ELEM_(87, DOMINOEX_11, MODE_DOMINOEX11) \ 176 ELEM_(88, DOMINOEX_16, MODE_DOMINOEX16) \ 177 ELEM_(90, DOMINOEX_22, MODE_DOMINOEX22) \ 178 ELEM_(92, DOMINOEX_4_FEC, MODE_DOMINOEX4) \ 179 ELEM_(93, DOMINOEX_5_FEC, MODE_DOMINOEX5) \ 180 ELEM_(97, DOMINOEX_8_FEC, MODE_DOMINOEX8) \ 181 ELEM_(98, DOMINOEX_11_FEC, MODE_DOMINOEX11) \ 182 ELEM_(99, DOMINOEX_16_FEC, MODE_DOMINOEX16) \ 183 ELEM_(101, DOMINOEX_22_FEC, MODE_DOMINOEX22) \ 184 \ 185 ELEM_(104, FELD_HELL, MODE_FELDHELL) \ 186 ELEM_(105, PSK_HELL, NUM_MODES) \ 187 ELEM_(106, HELL_80, MODE_HELL80) \ 188 ELEM_(107, FM_HELL_105, MODE_FSKH105) \ 189 ELEM_(108, FM_HELL_245, MODE_FSKH245) \ 190 \ 191 ELEM_(114, MODE_141A, NUM_MODES) \ 192 ELEM_(123, DTMF, NUM_MODES) \ 193 ELEM_(125, ALE400, NUM_MODES) \ 194 ELEM_(131, FDMDV, NUM_MODES) \ 195 \ 196 ELEM_(132, JT65_A, NUM_MODES) \ 197 ELEM_(134, JT65_B, NUM_MODES) \ 198 ELEM_(135, JT65_C, NUM_MODES) \ 199 \ 200 ELEM_(136, THOR_4, MODE_THOR4) \ 201 ELEM_(137, THOR_8, MODE_THOR8) \ 202 ELEM_(138, THOR_16, MODE_THOR16) \ 203 ELEM_(139, THOR_5, MODE_THOR5) \ 204 ELEM_(143, THOR_11, MODE_THOR11) \ 205 ELEM_(145, THOR_22, MODE_THOR22) \ 206 \ 207 ELEM_(153, CALL_ID, NUM_MODES) \ 208 \ 209 ELEM_(155, PACKET_PSK1200, NUM_MODES) \ 210 ELEM_(156, PACKET_PSK250, NUM_MODES) \ 211 ELEM_(159, PACKET_PSK63, NUM_MODES) \ 212 \ 213 ELEM_(172, MODE_188_110A_8N1, NUM_MODES) \ 214 \ 215 /* NONE must be the last element */ \ 216 ELEM_(0, NONE, NUM_MODES) 217 218 #define ELEM_(code_, tag_, mode_) RSID_ ## tag_ = code_, 219 enum { RSID_LIST }; 220 #undef ELEM_ 221 222 #define ELEM_(code_, tag_, mode_) { RSID_ ## tag_, mode_, #tag_ }, 223 const RSIDs cRsId::rsid_ids_1[] = { RSID_LIST }; 224 #undef ELEM_ 225 226 const int cRsId::rsid_ids_size1 = sizeof(rsid_ids_1)/sizeof(*rsid_ids_1) - 1; 227 228 //====================================================================== 229 /* ELEM_(6, ESCAPE2, NUM_MODES) \ */ 230 231 #define RSID_LIST2 \ 232 ELEM2_(450, PSK63RX4, MODE_4X_PSK63R) \ 233 ELEM2_(457, PSK63RX5, MODE_5X_PSK63R) \ 234 ELEM2_(458, PSK63RX10, MODE_10X_PSK63R) \ 235 ELEM2_(460, PSK63RX20, MODE_20X_PSK63R) \ 236 ELEM2_(462, PSK63RX32, MODE_32X_PSK63R) \ 237 \ 238 ELEM2_(467, PSK125RX4, MODE_4X_PSK125R) \ 239 ELEM2_(497, PSK125RX5, MODE_5X_PSK125R) \ 240 ELEM2_(513, PSK125RX10, MODE_10X_PSK125R) \ 241 ELEM2_(519, PSK125X12, MODE_12X_PSK125) \ 242 ELEM2_(522, PSK125RX12, MODE_12X_PSK125R) \ 243 ELEM2_(527, PSK125RX16, MODE_16X_PSK125R) \ 244 \ 245 ELEM2_(529, PSK250RX2, MODE_2X_PSK250R) \ 246 ELEM2_(533, PSK250RX3, MODE_3X_PSK250R) \ 247 ELEM2_(539, PSK250RX5, MODE_5X_PSK250R) \ 248 ELEM2_(541, PSK250X6, MODE_6X_PSK250) \ 249 ELEM2_(545, PSK250RX6, MODE_6X_PSK250R) \ 250 ELEM2_(551, PSK250RX7, MODE_7X_PSK250R) \ 251 \ 252 ELEM2_(553, PSK500RX2, MODE_2X_PSK500R) \ 253 ELEM2_(558, PSK500RX3, MODE_3X_PSK500R) \ 254 ELEM2_(564, PSK500RX4, MODE_4X_PSK500R) \ 255 ELEM2_(566, PSK500X2, MODE_2X_PSK500) \ 256 ELEM2_(569, PSK500X4, MODE_4X_PSK500) \ 257 \ 258 ELEM2_(570, PSK1000, MODE_PSK1000) \ 259 ELEM2_(580, PSK1000R, MODE_PSK1000R) \ 260 ELEM2_(587, PSK1000X2, MODE_2X_PSK1000) \ 261 ELEM2_(595, PSK1000RX2, MODE_2X_PSK1000R) \ 262 ELEM2_(604, PSK800RX2, MODE_2X_PSK800R) \ 263 ELEM2_(610, PSK800X2, MODE_2X_PSK800) \ 264 \ 265 ELEM2_(620, MFSK64, MODE_MFSK64) \ 266 ELEM2_(625, MFSK128, MODE_MFSK128) \ 267 \ 268 ELEM2_(639, THOR25x4, MODE_THOR25x4) \ 269 ELEM2_(649, THOR50x1, MODE_THOR50x1) \ 270 ELEM2_(653, THOR50x2, MODE_THOR50x2) \ 271 ELEM2_(658, THOR100, MODE_THOR100) \ 272 \ 273 ELEM2_(662, DOMINOEX_44, MODE_DOMINOEX44) \ 274 ELEM2_(681, DOMINOEX_88, MODE_DOMINOEX88) \ 275 \ 276 ELEM2_(687, MFSK31, MODE_MFSK31) \ 277 \ 278 ELEM2_(691, DOMINOEX_MICRO, MODE_DOMINOEXMICRO) \ 279 ELEM2_(693, THOR_MICRO, MODE_THORMICRO) \ 280 \ 281 ELEM2_(1026, MFSK64L, MODE_MFSK64L) \ 282 ELEM2_(1029, MFSK128L, MODE_MFSK128L) \ 283 \ 284 ELEM2_(1066, PSK8P125, MODE_8PSK125) \ 285 ELEM2_(1071, PSK8P250, MODE_8PSK250) \ 286 ELEM2_(1076, PSK8P500, MODE_8PSK500) \ 287 ELEM2_(1047, PSK8P1000, MODE_8PSK1000) \ 288 \ 289 ELEM2_(1037, PSK8P125F, MODE_8PSK125F) \ 290 ELEM2_(1038, PSK8P250F, MODE_8PSK250F) \ 291 ELEM2_(1043, PSK8P500F, MODE_8PSK500F) \ 292 ELEM2_(1078, PSK8P1000F, MODE_8PSK1000F) \ 293 ELEM2_(1058, PSK8P1200F, MODE_8PSK1200F) \ 294 \ 295 ELEM2_(1239, PSK8P125FL, MODE_8PSK125FL) \ 296 ELEM2_(2052, PSK8P250FL, MODE_8PSK250FL) \ 297 \ 298 ELEM2_(2053, OFDM500F, MODE_OFDM_500F) \ 299 ELEM2_(2094, OFDM7F0F, MODE_OFDM_750F) \ 300 ELEM2_(2118, OFDM2000, MODE_OFDM_2000) \ 301 ELEM2_(2110, OFDM2000F, MODE_OFDM_2000F) \ 302 \ 303 ELEM2_(1171, IFKP, MODE_IFKP) \ 304 \ 305 ELEM2_(0, NONE2, NUM_MODES) 306 307 #define ELEM2_(code_, tag_, mode_) RSID_ ## tag_ = code_, 308 enum { RSID_LIST2 }; 309 #undef ELEM2_ 310 311 #define ELEM2_(code_, tag_, mode_) { RSID_ ## tag_, mode_, #tag_ }, 312 const RSIDs cRsId::rsid_ids_2[] = { RSID_LIST2 }; 313 #undef ELEM2_ 314 315 const int cRsId::rsid_ids_size2 = sizeof(rsid_ids_2)/sizeof(*rsid_ids_2) - 1; 316 317