[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. b4dd01f6f38ff64fd1c63
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Michael B. <mdb...@us...> - 2021-03-07 20:28:21
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Hamlib -- Ham radio control libraries". The branch, master has been updated via b4dd01f6f38ff64fd1c638d5aa59e8ca7c59ca67 (commit) via 8296ca7ecd64bb3f339cae8788c6bf564c60a4e7 (commit) via c1f539b1f6f113d3c209fa5f456fd6c160ed6304 (commit) via a35f39840c0117816850bd8ad8bab73e93021dcd (commit) via 307858f60c4c6dad3abc22c406ccf47aa32ebe73 (commit) via 94e51bfa245b6e5e2c1459a0098c49d1f8828943 (commit) via b2a0b15a67596c49f12f3f5c82dd167c2ae54b1e (commit) via 4cc1515f90d4209b4c80a7692ffd0818848f2365 (commit) via 4d116d2f6ccda1095e509683418839f9b7a84f77 (commit) via f2586d0acbe3cd4b683bbd8e85dbbdd50255e32c (commit) via 3cad5c9a30148c05e42ccb0b73d7cbabe29a508c (commit) via 1fcb9404b9138804e1a2c4c9d3cd0c80daf07fde (commit) via 2fb96a34b99ca69f80a47c96fb9674ef28956558 (commit) via 6577c0f564508281b560905516def0a325aa07eb (commit) via 3d613519d52b8520d7a66f03389b2a2b3abf0c0a (commit) via e6e04d258c7751608a587df5cb75d2f50d379181 (commit) via 175092a99c3a6f9470f461e0d9fac630f01999e3 (commit) via a791dc26993911cfed723ae37feddb2f6c7632b2 (commit) via e954a5df2d4f35d611b552338615ab766ba857f0 (commit) via 9a44b2777532d01bc189143a3205f8a276b50b55 (commit) via ef2e8a4d94d854c179e0ca16beef8c4147ee6eea (commit) via 3aac60b5dfd18214f644a8a8e66a1d056e23451a (commit) via 678f01d79d929d833254a468bef55756fd113b99 (commit) via b9afd75110b1d8c6e7b96f3c2e12069b3f7efa2c (commit) via ff9c1badfaf3772c20cc131d64115ce560d184a5 (commit) via 709f28100579b9b8d20f4a45f766a7caa684d86a (commit) via a33a4ee09886cda6cb60bbd912a1f1627e34e6b1 (commit) via f88c3f4a4c17dfb39877a2dc449c281ff6bf6a56 (commit) via c3a1b489b7ce034cc6a90276268f7d520ecff70d (commit) via 3413b3ab4e59f96eaf595cdfb3a1a04af7404bd6 (commit) via 2d33066df4f3ff4fd8deaca2e42c169b0fe72c17 (commit) via 0f542ecc4d910f476ed611cddd60e418ba1561a3 (commit) via 43569822a17f3d1c366224bb644bb99b3d825f0b (commit) via 4769baa7742df0af1cf0d755926155b4c43a59bc (commit) via 2c20b0afdb974ed0c290ea7c04ec2f6f97cd91f6 (commit) via 922d6bd0b315fc03cceca4a055b937cba3b99423 (commit) via 3f42111caa9ae500be1c6c10cfce8a59f20a1a28 (commit) via 65d105f2994e3d7638a60abcef1a70681d870b64 (commit) via 635372ae845ab536c1213f0c6b68e154a313bcbc (commit) via 3405ac2d1182e6d6d7e91f8117967cfc37d206a5 (commit) via 20df480b1e5e3a4ac5dfc3926d0b47af584c2fdf (commit) via 662d56c3841d2403888a13743ec65f54e2325c84 (commit) via 247c90d4b0ab588edcb108ff4ecef4214e83e245 (commit) via 1473793f14dad845e1cf7c71abb0dc104495ed94 (commit) via dd009d63ddfd689cce42d88d879f23b2674c68c1 (commit) via d33884750ad3661cf844fae07cdd39c8b50f6681 (commit) via 3ca0313fb49de55ee99bf10a8998ad1913e5704b (commit) via 8b456a18c461401c9e54110715b4fb10dac2c729 (commit) via e38b1469a280edfa0be63660e167b6457386054a (commit) via 5fd5bf521577f31dfa43c8a49d179e5ee1f71ed9 (commit) via 0acbc83a85f7793d7313ae69ed7169b73d6ec0a9 (commit) via 50c00cd1151ef5c069882d126c788b762498870a (commit) via f5135650b37acb0c033952ed5174a4aed16c8f54 (commit) via 5a8953439851c2ab8229ba122a5d4908ac9eceba (commit) via ac5550fc199d589d76a44b9d76142f22e01ddc87 (commit) via 20a7111c5471468162d9ef9065efafa3f8faef23 (commit) via a67c07a774660af546f65a874e25301670d3b18b (commit) via 87478b1fbedf600c402ba9257153f52f9f1bdd42 (commit) via 82126a4f097ac94b25902f3fccc34ec1722075c4 (commit) via 41bfd57eb389ef6e884f119ccc770af6acb17642 (commit) via 6d9f3e1c7bd0bf494064d83c7019e8f2dfa1800c (commit) via 6645419727d7ced4534b67b9776a7222b23cb35f (commit) via 1a8d3b45d302c10f1a85ceb11b557f7f929fc62e (commit) via 4402aff64613bf7721396d8bef9281f010e76399 (commit) via 221d87c2e443e069900281fe14a37ea87f78ff71 (commit) via 18d50bf7c40047d27cfb7b78e90fa9fe2321b277 (commit) via 8371f335cdaae65cb23f5564ac8ae111055707ad (commit) via 396d985261f456183dd65ff4d236971227a65227 (commit) via 5d18d9f38ffa5879b8414b99f8ae4402bfaa6104 (commit) via b1101a564a9d346731dafd0c23fcf367ec60acc1 (commit) via 28f565a8ef8a9c8f93eaecc602c1408629fa5c20 (commit) via 260c74653e27c39786dd3a5ee060d8029b1d02c1 (commit) via 2e56014426831a07349ebe83ed806a8d8f530f6c (commit) via 10fbe9bd4a93faa8a5e9b85d23bb0957bd3bdf60 (commit) via a5b12a12221dc16a572fcd8b999864584bf8c714 (commit) via a568374a7e6c687efc64dfff00b398a78afd69de (commit) via 1f23798efe19bce676ea62827c6509941757eeed (commit) via a5db433628c91ccde1b292c2601ce63759288fc5 (commit) via d45c86cfa7dfefe132b07b6580a8b1d44def1456 (commit) via f12b15b5ca82cda7e9314067940b17551e0cb182 (commit) via 0fe5b62e6ca970cd212cb6f7e7c4e7916d44bc2d (commit) via 635f45ef69e7d24cae38623f9f112d7e7405cea6 (commit) via f5e14a09b642b312ab7d3cb0ffd26c6c9742d026 (commit) via 52703c35d5f011ef006a1e13c7f53d3bf4d29e33 (commit) via 9fa3f59684f5699d3b6210c34c75066ae2e0cb14 (commit) via 6ad5a072c86f6aabdf0fa45b3bb6bc67b578742f (commit) via 8997f0129a56ecdb67cbf2ce3045dc12584b4427 (commit) via 5df06c4cbfee7b124095553d95183759d7675b82 (commit) via 2976239f3a95fcce39e91bc05574d4c1f1ca63ca (commit) via b4d6eb4aa29c0ccf788c58b629aec1ef8ea85853 (commit) via 7326f16291315b4156a418e150e08c7d0d287da1 (commit) via ee60a68becc3138b0d9fcb3e4a8a4325c54afc2e (commit) via abd8829df10eca1c5297c7f5bea6508ba96e3199 (commit) via 62523709ceed514a1b540b73c4f4d55d939fed9a (commit) via 1d7df8634834ae284369287ed9b95b05e0c3eb23 (commit) via 83c47fad4211692c3157d9dfcdf50dd0a39d749d (commit) via edf0019960342cb4cf477f18aea9edca09fd4849 (commit) via c9913526be7a7739b365c026cb70713bef48f66d (commit) via 7ac58fcd23f192c6cd3d944557a6be2aa3a762bb (commit) via df549c2d0fc17078e96bb4dc8c3d8257ed2993e8 (commit) via 67afeb85e79d629c4ef964f0b51821e13dad29f8 (commit) via db45d736d8830e28d511949b04ccd4ca30779f89 (commit) via 2bc59544ed82256e838c1be5008e3bffef885e05 (commit) via 317bf6626df0dea569af15483e5ac4c0c97e4e33 (commit) via 126e27dc91412fb6572ee00b2cf8b2b0cf52831e (commit) via 692e562e6649b8bff0dd6fdcb1c1e45804a98f5b (commit) via 6da15131229c1c964ac988a786d6b4aac8b31521 (commit) via 1772ccde8be5f8c81b2d8569031ff17a6c212f0d (commit) via 30a8258f4ee3f5a3d639e2ac9eca06969641fd00 (commit) via 26cfe0bb3f9d5a1f5cd0f2ae1290fb72bde18eb6 (commit) via da5a4ddc6e634bb9487edacd9857615d8bcdfd21 (commit) via 4729f2a0f252cec1cd36f27aa07b29d01c8f986a (commit) via b2a1955467dda5f4eeb51f075a26cfc2fb3c15e4 (commit) via 4f98d34ca50f4853f83c369f82667139bbab9114 (commit) via 2cef91c5e03dd2a3c164cf8b2c565221620f5190 (commit) via a708471c4422bd7bf538d3c29ce16f2b9962db39 (commit) via 6ca1b35046034eb69a9460697ca29f5ec73ccc55 (commit) via 8ccc9f07379c07af9584a6cc0e9a9eadd540411e (commit) via 9d714e639cb0ff2f869dbf7d86ca7431eb59d42c (commit) via db776b2d7917bc15569912d1599988547db78e58 (commit) via bb00c359801b5518407297905a6e5a89a49f0fdd (commit) via 6049f54ef415020acc3f38a15ebb4ce33bd7be49 (commit) via ce8e539d864d30eae6f8f02f67599bcc291e552c (commit) via b713314f7f97daa59b9ba30fc79c43a52a7b00bc (commit) via 27f9c304800b34927d2289b150705d5dfc8857bb (commit) via 9869e07af64a3ffe574e387d44ba7bac0ef201b7 (commit) via 6429a7ef725c0c8054e50a5edfae6ffd097cec11 (commit) via e7fa4b1c2b0aef6f6a4cafc8a2fec518e4da9ea2 (commit) via 7fee6e36a566c23eed0632f0a2d355b260cf2bdb (commit) via 2f53ae58e4705d7e026c3a25df3444f42bfa1bc3 (commit) via 6da2cf2eebcf99b6fce3f7c56b774740b9084879 (commit) via f6d22258106b8f763b9e4f04c854d8bb589157a4 (commit) via 84e4a6a88ca61ea591e39255a2cf57c452c4a165 (commit) via b835c47b23fab30816f2e90ed19200dc6d3f873d (commit) via 318b437fa5db765a04b4969e01e4146ce85eb3e3 (commit) via 9a6552c3cfefd83a91d2685edd8241e3a36bfd3e (commit) via f6fd0e887b4f4ff9fd283972c583bb8241076dd8 (commit) via 246886dde7391d30c67b2356a9e8bcc75f61fe62 (commit) via 2a60fd748b510807e803df518971a1674b0fd85e (commit) via f7de8ac738e6a368abebd5c4365398abbbb3bb9c (commit) via dc5e1bf6edcce1f2f748e6e3bc442870e8ea875e (commit) via 26ca39c214a6c95810a0de5a639a75eef75205ca (commit) via 7f6ce7a1906b61ec9abeddacfe6fc263bee7f752 (commit) via b67643bc439e29544c6cc8ae42c2feef671a3fe4 (commit) via 35cdf5fc3f501b659139297e7b655445516e69a6 (commit) via 252f939105c7b7f324fb5d24ec0924531a8d4c86 (commit) via af39f7cacaeab35c4b1fe11986b9dd5a635d0f3d (commit) via a3eaac9fafacc2a053079540bfc4f92830cb4706 (commit) via 4c68bc25afd1c5531eb3c8dbf45a1563ef51bf8a (commit) via 14cfb360fba5ca621a5e0935295675cd6493f0ad (commit) via 83def50c46437477f1f286ff7c8f1835c64d9a4d (commit) via 2b778fed634b5c1dc787dcef2ef20f2833006e6a (commit) via 7eb50d0d97db9ca3e74814d691909f4a6207277a (commit) via a1f5085f4cce79684fb0e08f15c506e99223ec00 (commit) via df6378a7b85ac6701a2a2d7aaca1c55673563257 (commit) via e5964fe670d112782d4864993e94edc992fd99b9 (commit) via b17f8dc9f691b7e2f102fd9caca1ab8be6ace144 (commit) via e64c1e8eb7ad16f133ef303f5ab0e9380883dc43 (commit) via f6cb3cb3427be2b1e014776df5ddcc94894502b1 (commit) via 0aec4d8bea6391664e867e51a2fef62205af1d4b (commit) via 965ad4c642dfbeffedebaf0cb5ad6d8ef3808e38 (commit) via c915d373e7e4ec6af640674152254bc2e17a94de (commit) via 3ecb7a6e9d98c085a73579a45cbc8a3b30f1f556 (commit) via c83eb29e2534cc8c054a0a3dd6d5fda84363a3bb (commit) from 8d57058412359636ec21df82d0d8ddb5371e868b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b4dd01f6f38ff64fd1c638d5aa59e8ca7c59ca67 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 7 14:23:09 2021 -0600 Fix FTDX101MP detection and renamae ft101 to ft101d diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 6adc1687..10062080 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -90,7 +90,7 @@ typedef struct _yaesu_newcat_commands ncboolean ft5000; ncboolean ft1200; ncboolean ft3000; - ncboolean ft101; + ncboolean ft101d; ncboolean ft10; ncboolean ft101mp; } yaesu_newcat_commands_t; @@ -210,7 +210,7 @@ static ncboolean is_ftdx9000; static ncboolean is_ftdx5000; static ncboolean is_ftdx1200; static ncboolean is_ftdx3000; -static ncboolean is_ftdx101; +static ncboolean is_ftdx101d; static ncboolean is_ftdx101mp; static ncboolean is_ftdx10; @@ -785,7 +785,7 @@ int newcat_set_freq(RIG *rig, vfo_t vfo, freq_t freq) // some rigs like FTDX101D cannot change non-TX vfo freq // but they can change the TX vfo - if ((is_ftdx101 || is_ftdx101mp) && rig->state.cache.ptt == RIG_PTT_ON) + if ((is_ftdx101d || is_ftdx101mp) && rig->state.cache.ptt == RIG_PTT_ON) { rig_debug(RIG_DEBUG_TRACE, "%s: ftdx101 check vfo OK, vfo=%s, tx_vfo=%s\n", __func__, rig_strvfo(vfo), rig_strvfo(rig->state.tx_vfo)); @@ -1955,7 +1955,7 @@ int newcat_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t offs) snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%04li%c", command, offs, cat_term); } - else if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + else if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { if (freq >= 28000000 && freq <= 29700000) { @@ -2163,7 +2163,7 @@ int newcat_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *offs) // Step size is 1 kHz step = 1000; } - else if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + else if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { if (freq >= 28000000 && freq <= 29700000) { @@ -2269,7 +2269,7 @@ int newcat_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo) vfo = RIG_VFO_A; tx_vfo = RIG_SPLIT_ON == split ? RIG_VFO_B : RIG_VFO_A; } - else if (is_ftdx101 || is_ftdx101mp) + else if (is_ftdx101d || is_ftdx101mp) { vfo = RIG_VFO_MAIN; tx_vfo = RIG_SPLIT_ON == split ? RIG_VFO_SUB : RIG_VFO_MAIN; @@ -2796,7 +2796,7 @@ int newcat_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone) } else { - if (is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CN%c0%03d%cCT%c2%c", main_sub_vfo, i, cat_term, main_sub_vfo, cat_term); @@ -2841,7 +2841,7 @@ int newcat_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone) main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } - if (is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c0%c", cmd, main_sub_vfo, cat_term); @@ -3454,7 +3454,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) } if (is_ft950 || is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 - || is_ftdx101 || is_ftdx101mp || is_ftdx10) + || is_ftdx101d || is_ftdx101mp || is_ftdx10) { scale = 100.; } @@ -3469,7 +3469,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) fpf = newcat_scale_float(scale, val.f); - if (is_ft950 || is_ft891 || is_ft991 || is_ftdx3000 || is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ft950 || is_ft891 || is_ft991 || is_ftdx3000 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { // Minimum is 5 watts on these rigs if (fpf < 5) @@ -3543,7 +3543,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { newcat_get_mode(rig, vfo, &mode, &width); } @@ -3562,7 +3562,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) } } - if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "IS%c0%+.4d%c", main_sub_vfo, val.i, cat_term); @@ -3585,7 +3585,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) } // Some Yaesu rigs reject this command in AM/FM modes - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_AM || mode & RIG_MODE_FM || mode & RIG_MODE_AMN || mode & RIG_MODE_FMN) @@ -3652,14 +3652,14 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { newcat_get_mode(rig, vfo, &mode, &width); } if (val.f > 1.0) { RETURNFUNC(-RIG_EINVAL); } - if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp + if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { fpf = newcat_scale_float(100, val.f); @@ -3672,7 +3672,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) snprintf(priv->cmd_str, sizeof(priv->cmd_str), "MG%03d%c", fpf, cat_term); // Some Yaesu rigs reject this command in RTTY modes - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_RTTY || mode & RIG_MODE_RTTYR) { @@ -3689,7 +3689,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ftdx101 || is_ftdx101mp) // new format for the command with VFO selection + if (is_ftdx101d || is_ftdx101mp) // new format for the command with VFO selection { format = "MS0%d;"; @@ -3928,7 +3928,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) millis = dot10ths_to_millis(val.i, keyspd.i); - if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { if (millis <= 30) { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD00;"); } else if (millis <= 50) { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD01;"); } @@ -4011,7 +4011,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { scale = 100; } @@ -4049,7 +4049,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) snprintf(priv->cmd_str, sizeof(priv->cmd_str), "VD%04d%c", val.i, cat_term); } - else if (is_ftdx101 || is_ftdx101mp || is_ftdx10) // new lookup table argument + else if (is_ftdx101d || is_ftdx101mp || is_ftdx10) // new lookup table argument { rig_debug(RIG_DEBUG_TRACE, "%s: ft101 #1 val.i=%d\n", __func__, val.i); @@ -4105,7 +4105,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) break; case RIG_LEVEL_ANTIVOX: - if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { fpf = newcat_scale_float(100, val.f); snprintf(priv->cmd_str, sizeof(priv->cmd_str), "AV%03d%c", fpf, cat_term); @@ -4170,7 +4170,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) } } - if (is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { if (val.i > 320) { @@ -4214,7 +4214,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) if (val.f > 1.0) { RETURNFUNC(-RIG_EINVAL); } - if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp + if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { fpf = newcat_scale_float(100, val.f); @@ -4331,7 +4331,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { newcat_get_mode(rig, vfo, &mode, &width); } @@ -4345,7 +4345,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) } // Some Yaesu rigs reject this command in AM/FM modes - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_AM || mode & RIG_MODE_FM || mode & RIG_MODE_AMN || mode & RIG_MODE_FMN) @@ -4385,7 +4385,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { newcat_get_mode(rig, vfo, &mode, &width); } @@ -4393,7 +4393,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) snprintf(priv->cmd_str, sizeof(priv->cmd_str), "MG%c", cat_term); // Some Yaesu rigs reject this command in RTTY modes - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_RTTY || mode & RIG_MODE_RTTYR) { @@ -4545,7 +4545,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) snprintf(priv->cmd_str, sizeof(priv->cmd_str), "RM08%c", cat_term); } - if (is_ftdx101 || is_ftdx101mp) + if (is_ftdx101d || is_ftdx101mp) { // separate meters for Main and Sub snprintf(priv->cmd_str, sizeof(priv->cmd_str), "RM0%c", cat_term); @@ -4585,7 +4585,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_ANTIVOX: - if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "AV%c", cat_term); } @@ -4687,7 +4687,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { case RIG_LEVEL_RFPOWER: if (is_ft950 || is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 - || is_ftdx101 || is_ftdx101mp || is_ftdx10) + || is_ftdx101d || is_ftdx101mp || is_ftdx10) { scale = 100.; } @@ -4857,7 +4857,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_MICGAIN: - if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp + if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { scale = 100.; @@ -4888,7 +4888,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_SQL: - if (is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp || is_ftdx10) { scale = 100.; } @@ -4906,7 +4906,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) int millis; value_t keyspd; - if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { switch (raw_value) { @@ -4954,7 +4954,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) } if (is_ftdx1200 || is_ftdx3000 || is_ftdx5000 || is_ft891 || is_ft991 - || is_ftdx101 || is_ftdx101mp || is_ftdx10) + || is_ftdx101d || is_ftdx101mp || is_ftdx10) { val->i = round(rig_raw2val(atoi(retlvl), &yaesu_default_str_cal)); } @@ -5016,7 +5016,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_VOXDELAY: val->i = atoi(retlvl); - if (is_ftdx101 || is_ftdx101mp) + if (is_ftdx101d || is_ftdx101mp) { switch (val->i) { @@ -5169,7 +5169,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_MONITOR_GAIN: - if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp) + if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp) { scale = 100.; } @@ -5222,7 +5222,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { err = newcat_get_mode(rig, vfo, &mode, &width); } @@ -5236,7 +5236,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) } // Some Yaesu rigs reject this command in FM mode - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_FM || mode & RIG_MODE_FMN) { @@ -5257,7 +5257,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { newcat_get_mode(rig, vfo, &mode, &width); } @@ -5271,7 +5271,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) } // Some Yaesu rigs reject this command in FM mode - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_FM || mode & RIG_MODE_FMN) { @@ -5330,7 +5330,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ftdx1200 || is_ftdx3000 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ftdx1200 || is_ftdx3000 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { // These rigs can lock Main/Sub VFO dials individually snprintf(priv->cmd_str, sizeof(priv->cmd_str), "LK%d%c", status ? 7 : 4, @@ -5380,7 +5380,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { newcat_get_mode(rig, vfo, &mode, &width); } @@ -5394,7 +5394,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) } // Some Yaesu rigs reject this command in FM mode - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_FM || mode & RIG_MODE_FMN) { @@ -5415,12 +5415,12 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { newcat_get_mode(rig, vfo, &mode, &width); } - if (is_ft891 || is_ft991 || is_ftdx1200 || is_ftdx3000 || is_ftdx101 || is_ftdx101mp) + if (is_ft891 || is_ft991 || is_ftdx1200 || is_ftdx3000 || is_ftdx101d || is_ftdx101mp) { // There seems to be an error in the manuals for some of these rigs stating that values should be 1 = OFF and 2 = ON, but they are 0 = OFF and 1 = ON instead snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%d%c", status ? 1 : 0, @@ -5433,7 +5433,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) } // Some Yaesu rigs reject this command in AM/FM/RTTY modes - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_AM || mode & RIG_MODE_FM || mode & RIG_MODE_AMN || mode & RIG_MODE_FMN || @@ -5528,7 +5528,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { err = newcat_get_mode(rig, vfo, &mode, &width); } @@ -5541,7 +5541,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) } // Some Yaesu rigs reject this command in FM mode - if (is_ft991 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ft991 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { if (mode & RIG_MODE_FM || mode & RIG_MODE_FMN) { @@ -5660,7 +5660,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) RETURNFUNC(-RIG_ENAVAIL); } - if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101 || is_ftdx101mp) + if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101d || is_ftdx101mp) { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%c", cat_term); } @@ -5748,7 +5748,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) break; case RIG_FUNC_LOCK: - if (is_ftdx1200 || is_ftdx3000 || is_ftdx5000 || is_ftdx101 || is_ftdx101mp) + if (is_ftdx1200 || is_ftdx3000 || is_ftdx5000 || is_ftdx101d || is_ftdx101mp) { // These rigs can lock Main/Sub VFO dials individually *status = (retfunc[0] == '0' || retfunc[0] == '4') ? 0 : 1; @@ -6589,7 +6589,6 @@ ncboolean newcat_valid_command(RIG *rig, char const *const command) const struct rig_caps *caps; int search_high; int search_low; - struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv; //ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s %s\n", __func__, command); @@ -6617,14 +6616,12 @@ ncboolean newcat_valid_command(RIG *rig, char const *const command) is_ftdx5000 = newcat_is_rig(rig, RIG_MODEL_FTDX5000); is_ftdx1200 = newcat_is_rig(rig, RIG_MODEL_FTDX1200); is_ftdx3000 = newcat_is_rig(rig, RIG_MODEL_FTDX3000); - is_ftdx101 = newcat_is_rig(rig, RIG_MODEL_FTDX101D) - && priv->rig_id == NC_RIGID_FTDX101D; - is_ftdx101mp = newcat_is_rig(rig, RIG_MODEL_FTDX101D) - && priv->rig_id == NC_RIGID_FTDX101MP; + is_ftdx101d = newcat_is_rig(rig, RIG_MODEL_FTDX101D); + is_ftdx101mp = newcat_is_rig(rig, RIG_MODEL_FTDX101MP); is_ftdx10 = newcat_is_rig(rig, RIG_MODEL_FTDX10); if (!is_ft450 && !is_ft950 && !is_ft891 && !is_ft991 && !is_ft2000 - && !is_ftdx5000 && !is_ftdx9000 && !is_ftdx1200 && !is_ftdx3000 && !is_ftdx101 && !is_ftdx101mp && !is_ftdx10) + && !is_ftdx5000 && !is_ftdx9000 && !is_ftdx1200 && !is_ftdx3000 && !is_ftdx101d && !is_ftdx101mp && !is_ftdx10) { rig_debug(RIG_DEBUG_ERR, "%s: '%s' is unknown\n", __func__, caps->model_name); RETURNFUNC(FALSE); @@ -6695,7 +6692,7 @@ ncboolean newcat_valid_command(RIG *rig, char const *const command) { RETURNFUNC(TRUE); } - else if (is_ftdx101 && valid_commands[search_index].ft101) + else if (is_ftdx101d && valid_commands[search_index].ft101d) { RETURNFUNC(TRUE); } @@ -6803,7 +6800,7 @@ int newcat_set_tx_vfo(RIG *rig, vfo_t tx_vfo) p1 = p1 + 2; /* use non-Toggle commands */ } - if (is_ftdx101 || is_ftdx101mp) + if (is_ftdx101d || is_ftdx101mp) { // what other Yaeus rigs should be using this? // The DX101D returns FT0 when in split and not transmitting @@ -6834,7 +6831,7 @@ int newcat_get_tx_vfo(RIG *rig, vfo_t *tx_vfo) ENTERFUNC; - if (is_ftdx101 || is_ftdx101mp) + if (is_ftdx101d || is_ftdx101mp) { // what other Yaeus rigs should be using this? // The DX101D returns FT0 when in split and not transmitting @@ -7690,7 +7687,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) RETURNFUNC(err); } } // end is_ftdx5000 - else if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + else if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { switch (mode) { @@ -7932,7 +7929,7 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) } /* end else */ - if (is_ftdx101 || is_ftdx101mp || is_ft891) + if (is_ftdx101d || is_ftdx101mp || is_ft891) { // some rigs now require the bandwidth be turned "on" int on = is_ft891; @@ -8934,7 +8931,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) } /* end switch(mode) */ } /* end if is_ftdx5000 */ - else if (is_ftdx101 || is_ftdx101mp || is_ftdx10) + else if (is_ftdx101d || is_ftdx101mp || is_ftdx10) { rig_debug(RIG_DEBUG_TRACE, "%s: is_ftdx101 w=%d, mode=%s\n", __func__, w, rig_strrmode(mode)); commit 8296ca7ecd64bb3f339cae8788c6bf564c60a4e7 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 7 14:12:12 2021 -0600 Fix FTDX101MP detection https://github.com/Hamlib/Hamlib/issues/586 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index b307da3d..6adc1687 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -6695,7 +6695,11 @@ ncboolean newcat_valid_command(RIG *rig, char const *const command) { RETURNFUNC(TRUE); } - else if ((is_ftdx101 || is_ftdx101mp) && valid_commands[search_index].ft101) + else if (is_ftdx101 && valid_commands[search_index].ft101) + { + RETURNFUNC(TRUE); + } + else if (is_ftdx101mp && valid_commands[search_index].ft101mp) { RETURNFUNC(TRUE); } diff --git a/rigs/yaesu/newcat.h b/rigs/yaesu/newcat.h index 5d344977..cc855037 100644 --- a/rigs/yaesu/newcat.h +++ b/rigs/yaesu/newcat.h @@ -50,7 +50,7 @@ typedef char ncboolean; /* shared function version */ -#define NEWCAT_VER "20210305" +#define NEWCAT_VER "20210307" /* Hopefully large enough for future use, 128 chars plus '\0' */ #define NEWCAT_DATA_LEN 129 commit c1f539b1f6f113d3c209fa5f456fd6c160ed6304 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 7 12:02:26 2021 -0600 Add one more level of debug msg history diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 4afde0d4..7266bd79 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -2896,11 +2896,11 @@ rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); #define DEBUGMSGSAVE_SIZE 24000 extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg +extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg #ifndef __cplusplus #ifdef __GNUC__ // doing the debug macro with a dummy sprintf allows gcc to check the format string -//#define rig_debug(debug_level,fmt,...) { char xxxbuf[16384]="";snprintf(xxxbuf,sizeof(xxxbuf),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } -#define rig_debug(debug_level,fmt,...) do { strcpy(debugmsgsave2, debugmsgsave);snprintf(debugmsgsave,sizeof(debugmsgsave),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } while(0); +#define rig_debug(debug_level,fmt,...) do { strcpy(debugmsgsave3, debugmsgsave2);strcpy(debugmsgsave2, debugmsgsave);snprintf(debugmsgsave,sizeof(debugmsgsave),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } while(0); #endif #endif extern HAMLIB_EXPORT(void) diff --git a/src/rig.c b/src/rig.c index 2e48d423..0a807bd8 100644 --- a/src/rig.c +++ b/src/rig.c @@ -293,6 +293,7 @@ int foreach_opened_rig(int (*cfunc)(RIG *, rig_ptr_t), rig_ptr_t data) */ char debugmsgsave[DEBUGMSGSAVE_SIZE] = "No message"; char debugmsgsave2[DEBUGMSGSAVE_SIZE] = "No message"; +char debugmsgsave3[DEBUGMSGSAVE_SIZE] = "No message"; const char *HAMLIB_API rigerror(int errnum) { @@ -310,8 +311,8 @@ const char *HAMLIB_API rigerror(int errnum) if (*p == '\n') { *p = 0; } - snprintf(msg, sizeof(msg), "%.80s\n%.15000s%.15000s", rigerror_table[errnum], - debugmsgsave2, debugmsgsave); + snprintf(msg, sizeof(msg), "%.80s\n%.15000s%.15000s%.15000s", rigerror_table[errnum], + debugmsgsave3,debugmsgsave2, debugmsgsave); return msg; } commit a35f39840c0117816850bd8ad8bab73e93021dcd Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 7 11:50:13 2021 -0600 Fix gai_error to print the status instead of errno https://github.com/Hamlib/Hamlib/issues/589 diff --git a/src/network.c b/src/network.c index eaf48e37..98a49c15 100644 --- a/src/network.c +++ b/src/network.c @@ -225,7 +225,7 @@ int network_open(hamlib_port_t *rp, int default_port) "%s: cannot get host \"%s\": %s\n", __func__, rp->pathname, - gai_strerror(errno)); + gai_strerror(status)); RETURNFUNC(-RIG_ECONF); } commit 307858f60c4c6dad3abc22c406ccf47aa32ebe73 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 7 11:42:01 2021 -0600 Add RETURNFUNC/ENTERFUNC to network.c https://github.com/Hamlib/Hamlib/issues/514 diff --git a/src/network.c b/src/network.c index b5a81000..eaf48e37 100644 --- a/src/network.c +++ b/src/network.c @@ -140,7 +140,6 @@ int network_open(hamlib_port_t *rp, int default_port) char hoststr[256], portstr[6] = ""; ENTERFUNC; - rig_debug(RIG_DEBUG_VERBOSE, "%s version 1.0\n", __func__); #ifdef __MINGW32__ WSADATA wsadata; @@ -148,14 +147,14 @@ int network_open(hamlib_port_t *rp, int default_port) if (!(wsstarted++) && WSAStartup(MAKEWORD(1, 1), &wsadata) == SOCKET_ERROR) { rig_debug(RIG_DEBUG_ERR, "%s: error creating socket\n", __func__); - return -RIG_EIO; + RETURNFUNC(-RIG_EIO); } #endif if (!rp) { - return -RIG_EINVAL; + RETURNFUNC(-RIG_EINVAL); } memset(&hints, 0, sizeof(hints)); @@ -181,7 +180,7 @@ int network_open(hamlib_port_t *rp, int default_port) { status = parse_hoststr(rp->pathname, hoststr, portstr); - if (status != RIG_OK) { return status; } + if (status != RIG_OK) { RETURNFUNC(status); } rig_debug(RIG_DEBUG_TRACE, "%s: hoststr=%s, portstr=%s\n", __func__, hoststr, portstr); @@ -227,7 +226,7 @@ int network_open(hamlib_port_t *rp, int default_port) __func__, rp->pathname, gai_strerror(errno)); - return -RIG_ECONF; + RETURNFUNC(-RIG_ECONF); } saved_res = res; @@ -246,7 +245,7 @@ int network_open(hamlib_port_t *rp, int default_port) { handle_error(RIG_DEBUG_ERR, "socket"); freeaddrinfo(saved_res); - return -RIG_EIO; + RETURNFUNC(-RIG_EIO); } if (connect(fd, res->ai_addr, res->ai_addrlen) == 0) @@ -274,12 +273,12 @@ int network_open(hamlib_port_t *rp, int default_port) "%s: failed to connect to %s\n", __func__, rp->pathname); - return -RIG_EIO; + RETURNFUNC(-RIG_EIO); } rp->fd = fd; - return RIG_OK; + RETURNFUNC(RIG_OK); } @@ -350,7 +349,7 @@ int network_close(hamlib_port_t *rp) { int ret; - rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); + ENTERFUNC; #ifdef __MINGW32__ ret = closesocket(rp->fd); @@ -363,7 +362,7 @@ int network_close(hamlib_port_t *rp) #else ret = close(rp->fd); #endif - return ret; + RETURNFUNC(ret); } //! @endcond commit 94e51bfa245b6e5e2c1459a0098c49d1f8828943 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 7 09:03:37 2021 -0600 rigctld.c add retry of rig_open with an IO error https://github.com/Hamlib/Hamlib/issues/560 diff --git a/tests/rigctld.c b/tests/rigctld.c index a59388a6..c4edaf6d 100644 --- a/tests/rigctld.c +++ b/tests/rigctld.c @@ -1087,13 +1087,26 @@ void *handle_socket(void *arg) #endif - // if socket error or rigctld gets RIG_EIO we'll try to reopen - if (ferror(fsockin)) + // if we get a hard error we try to reopen the rig again + // this should cover short dropouts that can occur + if (retcode == -RIG_EIO || retcode == 2) { - rig_debug(RIG_DEBUG_ERR, "%s: sockin err=%s\n", __func__, strerror(errno)); - return(NULL); + int retry = 3; + rig_debug(RIG_DEBUG_ERR, "%s: i/o error\n", __func__) + + do + { + retcode = rig_close(my_rig); + hl_usleep(1000 * 1000); + rig_debug(RIG_DEBUG_ERR, "%s: rig_close retcode=%d\n", __func__, retcode); + retcode = rig_open(my_rig); + rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); + } + while (retry-- > 0 && retcode != RIG_OK); + } + #if 0 if (ferror(fsockin) || ferror(fsockout) || retcode == 2) commit b2a0b15a67596c49f12f3f5c82dd167c2ae54b1e Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 7 07:34:18 2021 -0600 Add FTDX101MP to newcat.c command table https://github.com/Hamlib/Hamlib/issues/586 diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index e657567e..b307da3d 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -92,6 +92,7 @@ typedef struct _yaesu_newcat_commands ncboolean ft3000; ncboolean ft101; ncboolean ft10; + ncboolean ft101mp; } yaesu_newcat_commands_t; /** @@ -231,126 +232,126 @@ static ncboolean is_ftdx10; */ static const yaesu_newcat_commands_t valid_commands[] = { - /* Command FT-450 FT-950 FT-891 FT-991 FT-2000 FT-9000 FT-5000 FT-1200 FT-3000 FTDX101D FTDX10 */ - {"AB", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"AC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"AG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"AI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"AM", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"AN", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE }, - {"AO", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE }, - {"BA", FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE }, - {"BC", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"BD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"BI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"BM", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE }, - {"BP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"BS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"BU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"BY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"CH", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"CN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"CO", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"CS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"CT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"DA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"DN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"DT", FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE }, - {"DP", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, - {"DS", TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, - {"ED", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"EK", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE }, - {"EM", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE }, - {"EN", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE }, - {"EU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"EX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"FA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"FB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"FK", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, - {"FN", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE }, - {"FR", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"FS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"FT", TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"GT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"ID", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"IF", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"IS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"KM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"KP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"KR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"KS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"KY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"LK", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"LM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MA", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MB", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE }, - {"MC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MK", TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }, - {"ML", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MT", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE }, - {"MW", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"MX", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"NA", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"NB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"NL", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"NR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"OI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"OS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"PA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"PB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"PC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"PL", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"PR", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"PS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"QI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"QR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"QS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RF", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RL", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RO", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }, - {"RP", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, - {"RS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RT", TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"RU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"SC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"SD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"SF", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"SH", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"SM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"SQ", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, - {"SS", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE }, + /* Command FT-450 FT-950 FT-891 FT-991 FT-2000 FT-9000 FT-5000 FT-1200 FT-3000 FTDX101D FTDX10 FTDX101MP */ + {"AB", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"AC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"AG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"AI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"AM", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"AN", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE }, + {"AO", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE }, + {"BA", FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"BC", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"BD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"BI", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"BM", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE }, + {"BP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"BS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"BU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"BY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"CH", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"CN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"CO", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"CS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"CT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"DA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"DN", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"DT", FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE }, + {"DP", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, + {"DS", TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, + {"ED", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"EK", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE }, + {"EM", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE }, + {"EN", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"EU", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"EX", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"FA", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"FB", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"FK", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, + {"FN", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE }, + {"FR", FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"FS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"FT", TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"GT", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"ID", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"IF", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"IS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"KM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"KP", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"KR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"KS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"KY", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"LK", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"LM", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MA", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MB", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE }, + {"MC", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MD", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MG", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MK", TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE }, + {"ML", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MR", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MS", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MT", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE }, + {"MW", TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"MX", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE }, + {"NA", ... [truncated message content] |