Developers
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 3 participants
- 2972 discussions
Tested changes:
[Zach Welch <zach(a)mandolincreekfarm.com>] chirpc: add --list-radios option (#2343)
The current list of radios is too long to present to the user in
the --help text, so this splits the list out into its own option.
[Zach Welch <zach(a)mandolincreekfarm.com>] Update chirpc argument parsing (#2343)
The optparse module is deprecated, so this patch converts chirpc to use
the argparse module. This allows chirpc and chirpw to share argument
parsing code.
[Zach Welch <zach(a)mandolincreekfarm.com>] Rename chirp.py as chirpc (#2343)
The chirp CLI needs a better name if it ever will be installed in PATH.
It is better to do that early on rather than later.
[Zach Welch <zach(a)mandolincreekfarm.com>] Use argparse in chirpw (#2349)
This patch rewrites the argument processing in chirpw to use the
standard Python argparse.
[K. Arvanitis <kosta(a)alumni.uvic.ca>] Correcting typo in credits for callsign.
Bug #2279
Full log:
[...truncated 252 lines...]
Registered Icom_IC-208H = IC208Radio
Registered Leixen_VV-898 = LeixenVV898Radio
Registered Jetstream_JT270M = JetstreamJT270MRadio
Registered Icom_ID-800H_v2 = ID800v2Radio
Registered Icom_7200 = Icom7200Radio
Registered Icom_7000 = Icom7000Radio
Registered Icom_746 = Icom746Radio
Registered ARRL_Travel_Plus = TpeRadio
Registered Vertex_Standard_VXA-700 = VXA700Radio
Registered Icom_IC-W32A = ICW32ARadio
Registered Baofeng_UV-3R = UV3RRadio
Registered Yaesu_VX-2 = VX2Radio
Registered Puxing_PX-777 = Puxing777Radio
Registered Puxing_PX-2R = Puxing2RRadio
Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
Registered Baofeng_BF-888 = H777Radio
Registered Yaesu_FT-7800_7900 = FT7800Radio
Registered Yaesu_FT-8800 = FT8800Radio
Registered Yaesu_FT-8900 = FT8900Radio
Registered KYD_NC-630A = NC630aRadio
Registered Yaesu_FT-817 = FT817Radio
Registered Yaesu_FT-817ND = FT817NDRadio
Registered Yaesu_FT-817ND_US = FT817NDUSRadio
Registered Yaesu_FT-857_897 = FT857Radio
Registered Yaesu_FT-857_897_US = FT857USRadio
Registered Yaesu_VX-170 = VX170Radio
Registered Icom_ID-880H = ID880Radio
Registered Icom_ID-80H = ID80Radio
Alinco DJ175 Detect PASSED: All tests
Alinco DJ175 Settings SKIPPED: Settings not supported
Alinco DJ175 Clone PASSED: All tests
Alinco DJ175 Edges PASSED: All tests
Alinco DJ175 BruteForce PASSED: All tests
Alinco DJ175 CopyAll PASSED: All tests
Alinco DJ175 Banks SKIPPED: Banks not supported
Alinco DJ596 Detect PASSED: All tests
Alinco DJ596 Settings SKIPPED: Settings not supported
Alinco DJ596 Clone PASSED: All tests
Alinco DJ596 Edges PASSED: All tests
Alinco DJ596 BruteForce PASSED: All tests
Alinco DJ596 CopyAll PASSED: All tests
Alinco DJ596 Banks SKIPPED: Banks not supported
Alinco DR235T Detect PASSED: All tests
Alinco DR235T Settings SKIPPED: Settings not supported
Alinco DR235T Clone PASSED: All tests
Alinco DR235T Edges PASSED: All tests
Alinco DR235T BruteForce PASSED: All tests
Alinco DR235T CopyAll PASSED: All tests
Alinco DR235T Banks SKIPPED: Banks not supported
Baofeng BF-888 Detect PASSED: All tests
Baofeng BF-888 Settings PASSED: All tests
Baofeng BF-888 Clone PASSED: All tests
Baofeng BF-888 Edges PASSED: All tests
Baofeng BF-888 BruteForce PASSED: All tests
Baofeng BF-888 CopyAll PASSED: All tests
Baofeng BF-888 Banks SKIPPED: Banks not supported
Baofeng F-11 Detect PASSED: All tests
Baofeng F-11 Settings PASSED: All tests
Baofeng F-11 Clone PASSED: All tests
Baofeng F-11 Edges PASSED: All tests
Baofeng F-11 BruteForce PASSED: All tests
Baofeng F-11 CopyAll PASSED: All tests
Baofeng F-11 Banks SKIPPED: Banks not supported
Baofeng UV-3R Detect PASSED: All tests
Baofeng UV-3R Settings PASSED: All tests
Baofeng UV-3R Clone PASSED: All tests
Baofeng UV-3R Edges PASSED: All tests
Baofeng UV-3R BruteForce PASSED: All tests
Baofeng UV-3R CopyAll PASSED: All tests
Baofeng UV-3R Banks SKIPPED: Banks not supported
Baofeng UV-5R Detect PASSED: All tests
Baofeng UV-5R Settings PASSED: All tests
Baofeng UV-5R Clone PASSED: All tests
Baofeng UV-5R Edges PASSED: All tests
Baofeng UV-5R BruteForce PASSED: All tests
Baofeng UV-5R CopyAll PASSED: All tests
Baofeng UV-5R Banks SKIPPED: Banks not supported
Baofeng UV-B5 Detect PASSED: All tests
Baofeng UV-B5 Settings PASSED: All tests
Baofeng UV-B5 Clone PASSED: All tests
Baofeng UV-B5 Edges PASSED: All tests
Baofeng UV-B5 BruteForce PASSED: All tests
Baofeng UV-B5 CopyAll PASSED: All tests
Baofeng UV-B5 Banks SKIPPED: Banks not supported
Icom IC-208H Detect PASSED: All tests
Icom IC-208H Settings SKIPPED: Settings not supported
Icom IC-208H Clone PASSED: All tests
Icom IC-208H Edges PASSED: All tests
Icom IC-208H BruteForce PASSED: All tests
Icom IC-208H CopyAll PASSED: All tests
Icom IC-208H Banks PASSED: All tests
Icom IC-2100H Detect PASSED: All tests
Icom IC-2100H Settings SKIPPED: Settings not supported
Icom IC-2100H Clone PASSED: All tests
Icom IC-2100H Edges PASSED: All tests
Icom IC-2100H BruteForce PASSED: All tests
Icom IC-2100H CopyAll PASSED: All tests
Icom IC-2100H Banks SKIPPED: Banks not supported
Icom IC-2200H Detect PASSED: All tests
Icom IC-2200H Settings PASSED: All tests
Icom IC-2200H Clone PASSED: All tests
Icom IC-2200H Edges PASSED: All tests
Icom IC-2200H BruteForce PASSED: All tests
Icom IC-2200H CopyAll PASSED: All tests
Icom IC-2200H Banks PASSED: All tests
Icom IC-2720H Detect PASSED: All tests
Icom IC-2720H Settings SKIPPED: Settings not supported
Icom IC-2720H Clone PASSED: All tests
Icom IC-2720H Edges PASSED: All tests
Icom IC-2720H BruteForce PASSED: All tests
Icom IC-2720H CopyAll PASSED: All tests
Icom IC-2720H Banks PASSED: All tests
Icom IC-2820H Detect PASSED: All tests
Icom IC-2820H Settings PASSED: All tests
Icom IC-2820H Clone PASSED: All tests
Icom IC-2820H Edges PASSED: All tests
Icom IC-2820H BruteForce PASSED: All tests
Icom IC-2820H CopyAll PASSED: All tests
Icom IC-2820H Banks PASSED: All tests
Icom IC-Q7A Detect PASSED: All tests
Icom IC-Q7A Settings PASSED: All tests
Icom IC-Q7A Clone PASSED: All tests
Icom IC-Q7A Edges PASSED: All tests
Icom IC-Q7A BruteForce PASSED: All tests
Icom IC-Q7A CopyAll PASSED: All tests
Icom IC-Q7A Banks SKIPPED: Banks not supported
Icom IC-T70 Detect PASSED: All tests
Icom IC-T70 Settings SKIPPED: Settings not supported
Icom IC-T70 Clone PASSED: All tests
Icom IC-T70 Edges PASSED: All tests
Icom IC-T70 BruteForce PASSED: All tests
Icom IC-T70 CopyAll PASSED: All tests
Icom IC-T70 Banks PASSED: All tests
Icom IC-T7H Detect PASSED: All tests
Icom IC-T7H Settings SKIPPED: Settings not supported
Icom IC-T7H Clone PASSED: All tests
Icom IC-T7H Edges PASSED: All tests
Icom IC-T7H BruteForce PASSED: All tests
Icom IC-T7H CopyAll PASSED: All tests
Icom IC-T7H Banks SKIPPED: Banks not supported
Icom IC-T8A Detect PASSED: All tests
Icom IC-T8A Settings SKIPPED: Settings not supported
Icom IC-T8A Clone PASSED: All tests
Icom IC-T8A Edges PASSED: All tests
Icom IC-T8A BruteForce PASSED: All tests
Icom IC-T8A CopyAll PASSED: All tests
Icom IC-T8A Banks SKIPPED: Banks not supported
Icom IC-V82/U82 Detect PASSED: All tests
Icom IC-V82/U82 Settings SKIPPED: Settings not supported
Icom IC-V82/U82 Clone PASSED: All tests
Icom IC-V82/U82 Edges PASSED: All tests
Icom IC-V82/U82 BruteForce PASSED: All tests
Icom IC-V82/U82 CopyAll PASSED: All tests
Icom IC-V82/U82 Banks PASSED: All tests
Icom IC-W32A VHF Detect PASSED: All tests
Icom IC-W32A VHF Settings SKIPPED: Settings not supported
Icom IC-W32A VHF Clone PASSED: All tests
Icom IC-W32A VHF Edges PASSED: All tests
Icom IC-W32A VHF BruteForce PASSED: All tests
Icom IC-W32A VHF CopyAll PASSED: All tests
Icom IC-W32A VHF Banks SKIPPED: Banks not supported
Icom IC-W32A UHF Detect PASSED: All tests
Icom IC-W32A UHF Settings SKIPPED: Settings not supported
Icom IC-W32A UHF Clone PASSED: All tests
Icom IC-W32A UHF Edges PASSED: All tests
Icom IC-W32A UHF BruteForce PASSED: All tests
Icom IC-W32A UHF CopyAll PASSED: All tests
Icom IC-W32A UHF Banks SKIPPED: Banks not supported
Icom ID-31A Detect PASSED: All tests
Icom ID-31A Settings PASSED: All tests
Icom ID-31A Clone PASSED: All tests
Icom ID-31A Edges PASSED: All tests
Icom ID-31A BruteForce PASSED: All tests
Icom ID-31A CopyAll PASSED: All tests
Icom ID-31A Banks PASSED: All tests
Icom ID-51A Detect PASSED: All tests
Icom ID-51A Settings PASSED: All tests
Icom ID-51A Clone PASSED: All tests
Icom ID-51A Edges PASSED: All tests
Icom ID-51A BruteForce PASSED: All tests
Icom ID-51A CopyAll PASSED: All tests
Icom ID-51A Banks PASSED: All tests
Icom ID-800H v2 Detect PASSED: All tests
Icom ID-800H v2 Settings PASSED: All tests
Icom ID-800H v2 Clone PASSED: All tests
Icom ID-800H v2 Edges PASSED: All tests
Icom ID-800H v2 BruteForce PASSED: All tests
Icom ID-800H v2 CopyAll PASSED: All tests
Icom ID-800H v2 Banks PASSED: All tests
Icom ID-880H Detect PASSED: All tests
Icom ID-880H Settings PASSED: All tests
Icom ID-880H Clone PASSED: All tests
Icom ID-880H Edges PASSED: All tests
Icom ID-880H BruteForce PASSED: All tests
Icom ID-880H CopyAll PASSED: All tests
Icom ID-880H Banks PASSED: All tests
Jetstream JT220M Detect PASSED: All tests
Jetstream JT220M Settings SKIPPED: Settings not supported
Jetstream JT220M Clone PASSED: All tests
Jetstream JT220M Edges PASSED: All tests
Jetstream JT220M BruteForce PASSED: All tests
Jetstream JT220M CopyAll PASSED: All tests
Jetstream JT220M Banks SKIPPED: Banks not supported
Jetstream JT270M Detect PASSED: All tests
Jetstream JT270M Settings PASSED: All tests
Jetstream JT270M Clone PASSED: All tests
Jetstream JT270M Edges PASSED: All tests
Jetstream JT270M BruteForce PASSED: All tests
Jetstream JT270M CopyAll PASSED: All tests
Jetstream JT270M Banks SKIPPED: Banks not supported
Kenwood TH-D72 (clone Detect PASSED: All tests
Kenwood TH-D72 (clone Settings SKIPPED: Settings not supported
Kenwood TH-D72 (clone Clone PASSED: All tests
Kenwood TH-D72 (clone Edges PASSED: All tests
Kenwood TH-D72 (clone BruteForce PASSED: All tests
Kenwood TH-D72 (clone CopyAll PASSED: All tests
Kenwood TH-D72 (clone Banks SKIPPED: Banks not supported
Kenwood TK-8102 Detect PASSED: All tests
Kenwood TK-8102 Settings PASSED: All tests
Kenwood TK-8102 Clone PASSED: All tests
Kenwood TK-8102 Edges PASSED: All tests
Kenwood TK-8102 BruteForce PASSED: All tests
Kenwood TK-8102 CopyAll PASSED: All tests
Kenwood TK-8102 Banks SKIPPED: Banks not supported
Leixen VV-898 Detect PASSED: All tests
Leixen VV-898 Settings PASSED: All tests
Leixen VV-898 Clone PASSED: All tests
Leixen VV-898 Edges PASSED: All tests
Leixen VV-898 BruteForce PASSED: All tests
Leixen VV-898 CopyAll PASSED: All tests
Leixen VV-898 Banks SKIPPED: Banks not supported
Polmar DB-50M Detect PASSED: All tests
Polmar DB-50M Settings PASSED: All tests
Polmar DB-50M Clone PASSED: All tests
Polmar DB-50M Edges PASSED: All tests
Polmar DB-50M BruteForce PASSED: All tests
Polmar DB-50M CopyAll PASSED: All tests
Polmar DB-50M Banks SKIPPED: Banks not supported
Puxing PX-2R Detect PASSED: All tests
Puxing PX-2R Settings SKIPPED: Settings not supported
Puxing PX-2R Clone PASSED: All tests
Puxing PX-2R Edges PASSED: All tests
Puxing PX-2R BruteForce PASSED: All tests
Puxing PX-2R CopyAll PASSED: All tests
Puxing PX-2R Banks SKIPPED: Banks not supported
Puxing PX-777 Detect PASSED: All tests
Puxing PX-777 Settings SKIPPED: Settings not supported
Puxing PX-777 Clone PASSED: All tests
Puxing PX-777 Edges PASSED: All tests
Puxing PX-777 BruteForce PASSED: All tests
Puxing PX-777 CopyAll PASSED: All tests
Puxing PX-777 Banks SKIPPED: Banks not supported
Sainsonic AP510 Detect PASSED: All tests
Sainsonic AP510 Settings PASSED: All tests
Sainsonic AP510 Clone PASSED: All tests
Sainsonic AP510 Edges PASSED: All tests
Sainsonic AP510 BruteForce PASSED: All tests
Sainsonic AP510 CopyAll PASSED: All tests
Sainsonic AP510 Banks SKIPPED: Banks not supported
TYT TH-9800 Detect PASSED: All tests
TYT TH-9800 Settings PASSED: All tests
TYT TH-9800 Clone PASSED: All tests
TYT TH-9800 Edges PASSED: All tests
TYT TH-9800 BruteForce PASSED: All tests
TYT TH-9800 CopyAll PASSED: All tests
TYT TH-9800 Banks SKIPPED: Banks not supported
TYT TH-UV3R Detect PASSED: All tests
TYT TH-UV3R Settings SKIPPED: Settings not supported
TYT TH-UV3R Clone PASSED: All tests
TYT TH-UV3R Edges PASSED: All tests
TYT TH-UV3R BruteForce PASSED: All tests
TYT TH-UV3R CopyAll PASSED: All tests
TYT TH-UV3R Banks SKIPPED: Banks not supported
TYT TH-UV3R-25 Detect PASSED: All tests
TYT TH-UV3R-25 Settings SKIPPED: Settings not supported
TYT TH-UV3R-25 Clone PASSED: All tests
TYT TH-UV3R-25 Edges PASSED: All tests
TYT TH-UV3R-25 BruteForce PASSED: All tests
TYT TH-UV3R-25 CopyAll PASSED: All tests
TYT TH-UV3R-25 Banks SKIPPED: Banks not supported
TYT TH-UVF1 Detect PASSED: All tests
TYT TH-UVF1 Settings PASSED: All tests
TYT TH-UVF1 Clone PASSED: All tests
TYT TH-UVF1 Edges PASSED: All tests
TYT TH-UVF1 BruteForce PASSED: All tests
TYT TH-UVF1 CopyAll PASSED: All tests
TYT TH-UVF1 Banks SKIPPED: Banks not supported
Vertex VXA-700 Detect PASSED: All tests
Vertex VXA-700 Settings SKIPPED: Settings not supported
Vertex VXA-700 Clone PASSED: All tests
Vertex VXA-700 Edges PASSED: All tests
Vertex VXA-700 BruteForce PASSED: All tests
Vertex VXA-700 CopyAll PASSED: All tests
Vertex VXA-700 Banks SKIPPED: Banks not supported
Wouxun KG-816 Detect PASSED: All tests
Wouxun KG-816 Settings PASSED: All tests
Wouxun KG-816 Clone PASSED: All tests
Wouxun KG-816 Edges PASSED: All tests
Wouxun KG-816 BruteForce PASSED: All tests
Wouxun KG-816 CopyAll PASSED: All tests
Wouxun KG-816 Banks SKIPPED: Banks not supported
Wouxun KG-818 Detect PASSED: All tests
Wouxun KG-818 Settings PASSED: All tests
Wouxun KG-818 Clone PASSED: All tests
Wouxun KG-818 Edges PASSED: All tests
Wouxun KG-818 BruteForce PASSED: All tests
Wouxun KG-818 CopyAll PASSED: All tests
Wouxun KG-818 Banks SKIPPED: Banks not supported
Wouxun KG-UV6 Detect PASSED: All tests
Wouxun KG-UV6 Settings PASSED: All tests
Wouxun KG-UV6 Clone PASSED: All tests
Wouxun KG-UV6 Edges PASSED: All tests
Wouxun KG-UV6 BruteForce PASSED: All tests
Wouxun KG-UV6 CopyAll PASSED: All tests
Wouxun KG-UV6 Banks SKIPPED: Banks not supported
Wouxun KG-UV8D Detect PASSED: All tests
Wouxun KG-UV8D Settings PASSED: All tests
Wouxun KG-UV8D Clone PASSED: All tests
Wouxun KG-UV8D Edges PASSED: All tests
Wouxun KG-UV8D BruteForce PASSED: All tests
Wouxun KG-UV8D CopyAll PASSED: All tests
Wouxun KG-UV8D Banks SKIPPED: Banks not supported
Wouxun KG-UVD1P Detect PASSED: All tests
Wouxun KG-UVD1P Settings PASSED: All tests
Wouxun KG-UVD1P Clone PASSED: All tests
Wouxun KG-UVD1P Edges PASSED: All tests
Wouxun KG-UVD1P BruteForce PASSED: All tests
Wouxun KG-UVD1P CopyAll PASSED: All tests
Wouxun KG-UVD1P Banks SKIPPED: Banks not supported
Yaesu FT-1802M Detect PASSED: All tests
Yaesu FT-1802M Settings SKIPPED: Settings not supported
Yaesu FT-1802M Clone PASSED: All tests
Yaesu FT-1802M Edges PASSED: All tests
Yaesu FT-1802M BruteForce PASSED: All tests
Yaesu FT-1802M CopyAll PASSED: All tests
Yaesu FT-1802M Banks SKIPPED: Banks not supported
Yaesu FT-1D R Detect PASSED: All tests
Yaesu FT-1D R Settings PASSED: All tests
Yaesu FT-1D R Clone PASSED: All tests
Yaesu FT-1D R Edges PASSED: All tests
Yaesu FT-1D R BruteForce PASSED: All tests
Yaesu FT-1D R CopyAll PASSED: All tests
Yaesu FT-1D R Banks PASSED: All tests
Yaesu FT-2800M Detect PASSED: All tests
Yaesu FT-2800M Settings SKIPPED: Settings not supported
Yaesu FT-2800M Clone PASSED: All tests
Yaesu FT-2800M Edges PASSED: All tests
Yaesu FT-2800M BruteForce PASSED: All tests
Yaesu FT-2800M CopyAll PASSED: All tests
Yaesu FT-2800M Banks SKIPPED: Banks not supported
Yaesu FT-60 Detect PASSED: All tests
Yaesu FT-60 Settings PASSED: All tests
Yaesu FT-60 Clone PASSED: All tests
Yaesu FT-60 Edges PASSED: All tests
Yaesu FT-60 BruteForce PASSED: All tests
Yaesu FT-60 CopyAll PASSED: All tests
Yaesu FT-60 Banks PASSED: All tests
Yaesu FT-7800/7900 Detect PASSED: All tests
Yaesu FT-7800/7900 Settings PASSED: All tests
Yaesu FT-7800/7900 Clone PASSED: All tests
Yaesu FT-7800/7900 Edges PASSED: All tests
Yaesu FT-7800/7900 BruteForce PASSED: All tests
Yaesu FT-7800/7900 CopyAll PASSED: All tests
Yaesu FT-7800/7900 Banks PASSED: All tests
Yaesu FT-817 Detect PASSED: All tests
Yaesu FT-817 Settings PASSED: All tests
Yaesu FT-817 Clone PASSED: All tests
Yaesu FT-817 Edges PASSED: All tests
Yaesu FT-817 BruteForce PASSED: All tests
Yaesu FT-817 CopyAll PASSED: All tests
Yaesu FT-817 Banks SKIPPED: Banks not supported
Yaesu FT-817ND Detect PASSED: All tests
Yaesu FT-817ND Settings PASSED: All tests
Yaesu FT-817ND Clone PASSED: All tests
Yaesu FT-817ND Edges PASSED: All tests
Yaesu FT-817ND BruteForce PASSED: All tests
Yaesu FT-817ND CopyAll PASSED: All tests
Yaesu FT-817ND Banks SKIPPED: Banks not supported
Yaesu FT-817ND (US) Detect PASSED: All tests
Yaesu FT-817ND (US) Settings PASSED: All tests
Yaesu FT-817ND (US) Clone PASSED: All tests
Yaesu FT-817ND (US) Edges PASSED: All tests
Yaesu FT-817ND (US) BruteForce PASSED: All tests
Yaesu FT-817ND (US) CopyAll PASSED: All tests
Yaesu FT-817ND (US) Banks SKIPPED: Banks not supported
Yaesu FT-857/897 Detect PASSED: All tests
Yaesu FT-857/897 Settings PASSED: All tests
Yaesu FT-857/897 Clone PASSED: All tests
Yaesu FT-857/897 Edges PASSED: All tests
Yaesu FT-857/897 BruteForce PASSED: All tests
Yaesu FT-857/897 CopyAll PASSED: All tests
Yaesu FT-857/897 Banks SKIPPED: Banks not supported
Yaesu FT-857/897 (U Detect PASSED: All tests
Yaesu FT-857/897 (U Settings PASSED: All tests
Yaesu FT-857/897 (U Clone PASSED: All tests
Yaesu FT-857/897 (U Edges PASSED: All tests
Yaesu FT-857/897 (U BruteForce PASSED: All tests
Yaesu FT-857/897 (U CopyAll PASSED: All tests
Yaesu FT-857/897 (U Banks SKIPPED: Banks not supported
Yaesu FT-8800 Left Detect PASSED: All tests
Yaesu FT-8800 Left Settings SKIPPED: Settings not supported
Yaesu FT-8800 Left Clone PASSED: All tests
Yaesu FT-8800 Left Edges PASSED: All tests
Yaesu FT-8800 Left BruteForce PASSED: All tests
Yaesu FT-8800 Left CopyAll PASSED: All tests
Yaesu FT-8800 Left Banks PASSED: All tests
Yaesu FT-8800 Right Detect PASSED: All tests
Yaesu FT-8800 Right Settings SKIPPED: Settings not supported
Yaesu FT-8800 Right Clone PASSED: All tests
Yaesu FT-8800 Right Edges PASSED: All tests
Yaesu FT-8800 Right BruteForce PASSED: All tests
Yaesu FT-8800 Right CopyAll PASSED: All tests
Yaesu FT-8800 Right Banks PASSED: All tests
Yaesu FT-8900 Detect PASSED: All tests
Yaesu FT-8900 Settings SKIPPED: Settings not supported
Yaesu FT-8900 Clone PASSED: All tests
Yaesu FT-8900 Edges PASSED: All tests
Yaesu FT-8900 BruteForce PASSED: All tests
Yaesu FT-8900 CopyAll PASSED: All tests
Yaesu FT-8900 Banks SKIPPED: Banks not supported
Yaesu FTM-350 Left Detect PASSED: All tests
Yaesu FTM-350 Left Settings PASSED: All tests
Yaesu FTM-350 Left Clone PASSED: All tests
Yaesu FTM-350 Left Edges PASSED: All tests
Yaesu FTM-350 Left BruteForce PASSED: All tests
Yaesu FTM-350 Left CopyAll PASSED: All tests
Yaesu FTM-350 Left Banks SKIPPED: Banks not supported
Yaesu FTM-350 Right Detect PASSED: All tests
Yaesu FTM-350 Right Settings SKIPPED: Settings not supported
Yaesu FTM-350 Right Clone PASSED: All tests
Yaesu FTM-350 Right Edges PASSED: All tests
Yaesu FTM-350 Right BruteForce PASSED: All tests
Yaesu FTM-350 Right CopyAll PASSED: All tests
Yaesu FTM-350 Right Banks SKIPPED: Banks not supported
Yaesu VX-2 Detect PASSED: All tests
Yaesu VX-2 Settings PASSED: All tests
Yaesu VX-2 Clone PASSED: All tests
Yaesu VX-2 Edges PASSED: All tests
Yaesu VX-2 BruteForce PASSED: All tests
Yaesu VX-2 CopyAll PASSED: All tests
Yaesu VX-2 Banks PASSED: All tests
Yaesu VX-3 Detect PASSED: All tests
Yaesu VX-3 Settings PASSED: All tests
Yaesu VX-3 Clone PASSED: All tests
Yaesu VX-3 Edges PASSED: All tests
Yaesu VX-3 BruteForce PASSED: All tests
Yaesu VX-3 CopyAll PASSED: All tests
Yaesu VX-3 Banks PASSED: All tests
Yaesu VX-5 Detect PASSED: All tests
Yaesu VX-5 Settings SKIPPED: Settings not supported
Yaesu VX-5 Clone PASSED: All tests
Yaesu VX-5 Edges PASSED: All tests
Yaesu VX-5 BruteForce PASSED: All tests
Yaesu VX-5 CopyAll PASSED: All tests
Yaesu VX-5 Banks PASSED: All tests
Yaesu VX-6 Detect PASSED: All tests
Yaesu VX-6 Settings SKIPPED: Settings not supported
Yaesu VX-6 Clone PASSED: All tests
Yaesu VX-6 Edges PASSED: All tests
Yaesu VX-6 BruteForce PASSED: All tests
Yaesu VX-6 CopyAll PASSED: All tests
Yaesu VX-6 Banks PASSED: All tests
Yaesu VX-7 Detect PASSED: All tests
Yaesu VX-7 Settings SKIPPED: Settings not supported
Yaesu VX-7 Clone PASSED: All tests
Yaesu VX-7 Edges PASSED: All tests
Yaesu VX-7 BruteForce PASSED: All tests
Yaesu VX-7 CopyAll PASSED: All tests
Yaesu VX-7 Banks PASSED: All tests
Yaesu VX-8 R Detect PASSED: All tests
Yaesu VX-8 R Settings SKIPPED: Settings not supported
Yaesu VX-8 R Clone PASSED: All tests
Yaesu VX-8 R Edges PASSED: All tests
Yaesu VX-8 R BruteForce PASSED: All tests
Yaesu VX-8 R CopyAll PASSED: All tests
Yaesu VX-8 R Banks PASSED: All tests
----------------------------------------------------------------------
Results:
TOTAL : 448
FAILED : 0
SKIPPED: 72
PASSED : 376
CRASHED: 0
Registered Icom_IC-2820H = IC2820Radio
Registered TYT_TH-UVF8D = TYTUVF8DRadio
Registered AnyTone_5888UV = AnyTone5888UVRadio
Registered Intek_HR-2040 = IntekHR2040Radio
Registered Polmar_DB-50M = PolmarDB50MRadio
Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
Registered Icom_IC-2200H = IC2200Radio
Registered Yaesu_FT-2800M = FT2800Radio
Registered Yaesu_VX-3 = VX3Radio
Registered Icom_IC-2100H = IC2100Radio
Registered Yaesu_FTM-350 = FTM350Radio
Registered Icom_IC-V82_U82 = ICx8xRadio
Registered Yaesu_VX-6 = VX6Radio
Registered TYT_TH-UV3R = TYTUV3RRadio
Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
Registered Yaesu_VX-5 = VX5Radio
Registered Yaesu_FT-60 = FT60Radio
Registered Yaesu_VX-7 = VX7Radio
Registered Sainsonic_AP510 = AP510Radio
Registered Baofeng_UV-5R = BaofengUV5R
Registered Baofeng_F-11 = BaofengF11Radio
Registered Baofeng_UV-82 = BaofengUV82Radio
Registered Baofeng_UV-6 = BaofengUV6Radio
Registered Intek_KT-980HP = IntekKT980Radio
Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
Registered Yaesu_FT-1802M = FT1802Radio
Registered Kenwood_TK-7102 = KenwoodTK7102Radio
Registered Kenwood_TK-8102 = KenwoodTK8102Radio
Registered Kenwood_TK-7108 = KenwoodTK7108Radio
Registered Kenwood_TK-8108 = KenwoodTK8108Radio
Registered Icom_ID-31A = ID31Radio
Registered Icom_ID-51A = ID51Radio
Registered Icom_IC-2720H = IC2720Radio
Registered Icom_IC-T8A = ICT8ARadio
Registered Wouxun_KG-UVD1P = KGUVD1PRadio
Registered Wouxun_KG-UV6 = KGUV6DRadio
Registered Wouxun_KG-816 = KG816Radio
Registered Wouxun_KG-818 = KG818Radio
Registered TYT_TH-UVF1 = TYTTHUVF1Radio
Registered Yaesu_FT-90 = FT90Radio
Registered Generic_CSV = CSVRadio
Registered Commander_KG-UV = CommanderCSVRadio
Registered RT_Systems_CSV = RTCSVRadio
Registered Kenwood_ITM = ITMRadio
Registered TYT_TH-9800_File = TYTTH9800File
Registered TYT_TH-9800 = TYTTH9800Radio
Registered Alinco_DR03T = DR03Radio
Registered Alinco_DR06T = DR06Radio
Registered Alinco_DR135T = DR135Radio
Registered Alinco_DR235T = DR235Radio
Registered Alinco_DR435T = DR435Radio
Registered Alinco_DJ596 = DJ596Radio
Registered Jetstream_JT220M = JT220MRadio
Registered Alinco_DJ175 = DJ175Radio
Registered Kenwood_TH-D7 = THD7Radio
Registered Kenwood_TH-D7G = THD7GRadio
Registered Kenwood_TM-D700 = TMD700Radio
Registered Kenwood_TM-V7 = TMV7Radio
Registered Kenwood_TM-G707 = TMG707Radio
Registered Kenwood_TH-G71 = THG71Radio
Registered Kenwood_TH-F6 = THF6ARadio
Registered Kenwood_TH-F7 = THF7ERadio
Registered Kenwood_TM-D710 = TMD710Radio
Registered Kenwood_TH-D72_live_mode = THD72Radio
Registered Kenwood_TM-V71 = TMV71Radio
Registered Kenwood_TM-D710G = TMD710GRadio
Registered Kenwood_TH-K2 = THK2Radio
Registered Kenwood_TM-271 = TM271Radio
Registered Kenwood_TM-281 = TM281Radio
Registered Kenwood_TM-471 = TM471Radio
Registered Yaesu_FT-1D_R = FT1Radio
Registered Wouxun_KG-UV8D = KGUV8DRadio
Registered Yaesu_VX-8_R = VX8Radio
Registered Yaesu_VX-8_DR = VX8DRadio
Registered Yaesu_VX-8_GE = VX8GERadio
Registered Icom_IC-T7H = ICT7HRadio
Registered Icom_IC-Q7A = ICQ7Radio
Registered Baofeng_UV-B5 = BaofengUVB5
Registered Generic_XML = XMLRadio
Registered Kenwood_HMK = HMKRadio
Registered Kenwood_TH-D72_clone_mode = THD72Radio
Registered Icom_IC-91_92AD = IC9xRadio
Registered Icom_IC-T70 = ICT70Radio
Registered Icom_IC-208H = IC208Radio
Registered Leixen_VV-898 = LeixenVV898Radio
Registered Jetstream_JT270M = JetstreamJT270MRadio
Registered Icom_ID-800H_v2 = ID800v2Radio
Registered Icom_7200 = Icom7200Radio
Registered Icom_7000 = Icom7000Radio
Registered Icom_746 = Icom746Radio
Registered ARRL_Travel_Plus = TpeRadio
Registered Vertex_Standard_VXA-700 = VXA700Radio
Registered Icom_IC-W32A = ICW32ARadio
Registered Baofeng_UV-3R = UV3RRadio
Registered Yaesu_VX-2 = VX2Radio
Registered Puxing_PX-777 = Puxing777Radio
Registered Puxing_PX-2R = Puxing2RRadio
Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
Registered Baofeng_BF-888 = H777Radio
Registered Yaesu_FT-7800_7900 = FT7800Radio
Registered Yaesu_FT-8800 = FT8800Radio
Registered Yaesu_FT-8900 = FT8900Radio
Registered KYD_NC-630A = NC630aRadio
Registered Yaesu_FT-817 = FT817Radio
Registered Yaesu_FT-817ND = FT817NDRadio
Registered Yaesu_FT-817ND_US = FT817NDUSRadio
Registered Yaesu_FT-857_897 = FT857Radio
Registered Yaesu_FT-857_897_US = FT857USRadio
Registered Yaesu_VX-170 = VX170Radio
Registered Icom_ID-880H = ID880Radio
Registered Icom_ID-80H = ID80Radio
Patch 'tip' is OK
================================================
Tests OK
Email was triggered for: Success
Sending email for trigger: Success
1
0

Re: [chirp_devel] git vs hg patches [was: [PATCH 1/4] chirp.py: add, > --list-radios option (#2343)]
by Tyler Tidman 25 Feb '15
by Tyler Tidman 25 Feb '15
25 Feb '15
On 25/02/15 09:43 AM, chirp_devel-request(a)intrepid.danplanet.com wrote:
> Message: 3
> Date: Tue, 24 Feb 2015 12:48:51 -0800
> From: Mathew Mrosko <chirp(a)matmrosko.com>
> Subject: Re: [chirp_devel] git vs hg patches [was: [PATCH 1/4]
> chirp.py: add --list-radios option (#2343)]
> To: chirp_devel(a)intrepid.danplanet.com
> Message-ID: <54ECE3B3.7010305(a)matmrosko.com>
> Content-Type: text/plain; charset="windows-1252"
>
> Dan,
>
> If you're taking opinions of casual observers, I'm all for moving to
> git: github or gerrit. As silly as the "git vs. mercurial" arguments
> usually are, I've always been on the git side of things. With that,
> I've always used an importer to get the latest code into a git repo when
> I poke around. I don't think I've ever contributed so much as a
> typo-fix patch to this particular project, so take my opinion for what
> it's worth (nothing), but I'm all for a move to git. I just couldn't
> stand to see you and Zach go back and forth without another name in the
> mix and thought I'd reply with another +1 for a move to git. ;)
>
> Mat
>
> On 02/24/2015 09:39 AM, Dan Smith wrote:
>> ...I think we need to make sure a critical mass is on board before we
>> make such a drastic switch.... :) --Dan
>>
>>
>> _______________________________________________
>> chirp_devel mailing list
>> chirp_devel(a)intrepid.danplanet.com
>> http://intrepid.danplanet.com/mailman/listinfo/chirp_devel
>> Developer docs: http://chirp.danplanet.com/projects/chirp/wiki/Developers
I am trying to avoid taking the short path to "inbox zero nirvana"
(select-all, delete)... Too many projects, not enough time, family
members becoming cyborgs, radio events to organize, work too busy... all
the usual problems of life preventing me from having fun helping to
improve CHIRP. These CHIRP digest emails and patches aren't so easy to
read on a phone screen either and replying to them without a desktop +
real keyboard is painful. I felt that replying to this email was kinda
important.
First, allow me to state that the CHIRP development community continues
to impress me. I have been learning lots from watching patches and
discussions flow by as I slowly learn the CHIRP code base. I enjoy
telling others I meet about how professional and positive the CHIRP
community is (and tolerant of noobs like me).
Now, to get to the point, I too am strongly-rooted over in the git camp
and have used git daily for over 10 years now. My mercurial experience
is from before 2005 and might be the cause of some of my troubles. The
few times I've been able to play with CHIRP would have been more
productive had I not devoted such a large percentage of my time to
figuring out how to let me use alternate development tools while still
fitting within the confines of the hg-mq patch submission process (i.e.:
git, gitk, git-gui).
I tried submitting some stuff using hg-git which didn't work out and
then I resorted to a pure hg repo plus a git-hg clone just so I can
visualize and review things as I bounce around from machine-to-machine
and from work-to-home. I even pushed a clone of the main and stable
branches from hg back up to github because it was really handy for me
(manually-updated whenever-I-get-around-to-it)...
https://github.com/tylert/chirp.hg.git
I agree with all the comments I have been seeing about retaining
mercurial support but I would very, very much enjoy having a patch
submission process that can support *both* mercurial *and* git (and,
perhaps, even raw unix patches too). I don't wish to exclude folks who
perfer mercurial (and/or the mq subset) but I find the options provided
to me by using git feature branches to be extremely beneficial to my
preferred workflow as I have been using them for the past decade.
I have, so far, also ran into two local hams in my area who both claimed
to have once provided patches to CHIRP in the past but were ignored. I
suspect that both of them failed to get past the mercurial hurdle which
would certainly explain this failure. I have assured them that it was
most likely a case of improperly-formatted patches.
73,
Tyler Tidman
VA3DGN (RAC CEC)
OARC Vice-President
EMRG Web Janitor
RAC Logo Geek
1
0
I have ambition to use chirp.py to accomplish some batch transformations
of image files. In essence, I want a pool of "mutant" radios instead of
"clones".
These patches take the first baby steps along what I expect will be a
long road to that goal. With these applied, the CLI script starts to
look vaguely coherent, allowing further development.
Zach Welch (4):
chirp.py: add --list-radios option
Refactor version string display into chirp module
Simplify and centralize debugging messages
Suppress startup messages
chirp.py | 26 +++++++++++++++++++++++--
chirp/__init__.py | 16 ++++++++++++++++
chirp/anytone.py | 11 ++++-------
chirp/baofeng_uv3r.py | 5 -----
chirp/bjuv55.py | 5 -----
chirp/directory.py | 6 +++---
chirp/ft1d.py | 12 +++++-------
chirp/ft2800.py | 19 ++++++------------
chirp/ft60.py | 5 ++---
chirp/ft7800.py | 27 ++++++++------------------
chirp/ft817.py | 28 +++++++++++----------------
chirp/ft857.py | 7 +++----
chirp/ft90.py | 52 +++++++++++++++++---------------------------------
chirp/ftm350.py | 6 +++---
chirp/h777.py | 17 ++++++-----------
chirp/icomciv.py | 12 ++++--------
chirp/idrp.py | 11 +++--------
chirp/kenwood_live.py | 8 ++------
chirp/kguv8d.py | 43 ++++++++++++++---------------------------
chirp/kyd.py | 27 ++++++++++----------------
chirp/leixen.py | 5 -----
chirp/puxing.py | 5 -----
chirp/th9800.py | 35 ++++++++++++---------------------
chirp/th_uv3r.py | 5 -----
chirp/thd72.py | 10 +++-------
chirp/tk8102.py | 7 +++----
chirp/tmv71_ll.py | 10 +++-------
chirp/uv5r.py | 27 ++++++++------------------
chirp/vx170.py | 5 -----
chirp/vx2.py | 29 +++++++++-------------------
chirp/vx3.py | 29 +++++++++-------------------
chirp/vx8.py | 10 ++++------
chirp/wouxun.py | 10 ++++------
chirp/wouxun_common.py | 8 +++-----
chirp/yaesu_clone.py | 11 ++++-------
chirpui/mainapp.py | 3 ++-
chirpui/reporting.py | 29 ++++++++++++----------------
chirpw | 6 ++----
38 files changed, 220 insertions(+), 367 deletions(-)
--
1.9.1
9
33
# HG changeset patch
# User K. Arvanitis <kosta(a)alumni.uvic.ca>
# Date 1424845777 28800
# Tue Feb 24 22:29:37 2015 -0800
# Node ID 1bb02214184f0be31a7c536bd78899779bf1722f
# Parent 2e131fe2d1ad5b9272527ab0b9b4fa647a45ef68
Correcting typo in credits for callsign.
Bug #2279
diff -r 2e131fe2d1ad -r 1bb02214184f chirpui/mainapp.py
--- a/chirpui/mainapp.py Wed Feb 18 12:57:41 2015 +0100
+++ b/chirpui/mainapp.py Tue Feb 24 22:29:37 2015 -0800
@@ -1201,7 +1201,7 @@
os.linesep +
"German: Benjamin HB9EUK" +
os.linesep +
- "Hungarian: Attila HA7JA" +
+ "Hungarian: Attila HA5JA" +
os.linesep +
"Russian: Dmitry Slukin" +
os.linesep +
1
0
Tested changes:
[Marco Filippi <iz3gme.marco(a)gmail.com>] Add get-set-get then compare to settings test
Try to reveal incongruences in get/set_settings doing a "before and after"
comparision
Currently all images passes the test.
improves #2235
Full log:
[...truncated 252 lines...]
Registered Icom_IC-208H = IC208Radio
Registered Leixen_VV-898 = LeixenVV898Radio
Registered Jetstream_JT270M = JetstreamJT270MRadio
Registered Icom_ID-800H_v2 = ID800v2Radio
Registered Icom_7200 = Icom7200Radio
Registered Icom_7000 = Icom7000Radio
Registered Icom_746 = Icom746Radio
Registered ARRL_Travel_Plus = TpeRadio
Registered Vertex_Standard_VXA-700 = VXA700Radio
Registered Icom_IC-W32A = ICW32ARadio
Registered Baofeng_UV-3R = UV3RRadio
Registered Yaesu_VX-2 = VX2Radio
Registered Puxing_PX-777 = Puxing777Radio
Registered Puxing_PX-2R = Puxing2RRadio
Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
Registered Baofeng_BF-888 = H777Radio
Registered Yaesu_FT-7800_7900 = FT7800Radio
Registered Yaesu_FT-8800 = FT8800Radio
Registered Yaesu_FT-8900 = FT8900Radio
Registered KYD_NC-630A = NC630aRadio
Registered Yaesu_FT-817 = FT817Radio
Registered Yaesu_FT-817ND = FT817NDRadio
Registered Yaesu_FT-817ND_US = FT817NDUSRadio
Registered Yaesu_FT-857_897 = FT857Radio
Registered Yaesu_FT-857_897_US = FT857USRadio
Registered Yaesu_VX-170 = VX170Radio
Registered Icom_ID-880H = ID880Radio
Registered Icom_ID-80H = ID80Radio
Alinco DJ175 Detect PASSED: All tests
Alinco DJ175 Settings SKIPPED: Settings not supported
Alinco DJ175 Clone PASSED: All tests
Alinco DJ175 Edges PASSED: All tests
Alinco DJ175 BruteForce PASSED: All tests
Alinco DJ175 CopyAll PASSED: All tests
Alinco DJ175 Banks SKIPPED: Banks not supported
Alinco DJ596 Detect PASSED: All tests
Alinco DJ596 Settings SKIPPED: Settings not supported
Alinco DJ596 Clone PASSED: All tests
Alinco DJ596 Edges PASSED: All tests
Alinco DJ596 BruteForce PASSED: All tests
Alinco DJ596 CopyAll PASSED: All tests
Alinco DJ596 Banks SKIPPED: Banks not supported
Alinco DR235T Detect PASSED: All tests
Alinco DR235T Settings SKIPPED: Settings not supported
Alinco DR235T Clone PASSED: All tests
Alinco DR235T Edges PASSED: All tests
Alinco DR235T BruteForce PASSED: All tests
Alinco DR235T CopyAll PASSED: All tests
Alinco DR235T Banks SKIPPED: Banks not supported
Baofeng BF-888 Detect PASSED: All tests
Baofeng BF-888 Settings PASSED: All tests
Baofeng BF-888 Clone PASSED: All tests
Baofeng BF-888 Edges PASSED: All tests
Baofeng BF-888 BruteForce PASSED: All tests
Baofeng BF-888 CopyAll PASSED: All tests
Baofeng BF-888 Banks SKIPPED: Banks not supported
Baofeng F-11 Detect PASSED: All tests
Baofeng F-11 Settings PASSED: All tests
Baofeng F-11 Clone PASSED: All tests
Baofeng F-11 Edges PASSED: All tests
Baofeng F-11 BruteForce PASSED: All tests
Baofeng F-11 CopyAll PASSED: All tests
Baofeng F-11 Banks SKIPPED: Banks not supported
Baofeng UV-3R Detect PASSED: All tests
Baofeng UV-3R Settings PASSED: All tests
Baofeng UV-3R Clone PASSED: All tests
Baofeng UV-3R Edges PASSED: All tests
Baofeng UV-3R BruteForce PASSED: All tests
Baofeng UV-3R CopyAll PASSED: All tests
Baofeng UV-3R Banks SKIPPED: Banks not supported
Baofeng UV-5R Detect PASSED: All tests
Baofeng UV-5R Settings PASSED: All tests
Baofeng UV-5R Clone PASSED: All tests
Baofeng UV-5R Edges PASSED: All tests
Baofeng UV-5R BruteForce PASSED: All tests
Baofeng UV-5R CopyAll PASSED: All tests
Baofeng UV-5R Banks SKIPPED: Banks not supported
Baofeng UV-B5 Detect PASSED: All tests
Baofeng UV-B5 Settings PASSED: All tests
Baofeng UV-B5 Clone PASSED: All tests
Baofeng UV-B5 Edges PASSED: All tests
Baofeng UV-B5 BruteForce PASSED: All tests
Baofeng UV-B5 CopyAll PASSED: All tests
Baofeng UV-B5 Banks SKIPPED: Banks not supported
Icom IC-208H Detect PASSED: All tests
Icom IC-208H Settings SKIPPED: Settings not supported
Icom IC-208H Clone PASSED: All tests
Icom IC-208H Edges PASSED: All tests
Icom IC-208H BruteForce PASSED: All tests
Icom IC-208H CopyAll PASSED: All tests
Icom IC-208H Banks PASSED: All tests
Icom IC-2100H Detect PASSED: All tests
Icom IC-2100H Settings SKIPPED: Settings not supported
Icom IC-2100H Clone PASSED: All tests
Icom IC-2100H Edges PASSED: All tests
Icom IC-2100H BruteForce PASSED: All tests
Icom IC-2100H CopyAll PASSED: All tests
Icom IC-2100H Banks SKIPPED: Banks not supported
Icom IC-2200H Detect PASSED: All tests
Icom IC-2200H Settings PASSED: All tests
Icom IC-2200H Clone PASSED: All tests
Icom IC-2200H Edges PASSED: All tests
Icom IC-2200H BruteForce PASSED: All tests
Icom IC-2200H CopyAll PASSED: All tests
Icom IC-2200H Banks PASSED: All tests
Icom IC-2720H Detect PASSED: All tests
Icom IC-2720H Settings SKIPPED: Settings not supported
Icom IC-2720H Clone PASSED: All tests
Icom IC-2720H Edges PASSED: All tests
Icom IC-2720H BruteForce PASSED: All tests
Icom IC-2720H CopyAll PASSED: All tests
Icom IC-2720H Banks PASSED: All tests
Icom IC-2820H Detect PASSED: All tests
Icom IC-2820H Settings PASSED: All tests
Icom IC-2820H Clone PASSED: All tests
Icom IC-2820H Edges PASSED: All tests
Icom IC-2820H BruteForce PASSED: All tests
Icom IC-2820H CopyAll PASSED: All tests
Icom IC-2820H Banks PASSED: All tests
Icom IC-Q7A Detect PASSED: All tests
Icom IC-Q7A Settings PASSED: All tests
Icom IC-Q7A Clone PASSED: All tests
Icom IC-Q7A Edges PASSED: All tests
Icom IC-Q7A BruteForce PASSED: All tests
Icom IC-Q7A CopyAll PASSED: All tests
Icom IC-Q7A Banks SKIPPED: Banks not supported
Icom IC-T70 Detect PASSED: All tests
Icom IC-T70 Settings SKIPPED: Settings not supported
Icom IC-T70 Clone PASSED: All tests
Icom IC-T70 Edges PASSED: All tests
Icom IC-T70 BruteForce PASSED: All tests
Icom IC-T70 CopyAll PASSED: All tests
Icom IC-T70 Banks PASSED: All tests
Icom IC-T7H Detect PASSED: All tests
Icom IC-T7H Settings SKIPPED: Settings not supported
Icom IC-T7H Clone PASSED: All tests
Icom IC-T7H Edges PASSED: All tests
Icom IC-T7H BruteForce PASSED: All tests
Icom IC-T7H CopyAll PASSED: All tests
Icom IC-T7H Banks SKIPPED: Banks not supported
Icom IC-T8A Detect PASSED: All tests
Icom IC-T8A Settings SKIPPED: Settings not supported
Icom IC-T8A Clone PASSED: All tests
Icom IC-T8A Edges PASSED: All tests
Icom IC-T8A BruteForce PASSED: All tests
Icom IC-T8A CopyAll PASSED: All tests
Icom IC-T8A Banks SKIPPED: Banks not supported
Icom IC-V82/U82 Detect PASSED: All tests
Icom IC-V82/U82 Settings SKIPPED: Settings not supported
Icom IC-V82/U82 Clone PASSED: All tests
Icom IC-V82/U82 Edges PASSED: All tests
Icom IC-V82/U82 BruteForce PASSED: All tests
Icom IC-V82/U82 CopyAll PASSED: All tests
Icom IC-V82/U82 Banks PASSED: All tests
Icom IC-W32A VHF Detect PASSED: All tests
Icom IC-W32A VHF Settings SKIPPED: Settings not supported
Icom IC-W32A VHF Clone PASSED: All tests
Icom IC-W32A VHF Edges PASSED: All tests
Icom IC-W32A VHF BruteForce PASSED: All tests
Icom IC-W32A VHF CopyAll PASSED: All tests
Icom IC-W32A VHF Banks SKIPPED: Banks not supported
Icom IC-W32A UHF Detect PASSED: All tests
Icom IC-W32A UHF Settings SKIPPED: Settings not supported
Icom IC-W32A UHF Clone PASSED: All tests
Icom IC-W32A UHF Edges PASSED: All tests
Icom IC-W32A UHF BruteForce PASSED: All tests
Icom IC-W32A UHF CopyAll PASSED: All tests
Icom IC-W32A UHF Banks SKIPPED: Banks not supported
Icom ID-31A Detect PASSED: All tests
Icom ID-31A Settings PASSED: All tests
Icom ID-31A Clone PASSED: All tests
Icom ID-31A Edges PASSED: All tests
Icom ID-31A BruteForce PASSED: All tests
Icom ID-31A CopyAll PASSED: All tests
Icom ID-31A Banks PASSED: All tests
Icom ID-51A Detect PASSED: All tests
Icom ID-51A Settings PASSED: All tests
Icom ID-51A Clone PASSED: All tests
Icom ID-51A Edges PASSED: All tests
Icom ID-51A BruteForce PASSED: All tests
Icom ID-51A CopyAll PASSED: All tests
Icom ID-51A Banks PASSED: All tests
Icom ID-800H v2 Detect PASSED: All tests
Icom ID-800H v2 Settings PASSED: All tests
Icom ID-800H v2 Clone PASSED: All tests
Icom ID-800H v2 Edges PASSED: All tests
Icom ID-800H v2 BruteForce PASSED: All tests
Icom ID-800H v2 CopyAll PASSED: All tests
Icom ID-800H v2 Banks PASSED: All tests
Icom ID-880H Detect PASSED: All tests
Icom ID-880H Settings PASSED: All tests
Icom ID-880H Clone PASSED: All tests
Icom ID-880H Edges PASSED: All tests
Icom ID-880H BruteForce PASSED: All tests
Icom ID-880H CopyAll PASSED: All tests
Icom ID-880H Banks PASSED: All tests
Jetstream JT220M Detect PASSED: All tests
Jetstream JT220M Settings SKIPPED: Settings not supported
Jetstream JT220M Clone PASSED: All tests
Jetstream JT220M Edges PASSED: All tests
Jetstream JT220M BruteForce PASSED: All tests
Jetstream JT220M CopyAll PASSED: All tests
Jetstream JT220M Banks SKIPPED: Banks not supported
Jetstream JT270M Detect PASSED: All tests
Jetstream JT270M Settings PASSED: All tests
Jetstream JT270M Clone PASSED: All tests
Jetstream JT270M Edges PASSED: All tests
Jetstream JT270M BruteForce PASSED: All tests
Jetstream JT270M CopyAll PASSED: All tests
Jetstream JT270M Banks SKIPPED: Banks not supported
Kenwood TH-D72 (clone Detect PASSED: All tests
Kenwood TH-D72 (clone Settings SKIPPED: Settings not supported
Kenwood TH-D72 (clone Clone PASSED: All tests
Kenwood TH-D72 (clone Edges PASSED: All tests
Kenwood TH-D72 (clone BruteForce PASSED: All tests
Kenwood TH-D72 (clone CopyAll PASSED: All tests
Kenwood TH-D72 (clone Banks SKIPPED: Banks not supported
Kenwood TK-8102 Detect PASSED: All tests
Kenwood TK-8102 Settings PASSED: All tests
Kenwood TK-8102 Clone PASSED: All tests
Kenwood TK-8102 Edges PASSED: All tests
Kenwood TK-8102 BruteForce PASSED: All tests
Kenwood TK-8102 CopyAll PASSED: All tests
Kenwood TK-8102 Banks SKIPPED: Banks not supported
Leixen VV-898 Detect PASSED: All tests
Leixen VV-898 Settings PASSED: All tests
Leixen VV-898 Clone PASSED: All tests
Leixen VV-898 Edges PASSED: All tests
Leixen VV-898 BruteForce PASSED: All tests
Leixen VV-898 CopyAll PASSED: All tests
Leixen VV-898 Banks SKIPPED: Banks not supported
Polmar DB-50M Detect PASSED: All tests
Polmar DB-50M Settings PASSED: All tests
Polmar DB-50M Clone PASSED: All tests
Polmar DB-50M Edges PASSED: All tests
Polmar DB-50M BruteForce PASSED: All tests
Polmar DB-50M CopyAll PASSED: All tests
Polmar DB-50M Banks SKIPPED: Banks not supported
Puxing PX-2R Detect PASSED: All tests
Puxing PX-2R Settings SKIPPED: Settings not supported
Puxing PX-2R Clone PASSED: All tests
Puxing PX-2R Edges PASSED: All tests
Puxing PX-2R BruteForce PASSED: All tests
Puxing PX-2R CopyAll PASSED: All tests
Puxing PX-2R Banks SKIPPED: Banks not supported
Puxing PX-777 Detect PASSED: All tests
Puxing PX-777 Settings SKIPPED: Settings not supported
Puxing PX-777 Clone PASSED: All tests
Puxing PX-777 Edges PASSED: All tests
Puxing PX-777 BruteForce PASSED: All tests
Puxing PX-777 CopyAll PASSED: All tests
Puxing PX-777 Banks SKIPPED: Banks not supported
Sainsonic AP510 Detect PASSED: All tests
Sainsonic AP510 Settings PASSED: All tests
Sainsonic AP510 Clone PASSED: All tests
Sainsonic AP510 Edges PASSED: All tests
Sainsonic AP510 BruteForce PASSED: All tests
Sainsonic AP510 CopyAll PASSED: All tests
Sainsonic AP510 Banks SKIPPED: Banks not supported
TYT TH-9800 Detect PASSED: All tests
TYT TH-9800 Settings PASSED: All tests
TYT TH-9800 Clone PASSED: All tests
TYT TH-9800 Edges PASSED: All tests
TYT TH-9800 BruteForce PASSED: All tests
TYT TH-9800 CopyAll PASSED: All tests
TYT TH-9800 Banks SKIPPED: Banks not supported
TYT TH-UV3R Detect PASSED: All tests
TYT TH-UV3R Settings SKIPPED: Settings not supported
TYT TH-UV3R Clone PASSED: All tests
TYT TH-UV3R Edges PASSED: All tests
TYT TH-UV3R BruteForce PASSED: All tests
TYT TH-UV3R CopyAll PASSED: All tests
TYT TH-UV3R Banks SKIPPED: Banks not supported
TYT TH-UV3R-25 Detect PASSED: All tests
TYT TH-UV3R-25 Settings SKIPPED: Settings not supported
TYT TH-UV3R-25 Clone PASSED: All tests
TYT TH-UV3R-25 Edges PASSED: All tests
TYT TH-UV3R-25 BruteForce PASSED: All tests
TYT TH-UV3R-25 CopyAll PASSED: All tests
TYT TH-UV3R-25 Banks SKIPPED: Banks not supported
TYT TH-UVF1 Detect PASSED: All tests
TYT TH-UVF1 Settings PASSED: All tests
TYT TH-UVF1 Clone PASSED: All tests
TYT TH-UVF1 Edges PASSED: All tests
TYT TH-UVF1 BruteForce PASSED: All tests
TYT TH-UVF1 CopyAll PASSED: All tests
TYT TH-UVF1 Banks SKIPPED: Banks not supported
Vertex VXA-700 Detect PASSED: All tests
Vertex VXA-700 Settings SKIPPED: Settings not supported
Vertex VXA-700 Clone PASSED: All tests
Vertex VXA-700 Edges PASSED: All tests
Vertex VXA-700 BruteForce PASSED: All tests
Vertex VXA-700 CopyAll PASSED: All tests
Vertex VXA-700 Banks SKIPPED: Banks not supported
Wouxun KG-816 Detect PASSED: All tests
Wouxun KG-816 Settings PASSED: All tests
Wouxun KG-816 Clone PASSED: All tests
Wouxun KG-816 Edges PASSED: All tests
Wouxun KG-816 BruteForce PASSED: All tests
Wouxun KG-816 CopyAll PASSED: All tests
Wouxun KG-816 Banks SKIPPED: Banks not supported
Wouxun KG-818 Detect PASSED: All tests
Wouxun KG-818 Settings PASSED: All tests
Wouxun KG-818 Clone PASSED: All tests
Wouxun KG-818 Edges PASSED: All tests
Wouxun KG-818 BruteForce PASSED: All tests
Wouxun KG-818 CopyAll PASSED: All tests
Wouxun KG-818 Banks SKIPPED: Banks not supported
Wouxun KG-UV6 Detect PASSED: All tests
Wouxun KG-UV6 Settings PASSED: All tests
Wouxun KG-UV6 Clone PASSED: All tests
Wouxun KG-UV6 Edges PASSED: All tests
Wouxun KG-UV6 BruteForce PASSED: All tests
Wouxun KG-UV6 CopyAll PASSED: All tests
Wouxun KG-UV6 Banks SKIPPED: Banks not supported
Wouxun KG-UV8D Detect PASSED: All tests
Wouxun KG-UV8D Settings PASSED: All tests
Wouxun KG-UV8D Clone PASSED: All tests
Wouxun KG-UV8D Edges PASSED: All tests
Wouxun KG-UV8D BruteForce PASSED: All tests
Wouxun KG-UV8D CopyAll PASSED: All tests
Wouxun KG-UV8D Banks SKIPPED: Banks not supported
Wouxun KG-UVD1P Detect PASSED: All tests
Wouxun KG-UVD1P Settings PASSED: All tests
Wouxun KG-UVD1P Clone PASSED: All tests
Wouxun KG-UVD1P Edges PASSED: All tests
Wouxun KG-UVD1P BruteForce PASSED: All tests
Wouxun KG-UVD1P CopyAll PASSED: All tests
Wouxun KG-UVD1P Banks SKIPPED: Banks not supported
Yaesu FT-1802M Detect PASSED: All tests
Yaesu FT-1802M Settings SKIPPED: Settings not supported
Yaesu FT-1802M Clone PASSED: All tests
Yaesu FT-1802M Edges PASSED: All tests
Yaesu FT-1802M BruteForce PASSED: All tests
Yaesu FT-1802M CopyAll PASSED: All tests
Yaesu FT-1802M Banks SKIPPED: Banks not supported
Yaesu FT-1D R Detect PASSED: All tests
Yaesu FT-1D R Settings PASSED: All tests
Yaesu FT-1D R Clone PASSED: All tests
Yaesu FT-1D R Edges PASSED: All tests
Yaesu FT-1D R BruteForce PASSED: All tests
Yaesu FT-1D R CopyAll PASSED: All tests
Yaesu FT-1D R Banks PASSED: All tests
Yaesu FT-2800M Detect PASSED: All tests
Yaesu FT-2800M Settings SKIPPED: Settings not supported
Yaesu FT-2800M Clone PASSED: All tests
Yaesu FT-2800M Edges PASSED: All tests
Yaesu FT-2800M BruteForce PASSED: All tests
Yaesu FT-2800M CopyAll PASSED: All tests
Yaesu FT-2800M Banks SKIPPED: Banks not supported
Yaesu FT-60 Detect PASSED: All tests
Yaesu FT-60 Settings PASSED: All tests
Yaesu FT-60 Clone PASSED: All tests
Yaesu FT-60 Edges PASSED: All tests
Yaesu FT-60 BruteForce PASSED: All tests
Yaesu FT-60 CopyAll PASSED: All tests
Yaesu FT-60 Banks PASSED: All tests
Yaesu FT-7800/7900 Detect PASSED: All tests
Yaesu FT-7800/7900 Settings PASSED: All tests
Yaesu FT-7800/7900 Clone PASSED: All tests
Yaesu FT-7800/7900 Edges PASSED: All tests
Yaesu FT-7800/7900 BruteForce PASSED: All tests
Yaesu FT-7800/7900 CopyAll PASSED: All tests
Yaesu FT-7800/7900 Banks PASSED: All tests
Yaesu FT-817 Detect PASSED: All tests
Yaesu FT-817 Settings PASSED: All tests
Yaesu FT-817 Clone PASSED: All tests
Yaesu FT-817 Edges PASSED: All tests
Yaesu FT-817 BruteForce PASSED: All tests
Yaesu FT-817 CopyAll PASSED: All tests
Yaesu FT-817 Banks SKIPPED: Banks not supported
Yaesu FT-817ND Detect PASSED: All tests
Yaesu FT-817ND Settings PASSED: All tests
Yaesu FT-817ND Clone PASSED: All tests
Yaesu FT-817ND Edges PASSED: All tests
Yaesu FT-817ND BruteForce PASSED: All tests
Yaesu FT-817ND CopyAll PASSED: All tests
Yaesu FT-817ND Banks SKIPPED: Banks not supported
Yaesu FT-817ND (US) Detect PASSED: All tests
Yaesu FT-817ND (US) Settings PASSED: All tests
Yaesu FT-817ND (US) Clone PASSED: All tests
Yaesu FT-817ND (US) Edges PASSED: All tests
Yaesu FT-817ND (US) BruteForce PASSED: All tests
Yaesu FT-817ND (US) CopyAll PASSED: All tests
Yaesu FT-817ND (US) Banks SKIPPED: Banks not supported
Yaesu FT-857/897 Detect PASSED: All tests
Yaesu FT-857/897 Settings PASSED: All tests
Yaesu FT-857/897 Clone PASSED: All tests
Yaesu FT-857/897 Edges PASSED: All tests
Yaesu FT-857/897 BruteForce PASSED: All tests
Yaesu FT-857/897 CopyAll PASSED: All tests
Yaesu FT-857/897 Banks SKIPPED: Banks not supported
Yaesu FT-857/897 (U Detect PASSED: All tests
Yaesu FT-857/897 (U Settings PASSED: All tests
Yaesu FT-857/897 (U Clone PASSED: All tests
Yaesu FT-857/897 (U Edges PASSED: All tests
Yaesu FT-857/897 (U BruteForce PASSED: All tests
Yaesu FT-857/897 (U CopyAll PASSED: All tests
Yaesu FT-857/897 (U Banks SKIPPED: Banks not supported
Yaesu FT-8800 Left Detect PASSED: All tests
Yaesu FT-8800 Left Settings SKIPPED: Settings not supported
Yaesu FT-8800 Left Clone PASSED: All tests
Yaesu FT-8800 Left Edges PASSED: All tests
Yaesu FT-8800 Left BruteForce PASSED: All tests
Yaesu FT-8800 Left CopyAll PASSED: All tests
Yaesu FT-8800 Left Banks PASSED: All tests
Yaesu FT-8800 Right Detect PASSED: All tests
Yaesu FT-8800 Right Settings SKIPPED: Settings not supported
Yaesu FT-8800 Right Clone PASSED: All tests
Yaesu FT-8800 Right Edges PASSED: All tests
Yaesu FT-8800 Right BruteForce PASSED: All tests
Yaesu FT-8800 Right CopyAll PASSED: All tests
Yaesu FT-8800 Right Banks PASSED: All tests
Yaesu FT-8900 Detect PASSED: All tests
Yaesu FT-8900 Settings SKIPPED: Settings not supported
Yaesu FT-8900 Clone PASSED: All tests
Yaesu FT-8900 Edges PASSED: All tests
Yaesu FT-8900 BruteForce PASSED: All tests
Yaesu FT-8900 CopyAll PASSED: All tests
Yaesu FT-8900 Banks SKIPPED: Banks not supported
Yaesu FTM-350 Left Detect PASSED: All tests
Yaesu FTM-350 Left Settings PASSED: All tests
Yaesu FTM-350 Left Clone PASSED: All tests
Yaesu FTM-350 Left Edges PASSED: All tests
Yaesu FTM-350 Left BruteForce PASSED: All tests
Yaesu FTM-350 Left CopyAll PASSED: All tests
Yaesu FTM-350 Left Banks SKIPPED: Banks not supported
Yaesu FTM-350 Right Detect PASSED: All tests
Yaesu FTM-350 Right Settings SKIPPED: Settings not supported
Yaesu FTM-350 Right Clone PASSED: All tests
Yaesu FTM-350 Right Edges PASSED: All tests
Yaesu FTM-350 Right BruteForce PASSED: All tests
Yaesu FTM-350 Right CopyAll PASSED: All tests
Yaesu FTM-350 Right Banks SKIPPED: Banks not supported
Yaesu VX-2 Detect PASSED: All tests
Yaesu VX-2 Settings PASSED: All tests
Yaesu VX-2 Clone PASSED: All tests
Yaesu VX-2 Edges PASSED: All tests
Yaesu VX-2 BruteForce PASSED: All tests
Yaesu VX-2 CopyAll PASSED: All tests
Yaesu VX-2 Banks PASSED: All tests
Yaesu VX-3 Detect PASSED: All tests
Yaesu VX-3 Settings PASSED: All tests
Yaesu VX-3 Clone PASSED: All tests
Yaesu VX-3 Edges PASSED: All tests
Yaesu VX-3 BruteForce PASSED: All tests
Yaesu VX-3 CopyAll PASSED: All tests
Yaesu VX-3 Banks PASSED: All tests
Yaesu VX-5 Detect PASSED: All tests
Yaesu VX-5 Settings SKIPPED: Settings not supported
Yaesu VX-5 Clone PASSED: All tests
Yaesu VX-5 Edges PASSED: All tests
Yaesu VX-5 BruteForce PASSED: All tests
Yaesu VX-5 CopyAll PASSED: All tests
Yaesu VX-5 Banks PASSED: All tests
Yaesu VX-6 Detect PASSED: All tests
Yaesu VX-6 Settings SKIPPED: Settings not supported
Yaesu VX-6 Clone PASSED: All tests
Yaesu VX-6 Edges PASSED: All tests
Yaesu VX-6 BruteForce PASSED: All tests
Yaesu VX-6 CopyAll PASSED: All tests
Yaesu VX-6 Banks PASSED: All tests
Yaesu VX-7 Detect PASSED: All tests
Yaesu VX-7 Settings SKIPPED: Settings not supported
Yaesu VX-7 Clone PASSED: All tests
Yaesu VX-7 Edges PASSED: All tests
Yaesu VX-7 BruteForce PASSED: All tests
Yaesu VX-7 CopyAll PASSED: All tests
Yaesu VX-7 Banks PASSED: All tests
Yaesu VX-8 R Detect PASSED: All tests
Yaesu VX-8 R Settings SKIPPED: Settings not supported
Yaesu VX-8 R Clone PASSED: All tests
Yaesu VX-8 R Edges PASSED: All tests
Yaesu VX-8 R BruteForce PASSED: All tests
Yaesu VX-8 R CopyAll PASSED: All tests
Yaesu VX-8 R Banks PASSED: All tests
----------------------------------------------------------------------
Results:
TOTAL : 448
FAILED : 0
SKIPPED: 72
PASSED : 376
CRASHED: 0
Registered Icom_IC-2820H = IC2820Radio
Registered TYT_TH-UVF8D = TYTUVF8DRadio
Registered AnyTone_5888UV = AnyTone5888UVRadio
Registered Intek_HR-2040 = IntekHR2040Radio
Registered Polmar_DB-50M = PolmarDB50MRadio
Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
Registered Icom_IC-2200H = IC2200Radio
Registered Yaesu_FT-2800M = FT2800Radio
Registered Yaesu_VX-3 = VX3Radio
Registered Icom_IC-2100H = IC2100Radio
Registered Yaesu_FTM-350 = FTM350Radio
Registered Icom_IC-V82_U82 = ICx8xRadio
Registered Yaesu_VX-6 = VX6Radio
Registered TYT_TH-UV3R = TYTUV3RRadio
Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
Registered Yaesu_VX-5 = VX5Radio
Registered Yaesu_FT-60 = FT60Radio
Registered Yaesu_VX-7 = VX7Radio
Registered Sainsonic_AP510 = AP510Radio
Registered Baofeng_UV-5R = BaofengUV5R
Registered Baofeng_F-11 = BaofengF11Radio
Registered Baofeng_UV-82 = BaofengUV82Radio
Registered Baofeng_UV-6 = BaofengUV6Radio
Registered Intek_KT-980HP = IntekKT980Radio
Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
Registered Yaesu_FT-1802M = FT1802Radio
Registered Kenwood_TK-7102 = KenwoodTK7102Radio
Registered Kenwood_TK-8102 = KenwoodTK8102Radio
Registered Kenwood_TK-7108 = KenwoodTK7108Radio
Registered Kenwood_TK-8108 = KenwoodTK8108Radio
Registered Icom_ID-31A = ID31Radio
Registered Icom_ID-51A = ID51Radio
Registered Icom_IC-2720H = IC2720Radio
Registered Icom_IC-T8A = ICT8ARadio
Registered Wouxun_KG-UVD1P = KGUVD1PRadio
Registered Wouxun_KG-UV6 = KGUV6DRadio
Registered Wouxun_KG-816 = KG816Radio
Registered Wouxun_KG-818 = KG818Radio
Registered TYT_TH-UVF1 = TYTTHUVF1Radio
Registered Yaesu_FT-90 = FT90Radio
Registered Generic_CSV = CSVRadio
Registered Commander_KG-UV = CommanderCSVRadio
Registered RT_Systems_CSV = RTCSVRadio
Registered Kenwood_ITM = ITMRadio
Registered TYT_TH-9800_File = TYTTH9800File
Registered TYT_TH-9800 = TYTTH9800Radio
Registered Alinco_DR03T = DR03Radio
Registered Alinco_DR06T = DR06Radio
Registered Alinco_DR135T = DR135Radio
Registered Alinco_DR235T = DR235Radio
Registered Alinco_DR435T = DR435Radio
Registered Alinco_DJ596 = DJ596Radio
Registered Jetstream_JT220M = JT220MRadio
Registered Alinco_DJ175 = DJ175Radio
Registered Kenwood_TH-D7 = THD7Radio
Registered Kenwood_TH-D7G = THD7GRadio
Registered Kenwood_TM-D700 = TMD700Radio
Registered Kenwood_TM-V7 = TMV7Radio
Registered Kenwood_TM-G707 = TMG707Radio
Registered Kenwood_TH-G71 = THG71Radio
Registered Kenwood_TH-F6 = THF6ARadio
Registered Kenwood_TH-F7 = THF7ERadio
Registered Kenwood_TM-D710 = TMD710Radio
Registered Kenwood_TH-D72_live_mode = THD72Radio
Registered Kenwood_TM-V71 = TMV71Radio
Registered Kenwood_TM-D710G = TMD710GRadio
Registered Kenwood_TH-K2 = THK2Radio
Registered Kenwood_TM-271 = TM271Radio
Registered Kenwood_TM-281 = TM281Radio
Registered Kenwood_TM-471 = TM471Radio
Registered Yaesu_FT-1D_R = FT1Radio
Registered Wouxun_KG-UV8D = KGUV8DRadio
Registered Yaesu_VX-8_R = VX8Radio
Registered Yaesu_VX-8_DR = VX8DRadio
Registered Yaesu_VX-8_GE = VX8GERadio
Registered Icom_IC-T7H = ICT7HRadio
Registered Icom_IC-Q7A = ICQ7Radio
Registered Baofeng_UV-B5 = BaofengUVB5
Registered Generic_XML = XMLRadio
Registered Kenwood_HMK = HMKRadio
Registered Kenwood_TH-D72_clone_mode = THD72Radio
Registered Icom_IC-91_92AD = IC9xRadio
Registered Icom_IC-T70 = ICT70Radio
Registered Icom_IC-208H = IC208Radio
Registered Leixen_VV-898 = LeixenVV898Radio
Registered Jetstream_JT270M = JetstreamJT270MRadio
Registered Icom_ID-800H_v2 = ID800v2Radio
Registered Icom_7200 = Icom7200Radio
Registered Icom_7000 = Icom7000Radio
Registered Icom_746 = Icom746Radio
Registered ARRL_Travel_Plus = TpeRadio
Registered Vertex_Standard_VXA-700 = VXA700Radio
Registered Icom_IC-W32A = ICW32ARadio
Registered Baofeng_UV-3R = UV3RRadio
Registered Yaesu_VX-2 = VX2Radio
Registered Puxing_PX-777 = Puxing777Radio
Registered Puxing_PX-2R = Puxing2RRadio
Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
Registered Baofeng_BF-888 = H777Radio
Registered Yaesu_FT-7800_7900 = FT7800Radio
Registered Yaesu_FT-8800 = FT8800Radio
Registered Yaesu_FT-8900 = FT8900Radio
Registered KYD_NC-630A = NC630aRadio
Registered Yaesu_FT-817 = FT817Radio
Registered Yaesu_FT-817ND = FT817NDRadio
Registered Yaesu_FT-817ND_US = FT817NDUSRadio
Registered Yaesu_FT-857_897 = FT857Radio
Registered Yaesu_FT-857_897_US = FT857USRadio
Registered Yaesu_VX-170 = VX170Radio
Registered Icom_ID-880H = ID880Radio
Registered Icom_ID-80H = ID80Radio
Patch 'tip' is OK
================================================
Tests OK
Email was triggered for: Success
Sending email for trigger: Success
1
0

[chirp_devel] [PATCH] Add get-set-get then compare to settings test
by Marco Filippi IZ3GME 18 Feb '15
by Marco Filippi IZ3GME 18 Feb '15
18 Feb '15
# HG changeset patch
# User Marco Filippi <iz3gme.marco(a)gmail.com>
# Date 1424260661 -3600
# Wed Feb 18 12:57:41 2015 +0100
# Node ID 2e131fe2d1ad5b9272527ab0b9b4fa647a45ef68
# Parent d4536c8fcc48e6a61a573e680f0ab518ff8f09b9
Add get-set-get then compare to settings test
Try to reveal incongruences in get/set_settings doing a "before and after"
comparision
Currently all images passes the test.
improves #2235
diff --git a/tests/run_tests b/tests/run_tests
--- a/tests/run_tests
+++ b/tests/run_tests
@@ -530,8 +530,24 @@
def do_get_settings(self, rf):
lst = self._wrapper.do("get_settings")
if not isinstance(lst, list):
- raise TestFailedError("Invalid Radio Settings")
- self._wrapper.do("set_settings", lst)
+ raise TestFailedError("Invalid Radio Settings")
+
+ def do_same_settings(self, rf):
+ o = self._wrapper.do("get_settings")
+ self._wrapper.do("set_settings", o)
+ n = self._wrapper.do("get_settings")
+ map(self.compare_settings, o, n)
+
+ @staticmethod
+ def compare_settings(a, b):
+ try:
+ map(TestCaseSettings.compare_settings, a, b)
+ except TypeError:
+ if a.get_value() != b.get_value():
+ msg = "Field is `%s', " % b + \
+ "expected `%s' " % a
+ details = msg
+ raise TestFailedError(msg, details)
def run(self):
rf = self._wrapper.do("get_features")
@@ -539,7 +555,8 @@
if not rf.has_settings:
raise TestSkippedError("Settings not supported")
- self.do_get_settings(rf)
+ self.do_get_settings(rf)
+ self.do_same_settings(rf)
return []
1
0
Tested changes:
[K. Arvanitis <kosta(a)alumni.uvic.ca>] Updated radio settings interface.
Due to the nested nature of the settings editor tree
view, labels in the tree generally become obscured
because the pane is too small.
This change addresses the issue by a) adding a
horizontal paned window which allows the tree view
to be manually resized while b) flattening the radio
featrure radio settings group to return a single list
of all top level radio settings groups.
Bug #2285
Full log:
[...truncated 255 lines...]
Registered Icom_ID-800H_v2 = ID800v2Radio
Registered Icom_7200 = Icom7200Radio
Registered Icom_7000 = Icom7000Radio
Registered Icom_746 = Icom746Radio
Registered ARRL_Travel_Plus = TpeRadio
Registered Vertex_Standard_VXA-700 = VXA700Radio
Registered Icom_IC-W32A = ICW32ARadio
Registered Baofeng_UV-3R = UV3RRadio
Registered Yaesu_VX-2 = VX2Radio
Registered Puxing_PX-777 = Puxing777Radio
Registered Puxing_PX-2R = Puxing2RRadio
Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
Registered Baofeng_BF-888 = H777Radio
Registered Yaesu_FT-7800_7900 = FT7800Radio
Registered Yaesu_FT-8800 = FT8800Radio
Registered Yaesu_FT-8900 = FT8900Radio
Registered KYD_NC-630A = NC630aRadio
Registered Yaesu_FT-817 = FT817Radio
Registered Yaesu_FT-817ND = FT817NDRadio
Registered Yaesu_FT-817ND_US = FT817NDUSRadio
Registered Yaesu_FT-857_897 = FT857Radio
Registered Yaesu_FT-857_897_US = FT857USRadio
Registered Yaesu_VX-170 = VX170Radio
Registered Icom_ID-880H = ID880Radio
Registered Icom_ID-80H = ID80Radio
Alinco DJ175 Detect PASSED: All tests
Alinco DJ175 Settings SKIPPED: Settings not supported
Alinco DJ175 Clone PASSED: All tests
Alinco DJ175 Edges PASSED: All tests
Alinco DJ175 BruteForce PASSED: All tests
Alinco DJ175 CopyAll PASSED: All tests
Alinco DJ175 Banks SKIPPED: Banks not supported
Alinco DJ596 Detect PASSED: All tests
Alinco DJ596 Settings SKIPPED: Settings not supported
Alinco DJ596 Clone PASSED: All tests
Alinco DJ596 Edges PASSED: All tests
Alinco DJ596 BruteForce PASSED: All tests
Alinco DJ596 CopyAll PASSED: All tests
Alinco DJ596 Banks SKIPPED: Banks not supported
Alinco DR235T Detect PASSED: All tests
Alinco DR235T Settings SKIPPED: Settings not supported
Alinco DR235T Clone PASSED: All tests
Alinco DR235T Edges PASSED: All tests
Alinco DR235T BruteForce PASSED: All tests
Alinco DR235T CopyAll PASSED: All tests
Alinco DR235T Banks SKIPPED: Banks not supported
Baofeng BF-888 Detect PASSED: All tests
Baofeng BF-888 Settings PASSED: All tests
Baofeng BF-888 Clone PASSED: All tests
Baofeng BF-888 Edges PASSED: All tests
Baofeng BF-888 BruteForce PASSED: All tests
Baofeng BF-888 CopyAll PASSED: All tests
Baofeng BF-888 Banks SKIPPED: Banks not supported
Baofeng F-11 Detect PASSED: All tests
Baofeng F-11 Settings PASSED: All tests
Baofeng F-11 Clone PASSED: All tests
Baofeng F-11 Edges PASSED: All tests
Baofeng F-11 BruteForce PASSED: All tests
Baofeng F-11 CopyAll PASSED: All tests
Baofeng F-11 Banks SKIPPED: Banks not supported
Baofeng UV-3R Detect PASSED: All tests
Baofeng UV-3R Settings PASSED: All tests
Baofeng UV-3R Clone PASSED: All tests
Baofeng UV-3R Edges PASSED: All tests
Baofeng UV-3R BruteForce PASSED: All tests
Baofeng UV-3R CopyAll PASSED: All tests
Baofeng UV-3R Banks SKIPPED: Banks not supported
Baofeng UV-5R Detect PASSED: All tests
Baofeng UV-5R Settings PASSED: All tests
Baofeng UV-5R Clone PASSED: All tests
Baofeng UV-5R Edges PASSED: All tests
Baofeng UV-5R BruteForce PASSED: All tests
Baofeng UV-5R CopyAll PASSED: All tests
Baofeng UV-5R Banks SKIPPED: Banks not supported
Baofeng UV-B5 Detect PASSED: All tests
Baofeng UV-B5 Settings PASSED: All tests
Baofeng UV-B5 Clone PASSED: All tests
Baofeng UV-B5 Edges PASSED: All tests
Baofeng UV-B5 BruteForce PASSED: All tests
Baofeng UV-B5 CopyAll PASSED: All tests
Baofeng UV-B5 Banks SKIPPED: Banks not supported
Icom IC-208H Detect PASSED: All tests
Icom IC-208H Settings SKIPPED: Settings not supported
Icom IC-208H Clone PASSED: All tests
Icom IC-208H Edges PASSED: All tests
Icom IC-208H BruteForce PASSED: All tests
Icom IC-208H CopyAll PASSED: All tests
Icom IC-208H Banks PASSED: All tests
Icom IC-2100H Detect PASSED: All tests
Icom IC-2100H Settings SKIPPED: Settings not supported
Icom IC-2100H Clone PASSED: All tests
Icom IC-2100H Edges PASSED: All tests
Icom IC-2100H BruteForce PASSED: All tests
Icom IC-2100H CopyAll PASSED: All tests
Icom IC-2100H Banks SKIPPED: Banks not supported
Icom IC-2200H Detect PASSED: All tests
Icom IC-2200H Settings PASSED: All tests
Icom IC-2200H Clone PASSED: All tests
Icom IC-2200H Edges PASSED: All tests
Icom IC-2200H BruteForce PASSED: All tests
Icom IC-2200H CopyAll PASSED: All tests
Icom IC-2200H Banks PASSED: All tests
Icom IC-2720H Detect PASSED: All tests
Icom IC-2720H Settings SKIPPED: Settings not supported
Icom IC-2720H Clone PASSED: All tests
Icom IC-2720H Edges PASSED: All tests
Icom IC-2720H BruteForce PASSED: All tests
Icom IC-2720H CopyAll PASSED: All tests
Icom IC-2720H Banks PASSED: All tests
Icom IC-2820H Detect PASSED: All tests
Icom IC-2820H Settings PASSED: All tests
Icom IC-2820H Clone PASSED: All tests
Icom IC-2820H Edges PASSED: All tests
Icom IC-2820H BruteForce PASSED: All tests
Icom IC-2820H CopyAll PASSED: All tests
Icom IC-2820H Banks PASSED: All tests
Icom IC-Q7A Detect PASSED: All tests
Icom IC-Q7A Settings PASSED: All tests
Icom IC-Q7A Clone PASSED: All tests
Icom IC-Q7A Edges PASSED: All tests
Icom IC-Q7A BruteForce PASSED: All tests
Icom IC-Q7A CopyAll PASSED: All tests
Icom IC-Q7A Banks SKIPPED: Banks not supported
Icom IC-T70 Detect PASSED: All tests
Icom IC-T70 Settings SKIPPED: Settings not supported
Icom IC-T70 Clone PASSED: All tests
Icom IC-T70 Edges PASSED: All tests
Icom IC-T70 BruteForce PASSED: All tests
Icom IC-T70 CopyAll PASSED: All tests
Icom IC-T70 Banks PASSED: All tests
Icom IC-T7H Detect PASSED: All tests
Icom IC-T7H Settings SKIPPED: Settings not supported
Icom IC-T7H Clone PASSED: All tests
Icom IC-T7H Edges PASSED: All tests
Icom IC-T7H BruteForce PASSED: All tests
Icom IC-T7H CopyAll PASSED: All tests
Icom IC-T7H Banks SKIPPED: Banks not supported
Icom IC-T8A Detect PASSED: All tests
Icom IC-T8A Settings SKIPPED: Settings not supported
Icom IC-T8A Clone PASSED: All tests
Icom IC-T8A Edges PASSED: All tests
Icom IC-T8A BruteForce PASSED: All tests
Icom IC-T8A CopyAll PASSED: All tests
Icom IC-T8A Banks SKIPPED: Banks not supported
Icom IC-V82/U82 Detect PASSED: All tests
Icom IC-V82/U82 Settings SKIPPED: Settings not supported
Icom IC-V82/U82 Clone PASSED: All tests
Icom IC-V82/U82 Edges PASSED: All tests
Icom IC-V82/U82 BruteForce PASSED: All tests
Icom IC-V82/U82 CopyAll PASSED: All tests
Icom IC-V82/U82 Banks PASSED: All tests
Icom IC-W32A VHF Detect PASSED: All tests
Icom IC-W32A VHF Settings SKIPPED: Settings not supported
Icom IC-W32A VHF Clone PASSED: All tests
Icom IC-W32A VHF Edges PASSED: All tests
Icom IC-W32A VHF BruteForce PASSED: All tests
Icom IC-W32A VHF CopyAll PASSED: All tests
Icom IC-W32A VHF Banks SKIPPED: Banks not supported
Icom IC-W32A UHF Detect PASSED: All tests
Icom IC-W32A UHF Settings SKIPPED: Settings not supported
Icom IC-W32A UHF Clone PASSED: All tests
Icom IC-W32A UHF Edges PASSED: All tests
Icom IC-W32A UHF BruteForce PASSED: All tests
Icom IC-W32A UHF CopyAll PASSED: All tests
Icom IC-W32A UHF Banks SKIPPED: Banks not supported
Icom ID-31A Detect PASSED: All tests
Icom ID-31A Settings PASSED: All tests
Icom ID-31A Clone PASSED: All tests
Icom ID-31A Edges PASSED: All tests
Icom ID-31A BruteForce PASSED: All tests
Icom ID-31A CopyAll PASSED: All tests
Icom ID-31A Banks PASSED: All tests
Icom ID-51A Detect PASSED: All tests
Icom ID-51A Settings PASSED: All tests
Icom ID-51A Clone PASSED: All tests
Icom ID-51A Edges PASSED: All tests
Icom ID-51A BruteForce PASSED: All tests
Icom ID-51A CopyAll PASSED: All tests
Icom ID-51A Banks PASSED: All tests
Icom ID-800H v2 Detect PASSED: All tests
Icom ID-800H v2 Settings PASSED: All tests
Icom ID-800H v2 Clone PASSED: All tests
Icom ID-800H v2 Edges PASSED: All tests
Icom ID-800H v2 BruteForce PASSED: All tests
Icom ID-800H v2 CopyAll PASSED: All tests
Icom ID-800H v2 Banks PASSED: All tests
Icom ID-880H Detect PASSED: All tests
Icom ID-880H Settings PASSED: All tests
Icom ID-880H Clone PASSED: All tests
Icom ID-880H Edges PASSED: All tests
Icom ID-880H BruteForce PASSED: All tests
Icom ID-880H CopyAll PASSED: All tests
Icom ID-880H Banks PASSED: All tests
Jetstream JT220M Detect PASSED: All tests
Jetstream JT220M Settings SKIPPED: Settings not supported
Jetstream JT220M Clone PASSED: All tests
Jetstream JT220M Edges PASSED: All tests
Jetstream JT220M BruteForce PASSED: All tests
Jetstream JT220M CopyAll PASSED: All tests
Jetstream JT220M Banks SKIPPED: Banks not supported
Jetstream JT270M Detect PASSED: All tests
Jetstream JT270M Settings PASSED: All tests
Jetstream JT270M Clone PASSED: All tests
Jetstream JT270M Edges PASSED: All tests
Jetstream JT270M BruteForce PASSED: All tests
Jetstream JT270M CopyAll PASSED: All tests
Jetstream JT270M Banks SKIPPED: Banks not supported
Kenwood TH-D72 (clone Detect PASSED: All tests
Kenwood TH-D72 (clone Settings SKIPPED: Settings not supported
Kenwood TH-D72 (clone Clone PASSED: All tests
Kenwood TH-D72 (clone Edges PASSED: All tests
Kenwood TH-D72 (clone BruteForce PASSED: All tests
Kenwood TH-D72 (clone CopyAll PASSED: All tests
Kenwood TH-D72 (clone Banks SKIPPED: Banks not supported
Kenwood TK-8102 Detect PASSED: All tests
Kenwood TK-8102 Settings PASSED: All tests
Kenwood TK-8102 Clone PASSED: All tests
Kenwood TK-8102 Edges PASSED: All tests
Kenwood TK-8102 BruteForce PASSED: All tests
Kenwood TK-8102 CopyAll PASSED: All tests
Kenwood TK-8102 Banks SKIPPED: Banks not supported
Leixen VV-898 Detect PASSED: All tests
Leixen VV-898 Settings PASSED: All tests
Leixen VV-898 Clone PASSED: All tests
Leixen VV-898 Edges PASSED: All tests
Leixen VV-898 BruteForce PASSED: All tests
Leixen VV-898 CopyAll PASSED: All tests
Leixen VV-898 Banks SKIPPED: Banks not supported
Polmar DB-50M Detect PASSED: All tests
Polmar DB-50M Settings PASSED: All tests
Polmar DB-50M Clone PASSED: All tests
Polmar DB-50M Edges PASSED: All tests
Polmar DB-50M BruteForce PASSED: All tests
Polmar DB-50M CopyAll PASSED: All tests
Polmar DB-50M Banks SKIPPED: Banks not supported
Puxing PX-2R Detect PASSED: All tests
Puxing PX-2R Settings SKIPPED: Settings not supported
Puxing PX-2R Clone PASSED: All tests
Puxing PX-2R Edges PASSED: All tests
Puxing PX-2R BruteForce PASSED: All tests
Puxing PX-2R CopyAll PASSED: All tests
Puxing PX-2R Banks SKIPPED: Banks not supported
Puxing PX-777 Detect PASSED: All tests
Puxing PX-777 Settings SKIPPED: Settings not supported
Puxing PX-777 Clone PASSED: All tests
Puxing PX-777 Edges PASSED: All tests
Puxing PX-777 BruteForce PASSED: All tests
Puxing PX-777 CopyAll PASSED: All tests
Puxing PX-777 Banks SKIPPED: Banks not supported
Sainsonic AP510 Detect PASSED: All tests
Sainsonic AP510 Settings PASSED: All tests
Sainsonic AP510 Clone PASSED: All tests
Sainsonic AP510 Edges PASSED: All tests
Sainsonic AP510 BruteForce PASSED: All tests
Sainsonic AP510 CopyAll PASSED: All tests
Sainsonic AP510 Banks SKIPPED: Banks not supported
TYT TH-9800 Detect PASSED: All tests
TYT TH-9800 Settings PASSED: All tests
TYT TH-9800 Clone PASSED: All tests
TYT TH-9800 Edges PASSED: All tests
TYT TH-9800 BruteForce PASSED: All tests
TYT TH-9800 CopyAll PASSED: All tests
TYT TH-9800 Banks SKIPPED: Banks not supported
TYT TH-UV3R Detect PASSED: All tests
TYT TH-UV3R Settings SKIPPED: Settings not supported
TYT TH-UV3R Clone PASSED: All tests
TYT TH-UV3R Edges PASSED: All tests
TYT TH-UV3R BruteForce PASSED: All tests
TYT TH-UV3R CopyAll PASSED: All tests
TYT TH-UV3R Banks SKIPPED: Banks not supported
TYT TH-UV3R-25 Detect PASSED: All tests
TYT TH-UV3R-25 Settings SKIPPED: Settings not supported
TYT TH-UV3R-25 Clone PASSED: All tests
TYT TH-UV3R-25 Edges PASSED: All tests
TYT TH-UV3R-25 BruteForce PASSED: All tests
TYT TH-UV3R-25 CopyAll PASSED: All tests
TYT TH-UV3R-25 Banks SKIPPED: Banks not supported
TYT TH-UVF1 Detect PASSED: All tests
TYT TH-UVF1 Settings PASSED: All tests
TYT TH-UVF1 Clone PASSED: All tests
TYT TH-UVF1 Edges PASSED: All tests
TYT TH-UVF1 BruteForce PASSED: All tests
TYT TH-UVF1 CopyAll PASSED: All tests
TYT TH-UVF1 Banks SKIPPED: Banks not supported
Vertex VXA-700 Detect PASSED: All tests
Vertex VXA-700 Settings SKIPPED: Settings not supported
Vertex VXA-700 Clone PASSED: All tests
Vertex VXA-700 Edges PASSED: All tests
Vertex VXA-700 BruteForce PASSED: All tests
Vertex VXA-700 CopyAll PASSED: All tests
Vertex VXA-700 Banks SKIPPED: Banks not supported
Wouxun KG-816 Detect PASSED: All tests
Wouxun KG-816 Settings PASSED: All tests
Wouxun KG-816 Clone PASSED: All tests
Wouxun KG-816 Edges PASSED: All tests
Wouxun KG-816 BruteForce PASSED: All tests
Wouxun KG-816 CopyAll PASSED: All tests
Wouxun KG-816 Banks SKIPPED: Banks not supported
Wouxun KG-818 Detect PASSED: All tests
Wouxun KG-818 Settings PASSED: All tests
Wouxun KG-818 Clone PASSED: All tests
Wouxun KG-818 Edges PASSED: All tests
Wouxun KG-818 BruteForce PASSED: All tests
Wouxun KG-818 CopyAll PASSED: All tests
Wouxun KG-818 Banks SKIPPED: Banks not supported
Wouxun KG-UV6 Detect PASSED: All tests
Wouxun KG-UV6 Settings PASSED: All tests
Wouxun KG-UV6 Clone PASSED: All tests
Wouxun KG-UV6 Edges PASSED: All tests
Wouxun KG-UV6 BruteForce PASSED: All tests
Wouxun KG-UV6 CopyAll PASSED: All tests
Wouxun KG-UV6 Banks SKIPPED: Banks not supported
Wouxun KG-UV8D Detect PASSED: All tests
Wouxun KG-UV8D Settings PASSED: All tests
Wouxun KG-UV8D Clone PASSED: All tests
Wouxun KG-UV8D Edges PASSED: All tests
Wouxun KG-UV8D BruteForce PASSED: All tests
Wouxun KG-UV8D CopyAll PASSED: All tests
Wouxun KG-UV8D Banks SKIPPED: Banks not supported
Wouxun KG-UVD1P Detect PASSED: All tests
Wouxun KG-UVD1P Settings PASSED: All tests
Wouxun KG-UVD1P Clone PASSED: All tests
Wouxun KG-UVD1P Edges PASSED: All tests
Wouxun KG-UVD1P BruteForce PASSED: All tests
Wouxun KG-UVD1P CopyAll PASSED: All tests
Wouxun KG-UVD1P Banks SKIPPED: Banks not supported
Yaesu FT-1802M Detect PASSED: All tests
Yaesu FT-1802M Settings SKIPPED: Settings not supported
Yaesu FT-1802M Clone PASSED: All tests
Yaesu FT-1802M Edges PASSED: All tests
Yaesu FT-1802M BruteForce PASSED: All tests
Yaesu FT-1802M CopyAll PASSED: All tests
Yaesu FT-1802M Banks SKIPPED: Banks not supported
Yaesu FT-1D R Detect PASSED: All tests
Yaesu FT-1D R Settings PASSED: All tests
Yaesu FT-1D R Clone PASSED: All tests
Yaesu FT-1D R Edges PASSED: All tests
Yaesu FT-1D R BruteForce PASSED: All tests
Yaesu FT-1D R CopyAll PASSED: All tests
Yaesu FT-1D R Banks PASSED: All tests
Yaesu FT-2800M Detect PASSED: All tests
Yaesu FT-2800M Settings SKIPPED: Settings not supported
Yaesu FT-2800M Clone PASSED: All tests
Yaesu FT-2800M Edges PASSED: All tests
Yaesu FT-2800M BruteForce PASSED: All tests
Yaesu FT-2800M CopyAll PASSED: All tests
Yaesu FT-2800M Banks SKIPPED: Banks not supported
Yaesu FT-60 Detect PASSED: All tests
Yaesu FT-60 Settings PASSED: All tests
Yaesu FT-60 Clone PASSED: All tests
Yaesu FT-60 Edges PASSED: All tests
Yaesu FT-60 BruteForce PASSED: All tests
Yaesu FT-60 CopyAll PASSED: All tests
Yaesu FT-60 Banks PASSED: All tests
Yaesu FT-7800/7900 Detect PASSED: All tests
Yaesu FT-7800/7900 Settings PASSED: All tests
Yaesu FT-7800/7900 Clone PASSED: All tests
Yaesu FT-7800/7900 Edges PASSED: All tests
Yaesu FT-7800/7900 BruteForce PASSED: All tests
Yaesu FT-7800/7900 CopyAll PASSED: All tests
Yaesu FT-7800/7900 Banks PASSED: All tests
Yaesu FT-817 Detect PASSED: All tests
Yaesu FT-817 Settings PASSED: All tests
Yaesu FT-817 Clone PASSED: All tests
Yaesu FT-817 Edges PASSED: All tests
Yaesu FT-817 BruteForce PASSED: All tests
Yaesu FT-817 CopyAll PASSED: All tests
Yaesu FT-817 Banks SKIPPED: Banks not supported
Yaesu FT-817ND Detect PASSED: All tests
Yaesu FT-817ND Settings PASSED: All tests
Yaesu FT-817ND Clone PASSED: All tests
Yaesu FT-817ND Edges PASSED: All tests
Yaesu FT-817ND BruteForce PASSED: All tests
Yaesu FT-817ND CopyAll PASSED: All tests
Yaesu FT-817ND Banks SKIPPED: Banks not supported
Yaesu FT-817ND (US) Detect PASSED: All tests
Yaesu FT-817ND (US) Settings PASSED: All tests
Yaesu FT-817ND (US) Clone PASSED: All tests
Yaesu FT-817ND (US) Edges PASSED: All tests
Yaesu FT-817ND (US) BruteForce PASSED: All tests
Yaesu FT-817ND (US) CopyAll PASSED: All tests
Yaesu FT-817ND (US) Banks SKIPPED: Banks not supported
Yaesu FT-857/897 Detect PASSED: All tests
Yaesu FT-857/897 Settings PASSED: All tests
Yaesu FT-857/897 Clone PASSED: All tests
Yaesu FT-857/897 Edges PASSED: All tests
Yaesu FT-857/897 BruteForce PASSED: All tests
Yaesu FT-857/897 CopyAll PASSED: All tests
Yaesu FT-857/897 Banks SKIPPED: Banks not supported
Yaesu FT-857/897 (U Detect PASSED: All tests
Yaesu FT-857/897 (U Settings PASSED: All tests
Yaesu FT-857/897 (U Clone PASSED: All tests
Yaesu FT-857/897 (U Edges PASSED: All tests
Yaesu FT-857/897 (U BruteForce PASSED: All tests
Yaesu FT-857/897 (U CopyAll PASSED: All tests
Yaesu FT-857/897 (U Banks SKIPPED: Banks not supported
Yaesu FT-8800 Left Detect PASSED: All tests
Yaesu FT-8800 Left Settings SKIPPED: Settings not supported
Yaesu FT-8800 Left Clone PASSED: All tests
Yaesu FT-8800 Left Edges PASSED: All tests
Yaesu FT-8800 Left BruteForce PASSED: All tests
Yaesu FT-8800 Left CopyAll PASSED: All tests
Yaesu FT-8800 Left Banks PASSED: All tests
Yaesu FT-8800 Right Detect PASSED: All tests
Yaesu FT-8800 Right Settings SKIPPED: Settings not supported
Yaesu FT-8800 Right Clone PASSED: All tests
Yaesu FT-8800 Right Edges PASSED: All tests
Yaesu FT-8800 Right BruteForce PASSED: All tests
Yaesu FT-8800 Right CopyAll PASSED: All tests
Yaesu FT-8800 Right Banks PASSED: All tests
Yaesu FT-8900 Detect PASSED: All tests
Yaesu FT-8900 Settings SKIPPED: Settings not supported
Yaesu FT-8900 Clone PASSED: All tests
Yaesu FT-8900 Edges PASSED: All tests
Yaesu FT-8900 BruteForce PASSED: All tests
Yaesu FT-8900 CopyAll PASSED: All tests
Yaesu FT-8900 Banks SKIPPED: Banks not supported
Yaesu FTM-350 Left Detect PASSED: All tests
Yaesu FTM-350 Left Settings PASSED: All tests
Yaesu FTM-350 Left Clone PASSED: All tests
Yaesu FTM-350 Left Edges PASSED: All tests
Yaesu FTM-350 Left BruteForce PASSED: All tests
Yaesu FTM-350 Left CopyAll PASSED: All tests
Yaesu FTM-350 Left Banks SKIPPED: Banks not supported
Yaesu FTM-350 Right Detect PASSED: All tests
Yaesu FTM-350 Right Settings SKIPPED: Settings not supported
Yaesu FTM-350 Right Clone PASSED: All tests
Yaesu FTM-350 Right Edges PASSED: All tests
Yaesu FTM-350 Right BruteForce PASSED: All tests
Yaesu FTM-350 Right CopyAll PASSED: All tests
Yaesu FTM-350 Right Banks SKIPPED: Banks not supported
Yaesu VX-2 Detect PASSED: All tests
Yaesu VX-2 Settings PASSED: All tests
Yaesu VX-2 Clone PASSED: All tests
Yaesu VX-2 Edges PASSED: All tests
Yaesu VX-2 BruteForce PASSED: All tests
Yaesu VX-2 CopyAll PASSED: All tests
Yaesu VX-2 Banks PASSED: All tests
Yaesu VX-3 Detect PASSED: All tests
Yaesu VX-3 Settings PASSED: All tests
Yaesu VX-3 Clone PASSED: All tests
Yaesu VX-3 Edges PASSED: All tests
Yaesu VX-3 BruteForce PASSED: All tests
Yaesu VX-3 CopyAll PASSED: All tests
Yaesu VX-3 Banks PASSED: All tests
Yaesu VX-5 Detect PASSED: All tests
Yaesu VX-5 Settings SKIPPED: Settings not supported
Yaesu VX-5 Clone PASSED: All tests
Yaesu VX-5 Edges PASSED: All tests
Yaesu VX-5 BruteForce PASSED: All tests
Yaesu VX-5 CopyAll PASSED: All tests
Yaesu VX-5 Banks PASSED: All tests
Yaesu VX-6 Detect PASSED: All tests
Yaesu VX-6 Settings SKIPPED: Settings not supported
Yaesu VX-6 Clone PASSED: All tests
Yaesu VX-6 Edges PASSED: All tests
Yaesu VX-6 BruteForce PASSED: All tests
Yaesu VX-6 CopyAll PASSED: All tests
Yaesu VX-6 Banks PASSED: All tests
Yaesu VX-7 Detect PASSED: All tests
Yaesu VX-7 Settings SKIPPED: Settings not supported
Yaesu VX-7 Clone PASSED: All tests
Yaesu VX-7 Edges PASSED: All tests
Yaesu VX-7 BruteForce PASSED: All tests
Yaesu VX-7 CopyAll PASSED: All tests
Yaesu VX-7 Banks PASSED: All tests
Yaesu VX-8 R Detect PASSED: All tests
Yaesu VX-8 R Settings SKIPPED: Settings not supported
Yaesu VX-8 R Clone PASSED: All tests
Yaesu VX-8 R Edges PASSED: All tests
Yaesu VX-8 R BruteForce PASSED: All tests
Yaesu VX-8 R CopyAll PASSED: All tests
Yaesu VX-8 R Banks PASSED: All tests
----------------------------------------------------------------------
Results:
TOTAL : 448
FAILED : 0
SKIPPED: 72
PASSED : 376
CRASHED: 0
Registered Icom_IC-2820H = IC2820Radio
Registered TYT_TH-UVF8D = TYTUVF8DRadio
Registered AnyTone_5888UV = AnyTone5888UVRadio
Registered Intek_HR-2040 = IntekHR2040Radio
Registered Polmar_DB-50M = PolmarDB50MRadio
Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
Registered Icom_IC-2200H = IC2200Radio
Registered Yaesu_FT-2800M = FT2800Radio
Registered Yaesu_VX-3 = VX3Radio
Registered Icom_IC-2100H = IC2100Radio
Registered Yaesu_FTM-350 = FTM350Radio
Registered Icom_IC-V82_U82 = ICx8xRadio
Registered Yaesu_VX-6 = VX6Radio
Registered TYT_TH-UV3R = TYTUV3RRadio
Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
Registered Yaesu_VX-5 = VX5Radio
Registered Yaesu_FT-60 = FT60Radio
Registered Yaesu_VX-7 = VX7Radio
Registered Sainsonic_AP510 = AP510Radio
Registered Baofeng_UV-5R = BaofengUV5R
Registered Baofeng_F-11 = BaofengF11Radio
Registered Baofeng_UV-82 = BaofengUV82Radio
Registered Baofeng_UV-6 = BaofengUV6Radio
Registered Intek_KT-980HP = IntekKT980Radio
Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
Registered Yaesu_FT-1802M = FT1802Radio
Registered Kenwood_TK-7102 = KenwoodTK7102Radio
Registered Kenwood_TK-8102 = KenwoodTK8102Radio
Registered Kenwood_TK-7108 = KenwoodTK7108Radio
Registered Kenwood_TK-8108 = KenwoodTK8108Radio
Registered Icom_ID-31A = ID31Radio
Registered Icom_ID-51A = ID51Radio
Registered Icom_IC-2720H = IC2720Radio
Registered Icom_IC-T8A = ICT8ARadio
Registered Wouxun_KG-UVD1P = KGUVD1PRadio
Registered Wouxun_KG-UV6 = KGUV6DRadio
Registered Wouxun_KG-816 = KG816Radio
Registered Wouxun_KG-818 = KG818Radio
Registered TYT_TH-UVF1 = TYTTHUVF1Radio
Registered Yaesu_FT-90 = FT90Radio
Registered Generic_CSV = CSVRadio
Registered Commander_KG-UV = CommanderCSVRadio
Registered RT_Systems_CSV = RTCSVRadio
Registered Kenwood_ITM = ITMRadio
Registered TYT_TH-9800_File = TYTTH9800File
Registered TYT_TH-9800 = TYTTH9800Radio
Registered Alinco_DR03T = DR03Radio
Registered Alinco_DR06T = DR06Radio
Registered Alinco_DR135T = DR135Radio
Registered Alinco_DR235T = DR235Radio
Registered Alinco_DR435T = DR435Radio
Registered Alinco_DJ596 = DJ596Radio
Registered Jetstream_JT220M = JT220MRadio
Registered Alinco_DJ175 = DJ175Radio
Registered Kenwood_TH-D7 = THD7Radio
Registered Kenwood_TH-D7G = THD7GRadio
Registered Kenwood_TM-D700 = TMD700Radio
Registered Kenwood_TM-V7 = TMV7Radio
Registered Kenwood_TM-G707 = TMG707Radio
Registered Kenwood_TH-G71 = THG71Radio
Registered Kenwood_TH-F6 = THF6ARadio
Registered Kenwood_TH-F7 = THF7ERadio
Registered Kenwood_TM-D710 = TMD710Radio
Registered Kenwood_TH-D72_live_mode = THD72Radio
Registered Kenwood_TM-V71 = TMV71Radio
Registered Kenwood_TM-D710G = TMD710GRadio
Registered Kenwood_TH-K2 = THK2Radio
Registered Kenwood_TM-271 = TM271Radio
Registered Kenwood_TM-281 = TM281Radio
Registered Kenwood_TM-471 = TM471Radio
Registered Yaesu_FT-1D_R = FT1Radio
Registered Wouxun_KG-UV8D = KGUV8DRadio
Registered Yaesu_VX-8_R = VX8Radio
Registered Yaesu_VX-8_DR = VX8DRadio
Registered Yaesu_VX-8_GE = VX8GERadio
Registered Icom_IC-T7H = ICT7HRadio
Registered Icom_IC-Q7A = ICQ7Radio
Registered Baofeng_UV-B5 = BaofengUVB5
Registered Generic_XML = XMLRadio
Registered Kenwood_HMK = HMKRadio
Registered Kenwood_TH-D72_clone_mode = THD72Radio
Registered Icom_IC-91_92AD = IC9xRadio
Registered Icom_IC-T70 = ICT70Radio
Registered Icom_IC-208H = IC208Radio
Registered Leixen_VV-898 = LeixenVV898Radio
Registered Jetstream_JT270M = JetstreamJT270MRadio
Registered Icom_ID-800H_v2 = ID800v2Radio
Registered Icom_7200 = Icom7200Radio
Registered Icom_7000 = Icom7000Radio
Registered Icom_746 = Icom746Radio
Registered ARRL_Travel_Plus = TpeRadio
Registered Vertex_Standard_VXA-700 = VXA700Radio
Registered Icom_IC-W32A = ICW32ARadio
Registered Baofeng_UV-3R = UV3RRadio
Registered Yaesu_VX-2 = VX2Radio
Registered Puxing_PX-777 = Puxing777Radio
Registered Puxing_PX-2R = Puxing2RRadio
Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
Registered Baofeng_BF-888 = H777Radio
Registered Yaesu_FT-7800_7900 = FT7800Radio
Registered Yaesu_FT-8800 = FT8800Radio
Registered Yaesu_FT-8900 = FT8900Radio
Registered KYD_NC-630A = NC630aRadio
Registered Yaesu_FT-817 = FT817Radio
Registered Yaesu_FT-817ND = FT817NDRadio
Registered Yaesu_FT-817ND_US = FT817NDUSRadio
Registered Yaesu_FT-857_897 = FT857Radio
Registered Yaesu_FT-857_897_US = FT857USRadio
Registered Yaesu_VX-170 = VX170Radio
Registered Icom_ID-880H = ID880Radio
Registered Icom_ID-80H = ID80Radio
chirp/anytone.py:235:80: E501 line too long (80 characters)
FAIL: Please use <80 columns in source files
FAIL: Please keep commit message lines to <80 columns
================================================
Tests FAILED: style tests
Build step 'Execute shell' marked build as failure
Email was triggered for: Failure
Sending email for trigger: Failure
1
2

[chirp_devel] [PATCH 1 of 2] [ft8x7-us] make memory skip mutable for 60m channels
by Marco Filippi IZ3GME 17 Feb '15
by Marco Filippi IZ3GME 17 Feb '15
17 Feb '15
# HG changeset patch
# User Marco Filippi <iz3gme.marco(a)gmail.com>
# Date 1424188805 -3600
# Tue Feb 17 17:00:05 2015 +0100
# Node ID 4d214d7fd78da3f7eecaea2dc0028030bf1af314
# Parent f74f533828ed82b85ab08301c8e4e6ae5faf5370
[ft8x7-us] make memory skip mutable for 60m channels
implements #2325
diff --git a/chirp/ft817.py b/chirp/ft817.py
--- a/chirp/ft817.py
+++ b/chirp/ft817.py
@@ -1093,7 +1093,7 @@
mem = self._get_memory(mem, _mem)
- mem.immutable = ["number", "skip", "rtone", "ctone",
+ mem.immutable = ["number", "rtone", "ctone",
"extd_number", "name", "dtcs", "tmode", "cross_mode",
"dtcs_polarity", "power", "duplex", "offset",
"comment", "empty"]
diff --git a/chirp/ft857.py b/chirp/ft857.py
--- a/chirp/ft857.py
+++ b/chirp/ft857.py
@@ -1029,7 +1029,7 @@
mem = self._get_memory(mem, _mem)
- mem.immutable = ["number", "skip", "rtone", "ctone",
+ mem.immutable = ["number", "rtone", "ctone",
"extd_number", "name", "dtcs", "tmode", "cross_mode",
"dtcs_polarity", "power", "duplex", "offset",
"comment", "empty"]
1
1

[chirp_devel] [PATCH] ap510: add support for 20141215 firmware version. #2095
by Tom Hayward 16 Feb '15
by Tom Hayward 16 Feb '15
16 Feb '15
# HG changeset patch
# User Tom Hayward <tom(a)tomh.us>
# Date 1424071566 28800
# Sun Feb 15 23:26:06 2015 -0800
# Node ID d56104c20aa5714486b509d2ffe48458bd173cfd
# Parent f74f533828ed82b85ab08301c8e4e6ae5faf5370
ap510: add support for 20141215 firmware version. #2095
diff -r f74f533828ed -r d56104c20aa5 chirp/ap510.py
--- a/chirp/ap510.py Mon Feb 09 12:17:50 2015 -0800
+++ b/chirp/ap510.py Sun Feb 15 23:26:06 2015 -0800
@@ -14,12 +14,22 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import struct
+from time import sleep
+
from chirp import chirp_common, directory, errors, util
from chirp.settings import RadioSetting, RadioSettingGroup, \
RadioSettingValueInteger, RadioSettingValueList, \
RadioSettingValueBoolean, RadioSettingValueString, \
- RadioSettingValueFloat, RadioSettingValue, InvalidValueError, \
- RadioSettings
+ InvalidValueError, RadioSettings
+
+
+def chunks(s, t):
+ """ Yield chunks of s in sizes defined in t."""
+ i = 0
+ for n in t:
+ yield s[i:i+n]
+ i += n
+
def encode_base100(v):
return (v / 100 << 8) + (v % 100)
@@ -29,31 +39,6 @@
return 100 * (u16 >> 8 & 0xff) + (u16 & 0xff)
-def encode_smartbeacon(d):
- return struct.pack(
- ">7H",
- encode_base100(d['lowspeed']),
- encode_base100(d['slowrate']),
- encode_base100(d['highspeed']),
- encode_base100(d['fastrate']),
- encode_base100(d['turnslope']),
- encode_base100(d['turnangle']),
- encode_base100(d['turntime']),
- )
-
-
-def decode_smartbeacon(smartbeacon):
- return dict(zip((
- 'lowspeed',
- 'slowrate',
- 'highspeed',
- 'fastrate',
- 'turnslope',
- 'turnangle',
- 'turntime',
- ), map(decode_base100, struct.unpack(">7H", smartbeacon))))
-
-
def drain(pipe):
"""Chew up any data waiting on @pipe"""
for x in xrange(3):
@@ -66,10 +51,15 @@
def enter_setup(pipe):
"""Put AP510 in configuration mode."""
for x in xrange(30):
- pipe.write("@SETUP")
+ if x % 2:
+ pipe.write("@SETUP")
+ else:
+ pipe.write("\r\nSETUP\r\n")
s = pipe.read(64)
- if s and "SETUP" in s:
+ if s and "\r\nSETUP" in s:
return True
+ elif s and "SETUP" in s:
+ return False
raise errors.RadioError('Radio did not respond.')
@@ -79,13 +69,16 @@
status.msg = " Power on AP510 now, waiting "
radio.status_fn(status)
- enter_setup(radio.pipe)
+ new = enter_setup(radio.pipe)
status.cur = 1
status.max = 5
status.msg = "Downloading"
radio.status_fn(status)
- radio.pipe.write("@DISP")
+ if new:
+ radio.pipe.write("\r\nDISP\r\n")
+ else:
+ radio.pipe.write("@DISP")
buf = ""
for status.cur in xrange(status.cur, status.max):
@@ -109,7 +102,7 @@
status.msg = " Power on AP510 now, waiting "
radio.status_fn(status)
- enter_setup(radio.pipe)
+ new = enter_setup(radio.pipe)
status.msg = "Uploading"
status.cur = 1
@@ -117,15 +110,20 @@
for k, v in radio._mmap._memobj.items():
if k == '00':
continue
- if k in ('09', '10', '15'):
+ if new:
+ radio.pipe.write("%s=%s\r\n" % (k, v))
+ sleep(0.05)
+ elif k in ('09', '10', '15'):
radio.pipe.write("@" + k + v + "\x00\r\n")
else:
radio.pipe.write("@" + k + v)
- # Piece of crap acks every command except 15 with OK.
- if radio.pipe.read(2) != "OK" and k != '15':
+ # Older firmware acks every command except 15 with OK.
+ if not new and radio.pipe.read(2) != "OK" and k != '15':
raise errors.RadioError("Radio did not acknowledge upload: %s" % k)
status.cur += 1
radio.status_fn(status)
+ if new and radio.pipe.read(6) != "\r\n\r\nOK":
+ raise errors.RadioError("Radio did not acknowledge upload.")
def strbool(s):
@@ -148,6 +146,8 @@
01=KD7LXL7
02=3
03=1
+
+ This base class is compatible with firmware 20141008 (rx free).
"""
ATTR_MAP = {
@@ -192,13 +192,123 @@
print self.version
def __getattr__(self, name):
- return self._memobj[self.ATTR_MAP[name]]
+ if hasattr(self, 'get_%s' % name):
+ return getattr(self, 'get_%s' % name)()
+ try:
+ return self._memobj[self.ATTR_MAP[name]]
+ except KeyError as e:
+ raise NotImplementedError(e)
def __setattr__(self, name, value):
if name.startswith('_'):
super(AP510Memory, self).__setattr__(name, value)
return
- self._memobj[self.ATTR_MAP[name]] = str(value)
+ if hasattr(self, 'set_%s' % name):
+ return getattr(self, 'set_%s' % name)(value)
+ try:
+ self._memobj[self.ATTR_MAP[name]] = str(value)
+ except KeyError as e:
+ raise NotImplementedError(e)
+
+ def get_smartbeacon(self):
+ return dict(zip((
+ 'lowspeed',
+ 'slowrate',
+ 'highspeed',
+ 'fastrate',
+ 'turnslope',
+ 'turnangle',
+ 'turntime',
+ ), map(
+ decode_base100,
+ struct.unpack(">7H", self._memobj[self.ATTR_MAP['smartbeacon']]))
+ ))
+
+ def set_smartbeacon(self, d):
+ self._memobj[self.ATTR_MAP['smartbeacon']] = struct.pack(">7H",
+ encode_base100(d['lowspeed']),
+ encode_base100(d['slowrate']),
+ encode_base100(d['highspeed']),
+ encode_base100(d['fastrate']),
+ encode_base100(d['turnslope']),
+ encode_base100(d['turnangle']),
+ encode_base100(d['turntime']),
+ )
+
+
+class AP510Memory20141215(AP510Memory):
+ """Compatible with firmware version 20141215"""
+ ATTR_MAP = dict(AP510Memory.ATTR_MAP.items() + {
+ 'tx_volume': '21', # 1-6
+ 'rx_volume': '22', # 1-9
+ 'tx_power': '23', # 1: 1 watt, 0: 0.5 watt
+ 'tx_serial_ui_out': '24',
+ 'path1': '25',
+ 'path2': '26',
+ 'path3': '27', # like "WIDE1 1" else "0"
+ 'multiple': '28',
+ 'auto_on': '29',
+ }.items())
+
+ def get_multiple(self):
+ return dict(zip((
+ 'mice_message', # conveniently matches APRS spec Mic-E messages
+ 'voltage', # voltage in comment
+ 'temperature', # temperature in comment
+ 'tfx', # not sure what the TF/X toggle does
+ 'squelch', # squelch level 0-8 (0 = disabled)
+ 'blueled', # 0: squelch LED on GPS lock
+ # 1: light LED on GPS lock
+ 'telemetry', # 1: enable
+ 'telemetry_every', # two-digit int
+ 'timeslot_enable', # 1: enable Is this implemented in firmware?
+ 'timeslot', # int 00-59
+ 'dcd', # 0: Blue LED displays squelch,
+ # 1: Blue LED displays software DCD
+ 'tf_card' # 0: KML, 1: WPL
+ ), map(int, chunks(
+ self._memobj[self.ATTR_MAP['multiple']],
+ (1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1)))
+ ))
+
+ def set_multiple(self, d):
+ self._memobj[self.ATTR_MAP['multiple']] = "%(mice_message)1d" \
+ "%(voltage)1d" \
+ "%(temperature)1d" \
+ "%(tfx)1d" \
+ "%(squelch)1d" \
+ "%(blueled)1d" \
+ "%(telemetry)1d" \
+ "%(telemetry_every)02d" \
+ "%(timeslot_enable)1d" \
+ "%(timeslot)02d" \
+ "%(dcd)1d" \
+ "%(tf_card)1d" % d
+
+ def get_smartbeacon(self):
+ # raw: 18=0100300060010240028005
+ # chunks: 18=010 0300 060 010 240 028 005
+ return dict(zip((
+ 'lowspeed',
+ 'slowrate',
+ 'highspeed',
+ 'fastrate',
+ 'turnslope',
+ 'turnangle',
+ 'turntime',
+ ), map(int, chunks(
+ self._memobj[self.ATTR_MAP['smartbeacon']],
+ (3, 4, 3, 3, 3, 3, 3)))
+ ))
+
+ def set_smartbeacon(self, d):
+ self._memobj[self.ATTR_MAP['smartbeacon']] = "%(lowspeed)03d" \
+ "%(slowrate)04d" \
+ "%(highspeed)03d" \
+ "%(fastrate)03d" \
+ "%(turnslope)03d" \
+ "%(turnangle)03d" \
+ "%(turntime)03d" % d
PTT_DELAY = ['60 ms', '120 ms', '180 ms', '300 ms', '480 ms',
@@ -218,6 +328,11 @@
BEACON = ['manual', 'auto', 'auto + manual', 'smart', 'smart + manual']
ALIAS = ['WIDE1-N', 'WIDE2-N', 'WIDE1-N + WIDE2-N']
CHARSET = "".join(map(chr, range(0, 256)))
+MICE_MESSAGE = ['Emergency', 'Priority', 'Special', 'Committed', 'Returning',
+ 'In Service', 'En Route', 'Off Duty']
+TF_CARD = ['WPL', 'KML']
+POWER_LEVELS = [chirp_common.PowerLevel("0.5 watt", watts=0.50),
+ chirp_common.PowerLevel("1 watt", watts=1.00)]
RP_IMMUTABLE = ["number", "skip", "bank", "extd_number", "name", "rtone",
"ctone", "dtcs", "tmode", "dtcs_polarity", "skip", "duplex",
@@ -242,6 +357,7 @@
rf.valid_characters = ""
rf.valid_duplexes = [""]
rf.valid_name_length = 0
+ rf.valid_power_levels = POWER_LEVELS
rf.valid_skips = []
rf.valid_tuning_steps = []
rf.has_bank = False
@@ -257,15 +373,20 @@
return rf
def sync_in(self):
- # _mmap isn't a Chirp MemoryMap, but since AP510Memory implements
- # get_packed(), the standard Chirp save feature works.
try:
- self._mmap = AP510Memory(download(self))
+ data = download(self)
except errors.RadioError:
raise
except Exception, e:
raise errors.RadioError("Failed to communicate with radio: %s" % e)
+ # _mmap isn't a Chirp MemoryMap, but since AP510Memory implements
+ # get_packed(), the standard Chirp save feature works.
+ if data.startswith('\r\n00=%s 20141215' % self._model):
+ self._mmap = AP510Memory20141215(data)
+ else:
+ self._mmap = AP510Memory(data)
+
def process_mmap(self):
self._mmap.process_data()
@@ -280,7 +401,11 @@
def load_mmap(self, filename):
"""Load the radio's memory map from @filename"""
mapfile = file(filename, "rb")
- self._mmap = AP510Memory(mapfile.read())
+ data = mapfile.read()
+ if data.startswith('\r\n00=%s 20141215' % self._model):
+ self._mmap = AP510Memory20141215(data)
+ else:
+ self._mmap = AP510Memory(data)
mapfile.close()
def get_raw_memory(self, number):
@@ -296,6 +421,10 @@
mem.name = "TX/RX"
mem.mode = "FM"
mem.offset = 0.0
+ try:
+ mem.power = POWER_LEVELS[int(self._mmap.tx_power)]
+ except NotImplementedError:
+ mem.power = POWER_LEVELS[1]
mem.immutable = RP_IMMUTABLE
return mem
@@ -305,6 +434,12 @@
raise errors.InvalidMemoryLocation("AP510 has only one slot")
self._mmap.freq = "%8.4f" % (mem.freq / 1000000.0)
+ if mem.power:
+ try:
+ self._mmap.tx_power = str(POWER_LEVELS.index(mem.power))
+ except NotImplementedError:
+ pass
+
def get_settings(self):
china = RadioSettingGroup("china", "China Map Fix")
@@ -315,38 +450,80 @@
system = RadioSettingGroup("system", "System")
settings = RadioSettings(aprs, digipeat, system)
- # The RadioSetting syntax is really verbose, iterate it.
- fields = [
- ("callsign", "Callsign",
- RadioSettingValueString(0, 6, self._mmap.callsign[:6])),
- ("ssid", "SSID", RadioSettingValueInteger(
- 0, 15, ord(self._mmap.callsign[6]) - 0x30)),
- ("pttdelay", "PTT Delay",
+ aprs.append(RadioSetting("callsign", "Callsign",
+ RadioSettingValueString(0, 6, self._mmap.callsign[:6])))
+ aprs.append(RadioSetting("ssid", "SSID", RadioSettingValueInteger(
+ 0, 15, ord(self._mmap.callsign[6]) - 0x30)))
+ aprs.append(RadioSetting("pttdelay", "PTT Delay",
+ RadioSettingValueList(
+ PTT_DELAY, PTT_DELAY[int(self._mmap.pttdelay) - 1])))
+ aprs.append(RadioSetting("output", "Output",
+ RadioSettingValueList(
+ OUTPUT, OUTPUT[int(self._mmap.output) - 1])))
+ aprs.append(RadioSetting("mice", "Mic-E",
+ RadioSettingValueBoolean(strbool(self._mmap.mice))))
+ try:
+ aprs.append(RadioSetting("mice_message", "Mic-E Message",
RadioSettingValueList(
- PTT_DELAY, PTT_DELAY[int(self._mmap.pttdelay) - 1])),
- ("output", "Output",
- RadioSettingValueList(
- OUTPUT, OUTPUT[int(self._mmap.output) - 1])),
- ("mice", "Mic-E",
- RadioSettingValueBoolean(strbool(self._mmap.mice))),
- ("path", "Path",
- RadioSettingValueList(PATH, PATH[int(self._mmap.path)])),
- ("table", "Table or Overlay",
- RadioSettingValueList(TABLE, self._mmap.symbol[1])),
- ("symbol", "Symbol",
- RadioSettingValueList(SYMBOL, self._mmap.symbol[0])),
- ("beacon", "Beacon Mode",
- RadioSettingValueList(
- BEACON, BEACON[int(self._mmap.beacon) - 1])),
- ("rate", "Beacon Rate (seconds)",
- RadioSettingValueInteger(10, 9999, self._mmap.rate)),
- ("comment", "Comment", RadioSettingValueString(
- 0, 34, self._mmap.comment, autopad=False, charset=CHARSET)),
- ("status", "Status", RadioSettingValueString(
- 0, 34, self._mmap.status, autopad=False, charset=CHARSET)),
- ]
- for field in fields:
- aprs.append(RadioSetting(*field))
+ MICE_MESSAGE,
+ MICE_MESSAGE[int(self._mmap.multiple['mice_message'])])))
+ except NotImplementedError:
+ pass
+ try:
+ aprs.append(RadioSetting("path1", "Path 1",
+ RadioSettingValueString(0, 6, self._mmap.path1[:6],
+ autopad=True, charset=CHARSET)))
+ aprs.append(RadioSetting("ssid1", "SSID 1",
+ RadioSettingValueInteger(
+ 0, 7, ord(self._mmap.path1[6]) - 0x30)))
+ aprs.append(RadioSetting("path2", "Path 2",
+ RadioSettingValueString(0, 6, self._mmap.path2[:6],
+ autopad=True, charset=CHARSET)))
+ aprs.append(RadioSetting("ssid2", "SSID 2",
+ RadioSettingValueInteger(
+ 0, 7, ord(self._mmap.path2[6]) - 0x30)))
+ aprs.append(RadioSetting("path3", "Path 3",
+ RadioSettingValueString(0, 6, self._mmap.path3[:6],
+ autopad=True, charset=CHARSET)))
+ aprs.append(RadioSetting("ssid3", "SSID 3",
+ RadioSettingValueInteger(
+ 0, 7, ord(self._mmap.path3[6]) - 0x30)))
+ except NotImplementedError:
+ aprs.append(RadioSetting("path", "Path",
+ RadioSettingValueList(PATH, PATH[int(self._mmap.path)])))
+ aprs.append(RadioSetting("table", "Table or Overlay",
+ RadioSettingValueList(TABLE, self._mmap.symbol[1])))
+ aprs.append(RadioSetting("symbol", "Symbol",
+ RadioSettingValueList(SYMBOL, self._mmap.symbol[0])))
+ aprs.append(RadioSetting("beacon", "Beacon Mode",
+ RadioSettingValueList(
+ BEACON, BEACON[int(self._mmap.beacon) - 1])))
+ aprs.append(RadioSetting("rate", "Beacon Rate (seconds)",
+ RadioSettingValueInteger(10, 9999, self._mmap.rate)))
+ aprs.append(RadioSetting("comment", "Comment", RadioSettingValueString(
+ 0, 34, self._mmap.comment, autopad=False, charset=CHARSET)))
+ try:
+ aprs.append(RadioSetting("voltage", "Voltage in comment",
+ RadioSettingValueBoolean(self._mmap.multiple['voltage'])))
+ aprs.append(RadioSetting("temperature", "Temperature in comment",
+ RadioSettingValueBoolean(self._mmap.multiple['temperature'])))
+ except NotImplementedError:
+ pass
+ aprs.append(RadioSetting("status", "Status", RadioSettingValueString(
+ 0, 34, self._mmap.status, autopad=False, charset=CHARSET)))
+ try:
+ aprs.append(RadioSetting("telemetry", "Telemetry",
+ RadioSettingValueBoolean(self._mmap.multiple['telemetry'])))
+ aprs.append(RadioSetting("telemetry_every", "Telemetry every",
+ RadioSettingValueInteger(
+ 1, 99, self._mmap.multiple['telemetry_every'])))
+ aprs.append(RadioSetting("timeslot_enable", "Timeslot",
+ RadioSettingValueBoolean(self._mmap.multiple['telemetry'])))
+ aprs.append(RadioSetting("timeslot", "Timeslot (second of minute)",
+ RadioSettingValueInteger(
+ 0, 59, self._mmap.multiple['timeslot'])))
+ except NotImplementedError:
+ pass
fields = [
("chinamapfix", "China map fix",
@@ -381,7 +558,7 @@
for field in fields:
digipeat.append(RadioSetting(*field))
- sb = decode_smartbeacon(self._mmap.smartbeacon)
+ sb = self._mmap.smartbeacon
fields = [
("lowspeed", "Low Speed"),
("highspeed", "High Speed"),
@@ -397,20 +574,47 @@
RadioSettingValueInteger(0, 9999, sb[field[0]])
))
- fields = [
- ("version", "Version (read-only)",
- RadioSettingValueString(0, 14, self._mmap.version)),
- ("autooff", "Auto off (after 90 minutes)",
- RadioSettingValueBoolean(strbool(self._mmap.autooff))),
- ("beep", "Beep on transmit",
- RadioSettingValueBoolean(strbool(self._mmap.beep))),
- ("highaltitude", "High Altitude",
- RadioSettingValueBoolean(strbool(self._mmap.highaltitude))),
- ("busywait", "Wait for clear channel before transmit",
- RadioSettingValueBoolean(strbool(self._mmap.busywait))),
- ]
- for field in fields:
- system.append(RadioSetting(*field))
+ system.append(RadioSetting("version", "Version (read-only)",
+ RadioSettingValueString(0, 14, self._mmap.version)))
+ system.append(RadioSetting("autooff", "Auto off (after 90 minutes)",
+ RadioSettingValueBoolean(strbool(self._mmap.autooff))))
+ system.append(RadioSetting("beep", "Beep on transmit",
+ RadioSettingValueBoolean(strbool(self._mmap.beep))))
+ system.append(RadioSetting("highaltitude", "High Altitude",
+ RadioSettingValueBoolean(strbool(self._mmap.highaltitude))))
+ system.append(RadioSetting("busywait",
+ "Wait for clear channel before transmit",
+ RadioSettingValueBoolean(strbool(self._mmap.busywait))))
+ try:
+ system.append(RadioSetting("tx_volume", "Transmit volume",
+ RadioSettingValueList(
+ map(str, range(1, 7)), self._mmap.tx_volume)))
+ system.append(RadioSetting("rx_volume", "Receive volume",
+ RadioSettingValueList(
+ map(str, range(1, 10)), self._mmap.rx_volume)))
+ system.append(RadioSetting("squelch", "Squelch",
+ RadioSettingValueList(map(str, range(0, 9)),
+ str(self._mmap.multiple['squelch']))))
+ system.append(RadioSetting("tx_serial_ui_out", "Tx serial UI out",
+ RadioSettingValueBoolean(
+ strbool(self._mmap.tx_serial_ui_out))))
+ system.append(RadioSetting("auto_on", "Auto-on with 5V input",
+ RadioSettingValueBoolean(strbool(self._mmap.auto_on[0]))))
+ system.append(RadioSetting("auto_on_delay",
+ "Auto-off delay after 5V lost (seconds)",
+ RadioSettingValueInteger(0, 9999, int(self._mmap.auto_on[1:]))
+ ))
+ system.append(RadioSetting("tfx", "TF/X",
+ RadioSettingValueBoolean(self._mmap.multiple['tfx'])))
+ system.append(RadioSetting("blueled", "Light blue LED on GPS lock",
+ RadioSettingValueBoolean(self._mmap.multiple['blueled'])))
+ system.append(RadioSetting("dcd", "Blue LED shows software DCD",
+ RadioSettingValueBoolean(self._mmap.multiple['dcd'])))
+ system.append(RadioSetting("tf_card", "TF card format",
+ RadioSettingValueList(
+ TF_CARD, TF_CARD[int(self._mmap.multiple['tf_card'])])))
+ except NotImplementedError:
+ pass
return settings
@@ -433,10 +637,33 @@
elif name == "output":
self._mmap.output = OUTPUT.index(str(setting.value)) + 1
elif name in ('mice', 'autooff', 'beep', 'highaltitude',
- 'busywait'):
+ 'busywait', 'tx_serial_ui_out'):
setattr(self._mmap, name, boolstr(setting.value))
+ elif name == "mice_message":
+ multiple = self._mmap.multiple
+ multiple['mice_message'] = MICE_MESSAGE.index(
+ str(setting.value))
+ self._mmap.multiple = multiple
elif name == "path":
self._mmap.path = PATH.index(str(setting.value))
+ elif name == "path1":
+ self._mmap.path1 = "%s%s" % (
+ setting.value, self._mmap.path1[6])
+ elif name == "ssid1":
+ self._mmap.path1 = "%s%s" % (
+ self._mmap.path1[:6], setting.value)
+ elif name == "path2":
+ self._mmap.path2 = "%s%s" % (
+ setting.value, self._mmap.path2[6])
+ elif name == "ssid2":
+ self._mmap.path2 = "%s%s" % (
+ self._mmap.path2[:6], setting.value)
+ elif name == "path3":
+ self._mmap.path3 = "%s%s" % (
+ setting.value, self._mmap.path3[6])
+ elif name == "ssid3":
+ self._mmap.path3 = "%s%s" % (
+ self._mmap.path3[:6], setting.value)
elif name == "table":
self.set_symbol(table=setting.value)
elif name == "symbol":
@@ -447,8 +674,21 @@
self._mmap.rate = "%04d" % setting.value
elif name == "comment":
self._mmap.comment = str(setting.value)
+ elif name == "voltage":
+ multiple = self._mmap.multiple
+ multiple['voltage'] = int(setting.value)
+ self._mmap.multiple = multiple
+ elif name == "temperature":
+ multiple = self._mmap.multiple
+ multiple['temperature'] = int(setting.value)
+ self._mmap.multiple = multiple
elif name == "status":
self._mmap.status = str(setting.value)
+ elif name in ("telemetry", "telemetry_every",
+ "timeslot_enable", "timeslot", "tfx", "blueled", "dcd"):
+ multiple = self._mmap.multiple
+ multiple[name] = int(setting.value)
+ self._mmap.multiple = multiple
elif name == "chinamapfix":
self.set_chinamapfix(enable=setting.value)
elif name == "chinalat":
@@ -478,7 +718,20 @@
self.set_smartbeacon(turnangle=int(setting.value))
elif name == "turntime":
self.set_smartbeacon(turntime=int(setting.value))
- except Exception, e:
+ elif name in ("tx_volume", "rx_volume", "squelch"):
+ setattr(self._mmap, name, "%1d" % setting.value)
+ elif name == "auto_on":
+ self._mmap.auto_on = "%s%05d" % (
+ bool(setting.value) and '1' or 'i',
+ int(self._mmap.auto_on[1:]))
+ elif name == "auto_on_delay":
+ self._mmap.auto_on = "%s%05d" % (
+ self._mmap.auto_on[0], setting.value)
+ elif name == "tf_card":
+ multiple = self._mmap.multiple
+ multiple['tf_card'] = TF_CARD.index(str(setting.value))
+ self._mmap.multiple = multiple
+ except:
print setting.get_name()
raise
@@ -520,13 +773,13 @@
self._mmap.virtualgps = boolstr(enable) + btext
def set_smartbeacon(self, **kwargs):
- sb = decode_smartbeacon(self._mmap.smartbeacon)
+ sb = self._mmap.smartbeacon
sb.update(kwargs)
if sb['lowspeed'] > sb['highspeed']:
raise InvalidValueError("Low speed must be less than high speed")
if sb['slowrate'] < sb['fastrate']:
raise InvalidValueError("Slow rate must be greater than fast rate")
- self._mmap.smartbeacon = encode_smartbeacon(sb)
+ self._mmap.smartbeacon = sb
@classmethod
def match_model(cls, filedata, filename):
1
0

10 Feb '15
# HG changeset patch
# User K. Arvanitis <kosta(a)alumni.uvic.ca>
# Date 1423527263 28800
# Mon Feb 09 16:14:23 2015 -0800
# Node ID 05977656ceea05b40caca25cd4c0e203483fc559
# Parent f74f533828ed82b85ab08301c8e4e6ae5faf5370
Style/Cleanup changes to woxun radio module
This fixes the style issues with the woxun radio module so that it
will pass the tests. It appears that many of the lines of code were
beyond the allowable 80 char limit.
Bug #2285
diff -r f74f533828ed -r 05977656ceea chirp/wouxun.py
--- a/chirp/wouxun.py Mon Feb 09 12:17:50 2015 -0800
+++ b/chirp/wouxun.py Mon Feb 09 16:14:23 2015 -0800
@@ -58,8 +58,8 @@
_querymodel = ("HiWOUXUN\x02", "PROGUV6X\x02")
- CHARSET = list("0123456789") + [chr(x + ord("A")) for x in range(0, 26)] + \
- list("?+-")
+ CHARSET = list("0123456789") + [chr(x + ord("A")) \
+ for x in range(0, 26)] + list("?+-")
POWER_LEVELS = [chirp_common.PowerLevel("High", watts=5.00),
chirp_common.PowerLevel("Low", watts=1.00)]
@@ -199,7 +199,8 @@
@classmethod
def get_prompts(cls):
rp = chirp_common.RadioPrompts()
- rp.experimental = ('This version of the Wouxun driver allows you to modify the '
+ rp.experimental = \
+ ('This version of the Wouxun driver allows you to modify the '
'frequency range settings of your radio. This has been tested '
'and reports from other users indicate that it is a safe '
'thing to do. However, modifications to this value may have '
@@ -332,63 +333,63 @@
return rf
def get_settings(self):
- freqranges = RadioSettingGroup("freqranges", "Freq Ranges")
+ freq_ranges = RadioSettingGroup("freq_ranges", "Freq Ranges")
fm_preset = RadioSettingGroup("fm_preset", "FM Presets")
- opt = RadioSettingGroup("options", "Options")
- group = RadioSettings(opt, freqranges, fm_preset)
+ cfg_s = RadioSettingGroup("cfg_settings", "Configuration Settings")
+ group = RadioSettings(cfg_s, freq_ranges, fm_preset)
rs = RadioSetting("menu_available", "Menu Available",
- RadioSettingValueBoolean(
+ RadioSettingValueBoolean(
self._memobj.settings.menu_available))
- opt.append(rs)
+ cfg_s.append(rs)
rs = RadioSetting("vhf_rx_start", "1st band RX Lower Limit (MHz)",
- RadioSettingValueInteger(50, 174,
- decode_freq(
- self._memobj.freq_ranges.vhf_rx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(50, 174,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_rx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_rx_stop", "1st band RX Upper Limit (MHz)",
- RadioSettingValueInteger(50, 174,
- decode_freq(
- self._memobj.freq_ranges.vhf_rx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(50, 174,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_rx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_rx_start", "2nd band RX Lower Limit (MHz)",
- RadioSettingValueInteger(136, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_rx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(136, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_rx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_rx_stop", "2nd band RX Upper Limit (MHz)",
- RadioSettingValueInteger(136, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_rx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(136, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_rx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_tx_start", "1st band TX Lower Limit (MHz)",
- RadioSettingValueInteger(50, 174,
- decode_freq(
- self._memobj.freq_ranges.vhf_tx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(50, 174,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_tx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_tx_stop", "1st TX Upper Limit (MHz)",
- RadioSettingValueInteger(50, 174,
- decode_freq(
- self._memobj.freq_ranges.vhf_tx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(50, 174,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_tx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_tx_start", "2st band TX Lower Limit (MHz)",
- RadioSettingValueInteger(136, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_tx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(136, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_tx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_tx_stop", "2st band TX Upper Limit (MHz)",
- RadioSettingValueInteger(136, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_tx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(136, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_tx_stop)))
+ freq_ranges.append(rs)
# tell the decoded ranges to UI
self.valid_freq = [
- ( decode_freq(self._memobj.freq_ranges.vhf_rx_start) * 1000000,
- (decode_freq(self._memobj.freq_ranges.vhf_rx_stop)+1) * 1000000),
- ( decode_freq(self._memobj.freq_ranges.uhf_rx_start) * 1000000,
- (decode_freq(self._memobj.freq_ranges.uhf_rx_stop)+1) * 1000000)]
+ (decode_freq(self._memobj.freq_ranges.vhf_rx_start) * 1000000,
+ (decode_freq(self._memobj.freq_ranges.vhf_rx_stop)+1) * 1000000),
+ (decode_freq(self._memobj.freq_ranges.uhf_rx_start) * 1000000,
+ (decode_freq(self._memobj.freq_ranges.uhf_rx_stop)+1) * 1000000)]
def _filter(name):
filtered = ""
@@ -402,167 +403,168 @@
# add some radio specific settings
options = ["Off", "Welcome", "V bat"]
rs = RadioSetting("ponmsg", "Poweron message",
- RadioSettingValueList(options,
- options[self._memobj.settings.ponmsg]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.ponmsg]))
+ cfg_s.append(rs)
rs = RadioSetting("strings.welcome1", "Power-On Message 1",
- RadioSettingValueString(0, 6,
- _filter(self._memobj.strings.welcome1)))
- opt.append(rs)
+ RadioSettingValueString(0, 6,
+ _filter(self._memobj.strings.welcome1)))
+ cfg_s.append(rs)
rs = RadioSetting("strings.welcome2", "Power-On Message 2",
- RadioSettingValueString(0, 6,
- _filter(self._memobj.strings.welcome2)))
- opt.append(rs)
+ RadioSettingValueString(0, 6,
+ _filter(self._memobj.strings.welcome2)))
+ cfg_s.append(rs)
rs = RadioSetting("strings.single_band", "Single Band Message",
- RadioSettingValueString(0, 6,
- _filter(self._memobj.strings.single_band)))
- opt.append(rs)
+ RadioSettingValueString(0, 6,
+ _filter(self._memobj.strings.single_band)))
+ cfg_s.append(rs)
options = ["Channel", "ch/freq","Name", "VFO"]
rs = RadioSetting("vfo_a_ch_disp", "VFO A Channel disp mode",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_a_ch_disp]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_a_ch_disp]))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_ch_disp", "VFO B Channel disp mode",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_b_ch_disp]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_b_ch_disp]))
+ cfg_s.append(rs)
options = ["5.0", "6.25", "10.0", "12.5", "25.0", "50.0", "100.0"]
rs = RadioSetting("vfo_a_fr_step", "VFO A Frequency Step",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_a_fr_step]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_a_fr_step]))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_fr_step", "VFO B Frequency Step",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_b_fr_step]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_b_fr_step]))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_a_squelch", "VFO A Squelch",
- RadioSettingValueInteger(0, 9,
- self._memobj.settings.vfo_a_squelch))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9,
+ self._memobj.settings.vfo_a_squelch))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_squelch", "VFO B Squelch",
- RadioSettingValueInteger(0, 9,
- self._memobj.settings.vfo_b_squelch))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9,
+ self._memobj.settings.vfo_b_squelch))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_a_cur_chan", "VFO A current channel",
- RadioSettingValueInteger(1, 128,
- self._memobj.settings.vfo_a_cur_chan))
- opt.append(rs)
+ RadioSettingValueInteger(1, 128,
+ self._memobj.settings.vfo_a_cur_chan))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_cur_chan", "VFO B current channel",
- RadioSettingValueInteger(1, 128,
- self._memobj.settings.vfo_b_cur_chan))
- opt.append(rs)
+ RadioSettingValueInteger(1, 128,
+ self._memobj.settings.vfo_b_cur_chan))
+ cfg_s.append(rs)
rs = RadioSetting("priority_chan", "Priority channel",
- RadioSettingValueInteger(0, 199,
- self._memobj.settings.priority_chan))
- opt.append(rs)
+ RadioSettingValueInteger(0, 199,
+ self._memobj.settings.priority_chan))
+ cfg_s.append(rs)
rs = RadioSetting("power_save", "Power save",
- RadioSettingValueBoolean(
- self._memobj.settings.power_save))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.power_save))
+ cfg_s.append(rs)
options = ["Off", "Scan", "Lamp", "SOS", "Radio"]
rs = RadioSetting("pf1_function", "PF1 Function select",
- RadioSettingValueList(options,
- options[self._memobj.settings.pf1_function]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.pf1_function]))
+ cfg_s.append(rs)
options = ["Off", "Begin", "End", "Both"]
rs = RadioSetting("roger_beep", "Roger beep select",
- RadioSettingValueList(options,
- options[self._memobj.settings.roger_beep]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.roger_beep]))
+ cfg_s.append(rs)
options = ["%s" % x for x in range(15, 615, 15)]
rs = RadioSetting("transmit_time_out", "TX Time-out Timer",
- RadioSettingValueList(options,
- options[self._memobj.settings.transmit_time_out]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.transmit_time_out]))
+ cfg_s.append(rs)
rs = RadioSetting("tx_time_out_alert", "TX Time-out Alert",
- RadioSettingValueInteger(0, 10,
- self._memobj.settings.tx_time_out_alert))
- opt.append(rs)
+ RadioSettingValueInteger(0, 10,
+ self._memobj.settings.tx_time_out_alert))
+ cfg_s.append(rs)
rs = RadioSetting("vox", "Vox",
- RadioSettingValueInteger(0, 10,
- self._memobj.settings.vox))
- opt.append(rs)
+ RadioSettingValueInteger(0, 10,
+ self._memobj.settings.vox))
+ cfg_s.append(rs)
options = ["Off", "Chinese", "English"]
rs = RadioSetting("voice", "Voice",
- RadioSettingValueList(options,
- options[self._memobj.settings.voice]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.voice]))
+ cfg_s.append(rs)
rs = RadioSetting("beep", "Beep",
- RadioSettingValueBoolean(self._memobj.settings.beep))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.beep))
+ cfg_s.append(rs)
rs = RadioSetting("ani_id_enable", "ANI id enable",
- RadioSettingValueBoolean(
- self._memobj.settings.ani_id_enable))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.ani_id_enable))
+ cfg_s.append(rs)
rs = RadioSetting("ani_id_tx_delay", "ANI id tx delay",
- RadioSettingValueInteger(0, 30,
- self._memobj.settings.ani_id_tx_delay))
- opt.append(rs)
+ RadioSettingValueInteger(0, 30,
+ self._memobj.settings.ani_id_tx_delay))
+ cfg_s.append(rs)
options = ["Off", "Key", "ANI", "Key+ANI"]
rs = RadioSetting("ani_id_sidetone", "ANI id sidetone",
- RadioSettingValueList(options,
- options[self._memobj.settings.ani_id_sidetone]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.ani_id_sidetone]))
+ cfg_s.append(rs)
options = ["Time", "Carrier", "Search"]
rs = RadioSetting("scan_mode", "Scan mode",
- RadioSettingValueList(options,
- options[self._memobj.settings.scan_mode]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.scan_mode]))
+ cfg_s.append(rs)
rs = RadioSetting("kbd_lock", "Keyboard lock",
- RadioSettingValueBoolean(
- self._memobj.settings.kbd_lock))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.kbd_lock))
+ cfg_s.append(rs)
rs = RadioSetting("auto_lock_kbd", "Auto lock keyboard",
- RadioSettingValueBoolean(
- self._memobj.settings.auto_lock_kbd))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.auto_lock_kbd))
+ cfg_s.append(rs)
rs = RadioSetting("auto_backlight", "Auto backlight",
- RadioSettingValueBoolean(
- self._memobj.settings.auto_backlight))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.auto_backlight))
+ cfg_s.append(rs)
options = ["CH A", "CH B"]
rs = RadioSetting("sos_ch", "SOS CH",
- RadioSettingValueList(options,
- options[self._memobj.settings.sos_ch]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.sos_ch]))
+ cfg_s.append(rs)
rs = RadioSetting("stopwatch", "Stopwatch",
- RadioSettingValueBoolean(
- self._memobj.settings.stopwatch))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.stopwatch))
+ cfg_s.append(rs)
rs = RadioSetting("dual_band_receive", "Dual band receive",
- RadioSettingValueBoolean(
- self._memobj.settings.dual_band_receive))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.dual_band_receive))
+ cfg_s.append(rs)
options = ["VFO A", "VFO B"]
rs = RadioSetting("current_vfo", "Current VFO",
- RadioSettingValueList(options,
- options[self._memobj.settings.current_vfo]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.current_vfo]))
+ cfg_s.append(rs)
options = ["Dual", "Single"]
rs = RadioSetting("sd_available", "Single/Dual Band",
- RadioSettingValueList(options,
- options[self._memobj.settings.sd_available]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.sd_available]))
+ cfg_s.append(rs)
_pwd = self._memobj.settings.mode_password
rs = RadioSetting("mode_password", "Mode password (000000 disabled)",
- RadioSettingValueInteger(0, 9, _pwd[0]),
- RadioSettingValueInteger(0, 9, _pwd[1]),
- RadioSettingValueInteger(0, 9, _pwd[2]),
- RadioSettingValueInteger(0, 9, _pwd[3]),
- RadioSettingValueInteger(0, 9, _pwd[4]),
- RadioSettingValueInteger(0, 9, _pwd[5]))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9, _pwd[0]),
+ RadioSettingValueInteger(0, 9, _pwd[1]),
+ RadioSettingValueInteger(0, 9, _pwd[2]),
+ RadioSettingValueInteger(0, 9, _pwd[3]),
+ RadioSettingValueInteger(0, 9, _pwd[4]),
+ RadioSettingValueInteger(0, 9, _pwd[5]))
+ cfg_s.append(rs)
_pwd = self._memobj.settings.reset_password
rs = RadioSetting("reset_password", "Reset password (000000 disabled)",
- RadioSettingValueInteger(0, 9, _pwd[0]),
- RadioSettingValueInteger(0, 9, _pwd[1]),
- RadioSettingValueInteger(0, 9, _pwd[2]),
- RadioSettingValueInteger(0, 9, _pwd[3]),
- RadioSettingValueInteger(0, 9, _pwd[4]),
- RadioSettingValueInteger(0, 9, _pwd[5]))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9, _pwd[0]),
+ RadioSettingValueInteger(0, 9, _pwd[1]),
+ RadioSettingValueInteger(0, 9, _pwd[2]),
+ RadioSettingValueInteger(0, 9, _pwd[3]),
+ RadioSettingValueInteger(0, 9, _pwd[4]),
+ RadioSettingValueInteger(0, 9, _pwd[5]))
+ cfg_s.append(rs)
dtmfchars = "0123456789 *#ABCD"
_codeobj = self._memobj.settings.ani_id_content
@@ -579,7 +581,7 @@
value.append(0xFF)
obj.ani_id_content = value
rs.set_apply_callback(apply_ani_id, self._memobj.settings)
- opt.append(rs)
+ cfg_s.append(rs)
for i in range(0, 9):
if self._memobj.fm_presets_0[i] != 0xFFFF:
@@ -588,9 +590,10 @@
else:
used = False
preset = 76
- rs = RadioSetting("fm_presets_0_%1i" % i, "Team 1 Location %i" % (i+1),
- RadioSettingValueBoolean(used),
- RadioSettingValueFloat(76, 108, preset, 0.1, 1))
+ rs = RadioSetting("fm_presets_0_%1i" % i,
+ "Team 1 Location %i" % (i+1),
+ RadioSettingValueBoolean(used),
+ RadioSettingValueFloat(76, 108, preset, 0.1, 1))
fm_preset.append(rs)
for i in range(0, 9):
if self._memobj.fm_presets_1[i] != 0xFFFF:
@@ -599,9 +602,10 @@
else:
used = False
preset = 76
- rs = RadioSetting("fm_presets_1_%1i" % i, "Team 2 Location %i" % (i+1),
- RadioSettingValueBoolean(used),
- RadioSettingValueFloat(76, 108, preset, 0.1, 1))
+ rs = RadioSetting("fm_presets_1_%1i" % i,
+ "Team 2 Location %i" % (i+1),
+ RadioSettingValueBoolean(used),
+ RadioSettingValueFloat(76, 108, preset, 0.1, 1))
fm_preset.append(rs)
return group
@@ -609,7 +613,7 @@
def set_settings(self, settings):
for element in settings:
if not isinstance(element, RadioSetting):
- if element.get_name() == "freqranges" :
+ if element.get_name() == "freq_ranges" :
self._set_freq_settings(element)
elif element.get_name() == "fm_preset" :
self._set_fm_preset(element)
@@ -642,7 +646,8 @@
obj = self._memobj
for element in settings:
try:
- (bank, index) = (int(a) for a in element.get_name().split("_")[-2:])
+ (bank, index) = \
+ (int(a) for a in element.get_name().split("_")[-2:])
val = element.value
if val[0].get_value():
value = int(val[1].get_value()*10-760)
@@ -1044,63 +1049,63 @@
return rf
def get_settings(self):
- freqranges = RadioSettingGroup("freqranges", "Freq Ranges")
+ freq_ranges = RadioSettingGroup("freq_ranges", "Freq Ranges")
fm_preset = RadioSettingGroup("fm_preset", "FM Presets")
- opt = RadioSettingGroup("options", "Options")
- group = RadioSettings(opt, freqranges, fm_preset)
+ cfg_s = RadioSettingGroup("cfg_settings", "Configuration Settings")
+ group = RadioSettings(cfg_s, freq_ranges, fm_preset)
rs = RadioSetting("menu_available", "Menu Available",
- RadioSettingValueBoolean(
+ RadioSettingValueBoolean(
self._memobj.settings.menu_available))
- opt.append(rs)
+ cfg_s.append(rs)
rs = RadioSetting("vhf_rx_start", "VHF RX Lower Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.vhf_rx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_rx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_rx_stop", "VHF RX Upper Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.vhf_rx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_rx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_rx_start", "UHF RX Lower Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.uhf_rx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_rx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_rx_stop", "UHF RX Upper Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.uhf_rx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_rx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_tx_start", "VHF TX Lower Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.vhf_tx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_tx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_tx_stop", "VHF TX Upper Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.vhf_tx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_tx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_tx_start", "UHF TX Lower Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.uhf_tx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_tx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_tx_stop", "UHF TX Upper Limit (MHz)",
- RadioSettingValueInteger(1, 1000,
- decode_freq(
- self._memobj.freq_ranges.uhf_tx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(1, 1000,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_tx_stop)))
+ freq_ranges.append(rs)
# tell the decoded ranges to UI
self.valid_freq = [
- ( decode_freq(self._memobj.freq_ranges.vhf_rx_start) * 1000000,
- (decode_freq(self._memobj.freq_ranges.vhf_rx_stop)+1) * 1000000),
- ( decode_freq(self._memobj.freq_ranges.uhf_rx_start) * 1000000,
- (decode_freq(self._memobj.freq_ranges.uhf_rx_stop)+1) * 1000000)]
+ (decode_freq(self._memobj.freq_ranges.vhf_rx_start) * 1000000,
+ (decode_freq(self._memobj.freq_ranges.vhf_rx_stop)+1) * 1000000),
+ (decode_freq(self._memobj.freq_ranges.uhf_rx_start) * 1000000,
+ (decode_freq(self._memobj.freq_ranges.uhf_rx_stop)+1) * 1000000)]
def _filter(name):
filtered = ""
@@ -1114,154 +1119,174 @@
# add some radio specific settings
options = ["Off", "Welcome", "V bat", "N/A(KG-UV6X)"]
rs = RadioSetting("ponmsg", "Poweron message",
- RadioSettingValueList(options,
- options[self._memobj.settings.ponmsg]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.ponmsg]))
+ cfg_s.append(rs)
rs = RadioSetting("strings.welcome1", "Power-On Message 1",
- RadioSettingValueString(0, 6, _filter(self._memobj.strings.welcome1)))
- opt.append(rs)
+ RadioSettingValueString(0, 6,
+ _filter(self._memobj.strings.welcome1)))
+ cfg_s.append(rs)
rs = RadioSetting("strings.welcome2", "Power-On Message 2",
- RadioSettingValueString(0, 6, _filter(self._memobj.strings.welcome2)))
- opt.append(rs)
+ RadioSettingValueString(0, 6,
+ _filter(self._memobj.strings.welcome2)))
+ cfg_s.append(rs)
rs = RadioSetting("strings.single_band", "Single Band Message",
- RadioSettingValueString(0, 6, _filter(self._memobj.strings.single_band)))
- opt.append(rs)
+ RadioSettingValueString(0, 6,
+ _filter(self._memobj.strings.single_band)))
+ cfg_s.append(rs)
options = ["Channel", "ch/freq","Name", "VFO"]
rs = RadioSetting("vfo_a_ch_disp", "VFO A Channel disp mode",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_a_ch_disp]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_a_ch_disp]))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_ch_disp", "VFO B Channel disp mode",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_b_ch_disp]))
- opt.append(rs)
- options = ["2.5", "5.0", "6.25", "10.0", "12.5", "25.0", "50.0", "100.0"]
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_b_ch_disp]))
+ cfg_s.append(rs)
+ options = \
+ ["2.5", "5.0", "6.25", "10.0", "12.5", "25.0", "50.0", "100.0"]
rs = RadioSetting("vfo_a_fr_step", "VFO A Frequency Step",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_a_fr_step]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_a_fr_step]))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_fr_step", "VFO B Frequency Step",
- RadioSettingValueList(options,
- options[self._memobj.settings.vfo_b_fr_step]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_b_fr_step]))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_a_squelch", "VFO A Squelch",
- RadioSettingValueInteger(0, 9, self._memobj.settings.vfo_a_squelch))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9,
+ self._memobj.settings.vfo_a_squelch))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_squelch", "VFO B Squelch",
- RadioSettingValueInteger(0, 9, self._memobj.settings.vfo_b_squelch))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9,
+ self._memobj.settings.vfo_b_squelch))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_a_cur_chan", "VFO A current channel",
- RadioSettingValueInteger(1, 199, self._memobj.settings.vfo_a_cur_chan))
- opt.append(rs)
+ RadioSettingValueInteger(1, 199,
+ self._memobj.settings.vfo_a_cur_chan))
+ cfg_s.append(rs)
rs = RadioSetting("vfo_b_cur_chan", "VFO B current channel",
- RadioSettingValueInteger(1, 199, self._memobj.settings.vfo_b_cur_chan))
- opt.append(rs)
+ RadioSettingValueInteger(1, 199,
+ self._memobj.settings.vfo_b_cur_chan))
+ cfg_s.append(rs)
rs = RadioSetting("priority_chan", "Priority channel",
- RadioSettingValueInteger(0, 199, self._memobj.settings.priority_chan))
- opt.append(rs)
+ RadioSettingValueInteger(0, 199,
+ self._memobj.settings.priority_chan))
+ cfg_s.append(rs)
rs = RadioSetting("power_save", "Power save",
- RadioSettingValueBoolean(self._memobj.settings.power_save))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.power_save))
+ cfg_s.append(rs)
options = ["Off", "Scan", "Lamp", "SOS", "Radio"]
rs = RadioSetting("pf1_function", "PF1 Function select",
- RadioSettingValueList(options,
- options[self._memobj.settings.pf1_function]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.pf1_function]))
+ cfg_s.append(rs)
options = ["Off", "Radio", "fr/ch", "Rpt", "Stopwatch", "Lamp", "SOS"]
rs = RadioSetting("pf2_function", "PF2 Function select",
- RadioSettingValueList(options,
- options[self._memobj.settings.pf2_function]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.pf2_function]))
+ cfg_s.append(rs)
options = ["Off", "Begin", "End", "Both"]
rs = RadioSetting("roger_beep", "Roger beep select",
- RadioSettingValueList(options,
- options[self._memobj.settings.roger_beep]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.roger_beep]))
+ cfg_s.append(rs)
options = ["%s" % x for x in range(15, 615, 15)]
rs = RadioSetting("transmit_time_out", "TX Time-out Timer",
- RadioSettingValueList(options,
- options[self._memobj.settings.transmit_time_out]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.transmit_time_out]))
+ cfg_s.append(rs)
rs = RadioSetting("tx_time_out_alert", "TX Time-out Alert",
- RadioSettingValueInteger(0, 10, self._memobj.settings.tx_time_out_alert))
- opt.append(rs)
+ RadioSettingValueInteger(0, 10,
+ self._memobj.settings.tx_time_out_alert))
+ cfg_s.append(rs)
rs = RadioSetting("vox", "Vox",
- RadioSettingValueInteger(0, 10, self._memobj.settings.vox))
- opt.append(rs)
+ RadioSettingValueInteger(0, 10,
+ self._memobj.settings.vox))
+ cfg_s.append(rs)
options = ["Off", "Chinese", "English"]
rs = RadioSetting("voice", "Voice",
- RadioSettingValueList(options,
- options[self._memobj.settings.voice]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.voice]))
+ cfg_s.append(rs)
rs = RadioSetting("beep", "Beep",
- RadioSettingValueBoolean(self._memobj.settings.beep))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.beep))
+ cfg_s.append(rs)
rs = RadioSetting("ani_id_enable", "ANI id enable",
- RadioSettingValueBoolean(self._memobj.settings.ani_id_enable))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.ani_id_enable))
+ cfg_s.append(rs)
rs = RadioSetting("ani_id_tx_delay", "ANI id tx delay",
- RadioSettingValueInteger(0, 30, self._memobj.settings.ani_id_tx_delay))
- opt.append(rs)
+ RadioSettingValueInteger(0, 30,
+ self._memobj.settings.ani_id_tx_delay))
+ cfg_s.append(rs)
options = ["Off", "Key", "ANI", "Key+ANI"]
rs = RadioSetting("ani_id_sidetone", "ANI id sidetone",
- RadioSettingValueList(options,
- options[self._memobj.settings.ani_id_sidetone]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.ani_id_sidetone]))
+ cfg_s.append(rs)
options = ["Time", "Carrier", "Search"]
rs = RadioSetting("scan_mode", "Scan mode",
- RadioSettingValueList(options,
- options[self._memobj.settings.scan_mode]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.scan_mode]))
+ cfg_s.append(rs)
rs = RadioSetting("kbd_lock", "Keyboard lock",
- RadioSettingValueBoolean(self._memobj.settings.kbd_lock))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.kbd_lock))
+ cfg_s.append(rs)
rs = RadioSetting("auto_lock_kbd", "Auto lock keyboard",
- RadioSettingValueBoolean(self._memobj.settings.auto_lock_kbd))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.auto_lock_kbd))
+ cfg_s.append(rs)
rs = RadioSetting("auto_backlight", "Auto backlight",
- RadioSettingValueBoolean(self._memobj.settings.auto_backlight))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.auto_backlight))
+ cfg_s.append(rs)
options = ["CH A", "CH B"]
rs = RadioSetting("sos_ch", "SOS CH",
- RadioSettingValueList(options,
- options[self._memobj.settings.sos_ch]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.sos_ch]))
+ cfg_s.append(rs)
rs = RadioSetting("stopwatch", "Stopwatch",
- RadioSettingValueBoolean(self._memobj.settings.stopwatch))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.stopwatch))
+ cfg_s.append(rs)
rs = RadioSetting("dual_band_receive", "Dual band receive",
- RadioSettingValueBoolean(self._memobj.settings.dual_band_receive))
- opt.append(rs)
+ RadioSettingValueBoolean(
+ self._memobj.settings.dual_band_receive))
+ cfg_s.append(rs)
options = ["VFO A", "VFO B"]
rs = RadioSetting("current_vfo", "Current VFO",
- RadioSettingValueList(options,
- options[self._memobj.settings.current_vfo]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.current_vfo]))
+ cfg_s.append(rs)
options = ["Dual", "Single"]
rs = RadioSetting("sd_available", "Single/Dual Band",
- RadioSettingValueList(options,
- options[self._memobj.settings.sd_available]))
- opt.append(rs)
+ RadioSettingValueList(options,
+ options[self._memobj.settings.sd_available]))
+ cfg_s.append(rs)
_pwd = self._memobj.settings.mode_password
rs = RadioSetting("mode_password", "Mode password (000000 disabled)",
- RadioSettingValueInteger(0, 9, _pwd[0]),
- RadioSettingValueInteger(0, 9, _pwd[1]),
- RadioSettingValueInteger(0, 9, _pwd[2]),
- RadioSettingValueInteger(0, 9, _pwd[3]),
- RadioSettingValueInteger(0, 9, _pwd[4]),
- RadioSettingValueInteger(0, 9, _pwd[5]))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9, _pwd[0]),
+ RadioSettingValueInteger(0, 9, _pwd[1]),
+ RadioSettingValueInteger(0, 9, _pwd[2]),
+ RadioSettingValueInteger(0, 9, _pwd[3]),
+ RadioSettingValueInteger(0, 9, _pwd[4]),
+ RadioSettingValueInteger(0, 9, _pwd[5]))
+ cfg_s.append(rs)
_pwd = self._memobj.settings.reset_password
rs = RadioSetting("reset_password", "Reset password (000000 disabled)",
- RadioSettingValueInteger(0, 9, _pwd[0]),
- RadioSettingValueInteger(0, 9, _pwd[1]),
- RadioSettingValueInteger(0, 9, _pwd[2]),
- RadioSettingValueInteger(0, 9, _pwd[3]),
- RadioSettingValueInteger(0, 9, _pwd[4]),
- RadioSettingValueInteger(0, 9, _pwd[5]))
- opt.append(rs)
+ RadioSettingValueInteger(0, 9, _pwd[0]),
+ RadioSettingValueInteger(0, 9, _pwd[1]),
+ RadioSettingValueInteger(0, 9, _pwd[2]),
+ RadioSettingValueInteger(0, 9, _pwd[3]),
+ RadioSettingValueInteger(0, 9, _pwd[4]),
+ RadioSettingValueInteger(0, 9, _pwd[5]))
+ cfg_s.append(rs)
dtmfchars = "0123456789 *#ABCD"
_codeobj = self._memobj.settings.ani_id_content
@@ -1278,7 +1303,7 @@
value.append(0xFF)
obj.ani_id_content = value
rs.set_apply_callback(apply_ani_id, self._memobj.settings)
- opt.append(rs)
+ cfg_s.append(rs)
for i in range(0, 9):
if self._memobj.fm_presets_0[i] != 0xFFFF:
@@ -1287,9 +1312,10 @@
else:
used = False
preset = 76
- rs = RadioSetting("fm_presets_0_%1i" % i, "Team 1 Location %i" % (i+1),
- RadioSettingValueBoolean(used),
- RadioSettingValueFloat(76, 108, preset, 0.1, 1))
+ rs = RadioSetting("fm_presets_0_%1i" % i,
+ "Team 1 Location %i" % (i+1),
+ RadioSettingValueBoolean(used),
+ RadioSettingValueFloat(76, 108, preset, 0.1, 1))
fm_preset.append(rs)
for i in range(0, 9):
if self._memobj.fm_presets_1[i] != 0xFFFF:
@@ -1298,9 +1324,10 @@
else:
used = False
preset = 76
- rs = RadioSetting("fm_presets_1_%1i" % i, "Team 2 Location %i" % (i+1),
- RadioSettingValueBoolean(used),
- RadioSettingValueFloat(76, 108, preset, 0.1, 1))
+ rs = RadioSetting("fm_presets_1_%1i" % i,
+ "Team 2 Location %i" % (i+1),
+ RadioSettingValueBoolean(used),
+ RadioSettingValueFloat(76, 108, preset, 0.1, 1))
fm_preset.append(rs)
return group
@@ -1308,7 +1335,7 @@
def set_settings(self, settings):
for element in settings:
if not isinstance(element, RadioSetting):
- if element.get_name() == "freqranges" :
+ if element.get_name() == "freq_ranges" :
self._set_freq_settings(element)
elif element.get_name() == "fm_preset" :
self._set_fm_preset(element)
@@ -1340,7 +1367,8 @@
obj = self._memobj
for element in settings:
try:
- (bank, index) = (int(a) for a in element.get_name().split("_")[-2:])
+ (bank, index) = \
+ (int(a) for a in element.get_name().split("_")[-2:])
val = element.value
if val[0].get_value():
value = int(val[1].get_value()*10-760)
@@ -1426,54 +1454,55 @@
return rf
def get_settings(self):
- freqranges = RadioSettingGroup("freqranges", "Freq Ranges (read only)")
- group = RadioSettings(freqranges)
+ freq_ranges = RadioSettingGroup("freq_ranges",
+ "Freq Ranges (read only)")
+ group = RadioSettings(freq_ranges)
rs = RadioSetting("vhf_rx_start", "vhf rx start",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.vhf_rx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_rx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_rx_stop", "vhf rx stop",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.vhf_rx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_rx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_rx_start", "uhf rx start",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_rx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_rx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_rx_stop", "uhf rx stop",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_rx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_rx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_tx_start", "vhf tx start",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.vhf_tx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_tx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("vhf_tx_stop", "vhf tx stop",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.vhf_tx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.vhf_tx_stop)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_tx_start", "uhf tx start",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_tx_start)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_tx_start)))
+ freq_ranges.append(rs)
rs = RadioSetting("uhf_tx_stop", "uhf tx stop",
- RadioSettingValueInteger(66, 520,
- decode_freq(
- self._memobj.freq_ranges.uhf_tx_stop)))
- freqranges.append(rs)
+ RadioSettingValueInteger(66, 520,
+ decode_freq(
+ self._memobj.freq_ranges.uhf_tx_stop)))
+ freq_ranges.append(rs)
# tell the decoded ranges to UI
self.valid_freq = [
- ( decode_freq(self._memobj.freq_ranges.vhf_rx_start) * 1000000,
- (decode_freq(self._memobj.freq_ranges.vhf_rx_stop)+1) * 1000000)]
+ (decode_freq(self._memobj.freq_ranges.vhf_rx_start) * 1000000,
+ (decode_freq(self._memobj.freq_ranges.vhf_rx_stop)+1) * 1000000)]
return group
1
0