Developers
Threads by month
- ----- 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
October 2016
- 13 participants
- 33 discussions
Windows XP presents a problem. I don’t think Chocolatey or even Ketarin supports it. However, according to https://stackoverflow.com/questions/39386471/can-i-build-chocolatey-package… it is possible to compile using Mono on Linux. I don’t know how much you are willing to alter your Linux installations, but all the script would really need to do is edit values contained in two text files, commit those changes in Git, run the chocolatey package command, and push the package.
-Philip Arola
-KG7VAM
-philiparola(a)hotmail.com<mailto:philiparola@hotmail.com>
From: Dan Smith via chirp_devel<mailto:chirp_devel@intrepid.danplanet.com>
Sent: Saturday, October 8, 2016 4:22 PM
To: chirp_devel(a)intrepid.danplanet.com<mailto:chirp_devel@intrepid.danplanet.com>
Subject: Re: [chirp_devel] Windows Server availability
> Excellent. I will try to get a working script and test it across a few
> versions. I think in your case, simply using the PowerShell script is
> the better choice, considering Ketarin is meant to be run continuously
> as a monitor.
Note that the builds are made on WinXP for maximum backwards
compatibility. I've never used powershell, but be aware that the build
environment is old for a reason.
Also, the whole build process is scripted over ssh with cygwin bash in
the windows image. So whatever I run has to be callable from that
environment.
--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
2
1
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Add test image for Retevis RT21 from Jim
#4139
[Jim Unroe <rock.unroe(a)gmail.com>] [New Model] Retevis RT21
This patch adds support for the Retevis RT21
#4139
[Michael Wagner <michael.wagner(a)gmx.at>] [btech] Resetting mem-extra-settings only when editing previously empty memory. Part of fix for #4121
Attempt to fix #4121 for the driver btech.py following Dan's proposal in http://intrepid.danplanet.com/pipermail/chirp_devel/2016-October/004298.html .
73,
Michael Wagner, OE4AMW
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 647ced1e7aeb6d228f3ab408ff1c343c93b843dd
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune 647ced1e7aeb6d228f3ab408ff1c343c93b843dd
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson8688692130106207700.sh
[workspace] $ /bin/sh -xe /tmp/hudson968330532384733064.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.052s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:522:45: W291 trailing whitespace
./chirp/drivers/ft60.py:523:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:524:13: E301 expected 1 blank line, found 0
./chirp/drivers/ft817.py:587:41: E128 continuation line under-indented for visual indent
./chirp/drivers/h777.py:405:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:406:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:407:26: E703 statement ends with a semicolon
./chirp/drivers/kguv8d.py:684:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:688:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:691:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:692:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:695:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:696:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:699:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:702:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:705:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:708:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:711:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:714:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:717:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:720:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:721:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:724:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:725:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:728:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:731:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:732:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:735:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:736:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:739:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:740:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:743:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:744:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:747:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:750:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:753:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:754:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:757:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:758:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:761:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:764:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:767:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:768:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:771:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:772:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:775:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:776:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:779:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:782:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:783:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:786:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:789:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:790:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:793:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:794:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:810:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:811:31: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:814:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:817:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:821:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:827:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:832:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:836:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:840:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:844:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:848:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:893:25: E128 continuation line under-indented for visual indent
./chirp/drivers/leixen.py:427:80: E501 line too long (82 > 79 characters)
./chirp/drivers/leixen.py:955:80: E501 line too long (87 > 79 characters)
./chirp/drivers/thd72.py:188:1: E302 expected 2 blank lines, found 1
./chirp/drivers/thd72.py:203:23: E201 whitespace after '['
./chirp/drivers/thd72.py:203:80: E501 line too long (171 > 79 characters)
./chirp/drivers/thd72.py:203:170: E202 whitespace before ']'
./chirp/drivers/thd72.py:204:13: E201 whitespace after '['
./chirp/drivers/thd72.py:204:61: E202 whitespace before ']'
./chirp/drivers/thd72.py:205:23: E201 whitespace after '['
./chirp/drivers/thd72.py:205:74: E202 whitespace before ']'
./chirp/drivers/thd72.py:206:18: E201 whitespace after '['
./chirp/drivers/thd72.py:206:65: E202 whitespace before ']'
./chirp/drivers/thd72.py:595:1: W293 blank line contains whitespace
./chirp/drivers/thd72.py:603:1: W293 blank line contains whitespace
./chirp/settings.py:245:80: E501 line too long (81 > 79 characters)
./chirp/settings.py:248:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:647:13: E128 continuation line under-indented for visual indent
./chirp/ui/mainapp.py:661:5: E303 too many blank lines (2)
./chirp/ui/mainapp.py:1374:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:1378:80: E501 line too long (80 > 79 characters)
./chirp/ui/mainapp.py:1663:80: E501 line too long (85 > 79 characters)
real 0m7.587s
user 0m7.480s
sys 0m0.028s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-10-17 07:18:00,703] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-10-17 07:18:00,739] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-10-17 07:18:00,740] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-10-17 07:18:00,741] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-10-17 07:18:00,742] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-10-17 07:18:00,743] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-10-17 07:18:00,743] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-10-17 07:18:00,743] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-10-17 07:18:00,744] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-10-17 07:18:00,744] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-10-17 07:18:00,745] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-10-17 07:18:00,746] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-10-17 07:18:00,747] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-10-17 07:18:00,748] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-10-17 07:18:00,749] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-10-17 07:18:00,749] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-10-17 07:18:00,749] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-10-17 07:18:00,750] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-10-17 07:18:00,751] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-10-17 07:18:00,752] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-10-17 07:18:00,753] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-10-17 07:18:00,761] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-10-17 07:18:00,761] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-10-17 07:18:00,764] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-10-17 07:18:00,764] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-10-17 07:18:00,764] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-10-17 07:18:00,765] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-10-17 07:18:00,766] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-10-17 07:18:00,767] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-10-17 07:18:00,768] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-10-17 07:18:00,769] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-10-17 07:18:00,770] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-10-17 07:18:00,771] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-10-17 07:18:00,772] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-10-17 07:18:00,773] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-10-17 07:18:00,773] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-10-17 07:18:00,774] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-10-17 07:18:00,775] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-10-17 07:18:00,776] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-10-17 07:18:00,777] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-10-17 07:18:00,778] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-10-17 07:18:00,779] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-10-17 07:18:00,780] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-10-17 07:18:00,781] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-10-17 07:18:00,781] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-10-17 07:18:00,781] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-10-17 07:18:00,782] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-10-17 07:18:00,782] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-10-17 07:18:00,782] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-10-17 07:18:00,783] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-10-17 07:18:00,783] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-10-17 07:18:00,783] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-10-17 07:18:00,784] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-10-17 07:18:00,785] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_lcfAWa.img /tmp/Alinco_DJ175_q6Cjra.img /tmp/Alinco_DJ596_LTzSWe.img /tmp/Alinco_DJ596_s4Y_jX.img /tmp/Alinco_DR235T_LlFzy4.img /tmp/Alinco_DR235T_fr109Q.img /tmp/AnyTone_OBLTR-8R_mj3QJA.img /tmp/AnyTone_OBLTR-8R_sx5nso.img /tmp/AnyTone_TERMN-8R__G85Q6.img /tmp/AnyTone_TERMN-8R_vWDBHE.img /tmp/BTECH_GMRS-V1_P5usVZ.img /tmp/BTECH_GMRS-V1_jkkKYI.img /tmp/BTECH_UV-2501+220_pkI0fZ.img /tmp/BTECH_UV-2501+220_xYAD1U.img /tmp/BTECH_UV-5001_52IG3p.img /tmp/BTECH_UV-5001_cJvXdI.img /tmp/BTECH_UV-50X3_JgvqCE.img /tmp/BTECH_UV-50X3_SRenNT.img /tmp/BTECH_UV-50X3_SYewZ_.img /tmp/BTECH_UV-50X3_iyXOfj.img /tmp/BTECH_UV-50X3_xBWbzi.img /tmp/BTECH_UV-50X3_zYV56d.img /tmp/BTECH_UV-5X3_P3QfXR.img /tmp/BTECH_UV-5X3_jZyiXO.img /tmp/Baofeng_BF-888_F6hB3A.img /tmp/Baofeng_BF-888_vP0IUy.img /tmp/Baofeng_F-11_R6vQeW.img /tmp/Baofeng_F-11_RevSZu.img /tmp/Baofeng_UV-3R_PgEdeG.img /tmp/Baofeng_UV-3R_TAl_wB.img /tmp/Baofeng_UV-5R_DTozIO.img /tmp/Baofeng_UV-5R_YNm030.img /tmp/Baofeng_UV-6R_GuqOnz.img /tmp/Baofeng_UV-6R_QnB_mu.img /tmp/Baofeng_UV-B5_2wBjtj.img /tmp/Baofeng_UV-B5_wPGg7F.img /tmp/Baojie_BJ-9900_7BnApZ.img /tmp/Baojie_BJ-9900_7MU6fY.img /tmp/Baojie_BJ-9900_FyVPqX.img /tmp/Baojie_BJ-9900_LEvKj7.img /tmp/Baojie_BJ-9900_QOTwct.img /tmp/Baojie_BJ-9900_SzaUg6.img /tmp/Feidaxin_FD-268A_6EDPm3.img /tmp/Feidaxin_FD-268A_M1HMKs.img /tmp/Feidaxin_FD-268B_M0O9RD.img /tmp/Feidaxin_FD-268B_ly9_E4.img /tmp/Feidaxin_FD-288B_J0SUZi.img /tmp/Feidaxin_FD-288B_l6aeal.img /tmp/Icom_IC-208H_3bgirO.img /tmp/Icom_IC-208H_DQ5yeU.img /tmp/Icom_IC-2100H_2PmRJH.img /tmp/Icom_IC-2100H_gyxgQq.img /tmp/Icom_IC-2200H_7hhg2m.img /tmp/Icom_IC-2200H_VvO4oZ.img /tmp/Icom_IC-2720H_JwFBFS.img /tmp/Icom_IC-2720H_p3FUxW.img /tmp/Icom_IC-2820H_3fvLIN.img /tmp/Icom_IC-2820H_a1WBFA.img /tmp/Icom_IC-Q7A_62fhOY.img /tmp/Icom_IC-Q7A_7iu7lk.img /tmp/Icom_IC-T70_gOYeRb.img /tmp/Icom_IC-T70_uJcL6X.img /tmp/Icom_IC-T7H_Bxwygd.img /tmp/Icom_IC-T7H_wNBq7p.img /tmp/Icom_IC-T8A_DU2b9z.img /tmp/Icom_IC-T8A_vihHv_.img /tmp/Icom_IC-V82_U82_Y4dnuQ.img /tmp/Icom_IC-V82_U82_epqGa1.img /tmp/Icom_IC-W32A_70O_HS.img /tmp/Icom_IC-W32A_9qli4i.img /tmp/Icom_IC-W32A_FTE73i.img /tmp/Icom_IC-W32A_VtB4qi.img /tmp/Icom_IC-W32A_dAS2W1.img /tmp/Icom_IC-W32A_n1IPFk.img /tmp/Icom_IC-W32E_22gZoF.img /tmp/Icom_IC-W32E_2Gm3z2.img /tmp/Icom_IC-W32E_WhTckF.img /tmp/Icom_IC-W32E_YO3BlZ.img /tmp/Icom_IC-W32E_k0R2aQ.img /tmp/Icom_IC-W32E_mZxx4F.img /tmp/Icom_ID-31A_DRgjhR.img /tmp/Icom_ID-31A_ZjkPRH.img /tmp/Icom_ID-51 Plus_1wWRtx.img /tmp/Icom_ID-51 Plus_P512HY.img /tmp/Icom_ID-51_K6qrGG.img /tmp/Icom_ID-51_iGjZkl.img /tmp/Icom_ID-800H_cq7w3K.img /tmp/Icom_ID-800H_z2Y4dA.img /tmp/Icom_ID-880H_KzAYan.img /tmp/Icom_ID-880H_wCE8H3.img /tmp/Jetstream_JT220M_Hmotun.img /tmp/Jetstream_JT220M_ZfheMP.img /tmp/Jetstream_JT270M_ISKacn.img /tmp/Jetstream_JT270M_fYrATV.img /tmp/KYD_IP-620_EKBfrV.img /tmp/KYD_IP-620_I7PiVK.img /tmp/Kenwood_TH-D72 (clone mode)_SaElR8.img /tmp/Kenwood_TH-D72 (clone mode)_r5FJMT.img /tmp/Kenwood_TK-272G_V1OJZe.img /tmp/Kenwood_TK-272G_tjpeUW.img /tmp/Kenwood_TK-760G_Mt4eWX.img /tmp/Kenwood_TK-760G_oJPnc6.img /tmp/Kenwood_TK-8102_31H4X5.img /tmp/Kenwood_TK-8102_J2TqUL.img /tmp/LUITON_LT-725UV_5wbJi7.img /tmp/LUITON_LT-725UV_CUeBB0.img /tmp/LUITON_LT-725UV_VHLqm8.img /tmp/LUITON_LT-725UV_kyDWDY.img /tmp/LUITON_LT-725UV_nbSDyB.img /tmp/LUITON_LT-725UV_sJX0VN.img /tmp/Leixen_VV-898S_PdbjPV.img /tmp/Leixen_VV-898S_U13doB.img /tmp/Leixen_VV-898_AlQPk2.img /tmp/Leixen_VV-898_kGzO7W.img /tmp/Polmar_DB-50M_XbBpxW.img /tmp/Polmar_DB-50M_uMlYhM.img /tmp/Puxing_PX-2R_4XZyYu.img /tmp/Puxing_PX-2R_rB69Z6.img /tmp/Puxing_PX-777_9rXd_A.img /tmp/Puxing_PX-777_k_5HtA.img /tmp/Puxing_PX-888K_4wNx_R.img /tmp/Puxing_PX-888K_abEac1.img /tmp/Retevis_RT21_YcjsDk.img /tmp/TYT_TH-7800_9YMgO1.img /tmp/TYT_TH-7800_EzBcgm.img /tmp/TYT_TH-9800_TbcWLh.img /tmp/TYT_TH-9800_voy8BY.img /tmp/TYT_TH-UV3R-25_8i9v01.img /tmp/TYT_TH-UV3R-25_hbjgS2.img /tmp/TYT_TH-UV3R_Gxyn1v.img /tmp/TYT_TH-UV3R_tpxjyD.img /tmp/TYT_TH-UVF1_lpbglr.img /tmp/TYT_TH-UVF1_vIGzd_.img /tmp/TYT_TH9000_144_irzK3Q.img /tmp/TYT_TH9000_144_k2ksRu.img /tmp/Vertex Standard_VXA-700_GoLI2p.img /tmp/Vertex Standard_VXA-700_uEpowF.img /tmp/WACCOM_MINI-8900_uPNC5j.img /tmp/WACCOM_MINI-8900_wauRG4.img /tmp/Wouxun_KG-816_9apwop.img /tmp/Wouxun_KG-816_fzpoVi.img /tmp/Wouxun_KG-818_twjYBJ.img /tmp/Wouxun_KG-818_u6CLC8.img /tmp/Wouxun_KG-UV6_CR_O8V.img /tmp/Wouxun_KG-UV6_qTIPQG.img /tmp/Wouxun_KG-UV8D_6L6qdZ.img /tmp/Wouxun_KG-UV8D_H6ORYX.img /tmp/Wouxun_KG-UVD1P_fDYsMW.img /tmp/Wouxun_KG-UVD1P_hyUmzN.img /tmp/Yaesu_FT-1802M_T1nHVZ.img /tmp/Yaesu_FT-1802M_nxI20q.img /tmp/Yaesu_FT-1D_ExOo8H.img /tmp/Yaesu_FT-1D_zTFaJk.img /tmp/Yaesu_FT-2800M_ZJh5Gi.img /tmp/Yaesu_FT-2800M_zBwn8g.img /tmp/Yaesu_FT-2900R_1900R_WiK2v3.img /tmp/Yaesu_FT-2900R_1900R_YqPbnz.img /tmp/Yaesu_FT-50_4g3f8u.img /tmp/Yaesu_FT-50_ow2Y9h.img /tmp/Yaesu_FT-60_RIbGWR.img /tmp/Yaesu_FT-60_UtZzqi.img /tmp/Yaesu_FT-7800_7900_6Wnl8P.img /tmp/Yaesu_FT-7800_7900_WjWw1a.img /tmp/Yaesu_FT-817ND (US)_OK9AB1.img /tmp/Yaesu_FT-817ND (US)_klPquw.img /tmp/Yaesu_FT-817ND_iGGUs9.img /tmp/Yaesu_FT-817ND_u7nukj.img /tmp/Yaesu_FT-817_ADoQtu.img /tmp/Yaesu_FT-817_GGmNoq.img /tmp/Yaesu_FT-857_897 (US)_k0SHmZ.img /tmp/Yaesu_FT-857_897 (US)_qDcylm.img /tmp/Yaesu_FT-857_897_7xIjBM.img /tmp/Yaesu_FT-857_897_i0zKky.img /tmp/Yaesu_FT-8800_GyEcpA.img /tmp/Yaesu_FT-8800_HiXrgx.img /tmp/Yaesu_FT-8800_YMQoLk.img /tmp/Yaesu_FT-8800_jlk3O9.img /tmp/Yaesu_FT-8800_lKRdwj.img /tmp/Yaesu_FT-8800_pHKLa9.img /tmp/Yaesu_FT-8900_1YnOqC.img /tmp/Yaesu_FT-8900_K2n40Q.img /tmp/Yaesu_FTM-350_4KofwJ.img /tmp/Yaesu_FTM-350_MxmPya.img /tmp/Yaesu_FTM-350_cbbgDE.img /tmp/Yaesu_FTM-350_d4OAC0.img /tmp/Yaesu_FTM-350_ilzsft.img /tmp/Yaesu_FTM-350_sPSb9M.img /tmp/Yaesu_VX-2_5Mz__z.img /tmp/Yaesu_VX-2_lcROmf.img /tmp/Yaesu_VX-3_CaQtxo.img /tmp/Yaesu_VX-3_ZK2kQf.img /tmp/Yaesu_VX-5_qUauvY.img /tmp/Yaesu_VX-5_y1s9x4.img /tmp/Yaesu_VX-6_8xK12K.img /tmp/Yaesu_VX-6_YJ9lEn.img /tmp/Yaesu_VX-7_Atpcs8.img /tmp/Yaesu_VX-7_m36CuM.img /tmp/Yaesu_VX-8_2zuBCJ.img /tmp/Yaesu_VX-8_TGri1G.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1476660374 14400
# Node ID 8188a3acfb7a437c5a03244c5a340f97d2af620e
# Parent 39fd7a532cf2b43d734ba146e7bce3fbcfbc8c83
[New Model] Retevis RT21
This patch adds support for the Retevis RT21
#4139
diff -r 39fd7a532cf2 -r 8188a3acfb7a chirp/drivers/retevis_rt21.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/chirp/drivers/retevis_rt21.py Sun Oct 16 19:26:14 2016 -0400
@@ -0,0 +1,526 @@
+# Copyright 2016 Jim Unroe <rock.unroe(a)gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import time
+import os
+import struct
+import logging
+
+from chirp import chirp_common, directory, memmap
+from chirp import bitwise, errors, util
+from chirp.settings import RadioSetting, RadioSettingGroup, \
+ RadioSettingValueInteger, RadioSettingValueList, \
+ RadioSettingValueBoolean, RadioSettings
+
+LOG = logging.getLogger(__name__)
+
+MEM_FORMAT = """
+#seekto 0x0010;
+struct {
+ lbcd rxfreq[4];
+ lbcd txfreq[4];
+ ul16 rx_tone;
+ ul16 tx_tone;
+ u8 unknown1:3,
+ bcl:2, // Busy Lock
+ unknown2:3;
+ u8 unknown3:2,
+ highpower:1, // Power Level
+ wide:1, // Bandwidth
+ unknown4:4;
+ u8 scramble_type:4,
+ unknown5:4;
+ u8 unknown6:4,
+ scramble_type2:4;
+} memory[16];
+
+#seekto 0x012C;
+struct {
+ u8 use_scramble; // Scramble Enable
+ u8 unknown1[2];
+ u8 voice; // Voice Annunciation
+ u8 tot; // Time-out Timer
+ u8 totalert; // Time-out Timer Pre-alert
+ u8 unknown2[2];
+ u8 squelch; // Squelch Level
+ u8 save; // Battery Saver
+ u8 unknown3[3];
+ u8 use_vox; // VOX Enable
+ u8 vox; // VOX Gain
+} settings;
+
+#seekto 0x017E;
+u8 skipflags[2]; // SCAN_ADD
+"""
+
+CMD_ACK = "\x06"
+BLOCK_SIZE = 0x10
+
+RT21_POWER_LEVELS = [chirp_common.PowerLevel("Low", watts=1.00),
+ chirp_common.PowerLevel("High", watts=2.50)]
+
+
+RT21_DTCS = sorted(chirp_common.DTCS_CODES +
+ [17, 50, 55, 135, 217, 254, 305, 645, 765])
+
+BCL_LIST = ["Off", "Carrier", "QT/DQT"]
+SCRAMBLE_LIST = ["Scramble 1", "Scramble 2", "Scramble 3", "Scramble 4",
+ "Scramble 5", "Scramble 6", "Scramble 7", "Scramble 8"]
+TIMEOUTTIMER_LIST = ["%s seconds" % x for x in range(15, 615, 15)]
+TOTALERT_LIST = ["Off"] + ["%s seconds" % x for x in range(1, 11)]
+VOICE_LIST = ["Off", "Chinese", "English"]
+VOX_LIST = ["OFF"] + ["%s" % x for x in range(1, 17)]
+
+SETTING_LISTS = {
+ "bcl": BCL_LIST,
+ "scramble": SCRAMBLE_LIST,
+ "tot": TIMEOUTTIMER_LIST,
+ "totalert": TOTALERT_LIST,
+ "voice": VOICE_LIST,
+ "vox": VOX_LIST,
+ }
+
+
+def _rt21_enter_programming_mode(radio):
+ serial = radio.pipe
+
+ try:
+ serial.write("PRMZUNE")
+ ack = serial.read(1)
+ except:
+ raise errors.RadioError("Error communicating with radio")
+
+ if not ack:
+ raise errors.RadioError("No response from radio")
+ elif ack != CMD_ACK:
+ raise errors.RadioError("Radio refused to enter programming mode")
+
+ try:
+ serial.write("\x02")
+ ident = serial.read(8)
+ except:
+ raise errors.RadioError("Error communicating with radio")
+
+ if not ident.startswith("P3207"):
+ LOG.debug(util.hexprint(ident))
+ raise errors.RadioError("Radio returned unknown identification string")
+
+ try:
+ serial.write(CMD_ACK)
+ ack = serial.read(1)
+ except:
+ raise errors.RadioError("Error communicating with radio")
+
+ if ack != CMD_ACK:
+ raise errors.RadioError("Radio refused to enter programming mode")
+
+
+def _rt21_exit_programming_mode(radio):
+ serial = radio.pipe
+ try:
+ serial.write("E")
+ except:
+ raise errors.RadioError("Radio refused to exit programming mode")
+
+
+def _rt21_read_block(radio, block_addr, block_size):
+ serial = radio.pipe
+
+ cmd = struct.pack(">cHb", 'R', block_addr, BLOCK_SIZE)
+ expectedresponse = "W" + cmd[1:]
+ LOG.debug("Reading block %04x..." % (block_addr))
+
+ try:
+ serial.write(cmd)
+ response = serial.read(4 + BLOCK_SIZE)
+ if response[:4] != expectedresponse:
+ raise Exception("Error reading block %04x." % (block_addr))
+
+ block_data = response[4:]
+
+ serial.write(CMD_ACK)
+ ack = serial.read(1)
+ except:
+ raise errors.RadioError("Failed to read block at %04x" % block_addr)
+
+ if ack != CMD_ACK:
+ raise Exception("No ACK reading block %04x." % (block_addr))
+
+ return block_data
+
+
+def _rt21_write_block(radio, block_addr, block_size):
+ serial = radio.pipe
+
+ cmd = struct.pack(">cHb", 'W', block_addr, BLOCK_SIZE)
+ data = radio.get_mmap()[block_addr:block_addr + BLOCK_SIZE]
+
+ LOG.debug("Writing Data:")
+ LOG.debug(util.hexprint(cmd + data))
+
+ try:
+ serial.write(cmd + data)
+ if serial.read(1) != CMD_ACK:
+ raise Exception("No ACK")
+ except:
+ raise errors.RadioError("Failed to send block "
+ "to radio at %04x" % block_addr)
+
+
+def do_download(radio):
+ LOG.debug("download")
+ _rt21_enter_programming_mode(radio)
+
+ data = ""
+
+ status = chirp_common.Status()
+ status.msg = "Cloning from radio"
+
+ status.cur = 0
+ status.max = radio._memsize
+
+ for addr in range(0, radio._memsize, BLOCK_SIZE):
+ status.cur = addr + BLOCK_SIZE
+ radio.status_fn(status)
+
+ block = _rt21_read_block(radio, addr, BLOCK_SIZE)
+ data += block
+
+ LOG.debug("Address: %04x" % addr)
+ LOG.debug(util.hexprint(block))
+
+ _rt21_exit_programming_mode(radio)
+
+ return memmap.MemoryMap(data)
+
+
+def do_upload(radio):
+ status = chirp_common.Status()
+ status.msg = "Uploading to radio"
+
+ _rt21_enter_programming_mode(radio)
+
+ status.cur = 0
+ status.max = radio._memsize
+
+ for start_addr, end_addr in radio._ranges:
+ for addr in range(start_addr, end_addr, BLOCK_SIZE):
+ status.cur = addr + BLOCK_SIZE
+ radio.status_fn(status)
+ _rt21_write_block(radio, addr, BLOCK_SIZE)
+
+ _rt21_exit_programming_mode(radio)
+
+
+(a)directory.register
+class RT21Radio(chirp_common.CloneModeRadio):
+ """RETEVIS RT21"""
+ VENDOR = "Retevis"
+ MODEL = "RT21"
+ BAUD_RATE = 9600
+
+ _ranges = [
+ (0x0000, 0x0400),
+ ]
+ _memsize = 0x0400
+
+ def get_features(self):
+ rf = chirp_common.RadioFeatures()
+ rf.has_settings = True
+ rf.has_bank = False
+ rf.has_ctone = True
+ rf.has_cross = True
+ rf.has_rx_dtcs = True
+ rf.has_tuning_step = False
+ rf.can_odd_split = True
+ rf.has_name = False
+ rf.valid_skips = ["", "S"]
+ rf.valid_tmodes = ["", "Tone", "TSQL", "DTCS", "Cross"]
+ rf.valid_cross_modes = ["Tone->Tone", "Tone->DTCS", "DTCS->Tone",
+ "->Tone", "->DTCS", "DTCS->", "DTCS->DTCS"]
+ rf.valid_power_levels = RT21_POWER_LEVELS
+ rf.valid_duplexes = ["", "-", "+", "split", "off"]
+ rf.valid_modes = ["NFM", "FM"] # 12.5 KHz, 25 kHz.
+ rf.memory_bounds = (1, 16)
+ rf.valid_bands = [(400000000, 480000000)]
+
+ return rf
+
+ def process_mmap(self):
+ self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
+
+ def sync_in(self):
+ self._mmap = do_download(self)
+ self.process_mmap()
+
+ def sync_out(self):
+ do_upload(self)
+
+ def get_raw_memory(self, number):
+ return repr(self._memobj.memory[number - 1])
+
+ def _get_tone(self, _mem, mem):
+ def _get_dcs(val):
+ code = int("%03o" % (val & 0x07FF))
+ pol = (val & 0x8000) and "R" or "N"
+ return code, pol
+
+ if _mem.tx_tone != 0xFFFF and _mem.tx_tone > 0x2000:
+ tcode, tpol = _get_dcs(_mem.tx_tone)
+ mem.dtcs = tcode
+ txmode = "DTCS"
+ elif _mem.tx_tone != 0xFFFF:
+ mem.rtone = _mem.tx_tone / 10.0
+ txmode = "Tone"
+ else:
+ txmode = ""
+
+ if _mem.rx_tone != 0xFFFF and _mem.rx_tone > 0x2000:
+ rcode, rpol = _get_dcs(_mem.rx_tone)
+ mem.rx_dtcs = rcode
+ rxmode = "DTCS"
+ elif _mem.rx_tone != 0xFFFF:
+ mem.ctone = _mem.rx_tone / 10.0
+ rxmode = "Tone"
+ else:
+ rxmode = ""
+
+ if txmode == "Tone" and not rxmode:
+ mem.tmode = "Tone"
+ elif txmode == rxmode and txmode == "Tone" and mem.rtone == mem.ctone:
+ mem.tmode = "TSQL"
+ elif txmode == rxmode and txmode == "DTCS" and mem.dtcs == mem.rx_dtcs:
+ mem.tmode = "DTCS"
+ elif rxmode or txmode:
+ mem.tmode = "Cross"
+ mem.cross_mode = "%s->%s" % (txmode, rxmode)
+
+ if mem.tmode == "DTCS":
+ mem.dtcs_polarity = "%s%s" % (tpol, rpol)
+
+ LOG.debug("Got TX %s (%i) RX %s (%i)" %
+ (txmode, _mem.tx_tone, rxmode, _mem.rx_tone))
+
+ def get_memory(self, number):
+ bitpos = (1 << ((number - 1) % 8))
+ bytepos = ((number - 1) / 8)
+ LOG.debug("bitpos %s" % bitpos)
+ LOG.debug("bytepos %s" % bytepos)
+
+ _mem = self._memobj.memory[number - 1]
+ _skp = self._memobj.skipflags[bytepos]
+
+ mem = chirp_common.Memory()
+
+ mem.number = number
+ mem.freq = int(_mem.rxfreq) * 10
+
+ # We'll consider any blank (i.e. 0MHz frequency) to be empty
+ if mem.freq == 0:
+ mem.empty = True
+ return mem
+
+ if _mem.rxfreq.get_raw() == "\xFF\xFF\xFF\xFF":
+ mem.freq = 0
+ mem.empty = True
+ return mem
+
+ if _mem.get_raw() == ("\xFF" * 16):
+ LOG.debug("Initializing empty memory")
+ _mem.set_raw("\x00" * 13 + "\x30\x8F\xF8")
+
+ if int(_mem.rxfreq) == int(_mem.txfreq):
+ mem.duplex = ""
+ mem.offset = 0
+ else:
+ mem.duplex = int(_mem.rxfreq) > int(_mem.txfreq) and "-" or "+"
+ mem.offset = abs(int(_mem.rxfreq) - int(_mem.txfreq)) * 10
+
+ mem.mode = _mem.wide and "FM" or "NFM"
+
+ self._get_tone(_mem, mem)
+
+ mem.power = RT21_POWER_LEVELS[_mem.highpower]
+
+ mem.skip = "" if (_skp & bitpos) else "S"
+ LOG.debug("mem.skip %s" % mem.skip)
+
+ mem.extra = RadioSettingGroup("Extra", "extra")
+
+ rs = RadioSetting("bcl", "Busy Channel Lockout",
+ RadioSettingValueList(
+ BCL_LIST, BCL_LIST[_mem.bcl]))
+ mem.extra.append(rs)
+
+ rs = RadioSetting("scramble_type", "Scramble Type",
+ RadioSettingValueList(SCRAMBLE_LIST,
+ SCRAMBLE_LIST[_mem.scramble_type - 8]))
+ mem.extra.append(rs)
+
+ return mem
+
+ def _set_tone(self, mem, _mem):
+ def _set_dcs(code, pol):
+ val = int("%i" % code, 8) + 0x2800
+ if pol == "R":
+ val += 0x8000
+ return val
+
+ if mem.tmode == "Cross":
+ tx_mode, rx_mode = mem.cross_mode.split("->")
+ elif mem.tmode == "Tone":
+ tx_mode = mem.tmode
+ rx_mode = None
+ else:
+ tx_mode = rx_mode = mem.tmode
+
+ if tx_mode == "DTCS":
+ _mem.tx_tone = mem.tmode != "DTCS" and \
+ _set_dcs(mem.dtcs, mem.dtcs_polarity[0]) or \
+ _set_dcs(mem.rx_dtcs, mem.dtcs_polarity[0])
+ elif tx_mode:
+ _mem.tx_tone = tx_mode == "Tone" and \
+ int(mem.rtone * 10) or int(mem.ctone * 10)
+ else:
+ _mem.tx_tone = 0xFFFF
+
+ if rx_mode == "DTCS":
+ _mem.rx_tone = _set_dcs(mem.rx_dtcs, mem.dtcs_polarity[1])
+ elif rx_mode:
+ _mem.rx_tone = int(mem.ctone * 10)
+ else:
+ _mem.rx_tone = 0xFFFF
+
+ LOG.debug("Set TX %s (%i) RX %s (%i)" %
+ (tx_mode, _mem.tx_tone, rx_mode, _mem.rx_tone))
+
+ def set_memory(self, mem):
+ bitpos = (1 << ((mem.number - 1) % 8))
+ bytepos = ((mem.number - 1) / 8)
+ LOG.debug("bitpos %s" % bitpos)
+ LOG.debug("bytepos %s" % bytepos)
+
+ _mem = self._memobj.memory[mem.number - 1]
+ _skp = self._memobj.skipflags[bytepos]
+
+ if mem.empty:
+ _mem.set_raw("\xFF" * (_mem.size() / 8))
+ return
+
+ _mem.set_raw("\x00" * 13 + "\x00\x8F\xF8")
+
+ _mem.rxfreq = mem.freq / 10
+
+ if mem.duplex == "off":
+ for i in range(0, 4):
+ _mem.txfreq[i].set_raw("\xFF")
+ elif mem.duplex == "split":
+ _mem.txfreq = mem.offset / 10
+ elif mem.duplex == "+":
+ _mem.txfreq = (mem.freq + mem.offset) / 10
+ elif mem.duplex == "-":
+ _mem.txfreq = (mem.freq - mem.offset) / 10
+ else:
+ _mem.txfreq = mem.freq / 10
+
+ _mem.wide = mem.mode == "FM"
+
+ self._set_tone(mem, _mem)
+
+ _mem.highpower = mem.power == RT21_POWER_LEVELS[1]
+
+ if mem.skip != "S":
+ _skp |= bitpos
+ else:
+ _skp &= ~bitpos
+ LOG.debug("_skp %s" % _skp)
+
+ for setting in mem.extra:
+ if setting.get_name() == "scramble_type":
+ setattr(_mem, setting.get_name(), int(setting.value) + 8)
+ setattr(_mem, "scramble_type2", int(setting.value) + 8)
+ else:
+ setattr(_mem, setting.get_name(), setting.value)
+
+ def get_settings(self):
+ _settings = self._memobj.settings
+ basic = RadioSettingGroup("basic", "Basic Settings")
+ top = RadioSettings(basic)
+
+ rs = RadioSetting("tot", "Time-out timer",
+ RadioSettingValueList(
+ TIMEOUTTIMER_LIST,
+ TIMEOUTTIMER_LIST[_settings.tot - 1]))
+ basic.append(rs)
+
+ rs = RadioSetting("totalert", "TOT Pre-alert",
+ RadioSettingValueList(
+ TOTALERT_LIST,
+ TOTALERT_LIST[_settings.totalert]))
+ basic.append(rs)
+
+ rs = RadioSetting("squelch", "Squelch Level",
+ RadioSettingValueInteger(0, 9, _settings.squelch))
+ basic.append(rs)
+
+ rs = RadioSetting("voice", "Voice Annumciation",
+ RadioSettingValueList(
+ VOICE_LIST, VOICE_LIST[_settings.voice]))
+ basic.append(rs)
+
+ rs = RadioSetting("save", "Battery Saver",
+ RadioSettingValueBoolean(_settings.save))
+ basic.append(rs)
+
+ rs = RadioSetting("use_scramble", "Scramble",
+ RadioSettingValueBoolean(_settings.use_scramble))
+ basic.append(rs)
+
+ rs = RadioSetting("use_vox", "VOX",
+ RadioSettingValueBoolean(_settings.use_vox))
+ basic.append(rs)
+
+ rs = RadioSetting("vox", "VOX Gain",
+ RadioSettingValueList(
+ VOX_LIST, VOX_LIST[_settings.vox]))
+ basic.append(rs)
+
+ return top
+
+ def set_settings(self, settings):
+ for element in settings:
+ if not isinstance(element, RadioSetting):
+ self.set_settings(element)
+ continue
+ else:
+ try:
+ if "." in element.get_name():
+ bits = element.get_name().split(".")
+ obj = self._memobj
+ for bit in bits[:-1]:
+ obj = getattr(obj, bit)
+ setting = bits[-1]
+ else:
+ obj = self._memobj.settings
+ setting = element.get_name()
+
+ if setting == "tot":
+ setattr(obj, setting, int(element.value) + 1)
+ elif element.value.get_mutable():
+ LOG.debug("Setting %s = %s" % (setting, element.value))
+ setattr(obj, setting, element.value)
+ except Exception, e:
+ LOG.debug(element.get_name())
+ raise
1
0
16 Oct '16
1
0
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Add Norwegian KDR license-free band stock config
https://en.wikipedia.org/wiki/KDR_444
>From François Thunus for #4137
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 895636193de3319fe8b3d390ec79cae8825acc11
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune 895636193de3319fe8b3d390ec79cae8825acc11
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson3102481870556168206.sh
[workspace] $ /bin/sh -xe /tmp/hudson3974689159332012810.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.051s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:522:45: W291 trailing whitespace
./chirp/drivers/ft60.py:523:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:524:13: E301 expected 1 blank line, found 0
./chirp/drivers/ft817.py:587:41: E128 continuation line under-indented for visual indent
./chirp/drivers/h777.py:405:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:406:26: E703 statement ends with a semicolon
./chirp/drivers/h777.py:407:26: E703 statement ends with a semicolon
./chirp/drivers/kguv8d.py:684:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:688:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:691:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:692:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:695:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:696:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:699:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:702:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:705:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:708:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:711:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:714:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:717:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:720:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:721:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:724:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:725:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:728:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:731:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:732:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:735:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:736:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:739:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:740:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:743:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:744:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:747:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:750:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:753:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:754:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:757:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:758:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:761:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:764:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:767:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:768:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:771:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:772:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:775:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:776:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:779:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:782:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:783:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:786:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:789:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:790:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:793:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:794:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:810:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:811:31: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:814:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:817:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:821:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:827:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:832:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:836:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:840:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:844:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:848:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:893:25: E128 continuation line under-indented for visual indent
./chirp/drivers/leixen.py:427:80: E501 line too long (82 > 79 characters)
./chirp/drivers/leixen.py:955:80: E501 line too long (87 > 79 characters)
./chirp/drivers/thd72.py:188:1: E302 expected 2 blank lines, found 1
./chirp/drivers/thd72.py:203:23: E201 whitespace after '['
./chirp/drivers/thd72.py:203:80: E501 line too long (171 > 79 characters)
./chirp/drivers/thd72.py:203:170: E202 whitespace before ']'
./chirp/drivers/thd72.py:204:13: E201 whitespace after '['
./chirp/drivers/thd72.py:204:61: E202 whitespace before ']'
./chirp/drivers/thd72.py:205:23: E201 whitespace after '['
./chirp/drivers/thd72.py:205:74: E202 whitespace before ']'
./chirp/drivers/thd72.py:206:18: E201 whitespace after '['
./chirp/drivers/thd72.py:206:65: E202 whitespace before ']'
./chirp/drivers/thd72.py:595:1: W293 blank line contains whitespace
./chirp/drivers/thd72.py:603:1: W293 blank line contains whitespace
./chirp/settings.py:245:80: E501 line too long (81 > 79 characters)
./chirp/settings.py:248:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:647:13: E128 continuation line under-indented for visual indent
./chirp/ui/mainapp.py:661:5: E303 too many blank lines (2)
./chirp/ui/mainapp.py:1374:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:1378:80: E501 line too long (80 > 79 characters)
./chirp/ui/mainapp.py:1663:80: E501 line too long (85 > 79 characters)
real 0m7.661s
user 0m7.500s
sys 0m0.048s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-10-16 08:12:57,626] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-10-16 08:12:57,663] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-10-16 08:12:57,664] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-10-16 08:12:57,665] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-10-16 08:12:57,666] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-10-16 08:12:57,667] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-10-16 08:12:57,667] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-10-16 08:12:57,668] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-10-16 08:12:57,668] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-10-16 08:12:57,669] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-10-16 08:12:57,670] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-10-16 08:12:57,671] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-10-16 08:12:57,672] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-10-16 08:12:57,672] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-10-16 08:12:57,673] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-10-16 08:12:57,673] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-10-16 08:12:57,673] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-10-16 08:12:57,674] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-10-16 08:12:57,675] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-10-16 08:12:57,676] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-10-16 08:12:57,677] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-10-16 08:12:57,685] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-10-16 08:12:57,685] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-10-16 08:12:57,688] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-10-16 08:12:57,688] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-10-16 08:12:57,689] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-10-16 08:12:57,690] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-10-16 08:12:57,691] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-10-16 08:12:57,692] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-10-16 08:12:57,693] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-10-16 08:12:57,694] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-10-16 08:12:57,695] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-10-16 08:12:57,696] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-10-16 08:12:57,696] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-10-16 08:12:57,697] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-10-16 08:12:57,697] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-10-16 08:12:57,698] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-10-16 08:12:57,699] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-10-16 08:12:57,700] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-10-16 08:12:57,701] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-10-16 08:12:57,702] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-10-16 08:12:57,703] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-10-16 08:12:57,704] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-10-16 08:12:57,705] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-10-16 08:12:57,705] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-10-16 08:12:57,706] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-10-16 08:12:57,707] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-10-16 08:12:57,707] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-10-16 08:12:57,707] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-10-16 08:12:57,708] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_1K6__Y.img /tmp/Alinco_DJ175_HYBpXY.img /tmp/Alinco_DJ596_dpzVsd.img /tmp/Alinco_DJ596_s4Y1ac.img /tmp/Alinco_DR235T_D8LAHQ.img /tmp/Alinco_DR235T_hZW_8f.img /tmp/AnyTone_OBLTR-8R_6QQrF4.img /tmp/AnyTone_OBLTR-8R_KtfW74.img /tmp/AnyTone_TERMN-8R_cYbbuf.img /tmp/AnyTone_TERMN-8R_eHDGtR.img /tmp/BTECH_GMRS-V1_4qVTF6.img /tmp/BTECH_GMRS-V1_B56KLw.img /tmp/BTECH_UV-2501+220_KXNKNe.img /tmp/BTECH_UV-2501+220_nevseq.img /tmp/BTECH_UV-5001_Mm2Dac.img /tmp/BTECH_UV-5001_TS_imy.img /tmp/BTECH_UV-50X3_2WtnUP.img /tmp/BTECH_UV-50X3_5Nirjp.img /tmp/BTECH_UV-50X3_UPK_FB.img /tmp/BTECH_UV-50X3__N_0BO.img /tmp/BTECH_UV-50X3_yTyvWI.img /tmp/BTECH_UV-50X3_zN8aRk.img /tmp/BTECH_UV-5X3_31VDHL.img /tmp/BTECH_UV-5X3_u5vC30.img /tmp/Baofeng_BF-888_fGAipV.img /tmp/Baofeng_BF-888_uAD7VZ.img /tmp/Baofeng_F-11_6Q_iZ_.img /tmp/Baofeng_F-11_tU2IQw.img /tmp/Baofeng_UV-3R_PxU2Ss.img /tmp/Baofeng_UV-3R_r7ay_w.img /tmp/Baofeng_UV-5R_iqhXhi.img /tmp/Baofeng_UV-5R_oClpIq.img /tmp/Baofeng_UV-6R__jtODT.img /tmp/Baofeng_UV-6R_sXQKx3.img /tmp/Baofeng_UV-B5_1HHeIy.img /tmp/Baofeng_UV-B5_Rfp0eZ.img /tmp/Baojie_BJ-9900_MTXmqK.img /tmp/Baojie_BJ-9900_TzSVb_.img /tmp/Baojie_BJ-9900__N29_A.img /tmp/Baojie_BJ-9900_akwDaN.img /tmp/Baojie_BJ-9900_kfDkrs.img /tmp/Baojie_BJ-9900_tg16pH.img /tmp/Feidaxin_FD-268A_0IozzO.img /tmp/Feidaxin_FD-268A_dBilrY.img /tmp/Feidaxin_FD-268B_l8IVFl.img /tmp/Feidaxin_FD-268B_xQOlok.img /tmp/Feidaxin_FD-288B_LVc8_N.img /tmp/Feidaxin_FD-288B_wg1wtj.img /tmp/Icom_IC-208H_9rZskm.img /tmp/Icom_IC-208H_f1MZRr.img /tmp/Icom_IC-2100H_rzFbxo.img /tmp/Icom_IC-2100H_xPsmpf.img /tmp/Icom_IC-2200H_WTTfWJ.img /tmp/Icom_IC-2200H_xk4bGv.img /tmp/Icom_IC-2720H_11gF5e.img /tmp/Icom_IC-2720H_5segQC.img /tmp/Icom_IC-2820H_5GWP1F.img /tmp/Icom_IC-2820H_DeOVZU.img /tmp/Icom_IC-Q7A_HTU0Me.img /tmp/Icom_IC-Q7A_zunKcK.img /tmp/Icom_IC-T70_MpFtcu.img /tmp/Icom_IC-T70_pKM2w_.img /tmp/Icom_IC-T7H_3FGTKP.img /tmp/Icom_IC-T7H_o5Zf28.img /tmp/Icom_IC-T8A_a0_yzD.img /tmp/Icom_IC-T8A_i9NZcf.img /tmp/Icom_IC-V82_U82_S2prP7.img /tmp/Icom_IC-V82_U82_q1X2vS.img /tmp/Icom_IC-W32A_52_W3s.img /tmp/Icom_IC-W32A_PKDio3.img /tmp/Icom_IC-W32A_Roc0_n.img /tmp/Icom_IC-W32A_hJoPaR.img /tmp/Icom_IC-W32A_oLBS4Y.img /tmp/Icom_IC-W32A_osDtUG.img /tmp/Icom_IC-W32E_1UurWk.img /tmp/Icom_IC-W32E_N2hscW.img /tmp/Icom_IC-W32E_UFOyXK.img /tmp/Icom_IC-W32E_XGOfSp.img /tmp/Icom_IC-W32E_la4gId.img /tmp/Icom_IC-W32E_vmlHu6.img /tmp/Icom_ID-31A_hkGULH.img /tmp/Icom_ID-31A_tGyAID.img /tmp/Icom_ID-51 Plus_HmtXfh.img /tmp/Icom_ID-51 Plus_oPmowU.img /tmp/Icom_ID-51_YGjmmh.img /tmp/Icom_ID-51_zCpifj.img /tmp/Icom_ID-800H_BYEtU7.img /tmp/Icom_ID-800H_Djcjy6.img /tmp/Icom_ID-880H_ArSk_K.img /tmp/Icom_ID-880H_Js0Rzr.img /tmp/Jetstream_JT220M_P7J0Xe.img /tmp/Jetstream_JT220M_as11Jd.img /tmp/Jetstream_JT270M_G2GDTR.img /tmp/Jetstream_JT270M_qnlbsS.img /tmp/KYD_IP-620_5RZGzJ.img /tmp/KYD_IP-620_pVmi3k.img /tmp/Kenwood_TH-D72 (clone mode)_oYhy6O.img /tmp/Kenwood_TH-D72 (clone mode)_q6sLKw.img /tmp/Kenwood_TK-272G_923eDu.img /tmp/Kenwood_TK-272G_SnYGFT.img /tmp/Kenwood_TK-760G_E5vblJ.img /tmp/Kenwood_TK-760G_riL6XJ.img /tmp/Kenwood_TK-8102_0S5lyy.img /tmp/Kenwood_TK-8102_Leat8i.img /tmp/LUITON_LT-725UV_6Dg9__.img /tmp/LUITON_LT-725UV_IyMj3l.img /tmp/LUITON_LT-725UV_f9XFaA.img /tmp/LUITON_LT-725UV_h8EWyr.img /tmp/LUITON_LT-725UV_htesz1.img /tmp/LUITON_LT-725UV_rESMNJ.img /tmp/Leixen_VV-898S_LxeebK.img /tmp/Leixen_VV-898S_TuF9nU.img /tmp/Leixen_VV-898_BMAfRB.img /tmp/Leixen_VV-898_VMh37Z.img /tmp/Polmar_DB-50M_GxIfCA.img /tmp/Polmar_DB-50M_xfEybI.img /tmp/Puxing_PX-2R_GvxMW2.img /tmp/Puxing_PX-2R_IU7kYM.img /tmp/Puxing_PX-777_HhaxPW.img /tmp/Puxing_PX-777_o3a_f2.img /tmp/Puxing_PX-888K_aUhNjy.img /tmp/Puxing_PX-888K_keK8F9.img /tmp/TYT_TH-7800_FVePhG.img /tmp/TYT_TH-7800_uMjEaY.img /tmp/TYT_TH-9800_XUS1zb.img /tmp/TYT_TH-9800_cHwN44.img /tmp/TYT_TH-UV3R-25_Oe37N4.img /tmp/TYT_TH-UV3R-25_Pl89Vs.img /tmp/TYT_TH-UV3R_VP0bUm.img /tmp/TYT_TH-UV3R_dN8DGm.img /tmp/TYT_TH-UVF1_2J5xsF.img /tmp/TYT_TH-UVF1_aoa__W.img /tmp/TYT_TH9000_144_F2rkAO.img /tmp/TYT_TH9000_144_texK0j.img /tmp/Vertex Standard_VXA-700_M3wved.img /tmp/Vertex Standard_VXA-700_YKwov0.img /tmp/WACCOM_MINI-8900_3l0CeO.img /tmp/WACCOM_MINI-8900_evRQ5K.img /tmp/Wouxun_KG-816_MVRCsz.img /tmp/Wouxun_KG-816_cI2eTP.img /tmp/Wouxun_KG-818_Y6Ekm8.img /tmp/Wouxun_KG-818_mx_BD6.img /tmp/Wouxun_KG-UV6_BA52K3.img /tmp/Wouxun_KG-UV6_BWdSrA.img /tmp/Wouxun_KG-UV8D_sYzAU2.img /tmp/Wouxun_KG-UV8D_v0ZTRi.img /tmp/Wouxun_KG-UVD1P_eaNM5j.img /tmp/Wouxun_KG-UVD1P_rkdQl8.img /tmp/Yaesu_FT-1802M_RI3cxu.img /tmp/Yaesu_FT-1802M_Sjb75V.img /tmp/Yaesu_FT-1D_ENoJnH.img /tmp/Yaesu_FT-1D_hrLLNJ.img /tmp/Yaesu_FT-2800M_K5RJRJ.img /tmp/Yaesu_FT-2800M_xYApXL.img /tmp/Yaesu_FT-2900R_1900R_1VvhT1.img /tmp/Yaesu_FT-2900R_1900R_7MIgox.img /tmp/Yaesu_FT-50_Yx2iie.img /tmp/Yaesu_FT-50_lhKxWO.img /tmp/Yaesu_FT-60_AzBM_i.img /tmp/Yaesu_FT-60_wQzfjG.img /tmp/Yaesu_FT-7800_7900_1wMywM.img /tmp/Yaesu_FT-7800_7900_UqDK0O.img /tmp/Yaesu_FT-817ND (US)_QflmLy.img /tmp/Yaesu_FT-817ND (US)_x4u0Ua.img /tmp/Yaesu_FT-817ND_fZRljC.img /tmp/Yaesu_FT-817ND_mfNqf8.img /tmp/Yaesu_FT-817_0Dnn69.img /tmp/Yaesu_FT-817_0UWwTM.img /tmp/Yaesu_FT-857_897 (US)_4cxcyP.img /tmp/Yaesu_FT-857_897 (US)_nrPisj.img /tmp/Yaesu_FT-857_897_3eAAUI.img /tmp/Yaesu_FT-857_897_DdWOU1.img /tmp/Yaesu_FT-8800_2gyAQD.img /tmp/Yaesu_FT-8800_EIPUJb.img /tmp/Yaesu_FT-8800_LF230X.img /tmp/Yaesu_FT-8800_RngRqx.img /tmp/Yaesu_FT-8800_iyqfyW.img /tmp/Yaesu_FT-8800_par1GB.img /tmp/Yaesu_FT-8900_L6h985.img /tmp/Yaesu_FT-8900_qO6CkO.img /tmp/Yaesu_FTM-350_ETLkAj.img /tmp/Yaesu_FTM-350_QVqXfA.img /tmp/Yaesu_FTM-350_QXmQTv.img /tmp/Yaesu_FTM-350_VRpwKN.img /tmp/Yaesu_FTM-350_eO3mj3.img /tmp/Yaesu_FTM-350_xfZmfh.img /tmp/Yaesu_VX-2_rRPOLl.img /tmp/Yaesu_VX-2_tk9Lnx.img /tmp/Yaesu_VX-3_SGaSph.img /tmp/Yaesu_VX-3_VW9kvM.img /tmp/Yaesu_VX-5_80xb9i.img /tmp/Yaesu_VX-5_Ho_LQ3.img /tmp/Yaesu_VX-6_2EHo8C.img /tmp/Yaesu_VX-6_Frelxa.img /tmp/Yaesu_VX-7_1l8aI9.img /tmp/Yaesu_VX-7_yukUWX.img /tmp/Yaesu_VX-8_3BoGc8.img /tmp/Yaesu_VX-8_t9uhYM.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
[chirp_devel] [PATCH] [btech] Resetting mem-extra-settings only when editing previously empty memory. Part of fix for #4121
by Michael Wagner 15 Oct '16
by Michael Wagner 15 Oct '16
15 Oct '16
# HG changeset patch
# User Michael Wagner <michael.wagner(a)gmx.at>
# Date 1476524038 -7200
# Sat Oct 15 11:33:58 2016 +0200
# Node ID ca2f97cb1dedc2a2172e4be134f2a706c079a808
# Parent 895636193de3319fe8b3d390ec79cae8825acc11
[btech] Resetting mem-extra-settings only when editing previously empty memory. Part of fix for #4121
Attempt to fix #4121 for the driver btech.py following Dan's proposal in http://intrepid.danplanet.com/pipermail/chirp_devel/2016-October/004298.html .
73,
Michael Wagner, OE4AMW
diff -r 895636193de3 -r ca2f97cb1ded chirp/drivers/btech.py
--- a/chirp/drivers/btech.py Wed Oct 12 18:07:36 2016 -0400
+++ b/chirp/drivers/btech.py Sat Oct 15 11:33:58 2016 +0200
@@ -1043,6 +1043,13 @@
_mem = self._memobj.memory[mem.number]
_names = self._memobj.names[mem.number]
+ mem_was_empty = False
+ # same method as used in get_memory for determining if mem is empty
+ # doing this BEFORE overwriting it with new values ...
+ if _mem.get_raw()[0] == "\xFF":
+ LOG.debug("This mem was empty before")
+ mem_was_empty = True
+
# if empty memmory
if mem.empty:
# the channel itself
@@ -1100,16 +1107,24 @@
# extra settings
if len(mem.extra) > 0:
# there are setting, parse
+ LOG.debug("Extra-Setting supplied. Setting them.")
for setting in mem.extra:
setattr(_mem, setting.get_name(), setting.value)
else:
- # there is no extra settings, load defaults
- _mem.spmute = 0
- _mem.optsig = 0
- _mem.scramble = 0
- _mem.bcl = 0
- _mem.pttid = 0
- _mem.scode = 0
+ if mem.empty:
+ LOG.debug("New mem is empty.")
+ else:
+ LOG.debug("New mem is NOT empty")
+ # set extra-settings to default ONLY when apreviously empty or
+ # deleted memory was edited to prevent errors such as #4121
+ if mem_was_empty :
+ LOG.debug("old mem was empty. Setting default for extras.")
+ _mem.spmute = 0
+ _mem.optsig = 0
+ _mem.scramble = 0
+ _mem.bcl = 0
+ _mem.pttid = 0
+ _mem.scode = 0
return mem
1
0
Tested changes:
[Jim Unroe <rock.unroe(a)gmail.com>] [GMRS-V1] Update Model Name
This patch corrects the model name of the BTech GMRS-V1.
related to #4119
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev ab232a47b2f213448c319d7236cab6e82c75756f
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune ab232a47b2f213448c319d7236cab6e82c75756f
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson6699651881211139393.sh
[workspace] $ /bin/sh -xe /tmp/hudson5217478975003785734.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.052s
OK
FAIL: Please keep commit message lines to <80 columns
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:522:45: W291 trailing whitespace
./chirp/drivers/ft60.py:523:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:524:13: E301 expected 1 blank line, found 0
./chirp/drivers/ft817.py:587:41: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:684:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:688:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:691:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:692:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:695:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:696:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:699:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:702:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:705:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:708:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:711:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:714:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:717:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:720:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:721:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:724:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:725:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:728:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:731:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:732:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:735:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:736:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:739:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:740:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:743:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:744:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:747:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:750:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:753:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:754:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:757:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:758:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:761:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:764:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:767:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:768:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:771:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:772:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:775:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:776:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:779:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:782:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:783:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:786:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:789:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:790:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:793:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:794:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:810:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:811:31: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:814:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:817:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:821:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:827:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:832:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:836:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:840:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:844:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:848:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:893:25: E128 continuation line under-indented for visual indent
./chirp/drivers/leixen.py:427:80: E501 line too long (82 > 79 characters)
./chirp/drivers/leixen.py:955:80: E501 line too long (87 > 79 characters)
./chirp/drivers/thd72.py:188:1: E302 expected 2 blank lines, found 1
./chirp/drivers/thd72.py:203:23: E201 whitespace after '['
./chirp/drivers/thd72.py:203:80: E501 line too long (171 > 79 characters)
./chirp/drivers/thd72.py:203:170: E202 whitespace before ']'
./chirp/drivers/thd72.py:204:13: E201 whitespace after '['
./chirp/drivers/thd72.py:204:61: E202 whitespace before ']'
./chirp/drivers/thd72.py:205:23: E201 whitespace after '['
./chirp/drivers/thd72.py:205:74: E202 whitespace before ']'
./chirp/drivers/thd72.py:206:18: E201 whitespace after '['
./chirp/drivers/thd72.py:206:65: E202 whitespace before ']'
./chirp/drivers/thd72.py:595:1: W293 blank line contains whitespace
./chirp/drivers/thd72.py:603:1: W293 blank line contains whitespace
./chirp/settings.py:245:80: E501 line too long (81 > 79 characters)
./chirp/settings.py:248:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:647:13: E128 continuation line under-indented for visual indent
./chirp/ui/mainapp.py:661:5: E303 too many blank lines (2)
./chirp/ui/mainapp.py:1374:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:1378:80: E501 line too long (80 > 79 characters)
./chirp/ui/mainapp.py:1663:80: E501 line too long (85 > 79 characters)
real 0m7.603s
user 0m7.500s
sys 0m0.016s
================================================
Tests FAILED: style tests
Build step 'Execute shell' marked build as failure
Email was triggered for: Failure
Sending email for trigger: Failure
1
2
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1476310056 14400
# Node ID 39fd7a532cf2b43d734ba146e7bce3fbcfbc8c83
# Parent 1b22a51eef26673420339a5fbb47eabe7da990b6
[BF-888] Forgot to set rf.can_odd_split!
This patch adds "rf.can_odd_split = True" so driver will pass failed test.
Related to #2291
diff -r 1b22a51eef26 -r 39fd7a532cf2 chirp/drivers/h777.py
--- a/chirp/drivers/h777.py Wed Oct 12 17:17:48 2016 -0400
+++ b/chirp/drivers/h777.py Wed Oct 12 18:07:36 2016 -0400
@@ -260,6 +260,7 @@
rf.valid_skips = ["", "S"]
rf.valid_tmodes = ["", "Tone", "TSQL", "DTCS", "Cross"]
rf.valid_duplexes = ["", "-", "+", "split", "off"]
+ rf.can_odd_split = True
rf.has_rx_dtcs = True
rf.has_ctone = True
rf.has_cross = True
1
0
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1476307068 14400
# Node ID 1b22a51eef26673420339a5fbb47eabe7da990b6
# Parent 1fda674d2ff5ebc3a76b814ef4829edd6be05f21
[UV-5R] Expand PTT-LT to 50
The original menu 20 [PTT-LT] setting range for the UV-5R (and other
variants including the UV-82) was from 0 to 30. This patch expands the
upper limit to 50 to match the upper limit of the currently shipping radios.
related to #4127
diff -r 1fda674d2ff5 -r 1b22a51eef26 chirp/drivers/uv5r.py
--- a/chirp/drivers/uv5r.py Tue Oct 11 17:04:17 2016 -0400
+++ b/chirp/drivers/uv5r.py Wed Oct 12 17:17:48 2016 -0400
@@ -1519,7 +1519,7 @@
dtmf.append(rs)
rs = RadioSetting("pttlt", "PTT ID Delay",
- RadioSettingValueInteger(0, 30, _settings.pttlt))
+ RadioSettingValueInteger(0, 50, _settings.pttlt))
dtmf.append(rs)
if not self._is_orig():
1
0
[chirp_devel] [PATCH] [BF-888] Add "off" duplex support and compatibilty fix
by Jim Unroe 11 Oct '16
by Jim Unroe 11 Oct '16
11 Oct '16
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1476219857 14400
# Node ID 1fda674d2ff5ebc3a76b814ef4829edd6be05f21
# Parent 00852fbe5d162901f7108c4ef7c928e5bb98966e
[BF-888] Add "off" duplex support and compatibilty fix
This patch...
- adds an "off" duplex (ie disable transmission) setting to the h777.py driver.
- provides a fix that improves compatiblity with the OEM software.
Developed by Marcos Vives.
Related to #2291
diff -r 00852fbe5d16 -r 1fda674d2ff5 chirp/drivers/h777.py
--- a/chirp/drivers/h777.py Mon Oct 10 17:25:49 2016 -0400
+++ b/chirp/drivers/h777.py Tue Oct 11 17:04:17 2016 -0400
@@ -259,6 +259,7 @@
rf.valid_modes = ["NFM", "FM"] # 12.5 KHz, 25 kHz.
rf.valid_skips = ["", "S"]
rf.valid_tmodes = ["", "Tone", "TSQL", "DTCS", "Cross"]
+ rf.valid_duplexes = ["", "-", "+", "split", "off"]
rf.has_rx_dtcs = True
rf.has_ctone = True
rf.has_cross = True
@@ -334,7 +335,10 @@
mem.empty = True
return mem
- if int(_mem.rxfreq) == int(_mem.txfreq):
+ if _mem.txfreq.get_raw() == "\xFF\xFF\xFF\xFF":
+ mem.duplex = "off"
+ mem.offset = 0
+ elif int(_mem.rxfreq) == int(_mem.txfreq):
mem.duplex = ""
mem.offset = 0
else:
@@ -394,6 +398,13 @@
# NOTE: Only two settings right now, both are inverted
setattr(_mem, setting.get_name(), not int(setting.value))
+ # When set to one, official programming software (BF-480) shows always
+ # "WFM", even if we choose "NFM". Therefore, for compatibility
+ # purposes, we will set these to zero.
+ _mem.unknown1 = 0;
+ _mem.unknown2 = 0;
+ _mem.unknown3 = 0;
+
def get_settings(self):
_settings = self._memobj.settings
basic = RadioSettingGroup("basic", "Basic Settings")
1
0