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
July 2016
- 8 participants
- 31 discussions
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Add BTECH UV-50X3 image
Related to #3815
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 d64acf844bd3de97b6184e61a2651988e30adf0b
[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 d64acf844bd3de97b6184e61a2651988e30adf0b
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson4022252516609685374.sh
[workspace] $ /bin/sh -xe /tmp/hudson4180822815943249981.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.048s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:521:45: W291 trailing whitespace
./chirp/drivers/ft60.py:522:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:523: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/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/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.249s
user 0m7.200s
sys 0m0.035s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-07-12 17:37:33,532] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 14.04.4 LTS (Python 2.7.6)
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-07-12 17:37:33,542] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-07-12 17:37:33,543] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-07-12 17:37:33,544] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-07-12 17:37:33,545] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-07-12 17:37:33,545] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-07-12 17:37:33,545] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-07-12 17:37:33,545] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-07-12 17:37:33,545] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-07-12 17:37:33,546] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-07-12 17:37:33,546] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-07-12 17:37:33,546] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-07-12 17:37:33,547] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-07-12 17:37:33,547] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-07-12 17:37:33,547] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-07-12 17:37:33,547] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-07-12 17:37:33,547] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-07-12 17:37:33,548] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-07-12 17:37:33,549] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-07-12 17:37:33,550] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-07-12 17:37:33,550] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-07-12 17:37:33,550] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-07-12 17:37:33,550] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-07-12 17:37:33,551] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-07-12 17:37:33,551] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-07-12 17:37:33,551] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-07-12 17:37:33,552] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-07-12 17:37:33,552] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-07-12 17:37:33,553] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-07-12 17:37:33,553] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-07-12 17:37:33,553] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-07-12 17:37:33,553] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-07-12 17:37:33,553] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-07-12 17:37:33,553] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-07-12 17:37:33,554] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-07-12 17:37:33,554] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-07-12 17:37:33,554] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-07-12 17:37:33,554] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-07-12 17:37:33,555] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-07-12 17:37:33,555] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-07-12 17:37:33,555] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-07-12 17:37:33,556] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-07-12 17:37:33,556] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-07-12 17:37:33,561] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-07-12 17:37:33,564] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-07-12 17:37:33,565] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-07-12 17:37:33,565] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-07-12 17:37:33,565] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-07-12 17:37:33,565] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-07-12 17:37:33,565] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-07-12 17:37:33,566] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-07-12 17:37:33,566] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-07-12 17:37:33,566] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-07-12 17:37:33,567] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-07-12 17:37:33,567] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-07-12 17:37:33,567] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-07-12 17:37:33,567] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-07-12 17:37:33,567] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-07-12 17:37:33,568] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-07-12 17:37:33,568] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-07-12 17:37:33,568] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-07-12 17:37:33,568] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-07-12 17:37:33,568] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-07-12 17:37:33,569] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-07-12 17:37:33,569] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-07-12 17:37:33,569] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-07-12 17:37:33,569] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-07-12 17:37:33,570] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-07-12 17:37:33,570] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-07-12 17:37:33,570] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-07-12 17:37:33,571] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-07-12 17:37:33,571] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-07-12 17:37:33,571] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-07-12 17:37:33,571] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-07-12 17:37:33,571] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-07-12 17:37:33,571] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-07-12 17:37:33,572] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-07-12 17:37:33,572] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-07-12 17:37:33,572] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-07-12 17:37:33,572] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-07-12 17:37:33,573] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-07-12 17:37:33,573] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-07-12 17:37:33,573] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-07-12 17:37:33,573] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-07-12 17:37:33,573] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-07-12 17:37:33,574] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-07-12 17:37:33,574] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-07-12 17:37:33,574] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-07-12 17:37:33,574] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-07-12 17:37:33,575] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-07-12 17:37:33,575] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-07-12 17:37:33,575] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-07-12 17:37:33,575] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-07-12 17:37:33,575] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-07-12 17:37:33,575] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-07-12 17:37:33,575] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-07-12 17:37:33,576] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-07-12 17:37:33,578] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-07-12 17:37:33,579] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-07-12 17:37:33,579] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-07-12 17:37:33,579] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-07-12 17:37:33,579] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-07-12 17:37:33,580] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-07-12 17:37:33,580] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-07-12 17:37:33,580] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-07-12 17:37:33,580] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-07-12 17:37:33,581] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-07-12 17:37:33,581] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-07-12 17:37:33,581] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-07-12 17:37:33,582] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-07-12 17:37:33,582] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-07-12 17:37:33,582] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-07-12 17:37:33,583] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-07-12 17:37:33,583] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-07-12 17:37:33,583] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_der05r.img /tmp/Alinco_DJ596_ifWyjG.img /tmp/Alinco_DR235T_RCOX4g.img /tmp/AnyTone_OBLTR-8R_VZckfM.img /tmp/AnyTone_TERMN-8R_zLxVFR.img /tmp/BTECH_UV-2501+220_YyhSbr.img /tmp/BTECH_UV-5001_31YSq0.img /tmp/BTECH_UV-50X3_3DD0pR.img /tmp/BTECH_UV-50X3_8vG70F.img /tmp/BTECH_UV-50X3_FmZ1NA.img /tmp/Baofeng_BF-888_g3F8mg.img /tmp/Baofeng_F-11_crQ6i6.img /tmp/Baofeng_UV-3R_bHlOUB.img /tmp/Baofeng_UV-5R_9K6vcg.img /tmp/Baofeng_UV-B5_unwfZs.img /tmp/Baojie_BJ-9900_0_s0Kr.img /tmp/Baojie_BJ-9900__IlmUM.img /tmp/Baojie_BJ-9900_dvvmFC.img /tmp/Feidaxin_FD-268A_KGl8sb.img /tmp/Feidaxin_FD-268B_fCS7ZC.img /tmp/Feidaxin_FD-288B_JC2PFH.img /tmp/Icom_IC-208H_dzdUkX.img /tmp/Icom_IC-2100H_HqunFO.img /tmp/Icom_IC-2200H_m3TQst.img /tmp/Icom_IC-2720H_N1S4Jp.img /tmp/Icom_IC-2820H_TTUPl8.img /tmp/Icom_IC-Q7A_vOeP7b.img /tmp/Icom_IC-T70_wyureb.img /tmp/Icom_IC-T7H_AzK5WF.img /tmp/Icom_IC-T8A_5vuhbX.img /tmp/Icom_IC-V82_U82_ig6z7z.img /tmp/Icom_IC-W32A_YP4RVQ.img /tmp/Icom_IC-W32A_b3axvM.img /tmp/Icom_IC-W32A_rJFvIA.img /tmp/Icom_IC-W32E_8OxpPe.img /tmp/Icom_IC-W32E_EQnX2Z.img /tmp/Icom_IC-W32E_XWUZck.img /tmp/Icom_ID-31A_9vBcdc.img /tmp/Icom_ID-51 Plus_RQOtry.img /tmp/Icom_ID-51_ZuCNlg.img /tmp/Icom_ID-800H_rwvP7F.img /tmp/Icom_ID-880H_6U5hXr.img /tmp/Jetstream_JT220M_1bOqw4.img /tmp/Jetstream_JT270M_ALARuW.img /tmp/KYD_IP-620_w1EGni.img /tmp/Kenwood_TH-D72 (clone mode)_qKnSXv.img /tmp/Kenwood_TK-272G_lfC69D.img /tmp/Kenwood_TK-760G_6vxPb7.img /tmp/Kenwood_TK-8102_TBYhsa.img /tmp/Leixen_VV-898_R_HbZz.img /tmp/Polmar_DB-50M_8VFBoY.img /tmp/Puxing_PX-2R_6ba8bh.img /tmp/Puxing_PX-777_e2hExN.img /tmp/TYT_TH-7800_Kwc0Yt.img /tmp/TYT_TH-9800_5FN1db.img /tmp/TYT_TH-UV3R-25_CKlvP8.img /tmp/TYT_TH-UV3R_Bl7YgP.img /tmp/TYT_TH-UVF1_EcpADe.img /tmp/TYT_TH9000_144_kvAXAD.img /tmp/Vertex Standard_VXA-700_h7VyGW.img /tmp/WACCOM_MINI-8900_ZYbOP5.img /tmp/Wouxun_KG-816_jGcVli.img /tmp/Wouxun_KG-818_e9JScC.img /tmp/Wouxun_KG-UV6_fJNQle.img /tmp/Wouxun_KG-UV8D_WxckeJ.img /tmp/Wouxun_KG-UVD1P_zTupKp.img /tmp/Yaesu_FT-1802M_7q7CWg.img /tmp/Yaesu_FT-1D_IFz473.img /tmp/Yaesu_FT-2800M_TenX6l.img /tmp/Yaesu_FT-2900R_1900R_NCpPzJ.img /tmp/Yaesu_FT-50_1PcISX.img /tmp/Yaesu_FT-60_WVlzrl.img /tmp/Yaesu_FT-7800_7900_EDlxYQ.img /tmp/Yaesu_FT-817ND (US)_22J6mO.img /tmp/Yaesu_FT-817ND_D4e6NC.img /tmp/Yaesu_FT-817_UwvFOB.img /tmp/Yaesu_FT-857_897 (US)_DIHcnD.img /tmp/Yaesu_FT-857_897_B8Kkbc.img /tmp/Yaesu_FT-8800_Gfgw79.img /tmp/Yaesu_FT-8800_b13cex.img /tmp/Yaesu_FT-8800_rOB_TG.img /tmp/Yaesu_FT-8900_Xgkvhd.img /tmp/Yaesu_FTM-350_9AvStu.img /tmp/Yaesu_FTM-350_DpAzxo.img /tmp/Yaesu_FTM-350_lbOMZ5.img /tmp/Yaesu_VX-2_7VS0FZ.img /tmp/Yaesu_VX-3_OfFwX2.img /tmp/Yaesu_VX-5_K0td5L.img /tmp/Yaesu_VX-6_SXd43Q.img /tmp/Yaesu_VX-7_XPfNmR.img /tmp/Yaesu_VX-8_qE4lHl.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
[chirp_devel] [PATCH] [UV-50X3] Add Support for BTech UV-50X3 - Basic Settings
by Jim Unroe 12 Jul '16
by Jim Unroe 12 Jul '16
12 Jul '16
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1468369554 14400
# Node ID 339dbb706cc0bbb2dd8635ec6ee602c2302bb079
# Parent b717d6b593bcb8e9f170e571173c51129a6a62da
[UV-50X3] Add Support for BTech UV-50X3 - Basic Settings
This patch adds the UV-50X3 settings that correspond to the radio's
built in SET menu.
related to #3815
diff -r b717d6b593bc -r 339dbb706cc0 chirp/drivers/vgc.py
--- a/chirp/drivers/vgc.py Tue Jul 12 19:43:19 2016 -0400
+++ b/chirp/drivers/vgc.py Tue Jul 12 20:25:54 2016 -0400
@@ -241,6 +241,75 @@
DTMF_CHARS = list("0123456789ABCD*#")
STIMEOUT = 1
+# Basic settings lists
+LIST_AFTONE = ["Low-3", "Low-2", "Low-1", "Normal", "High-1", "High-2"]
+LIST_SPKR = ["Off", "Front", "Rear", "Front + Rear"]
+LIST_AUDIO = ["Monaural", "Stereo"]
+LIST_SBMUTE = ["Off", "TX", "RX", "Both"]
+LIST_MLNHM = ["Min", "Low", "Normal", "High", "Max"]
+LIST_PTT = ["Momentary", "Toggle"]
+LIST_RXEXP = ["General", "Wide coverage"]
+LIST_VOX = ["Off", "Internal mic", "Front hand-mic", "Rear hand-mic"]
+LIST_DISPLAY = ["Frequency", "Timer/Clock"]
+LIST_MINMAX = ["Min"] + ["%s" % x for x in range(2, 8)] + ["Max"]
+LIST_COLOR = ["White-Blue", "Sky-Blue", "Marine-Blue", "Green",
+ "Yellow-Green", "Orange", "Amber", "White"]
+LIST_BTIME = ["Continuous"] + ["%s" % x for x in range(1, 61)]
+LIST_MRSCAN = ["All", "Selected"]
+LIST_DWSTOP = ["Auto", "Hold"]
+LIST_SCAND = ["Down", "Up"]
+LIST_SCANR = ["Busy", "Hold", "1 sec", "3 sec", "5 sec"]
+LIST_APO = ["Off", ".5", "1", "1.5"] + ["%s" % x for x in range(2, 13)]
+LIST_BEEP = ["Off", "Low", "High"]
+LIST_FKEY = ["MHz/AD-F", "AF Dual 1(line-in)", "AF Dual 2(AM)", "AF Dual 3(FM)",
+ "PA", "SQL off", "T-call", "WX"]
+LIST_PFKEY = ["Off", "SQL off", "TX power", "Scan", "RPT shift", "Reverse",
+ "T-Call"]
+LIST_AB = ["A", "B"]
+LIST_COVERAGE = ["In band", "All"]
+LIST_TOT = ["Off"] + ["%s" % x for x in range(5, 25, 5)] + ["30"]
+LIST_DATEFMT = ["yyyy/mm/dd", "yyyy/dd/mm", "mm/dd/yyyy", "dd/mm/yyyy"]
+LIST_TIMEFMT = ["24H", "12H"]
+LIST_TZ = ["-12 INT DL W",
+ "-11 MIDWAY",
+ "-10 HAST",
+ "-9 AKST",
+ "-8 PST",
+ "-7 MST",
+ "-6 CST",
+ "-5 EST",
+ "-4:30 CARACAS",
+ "-4 AST",
+ "-3:30 NST",
+ "-3 BRASILIA",
+ "-2 MATLANTIC",
+ "-1 AZORES",
+ "-0 LONDON",
+ "+0 LONDON",
+ "+1 ROME",
+ "+2 ATHENS",
+ "+3 MOSCOW",
+ "+3:30 REHRW",
+ "+4 ABUDNABI",
+ "+4:30 KABUL",
+ "+5 ISLMABAD",
+ "+5:30 NEWDELHI",
+ "+6 DHAKA",
+ "+6:30 YANGON",
+ "+7 BANKOK",
+ "+8 BEIJING",
+ "+9 TOKYO",
+ "+10 ADELAIDE",
+ "+10 SYDNET",
+ "+11 NWCLDNIA",
+ "+12 FIJI",
+ "+13 NUKALOFA"
+ ]
+LIST_BELL = ["Off", "1 time", "3 times", "5 times", "8 times", "Continuous"]
+LIST_DATABND = ["Main band", "Sub band", "Left band-fixed", "Right band-fixed"]
+LIST_DATASPD = ["1200 bps", "9600 bps"]
+LIST_DATASQL = ["Busy/TX", "Busy", "TX"]
+
# valid chars on the LCD
VALID_CHARS = chirp_common.CHARSET_ALPHANUMERIC + \
"`{|}!\"#$%&'()*+,-./:;<=>?@[]^_"
@@ -508,7 +577,7 @@
def get_features(self):
rf = chirp_common.RadioFeatures()
- rf.has_settings = False
+ rf.has_settings = True
rf.has_bank = False
rf.has_tuning_step = False
rf.can_odd_split = True
@@ -793,6 +862,232 @@
_mem.dname = 1
+ def get_settings(self):
+ """Translate the bit in the mem_struct into settings in the UI"""
+ _mem = self._memobj
+ basic = RadioSettingGroup("basic", "Basic Settings")
+ top = RadioSettings(basic)
+
+ # Basic
+
+ # Audio: A01-A04
+
+ aftone = RadioSetting("settings.aftone", "AF tone control",
+ RadioSettingValueList(LIST_AFTONE, LIST_AFTONE[
+ _mem.settings.aftone]))
+ basic.append(aftone)
+
+ spkr = RadioSetting("settings.spkr", "Speaker",
+ RadioSettingValueList(LIST_SPKR,LIST_SPKR[
+ _mem.settings.spkr]))
+ basic.append(spkr)
+
+ audio = RadioSetting("settings.audio", "Stereo/Mono",
+ RadioSettingValueList(LIST_AUDIO, LIST_AUDIO[
+ _mem.settings.audio]))
+ basic.append(audio)
+
+ sbmute = RadioSetting("settings.sbmute", "Sub band mute",
+ RadioSettingValueList(LIST_SBMUTE, LIST_SBMUTE[
+ _mem.settings.sbmute]))
+ basic.append(sbmute)
+
+ # TX/RX: B01-B08
+
+ mgain = RadioSetting("settings.mgain", "Mic gain",
+ RadioSettingValueList(LIST_MLNHM, LIST_MLNHM[
+ _mem.settings.mgain]))
+ basic.append(mgain)
+
+ ptt = RadioSetting("settings.ptt", "PTT mode",
+ RadioSettingValueList(LIST_PTT,LIST_PTT[
+ _mem.settings.ptt]))
+ basic.append(ptt)
+
+ # B03 (per channel)
+ # B04 (per channel)
+
+ rxexp = RadioSetting("settings.rxexp", "RX expansion",
+ RadioSettingValueList(LIST_RXEXP,LIST_RXEXP[
+ _mem.settings.rxexp]))
+ basic.append(rxexp)
+
+ vox = RadioSetting("settings.vox", "Vox",
+ RadioSettingValueList(LIST_VOX, LIST_VOX[
+ _mem.settings.vox]))
+ basic.append(vox)
+
+ voxs = RadioSetting("settings.voxs", "Vox sensitivity",
+ RadioSettingValueList(LIST_MLNHM, LIST_MLNHM[
+ _mem.settings.voxs]))
+ basic.append(voxs)
+
+ # B08 (per channel)
+
+ # Display: C01-C06
+
+ display = RadioSetting("settings.display", "Display select",
+ RadioSettingValueList(LIST_DISPLAY,
+ LIST_DISPLAY[_mem.settings.display]))
+ basic.append(display)
+
+ lcdb = RadioSetting("settings.lcdb", "LCD brightness",
+ RadioSettingValueList(LIST_MINMAX, LIST_MINMAX[
+ _mem.settings.lcdb]))
+ basic.append(lcdb)
+
+ color = RadioSetting("settings.color", "LCD color",
+ RadioSettingValueList(LIST_COLOR, LIST_COLOR[
+ _mem.settings.color]))
+ basic.append(color)
+
+ lcdc = RadioSetting("settings.lcdc", "LCD contrast",
+ RadioSettingValueList(LIST_MINMAX, LIST_MINMAX[
+ _mem.settings.lcdc]))
+ basic.append(lcdc)
+
+ btime = RadioSetting("settings.btime", "LCD backlight time",
+ RadioSettingValueList(LIST_BTIME, LIST_BTIME[
+ _mem.settings.btime]))
+ basic.append(btime)
+
+ keyb = RadioSetting("settings.keyb", "Key brightness",
+ RadioSettingValueList(LIST_MINMAX, LIST_MINMAX[
+ _mem.settings.keyb]))
+ basic.append(keyb)
+
+ # Memory: D01-D04
+
+ # D01 (per channel)
+ # D02 (per channel)
+
+ mrscan = RadioSetting("settings.mrscan", "Memory scan type",
+ RadioSettingValueList(LIST_MRSCAN, LIST_MRSCAN[
+ _mem.settings.mrscan]))
+ basic.append(mrscan)
+
+ # D04 (per channel)
+
+ # Scan: E01-E04
+
+ dwstop = RadioSetting("settings.dwstop", "Dual watch stop",
+ RadioSettingValueList(LIST_DWSTOP, LIST_DWSTOP[
+ _mem.settings.dwstop]))
+ basic.append(dwstop)
+
+ scand = RadioSetting("settings.scand", "Scan direction",
+ RadioSettingValueList(LIST_SCAND,LIST_SCAND[
+ _mem.settings.scand]))
+ basic.append(scand)
+
+ scanr = RadioSetting("settings.scanr", "Scan resume",
+ RadioSettingValueList(LIST_SCANR,LIST_SCANR[
+ _mem.settings.scanr]))
+ basic.append(scanr)
+
+ scansb = RadioSetting("settings.scansb", "Scan stop beep",
+ RadioSettingValueBoolean(_mem.settings.scansb))
+ basic.append(scansb)
+
+ # System: F01-F09
+
+ apo = RadioSetting("settings.apo", "Automatic power off [hours]",
+ RadioSettingValueList(LIST_APO, LIST_APO[
+ _mem.settings.apo]))
+ basic.append(apo)
+
+ ars = RadioSetting("settings.ars", "Automatic repeater shift",
+ RadioSettingValueBoolean(_mem.settings.ars))
+ basic.append(ars)
+
+ beep = RadioSetting("settings.beep", "Beep volume",
+ RadioSettingValueList(LIST_BEEP,LIST_BEEP[
+ _mem.settings.beep]))
+ basic.append(beep)
+
+ fkey = RadioSetting("settings.fkey", "F key",
+ RadioSettingValueList(LIST_FKEY,LIST_FKEY[
+ _mem.settings.fkey]))
+ basic.append(fkey)
+
+ pfkey1 = RadioSetting("settings.pfkey1", "Mic P1 key",
+ RadioSettingValueList(LIST_PFKEY, LIST_PFKEY[
+ _mem.settings.pfkey1]))
+ basic.append(pfkey1)
+
+ pfkey2 = RadioSetting("settings.pfkey2", "Mic P2 key",
+ RadioSettingValueList(LIST_PFKEY, LIST_PFKEY[
+ _mem.settings.pfkey2]))
+ basic.append(pfkey2)
+
+ pfkey3 = RadioSetting("settings.pfkey3", "Mic P3 key",
+ RadioSettingValueList(LIST_PFKEY, LIST_PFKEY[
+ _mem.settings.pfkey3]))
+ basic.append(pfkey3)
+
+ pfkey4 = RadioSetting("settings.pfkey4", "Mic P4 key",
+ RadioSettingValueList(LIST_PFKEY, LIST_PFKEY[
+ _mem.settings.pfkey4]))
+ basic.append(pfkey4)
+
+ omode = RadioSetting("settings.omode", "Operation mode",
+ RadioSettingValueList(LIST_AB,LIST_AB[
+ _mem.settings.omode]))
+ basic.append(omode)
+
+ rxcoverm = RadioSetting("settings.rxcoverm", "RX coverage - memory",
+ RadioSettingValueList(LIST_COVERAGE,
+ LIST_COVERAGE[_mem.settings.rxcoverm]))
+ basic.append(rxcoverm)
+
+ rxcoverv = RadioSetting("settings.rxcoverv", "RX coverage - VFO",
+ RadioSettingValueList(LIST_COVERAGE,
+ LIST_COVERAGE[_mem.settings.rxcoverv]))
+ basic.append(rxcoverv)
+
+ tot = RadioSetting("settings.tot", "Time out timer [min]",
+ RadioSettingValueList(LIST_TOT, LIST_TOT[
+ _mem.settings.tot]))
+ basic.append(tot)
+
+ return top
+
+ def set_settings(self, settings):
+ _settings = self._memobj.settings
+ _mem = self._memobj
+ for element in settings:
+ if not isinstance(element, RadioSetting):
+ self.set_settings(element)
+ continue
+ else:
+ try:
+ name = element.get_name()
+ if "." in name:
+ bits = name.split(".")
+ obj = self._memobj
+ for bit in bits[:-1]:
+ if "/" in bit:
+ bit, index = bit.split("/", 1)
+ index = int(index)
+ obj = getattr(obj, bit)[index]
+ else:
+ obj = getattr(obj, bit)
+ setting = bits[-1]
+ else:
+ obj = _settings
+ setting = element.get_name()
+
+ if element.has_apply_callback():
+ LOG.debug("Using apply callback")
+ element.run_apply_callback()
+ 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
+
+
@classmethod
def match_model(cls, filedata, filename):
match_size = False
1
0
[chirp_devel] [PATCH] [UV-50X3] Add Support for BTech UV-50X3 - Basic Settings
by Jim Unroe 12 Jul '16
by Jim Unroe 12 Jul '16
12 Jul '16
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1468367503 14400
# Node ID 6a568198077819aa3fcf40eb414874b8c5b23490
# Parent b717d6b593bcb8e9f170e571173c51129a6a62da
[UV-50X3] Add Support for BTech UV-50X3 - Basic Settings
This patch adds the UV-50X3 settings that correspond to the radio's
built in SET menu.
related to #3815
1
1
Tested changes:
[Jim Unroe <rock.unroe(a)gmail.com>] [UV-50X3] Add Support for BTech UV-50X3
This patch adds basic support (500 left memories/500 right memories) plus
all per-channel settings. It also and exposes the structures that will be used
to add settings in future patches.
related to #3815
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 0fb2340c1de9a353cb0eb7d0a2190585e3692e03
[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 0fb2340c1de9a353cb0eb7d0a2190585e3692e03
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson2477965061603870263.sh
[workspace] $ /bin/sh -xe /tmp/hudson2756029932977064281.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/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:521:45: W291 trailing whitespace
./chirp/drivers/ft60.py:522:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:523: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/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/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.520s
user 0m7.402s
sys 0m0.052s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-07-12 17:22:36,194] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 14.04.4 LTS (Python 2.7.6)
[2016-07-12 17:22:36,204] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-07-12 17:22:36,204] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-07-12 17:22:36,204] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-07-12 17:22:36,204] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-07-12 17:22:36,205] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-07-12 17:22:36,206] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-07-12 17:22:36,206] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-07-12 17:22:36,206] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-07-12 17:22:36,207] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-07-12 17:22:36,208] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-07-12 17:22:36,208] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-07-12 17:22:36,208] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-07-12 17:22:36,208] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-07-12 17:22:36,209] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-07-12 17:22:36,209] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-07-12 17:22:36,210] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-07-12 17:22:36,211] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-07-12 17:22:36,212] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-07-12 17:22:36,213] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-07-12 17:22:36,213] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-07-12 17:22:36,214] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-07-12 17:22:36,214] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-07-12 17:22:36,214] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-07-12 17:22:36,215] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-07-12 17:22:36,215] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-07-12 17:22:36,215] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-07-12 17:22:36,215] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-07-12 17:22:36,216] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-07-12 17:22:36,216] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-07-12 17:22:36,216] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-07-12 17:22:36,216] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-07-12 17:22:36,217] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-07-12 17:22:36,217] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-07-12 17:22:36,217] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-07-12 17:22:36,217] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-07-12 17:22:36,218] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-07-12 17:22:36,218] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-07-12 17:22:36,218] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-07-12 17:22:36,218] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-07-12 17:22:36,224] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-07-12 17:22:36,227] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-07-12 17:22:36,227] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-07-12 17:22:36,228] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-07-12 17:22:36,228] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-07-12 17:22:36,228] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-07-12 17:22:36,228] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-07-12 17:22:36,228] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-07-12 17:22:36,229] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-07-12 17:22:36,229] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-07-12 17:22:36,229] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-07-12 17:22:36,229] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-07-12 17:22:36,230] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-07-12 17:22:36,230] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-07-12 17:22:36,230] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-07-12 17:22:36,230] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-07-12 17:22:36,231] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-07-12 17:22:36,231] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-07-12 17:22:36,231] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-07-12 17:22:36,231] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-07-12 17:22:36,231] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-07-12 17:22:36,231] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-07-12 17:22:36,232] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-07-12 17:22:36,232] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-07-12 17:22:36,232] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-07-12 17:22:36,233] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-07-12 17:22:36,233] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-07-12 17:22:36,233] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-07-12 17:22:36,233] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-07-12 17:22:36,234] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-07-12 17:22:36,234] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-07-12 17:22:36,234] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-07-12 17:22:36,234] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-07-12 17:22:36,234] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-07-12 17:22:36,234] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-07-12 17:22:36,235] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-07-12 17:22:36,235] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-07-12 17:22:36,235] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-07-12 17:22:36,236] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-07-12 17:22:36,236] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-07-12 17:22:36,236] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-07-12 17:22:36,236] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-07-12 17:22:36,236] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-07-12 17:22:36,236] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-07-12 17:22:36,237] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-07-12 17:22:36,237] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-07-12 17:22:36,237] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-07-12 17:22:36,238] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-07-12 17:22:36,239] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-07-12 17:22:36,239] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-07-12 17:22:36,239] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-07-12 17:22:36,239] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-07-12 17:22:36,239] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-07-12 17:22:36,239] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-07-12 17:22:36,240] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-07-12 17:22:36,240] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-07-12 17:22:36,240] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-07-12 17:22:36,240] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-07-12 17:22:36,241] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-07-12 17:22:36,242] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-07-12 17:22:36,242] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-07-12 17:22:36,242] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-07-12 17:22:36,243] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-07-12 17:22:36,243] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-07-12 17:22:36,243] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-07-12 17:22:36,244] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-07-12 17:22:36,244] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-07-12 17:22:36,244] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-07-12 17:22:36,245] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-07-12 17:22:36,245] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-07-12 17:22:36,245] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-07-12 17:22:36,245] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_J0YNnj.img /tmp/Alinco_DJ175_JiCJdg.img /tmp/Alinco_DJ596___OaAF.img /tmp/Alinco_DJ596_yyQfIj.img /tmp/Alinco_DR235T_L0wq23.img /tmp/Alinco_DR235T_M6cqfp.img /tmp/AnyTone_OBLTR-8R_KiNXNg.img /tmp/AnyTone_OBLTR-8R_NQxyNn.img /tmp/AnyTone_TERMN-8R_0x264l.img /tmp/AnyTone_TERMN-8R_hxWwp3.img /tmp/BTECH_UV-2501+220_6iAiXn.img /tmp/BTECH_UV-2501+220_c2Ra72.img /tmp/BTECH_UV-5001_2Dex3F.img /tmp/BTECH_UV-5001_OFQMQz.img /tmp/Baofeng_BF-888_HStFTW.img /tmp/Baofeng_BF-888_LpnrkI.img /tmp/Baofeng_F-11_ZJPea8.img /tmp/Baofeng_F-11_aBk_U5.img /tmp/Baofeng_UV-3R_9PT7TM.img /tmp/Baofeng_UV-3R_WCZhMR.img /tmp/Baofeng_UV-5R_VmVvPT.img /tmp/Baofeng_UV-5R_tkUUpU.img /tmp/Baofeng_UV-B5_JkEe43.img /tmp/Baofeng_UV-B5_vkYXkJ.img /tmp/Baojie_BJ-9900_CnHkvd.img /tmp/Baojie_BJ-9900_IpvU7m.img /tmp/Baojie_BJ-9900_fubaJ7.img /tmp/Baojie_BJ-9900_vo3aNl.img /tmp/Baojie_BJ-9900_wxwtUb.img /tmp/Baojie_BJ-9900_xQiMNs.img /tmp/Feidaxin_FD-268A_J8fkkZ.img /tmp/Feidaxin_FD-268A_Rg76A3.img /tmp/Feidaxin_FD-268B_GsIIfJ.img /tmp/Feidaxin_FD-268B_hKbiIA.img /tmp/Feidaxin_FD-288B_FXZfLe.img /tmp/Feidaxin_FD-288B_TIVciL.img /tmp/Icom_IC-208H_PYbXlN.img /tmp/Icom_IC-208H_g53FAX.img /tmp/Icom_IC-2100H_ZS0JwJ.img /tmp/Icom_IC-2100H_yJitxk.img /tmp/Icom_IC-2200H_8PPlGV.img /tmp/Icom_IC-2200H_n3vhBC.img /tmp/Icom_IC-2720H_1SpCBX.img /tmp/Icom_IC-2720H_fIkoll.img /tmp/Icom_IC-2820H_7nAq9l.img /tmp/Icom_IC-2820H_cs81RR.img /tmp/Icom_IC-Q7A_a2M_lV.img /tmp/Icom_IC-Q7A_ebr8XA.img /tmp/Icom_IC-T70_noWtAQ.img /tmp/Icom_IC-T70_wChFiU.img /tmp/Icom_IC-T7H_0vsR4t.img /tmp/Icom_IC-T7H_zPy2jq.img /tmp/Icom_IC-T8A_3xokm7.img /tmp/Icom_IC-T8A_nUt5en.img /tmp/Icom_IC-V82_U82_0OPvad.img /tmp/Icom_IC-V82_U82_F_YM5h.img /tmp/Icom_IC-W32A_AIWfWG.img /tmp/Icom_IC-W32A_ZlmcpY.img /tmp/Icom_IC-W32A_k1zEV7.img /tmp/Icom_IC-W32A_kjzMyZ.img /tmp/Icom_IC-W32A_p1reYf.img /tmp/Icom_IC-W32A_z_3OQH.img /tmp/Icom_IC-W32E_Q866RB.img /tmp/Icom_IC-W32E_QB9ao8.img /tmp/Icom_IC-W32E_XA0UJs.img /tmp/Icom_IC-W32E_hisG29.img /tmp/Icom_IC-W32E_nxu_TY.img /tmp/Icom_IC-W32E_zVEAPy.img /tmp/Icom_ID-31A_JkWM7S.img /tmp/Icom_ID-31A_rZ6eQZ.img /tmp/Icom_ID-51 Plus_HCeCBM.img /tmp/Icom_ID-51 Plus_MycIGJ.img /tmp/Icom_ID-51_ZYta2H.img /tmp/Icom_ID-51_lLApnq.img /tmp/Icom_ID-800H_NLFXgV.img /tmp/Icom_ID-800H_oFAeJO.img /tmp/Icom_ID-880H_VkMdiH.img /tmp/Icom_ID-880H_hUSnsA.img /tmp/Jetstream_JT220M_g3xiNO.img /tmp/Jetstream_JT220M_w8tz5I.img /tmp/Jetstream_JT270M_09IFZn.img /tmp/Jetstream_JT270M_epIkDQ.img /tmp/KYD_IP-620_2l0lLI.img /tmp/KYD_IP-620_PdZwUm.img /tmp/Kenwood_TH-D72 (clone mode)_3aWPVF.img /tmp/Kenwood_TH-D72 (clone mode)_yEG7ej.img /tmp/Kenwood_TK-272G_bcxfSg.img /tmp/Kenwood_TK-272G_l1dXl2.img /tmp/Kenwood_TK-760G_DoKWok.img /tmp/Kenwood_TK-760G_K0cnJ2.img /tmp/Kenwood_TK-8102_X7t3rs.img /tmp/Kenwood_TK-8102_c3USKD.img /tmp/Leixen_VV-898_4NFl90.img /tmp/Leixen_VV-898_HUZDY3.img /tmp/Polmar_DB-50M_ZfH0CG.img /tmp/Polmar_DB-50M_hUdq7Z.img /tmp/Puxing_PX-2R_2aK_6z.img /tmp/Puxing_PX-2R_rW8fXN.img /tmp/Puxing_PX-777_3exRVd.img /tmp/Puxing_PX-777_9I0pkJ.img /tmp/TYT_TH-7800_Df813t.img /tmp/TYT_TH-7800_GtFG7E.img /tmp/TYT_TH-9800_BBaKhm.img /tmp/TYT_TH-9800_rhbMrO.img /tmp/TYT_TH-UV3R-25_ADhy8u.img /tmp/TYT_TH-UV3R-25_qqw_Rx.img /tmp/TYT_TH-UV3R_F4mgG3.img /tmp/TYT_TH-UV3R_XRebMp.img /tmp/TYT_TH-UVF1_WP1dU4.img /tmp/TYT_TH-UVF1_WsKoHd.img /tmp/TYT_TH9000_144_2LtbIu.img /tmp/TYT_TH9000_144_q37Qqr.img /tmp/Vertex Standard_VXA-700_ZtAiTb.img /tmp/Vertex Standard_VXA-700_dEofUa.img /tmp/WACCOM_MINI-8900_0mXTQQ.img /tmp/WACCOM_MINI-8900_1BLXs3.img /tmp/Wouxun_KG-816_BDutJv.img /tmp/Wouxun_KG-816_t5ASLa.img /tmp/Wouxun_KG-818_NPoYNE.img /tmp/Wouxun_KG-818_QvKE_o.img /tmp/Wouxun_KG-UV6_imZYcA.img /tmp/Wouxun_KG-UV6_laRv0B.img /tmp/Wouxun_KG-UV8D_dJewlc.img /tmp/Wouxun_KG-UV8D_dvqBZl.img /tmp/Wouxun_KG-UVD1P_vMlomw.img /tmp/Wouxun_KG-UVD1P_xQsdYA.img /tmp/Yaesu_FT-1802M_BPqg9Y.img /tmp/Yaesu_FT-1802M_VJAG1I.img /tmp/Yaesu_FT-1D_UyADcc.img /tmp/Yaesu_FT-1D_gNsjQM.img /tmp/Yaesu_FT-2800M_0r4kiA.img /tmp/Yaesu_FT-2800M_w1cVww.img /tmp/Yaesu_FT-2900R_1900R_8BlvjG.img /tmp/Yaesu_FT-2900R_1900R_yCYU_a.img /tmp/Yaesu_FT-50_BNNHmj.img /tmp/Yaesu_FT-50_VN7wiC.img /tmp/Yaesu_FT-60_bf0luQ.img /tmp/Yaesu_FT-60_djtYRd.img /tmp/Yaesu_FT-7800_7900_fa686S.img /tmp/Yaesu_FT-7800_7900_uRcPH9.img /tmp/Yaesu_FT-817ND (US)_4V1IAU.img /tmp/Yaesu_FT-817ND (US)_ONC9yI.img /tmp/Yaesu_FT-817ND_21iQby.img /tmp/Yaesu_FT-817ND_FaYeg2.img /tmp/Yaesu_FT-817_I4xKRg.img /tmp/Yaesu_FT-817_zUd6wj.img /tmp/Yaesu_FT-857_897 (US)_h9_Mh6.img /tmp/Yaesu_FT-857_897 (US)_wAh1qk.img /tmp/Yaesu_FT-857_897_QYWLAR.img /tmp/Yaesu_FT-857_897_nyVJOP.img /tmp/Yaesu_FT-8800_FhRS94.img /tmp/Yaesu_FT-8800_FzuZYU.img /tmp/Yaesu_FT-8800_QdAf7J.img /tmp/Yaesu_FT-8800_SG3s_v.img /tmp/Yaesu_FT-8800_lppF2w.img /tmp/Yaesu_FT-8800_wXF1Z6.img /tmp/Yaesu_FT-8900_djfhE3.img /tmp/Yaesu_FT-8900_yX7OAN.img /tmp/Yaesu_FTM-350_HLFAkT.img /tmp/Yaesu_FTM-350_MLuNva.img /tmp/Yaesu_FTM-350_QI8ieQ.img /tmp/Yaesu_FTM-350_eL3Px6.img /tmp/Yaesu_FTM-350_iwryM6.img /tmp/Yaesu_FTM-350_pkWM_e.img /tmp/Yaesu_VX-2_8jpOh3.img /tmp/Yaesu_VX-2_Wl9SQ5.img /tmp/Yaesu_VX-3_YEZtdu.img /tmp/Yaesu_VX-3_qHuzhH.img /tmp/Yaesu_VX-5_IC3x0o.img /tmp/Yaesu_VX-5_feEhEy.img /tmp/Yaesu_VX-6_FXolBb.img /tmp/Yaesu_VX-6_cJIcOB.img /tmp/Yaesu_VX-7_RGp1br.img /tmp/Yaesu_VX-7_z8rEoL.img /tmp/Yaesu_VX-8_94JDi5.img /tmp/Yaesu_VX-8_K5wXj5.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 1468366999 14400
# Node ID b717d6b593bcb8e9f170e571173c51129a6a62da
# Parent 971c5f5430d90e7bfe37b8d9235790ae5cae7d9f
[UV-50X3] Add Support for BTech UV-50X3
This patch adds basic support (500 left memories/500 right memories) plus
all per-channel settings. It also and exposes the structures that will be used
to add settings in future patches.
related to #3815
diff -r 971c5f5430d9 -r b717d6b593bc chirp/drivers/vgc.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/chirp/drivers/vgc.py Tue Jul 12 19:43:19 2016 -0400
@@ -0,0 +1,828 @@
+# Copyright 2016:
+# * Jim Unroe KC9HI, <rock.unroe(a)gmail.com>
+# * Pavel Milanes CO7WT <pavelmc(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 struct
+import logging
+import re
+
+LOG = logging.getLogger(__name__)
+
+from chirp import chirp_common, directory, memmap
+from chirp import bitwise, errors, util
+from chirp.settings import RadioSettingGroup, RadioSetting, \
+ RadioSettingValueBoolean, RadioSettingValueList, \
+ RadioSettingValueString, RadioSettingValueInteger, \
+ RadioSettingValueFloat, RadioSettings
+from textwrap import dedent
+
+MEM_FORMAT = """
+struct mem {
+ lbcd rxfreq[4];
+ lbcd txfreq[4];
+ lbcd rxtone[2];
+ lbcd txtone[2];
+ u8 unknown0:2,
+ txp:2,
+ wn:2,
+ unknown1:1,
+ bcl:1;
+ u8 unknown2:2,
+ revert:1,
+ dname:1,
+ unknown3:4;
+ u8 unknown4[2];
+};
+
+struct nam {
+ char name[6];
+ u8 unknown1[2];
+};
+
+#seekto 0x0000;
+struct mem left_memory[500];
+
+#seekto 0x2000;
+struct mem right_memory[500];
+
+#seekto 0x4000;
+struct nam left_names[500];
+
+#seekto 0x5000;
+struct nam right_names[500];
+
+#seekto 0x6000;
+u8 left_usedflags[64];
+
+#seekto 0x6040;
+u8 left_scanflags[64];
+
+#seekto 0x6080;
+u8 right_usedflags[64];
+
+#seekto 0x60C0;
+u8 right_scanflags[64];
+
+#seekto 0x6160;
+struct {
+ char line32[32];
+} embedded_msg;
+
+#seekto 0x6180;
+struct {
+ u8 sbmute:2, // sub band mute
+ unknown1:1,
+ workmodb:1, // work mode (right side)
+ dw:1, // dual watch
+ audio:1, // audio output mode (stereo/mono)
+ unknown2:1,
+ workmoda:1; // work mode (left side)
+ u8 scansb:1, // scan stop beep
+ aftone:3, // af tone control
+ scand:1, // scan directon
+ scanr:3; // scan resume
+ u8 rxexp:1, // rx expansion
+ ptt:1, // ptt mode
+ display:1, // display select (frequency/clock)
+ omode:1, // operaton mode
+ beep:2, // beep volume
+ spkr:2; // speaker
+ u8 cpuclk:1, // operating mode(cpu clock)
+ fkey:3, // fkey function
+ mrscan:1, // memory scan type
+ color:3; // lcd backlight color
+ u8 vox:2, // vox
+ voxs:3, // vox sensitivity
+ mgain:3; // mic gain
+ u8 wbandb:4, // work band (right side)
+ wbanda:4; // work band (left side)
+ u8 sqlb:4, // squelch level (right side)
+ sqla:4; // squelch level (left side)
+ u8 apo:4, // auto power off
+ ars:1, // automatic repeater shift
+ tot:3; // time out timer
+ u8 stepb:4, // auto step (right side)
+ stepa:4; // auto step (left side)
+ u8 rxcoverm:1, // rx coverage-memory
+ lcdc:3, // lcd contrast
+ rxcoverv:1, // rx coverage-vfo
+ lcdb:3; // lcd brightness
+ u8 smode:1, // smart function mode
+ timefmt:1, // time format
+ datefmt:2, // date format
+ timesig:1, // time signal
+ keyb:3; // key/led brightness
+ u8 dwstop:1, // dual watch stop
+ unknown3:1,
+ sqlexp:1, // sql expansion
+ decbandsel:1, // decoding band select
+ dtmfmodenc:1, // dtmf mode encode
+ bell:3; // bell ringer
+ u8 unknown4:2,
+ btime:6; // lcd backlight time
+ u8 unknown5:2,
+ tz:6; // time zone
+ u8 unknown618E;
+ u8 unknown618F;
+ ul16 offseta; // work offset (left side)
+ ul16 offsetb; // work offset (right side)
+ ul16 mrcha; // selected memory channel (left)
+ ul16 mrchb; // selected memory channel (right)
+ ul16 wpricha; // work priority channel (left)
+ ul16 wprichb; // work priority channel (right)
+ u8 unknown6:3,
+ datasql:2, // data squelch
+ dataspd:1, // data speed
+ databnd:2; // data band select
+ u8 unknown7:1,
+ pfkey2:3, // mic p2 key
+ unknown8:1,
+ pfkey1:3; // mic p1 key
+ u8 unknown9:1,
+ pfkey4:3, // mic p4 key
+ unknowna:1,
+ pfkey3:3; // mic p3 key
+ u8 unknownb:7,
+ dtmfmoddec:1; // dtmf mode decode
+} settings;
+
+#seekto 0x61B0;
+struct {
+ char line16[16];
+} poweron_msg;
+
+#seekto 0x6300;
+struct {
+ u8 unknown1:3,
+ ttdgt:5; // dtmf digit time
+ u8 unknown2:3,
+ ttint:5; // dtmf interval time
+ u8 unknown3:3,
+ tt1stdgt:5; // dtmf 1st digit time
+ u8 unknown4:3,
+ tt1stdly:5; // dtmf 1st digit delay
+ u8 unknown5:3,
+ ttdlyqt:5; // dtmf delay when use qt
+ u8 unknown6:3,
+ ttdkey:5; // dtmf d key function
+ u8 unknown7;
+ u8 unknown8:4,
+ ttautod:4; // dtmf auto dial group
+} dtmf;
+
+#seekto 0x6330;
+struct {
+ u8 unknown1:7,
+ ttsig:1; // dtmf signal
+ u8 unknown2:4,
+ ttintcode:4; // dtmf interval code
+ u8 unknown3:5,
+ ttgrpcode:3; // dtmf group code
+ u8 unknown4:4,
+ ttautorst:4; // dtmf auto reset time
+ u8 unknown5:5,
+ ttalert:3; // dtmf alert tone/transpond
+} dtmf2;
+
+#seekto 0x6360;
+struct {
+ u8 code1[8]; // dtmf code
+ u8 code1_len; // dtmf code length
+ u8 unknown1[7];
+ u8 code2[8]; // dtmf code
+ u8 code2_len; // dtmf code length
+ u8 unknown2[7];
+ u8 code3[8]; // dtmf code
+ u8 code3_len; // dtmf code length
+ u8 unknown3[7];
+ u8 code4[8]; // dtmf code
+ u8 code4_len; // dtmf code length
+ u8 unknown4[7];
+ u8 code5[8]; // dtmf code
+ u8 code5_len; // dtmf code length
+ u8 unknown5[7];
+ u8 code6[8]; // dtmf code
+ u8 code6_len; // dtmf code length
+ u8 unknown6[7];
+ u8 code7[8]; // dtmf code
+ u8 code7_len; // dtmf code length
+ u8 unknown7[7];
+ u8 code8[8]; // dtmf code
+ u8 code8_len; // dtmf code length
+ u8 unknown8[7];
+ u8 code9[8]; // dtmf code
+ u8 code9_len; // dtmf code length
+ u8 unknown9[7];
+} dtmfcode;
+
+"""
+
+MEM_SIZE = 0x8000
+BLOCK_SIZE = 0x40
+MODES = ["FM", "Auto", "NFM", "AM"]
+SKIP_VALUES = ["", "S"]
+TONES = chirp_common.TONES
+DTCS_CODES = chirp_common.DTCS_CODES
+NAME_LENGTH = 6
+DTMF_CHARS = list("0123456789ABCD*#")
+STIMEOUT = 1
+
+# valid chars on the LCD
+VALID_CHARS = chirp_common.CHARSET_ALPHANUMERIC + \
+ "`{|}!\"#$%&'()*+,-./:;<=>?@[]^_"
+
+# Power Levels
+POWER_LEVELS = [chirp_common.PowerLevel("Low", watts=5),
+ chirp_common.PowerLevel("Mid", watts=20),
+ chirp_common.PowerLevel("High", watts=50)]
+
+# B-TECH UV-50X3 id string
+UV50X3_id = "VGC6600MD"
+
+
+def _clean_buffer(radio):
+ radio.pipe.timeout = 0.005
+ junk = radio.pipe.read(256)
+ radio.pipe.timeout = STIMEOUT
+ if junk:
+ Log.debug("Got %i bytes of junk before starting" % len(junk))
+
+
+def _check_for_double_ack(radio):
+ radio.pipe.timeout = 0.005
+ c = radio.pipe.read(1)
+ radio.pipe.timeout = STIMEOUT
+ if c and c != '\x06':
+ _exit_program_mode(radio)
+ raise errors.RadioError('Expected nothing or ACK, got %r' % c)
+
+
+def _rawrecv(radio, amount):
+ """Raw read from the radio device"""
+ data = ""
+ try:
+ data = radio.pipe.read(amount)
+ except:
+ _exit_program_mode(radio)
+ msg = "Generic error reading data from radio; check your cable."
+ raise errors.RadioError(msg)
+
+ if len(data) != amount:
+ _exit_program_mode(radio)
+ msg = "Error reading data from radio: not the amount of data we want."
+ raise errors.RadioError(msg)
+
+ return data
+
+
+def _rawsend(radio, data):
+ """Raw send to the radio device"""
+ try:
+ radio.pipe.write(data)
+ except:
+ raise errors.RadioError("Error sending data to radio")
+
+
+def _make_frame(cmd, addr, length, data=""):
+ """Pack the info in the headder format"""
+ frame = struct.pack(">BHB", ord(cmd), addr, length)
+ # add the data if set
+ if len(data) != 0:
+ frame += data
+ # return the data
+ return frame
+
+
+def _recv(radio, addr, length=BLOCK_SIZE):
+ """Get data from the radio """
+ # read 4 bytes of header
+ hdr = _rawrecv(radio, 4)
+
+ # check for unexpected extra command byte
+ c, a, l = struct.unpack(">BHB", hdr)
+ if hdr[0:2] == "WW" and a != addr:
+ # extra command byte detected
+ # throw away the 1st byte and add the next byte in the buffer
+ hdr = hdr[1:] + _rawrecv(radio, 1)
+
+ # read 64 bytes (0x40) of data
+ data = _rawrecv(radio, (BLOCK_SIZE))
+
+ # DEBUG
+ LOG.info("Response:")
+ LOG.debug(util.hexprint(hdr + data))
+
+ c, a, l = struct.unpack(">BHB", hdr)
+ if a != addr or l != length or c != ord("W"):
+ _exit_program_mode(radio)
+ LOG.error("Invalid answer for block 0x%04x:" % addr)
+ LOG.debug("CMD: %s ADDR: %04x SIZE: %02x" % (c, a, l))
+ raise errors.RadioError("Unknown response from the radio")
+
+ return data
+
+
+def _do_ident(radio):
+ """Put the radio in PROGRAM mode & identify it"""
+ # set the serial discipline
+ radio.pipe.baudrate = 115200
+ radio.pipe.parity = "N"
+ radio.pipe.timeout = STIMEOUT
+
+ # flush input buffer
+ _clean_buffer(radio)
+
+ magic = "V66LINK"
+
+ _rawsend(radio, magic)
+
+ # Ok, get the ident string
+ ident = _rawrecv(radio, 9)
+
+ # check if ident is OK
+ if ident != radio.IDENT:
+ # bad ident
+ msg = "Incorrect model ID, got this:"
+ msg += util.hexprint(ident)
+ LOG.debug(msg)
+ raise errors.RadioError("Radio identification failed.")
+
+ # DEBUG
+ LOG.info("Positive ident, got this:")
+ LOG.debug(util.hexprint(ident))
+
+ return True
+
+
+def _exit_program_mode(radio):
+ endframe = "\x45"
+ _rawsend(radio, endframe)
+
+
+def _download(radio):
+ """Get the memory map"""
+
+ # put radio in program mode and identify it
+ _do_ident(radio)
+
+ # UI progress
+ status = chirp_common.Status()
+ status.cur = 0
+ status.max = MEM_SIZE / BLOCK_SIZE
+ status.msg = "Cloning from radio..."
+ radio.status_fn(status)
+
+ data = ""
+ for addr in range(0, MEM_SIZE, BLOCK_SIZE):
+ frame = _make_frame("R", addr, BLOCK_SIZE)
+ # DEBUG
+ LOG.info("Request sent:")
+ LOG.debug(util.hexprint(frame))
+
+ # sending the read request
+ _rawsend(radio, frame)
+
+ # now we read
+ d = _recv(radio, addr)
+
+ # aggregate the data
+ data += d
+
+ # UI Update
+ status.cur = addr / BLOCK_SIZE
+ status.msg = "Cloning from radio..."
+ radio.status_fn(status)
+
+ _exit_program_mode(radio)
+
+ return data
+
+
+def _upload(radio):
+ """Upload procedure"""
+
+ MEM_SIZE = 0x7000
+
+ # put radio in program mode and identify it
+ _do_ident(radio)
+
+ # UI progress
+ status = chirp_common.Status()
+ status.cur = 0
+ status.max = MEM_SIZE / BLOCK_SIZE
+ status.msg = "Cloning to radio..."
+ radio.status_fn(status)
+
+ # the fun start here
+ for addr in range(0, MEM_SIZE, BLOCK_SIZE):
+ # sending the data
+ data = radio.get_mmap()[addr:addr + BLOCK_SIZE]
+
+ frame = _make_frame("W", addr, BLOCK_SIZE, data)
+
+ _rawsend(radio, frame)
+
+ # receiving the response
+ ack = _rawrecv(radio, 1)
+ if ack != "\x06":
+ _exit_program_mode(radio)
+ msg = "Bad ack writing block 0x%04x" % addr
+ raise errors.RadioError(msg)
+
+ _check_for_double_ack(radio)
+
+ # UI Update
+ status.cur = addr / BLOCK_SIZE
+ status.msg = "Cloning to radio..."
+ radio.status_fn(status)
+
+ _exit_program_mode(radio)
+
+
+def model_match(cls, data):
+ """Match the opened/downloaded image to the correct version"""
+ rid = data[0x6140:0x6148]
+
+ #if rid in cls._fileid:
+ if rid in cls.IDENT:
+ return True
+
+ return False
+
+
+class VGCStyleRadio(chirp_common.CloneModeRadio,
+ chirp_common.ExperimentalRadio):
+ """BTECH's UV-50X3"""
+ VENDOR = "BTECH"
+ _air_range = (108000000, 136000000)
+ _vhf_range = (136000000, 174000000)
+ _vhf2_range = (174000000, 250000000)
+ _220_range = (222000000, 225000000)
+ _gen1_range = (300000000, 400000000)
+ _uhf_range = (400000000, 480000000)
+ _gen2_range = (480000000, 520000000)
+ _upper = 499
+ MODEL = ""
+ IDENT = ""
+
+ @classmethod
+ def get_prompts(cls):
+ rp = chirp_common.RadioPrompts()
+ rp.experimental = \
+ ('The UV-50X3 driver is a beta version.\n'
+ '\n'
+ 'Please save an unedited copy of your first successful\n'
+ 'download to a CHIRP Radio Images(*.img) file.'
+ )
+ rp.pre_download = _(dedent("""\
+ Follow this instructions to download your info:
+
+ 1 - Turn off your radio
+ 2 - Connect your interface cable
+ 3 - Turn on your radio
+ 4 - Do the download of your radio data
+ """))
+ rp.pre_upload = _(dedent("""\
+ Follow this instructions to upload your info:
+
+ 1 - Turn off your radio
+ 2 - Connect your interface cable
+ 3 - Turn on your radio
+ 4 - Do the upload of your radio data
+ """))
+ return rp
+
+ def get_features(self):
+ rf = chirp_common.RadioFeatures()
+ rf.has_settings = False
+ rf.has_bank = False
+ rf.has_tuning_step = False
+ rf.can_odd_split = True
+ rf.has_name = True
+ rf.has_offset = True
+ rf.has_mode = True
+ rf.has_dtcs = True
+ rf.has_rx_dtcs = True
+ rf.has_dtcs_polarity = True
+ rf.has_ctone = True
+ rf.has_cross = True
+ rf.has_sub_devices = self.VARIANT == ""
+ rf.valid_modes = MODES
+ rf.valid_characters = VALID_CHARS
+ rf.valid_duplexes = ["", "-", "+", "split", "off"]
+ rf.valid_tmodes = ['', 'Tone', 'TSQL', 'DTCS', 'Cross']
+ rf.valid_cross_modes = [
+ "Tone->Tone",
+ "DTCS->",
+ "->DTCS",
+ "Tone->DTCS",
+ "DTCS->Tone",
+ "->Tone",
+ "DTCS->DTCS"]
+ rf.valid_power_levels = POWER_LEVELS
+ rf.valid_skips = SKIP_VALUES
+ rf.valid_name_length = NAME_LENGTH
+ rf.valid_dtcs_codes = DTCS_CODES
+ rf.valid_bands = [self._air_range,
+ self._vhf_range,
+ self._vhf2_range,
+ self._220_range,
+ self._gen1_range,
+ self._uhf_range,
+ self._gen2_range]
+ rf.memory_bounds = (0, self._upper)
+ return rf
+
+ def get_sub_devices(self):
+ return [UV50X3Left(self._mmap), UV50X3Right(self._mmap)]
+
+ def sync_in(self):
+ """Download from radio"""
+ try:
+ data = _download(self)
+ except errors.RadioError:
+ # Pass through any real errors we raise
+ raise
+ except:
+ # If anything unexpected happens, make sure we raise
+ # a RadioError and log the problem
+ LOG.exception('Unexpected error during download')
+ raise errors.RadioError('Unexpected error communicating '
+ 'with the radio')
+ self._mmap = memmap.MemoryMap(data)
+ self.process_mmap()
+
+ def sync_out(self):
+ """Upload to radio"""
+ try:
+ _upload(self)
+ except:
+ # If anything unexpected happens, make sure we raise
+ # a RadioError and log the problem
+ LOG.exception('Unexpected error during upload')
+ raise errors.RadioError('Unexpected error communicating '
+ 'with the radio')
+
+ def process_mmap(self):
+ """Process the mem map into the mem object"""
+ self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
+
+ def get_raw_memory(self, number):
+ return repr(self._memobj.memory[number])
+
+ def decode_tone(self, val):
+ """Parse the tone data to decode from mem, it returns:
+ Mode (''|DTCS|Tone), Value (None|###), Polarity (None,N,R)"""
+ if val.get_raw() == "\xFF\xFF":
+ return '', None, None
+
+ val = int(val)
+ if val >= 12000:
+ a = val - 12000
+ return 'DTCS', a, 'R'
+ elif val >= 8000:
+ a = val - 8000
+ return 'DTCS', a, 'N'
+ else:
+ a = val / 10.0
+ return 'Tone', a, None
+
+ def encode_tone(self, memval, mode, value, pol):
+ """Parse the tone data to encode from UI to mem"""
+ if mode == '':
+ memval[0].set_raw(0xFF)
+ memval[1].set_raw(0xFF)
+ elif mode == 'Tone':
+ memval.set_value(int(value * 10))
+ elif mode == 'DTCS':
+ flag = 0x80 if pol == 'N' else 0xC0
+ memval.set_value(value)
+ memval[1].set_bits(flag)
+ else:
+ raise Exception("Internal error: invalid mode `%s'" % mode)
+
+ def _memory_obj(self, suffix=""):
+ return getattr(self._memobj, "%s_memory%s" % (self._vfo, suffix))
+
+ def _name_obj(self, suffix=""):
+ return getattr(self._memobj, "%s_names%s" % (self._vfo, suffix))
+
+ def _scan_obj(self, suffix=""):
+ return getattr(self._memobj, "%s_scanflags%s" % (self._vfo, suffix))
+
+ def _used_obj(self, suffix=""):
+ return getattr(self._memobj, "%s_usedflags%s" % (self._vfo, suffix))
+
+ def get_memory(self, number):
+ """Get the mem representation from the radio image"""
+ bitpos = (1 << (number % 8))
+ bytepos = (number / 8)
+
+ _mem = self._memory_obj()[number]
+ _names = self._name_obj()[number]
+ _scn = self._scan_obj()[bytepos]
+ _usd = self._used_obj()[bytepos]
+
+ isused = bitpos & int(_usd)
+ isscan = bitpos & int(_scn)
+
+ # Create a high-level memory object to return to the UI
+ mem = chirp_common.Memory()
+
+ # Memory number
+ mem.number = number
+
+ if not isused:
+ mem.empty = True
+ return mem
+
+ # Freq and offset
+ mem.freq = int(_mem.rxfreq) * 10
+ # tx freq can be blank
+ if _mem.get_raw()[4] == "\xFF":
+ # TX freq not set
+ mem.offset = 0
+ mem.duplex = "off"
+ else:
+ # TX feq set
+ offset = (int(_mem.txfreq) * 10) - mem.freq
+ if offset < 0:
+ mem.offset = abs(offset)
+ mem.duplex = "-"
+ elif offset > 0:
+ mem.offset = offset
+ mem.duplex = "+"
+ else:
+ mem.offset = 0
+
+ # skip
+ if not isscan:
+ mem.skip = "S"
+
+ # name TAG of the channel
+ mem.name = str(_names.name).strip("\xFF")
+
+ # power
+ mem.power = POWER_LEVELS[int(_mem.txp)]
+
+ # wide/narrow
+ mem.mode = MODES[int(_mem.wn)]
+
+ # tone data
+ rxtone = txtone = None
+ txtone = self.decode_tone(_mem.txtone)
+ rxtone = self.decode_tone(_mem.rxtone)
+ chirp_common.split_tone_decode(mem, txtone, rxtone)
+
+ # Extra
+ mem.extra = RadioSettingGroup("extra", "Extra")
+
+ bcl = RadioSetting("bcl", "Busy channel lockout",
+ RadioSettingValueBoolean(bool(_mem.bcl)))
+ mem.extra.append(bcl)
+
+ revert = RadioSetting("revert", "Revert",
+ RadioSettingValueBoolean(bool(_mem.revert)))
+ mem.extra.append(revert)
+
+ dname = RadioSetting("dname", "Display name",
+ RadioSettingValueBoolean(bool(_mem.dname)))
+ mem.extra.append(dname)
+
+ return mem
+
+ def set_memory(self, mem):
+ """Set the memory data in the eeprom img from the UI"""
+ bitpos = (1 << (mem.number % 8))
+ bytepos = (mem.number / 8)
+
+ _mem = self._memory_obj()[mem.number]
+ _names = self._name_obj()[mem.number]
+ _scn = self._scan_obj()[bytepos]
+ _usd = self._used_obj()[bytepos]
+
+ if mem.empty:
+ _usd &= ~bitpos
+ _scn &= ~bitpos
+ _mem.set_raw("\xFF" * 16)
+ _names.name = ("\xFF" * 6)
+ return
+ else:
+ _usd |= bitpos
+
+ # frequency
+ _mem.rxfreq = mem.freq / 10
+
+ # duplex
+ if mem.duplex == "+":
+ _mem.txfreq = (mem.freq + mem.offset) / 10
+ elif mem.duplex == "-":
+ _mem.txfreq = (mem.freq - mem.offset) / 10
+ elif mem.duplex == "off":
+ for i in _mem.txfreq:
+ i.set_raw("\xFF")
+ elif mem.duplex == "split":
+ _mem.txfreq = mem.offset / 10
+ else:
+ _mem.txfreq = mem.freq / 10
+
+ # tone data
+ ((txmode, txtone, txpol), (rxmode, rxtone, rxpol)) = \
+ chirp_common.split_tone_encode(mem)
+ self.encode_tone(_mem.txtone, txmode, txtone, txpol)
+ self.encode_tone(_mem.rxtone, rxmode, rxtone, rxpol)
+
+ # name TAG of the channel
+ _names.name = mem.name.ljust(6, "\xFF")
+
+ # power level, # default power level is low
+ _mem.txp = 0 if mem.power is None else POWER_LEVELS.index(mem.power)
+
+ # wide/narrow
+ _mem.wn = MODES.index(mem.mode)
+
+ if mem.skip == "S":
+ _scn &= ~bitpos
+ else:
+ _scn |= bitpos
+
+ # autoset display to display name if filled
+ if mem.extra:
+ # mem.extra only seems to be populated when called from edit panel
+ dname = mem.extra["dname"]
+ else:
+ dname = None
+ if mem.name:
+ _mem.dname = True
+ if dname and not dname.changed():
+ dname.value = True
+ else:
+ _mem.dname = False
+ if dname and not dname.changed():
+ dname.value = False
+
+ # reseting unknowns, this has to be set by hand
+ _mem.unknown0 = 0
+ _mem.unknown1 = 0
+ _mem.unknown2 = 0
+ _mem.unknown3 = 0
+
+ # extra settings
+ if len(mem.extra) > 0:
+ # there are setting, parse
+ for setting in mem.extra:
+ setattr(_mem, setting.get_name(), setting.value)
+ else:
+ # there are no extra settings, load defaults
+ _mem.bcl = 0
+ _mem.revert = 0
+ _mem.dname = 1
+
+
+ @classmethod
+ def match_model(cls, filedata, filename):
+ match_size = False
+ match_model = False
+
+ # testing the file data size
+ if len(filedata) == MEM_SIZE:
+ match_size = True
+
+ # testing the firmware model fingerprint
+ match_model = model_match(cls, filedata)
+
+ if match_size and match_model:
+ return True
+ else:
+ return False
+
+
+(a)directory.register
+class UV50X3(VGCStyleRadio):
+ """BTech UV-50X3"""
+ MODEL = "UV-50X3"
+ IDENT = UV50X3_id
+
+
+class UV50X3Left(UV50X3):
+ VARIANT = "Left"
+ _vfo = "left"
+
+
+class UV50X3Right(UV50X3):
+ VARIANT = "Right"
+ _vfo = "right"
2
2
Tested changes:
[Tom Hayward <tom(a)tomh.us>] [ui] Replace / with _ in default filenames. Fixes #3797. Related to #3753
The FT-857/897 driver has a slash in the model name. When used in the
filename, this slash is interpreted as a directory on Linux and implodes
on Windows. Neither is intended behavior.
This patch substitues an underscore for a slash when generating a default
filename.
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 62236873e87473bc926b06ac2aafab9a7926eec0
[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 62236873e87473bc926b06ac2aafab9a7926eec0
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson4098641001203720197.sh
[workspace] $ /bin/sh -xe /tmp/hudson8638317441185433816.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.053s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:521:45: W291 trailing whitespace
./chirp/drivers/ft60.py:522:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:523: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/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/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.505s
user 0m7.350s
sys 0m0.081s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-07-05 15:52:35,590] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 14.04.4 LTS (Python 2.7.6)
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-07-05 15:52:35,601] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-07-05 15:52:35,602] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-07-05 15:52:35,603] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-07-05 15:52:35,603] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-07-05 15:52:35,603] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-07-05 15:52:35,603] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-07-05 15:52:35,603] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-07-05 15:52:35,603] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-07-05 15:52:35,603] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-07-05 15:52:35,604] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-07-05 15:52:35,604] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-07-05 15:52:35,604] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-07-05 15:52:35,604] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-07-05 15:52:35,604] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-07-05 15:52:35,604] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-07-05 15:52:35,605] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-07-05 15:52:35,605] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-07-05 15:52:35,605] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-07-05 15:52:35,606] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-07-05 15:52:35,606] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-07-05 15:52:35,606] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-07-05 15:52:35,606] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-07-05 15:52:35,606] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-07-05 15:52:35,607] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-07-05 15:52:35,607] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-07-05 15:52:35,607] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-07-05 15:52:35,607] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-07-05 15:52:35,607] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-07-05 15:52:35,607] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-07-05 15:52:35,607] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-07-05 15:52:35,608] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-07-05 15:52:35,609] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-07-05 15:52:35,609] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-07-05 15:52:35,609] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-07-05 15:52:35,609] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-07-05 15:52:35,610] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-07-05 15:52:35,610] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-07-05 15:52:35,610] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-07-05 15:52:35,611] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-07-05 15:52:35,611] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-07-05 15:52:35,612] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-07-05 15:52:35,612] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-07-05 15:52:35,612] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-07-05 15:52:35,612] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-07-05 15:52:35,612] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-07-05 15:52:35,613] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-07-05 15:52:35,613] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-07-05 15:52:35,613] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-07-05 15:52:35,613] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-07-05 15:52:35,613] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-07-05 15:52:35,614] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-07-05 15:52:35,614] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-07-05 15:52:35,614] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-07-05 15:52:35,615] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-07-05 15:52:35,615] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-07-05 15:52:35,620] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-07-05 15:52:35,623] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-07-05 15:52:35,624] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-07-05 15:52:35,624] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-07-05 15:52:35,624] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-07-05 15:52:35,624] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-07-05 15:52:35,624] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-07-05 15:52:35,625] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-07-05 15:52:35,625] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-07-05 15:52:35,625] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-07-05 15:52:35,626] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-07-05 15:52:35,626] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-07-05 15:52:35,626] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-07-05 15:52:35,626] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-07-05 15:52:35,626] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-07-05 15:52:35,627] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-07-05 15:52:35,627] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-07-05 15:52:35,627] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-07-05 15:52:35,627] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-07-05 15:52:35,627] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-07-05 15:52:35,628] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-07-05 15:52:35,628] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-07-05 15:52:35,628] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-07-05 15:52:35,628] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-07-05 15:52:35,629] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-07-05 15:52:35,629] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-07-05 15:52:35,629] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-07-05 15:52:35,630] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-07-05 15:52:35,630] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-07-05 15:52:35,630] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-07-05 15:52:35,630] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-07-05 15:52:35,630] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-07-05 15:52:35,630] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-07-05 15:52:35,631] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-07-05 15:52:35,631] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-07-05 15:52:35,631] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-07-05 15:52:35,631] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-07-05 15:52:35,632] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-07-05 15:52:35,632] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-07-05 15:52:35,632] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-07-05 15:52:35,632] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-07-05 15:52:35,632] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-07-05 15:52:35,632] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-07-05 15:52:35,633] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-07-05 15:52:35,633] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-07-05 15:52:35,633] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-07-05 15:52:35,634] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-07-05 15:52:35,635] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-07-05 15:52:35,635] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-07-05 15:52:35,635] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-07-05 15:52:35,635] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-07-05 15:52:35,635] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-07-05 15:52:35,635] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-07-05 15:52:35,636] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-07-05 15:52:35,637] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-07-05 15:52:35,638] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-07-05 15:52:35,638] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-07-05 15:52:35,638] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-07-05 15:52:35,638] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-07-05 15:52:35,638] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-07-05 15:52:35,639] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-07-05 15:52:35,639] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-07-05 15:52:35,639] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-07-05 15:52:35,640] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-07-05 15:52:35,640] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-07-05 15:52:35,640] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-07-05 15:52:35,641] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-07-05 15:52:35,641] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-07-05 15:52:35,641] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-07-05 15:52:35,641] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_S6G7fb.img /tmp/Alinco_DJ175_XAlH6m.img /tmp/Alinco_DJ596_b4sVbW.img /tmp/Alinco_DJ596_kq8vmI.img /tmp/Alinco_DR235T_NYmRb8.img /tmp/Alinco_DR235T_da11sT.img /tmp/AnyTone_OBLTR-8R_FqhgoH.img /tmp/AnyTone_OBLTR-8R_n3TVcW.img /tmp/AnyTone_TERMN-8R__yV8PN.img /tmp/AnyTone_TERMN-8R_b7TTMV.img /tmp/BTECH_UV-2501+220_8aFerZ.img /tmp/BTECH_UV-2501+220_CkyWDX.img /tmp/BTECH_UV-5001_8m39Yi.img /tmp/BTECH_UV-5001_oi63Lq.img /tmp/Baofeng_BF-888_b6_wp7.img /tmp/Baofeng_BF-888_st3Uhd.img /tmp/Baofeng_F-11_GVPvp9.img /tmp/Baofeng_F-11_ja86Bb.img /tmp/Baofeng_UV-3R_6S2xCL.img /tmp/Baofeng_UV-3R_RUfU5Q.img /tmp/Baofeng_UV-5R_84GkSI.img /tmp/Baofeng_UV-5R_Ck_Q59.img /tmp/Baofeng_UV-B5_NaEOsr.img /tmp/Baofeng_UV-B5_Y2toKQ.img /tmp/Baojie_BJ-9900_2zfbNY.img /tmp/Baojie_BJ-9900_Gs7iGl.img /tmp/Baojie_BJ-9900_OxTlcr.img /tmp/Baojie_BJ-9900_Q7GtrB.img /tmp/Baojie_BJ-9900_nLGXDL.img /tmp/Baojie_BJ-9900_pB72cT.img /tmp/Feidaxin_FD-268A_KJZP96.img /tmp/Feidaxin_FD-268A_lJS80R.img /tmp/Feidaxin_FD-268B_ClKQ9Q.img /tmp/Feidaxin_FD-268B_aFxjm2.img /tmp/Feidaxin_FD-288B_qslPP5.img /tmp/Feidaxin_FD-288B_wglmMn.img /tmp/Icom_IC-208H_bH_Ezm.img /tmp/Icom_IC-208H_hQYnUd.img /tmp/Icom_IC-2100H_CbjIGr.img /tmp/Icom_IC-2100H_YJeBzr.img /tmp/Icom_IC-2200H_QIHuw8.img /tmp/Icom_IC-2200H_g0FRsa.img /tmp/Icom_IC-2720H_HNsUnH.img /tmp/Icom_IC-2720H_P13xNE.img /tmp/Icom_IC-2820H_OG2kO4.img /tmp/Icom_IC-2820H_zPYPHv.img /tmp/Icom_IC-Q7A_YWktGv.img /tmp/Icom_IC-Q7A_qg7iwi.img /tmp/Icom_IC-T70_YJW5L3.img /tmp/Icom_IC-T70_buvp5o.img /tmp/Icom_IC-T7H_9F10gC.img /tmp/Icom_IC-T7H_y5Tinw.img /tmp/Icom_IC-T8A_AA1Ct_.img /tmp/Icom_IC-T8A_EfTAua.img /tmp/Icom_IC-V82_U82_cNBt3g.img /tmp/Icom_IC-V82_U82_mrz5F2.img /tmp/Icom_IC-W32A_4JzKjr.img /tmp/Icom_IC-W32A_ASyB_k.img /tmp/Icom_IC-W32A_DGcKcY.img /tmp/Icom_IC-W32A_RkvdZ4.img /tmp/Icom_IC-W32A_cM4ZIW.img /tmp/Icom_IC-W32A_dnzb03.img /tmp/Icom_IC-W32E_AscdEc.img /tmp/Icom_IC-W32E_FMgDmf.img /tmp/Icom_IC-W32E_UunsLf.img /tmp/Icom_IC-W32E__aLr18.img /tmp/Icom_IC-W32E_eCfdrd.img /tmp/Icom_IC-W32E_q06NKY.img /tmp/Icom_ID-31A_AzNNfJ.img /tmp/Icom_ID-31A_pfsrqy.img /tmp/Icom_ID-51 Plus_Bq8so9.img /tmp/Icom_ID-51 Plus_KZtMoj.img /tmp/Icom_ID-51_38iIGO.img /tmp/Icom_ID-51_YIjF1u.img /tmp/Icom_ID-800H_5Ci1Ey.img /tmp/Icom_ID-800H_U0Z6qY.img /tmp/Icom_ID-880H_1oZJ3w.img /tmp/Icom_ID-880H_ek36TP.img /tmp/Jetstream_JT220M_7hqR7k.img /tmp/Jetstream_JT220M_iCaC_W.img /tmp/Jetstream_JT270M_Xqj_GM.img /tmp/Jetstream_JT270M_eGGp_p.img /tmp/KYD_IP-620_F_nm6g.img /tmp/KYD_IP-620_K8HWMM.img /tmp/Kenwood_TH-D72 (clone mode)_yv53km.img /tmp/Kenwood_TH-D72 (clone mode)_zyLwRb.img /tmp/Kenwood_TK-272G_4L4Vip.img /tmp/Kenwood_TK-272G_guqVdC.img /tmp/Kenwood_TK-760G_79FarF.img /tmp/Kenwood_TK-760G_iRFLeK.img /tmp/Kenwood_TK-8102_Ip5PbB.img /tmp/Kenwood_TK-8102_snWUcr.img /tmp/Leixen_VV-898_C1lycj.img /tmp/Leixen_VV-898_Pryfd1.img /tmp/Polmar_DB-50M_1hTYl8.img /tmp/Polmar_DB-50M_ULIq6w.img /tmp/Puxing_PX-2R_4540xm.img /tmp/Puxing_PX-2R_rsLL5W.img /tmp/Puxing_PX-777_6FwnQT.img /tmp/Puxing_PX-777_H4tQd1.img /tmp/TYT_TH-7800_Xm_02y.img /tmp/TYT_TH-7800_irVti_.img /tmp/TYT_TH-9800_ev0t6B.img /tmp/TYT_TH-9800_pP2Yr2.img /tmp/TYT_TH-UV3R-25_fB_8VQ.img /tmp/TYT_TH-UV3R-25_nI2dJi.img /tmp/TYT_TH-UV3R_A1M1Ts.img /tmp/TYT_TH-UV3R_oZ6Ntw.img /tmp/TYT_TH-UVF1_KwRf6X.img /tmp/TYT_TH-UVF1_OOonT0.img /tmp/TYT_TH9000_144_7KIsl1.img /tmp/TYT_TH9000_144_PMG4vx.img /tmp/Vertex Standard_VXA-700_3K9mTW.img /tmp/Vertex Standard_VXA-700_wNOdBX.img /tmp/WACCOM_MINI-8900_DQ5T04.img /tmp/WACCOM_MINI-8900_yNA6Fg.img /tmp/Wouxun_KG-816_6JvK4G.img /tmp/Wouxun_KG-816_Sos2Vd.img /tmp/Wouxun_KG-818_ZK7XDl.img /tmp/Wouxun_KG-818_cN_UHi.img /tmp/Wouxun_KG-UV6_Eli7eg.img /tmp/Wouxun_KG-UV6_c910NG.img /tmp/Wouxun_KG-UV8D_8LD084.img /tmp/Wouxun_KG-UV8D_aj3aCQ.img /tmp/Wouxun_KG-UVD1P_AffuCK.img /tmp/Wouxun_KG-UVD1P_T9ioxR.img /tmp/Yaesu_FT-1802M_GnvrIB.img /tmp/Yaesu_FT-1802M_fv8rN6.img /tmp/Yaesu_FT-1D_MrKfUf.img /tmp/Yaesu_FT-1D_QqfOgm.img /tmp/Yaesu_FT-2800M_CZPXpz.img /tmp/Yaesu_FT-2800M_oZNBBA.img /tmp/Yaesu_FT-2900R_1900R_ABeCIj.img /tmp/Yaesu_FT-2900R_1900R_Dy3X3r.img /tmp/Yaesu_FT-50_A0LFNT.img /tmp/Yaesu_FT-50_umQUhN.img /tmp/Yaesu_FT-60_Hb2_yt.img /tmp/Yaesu_FT-60_y0wJS1.img /tmp/Yaesu_FT-7800_7900_WxheMs.img /tmp/Yaesu_FT-7800_7900_i_zNnh.img /tmp/Yaesu_FT-817ND (US)_9RpZJz.img /tmp/Yaesu_FT-817ND (US)_wQr3ks.img /tmp/Yaesu_FT-817ND_4w3aoq.img /tmp/Yaesu_FT-817ND_Ozxvzq.img /tmp/Yaesu_FT-817_X8zVj2.img /tmp/Yaesu_FT-817_wdn5Qv.img /tmp/Yaesu_FT-857_897 (US)__Pny5p.img /tmp/Yaesu_FT-857_897 (US)_ptDm28.img /tmp/Yaesu_FT-857_897_BIVuCC.img /tmp/Yaesu_FT-857_897_HXGMYT.img /tmp/Yaesu_FT-8800_0PIuPD.img /tmp/Yaesu_FT-8800_AFBEV1.img /tmp/Yaesu_FT-8800_dHCjcy.img /tmp/Yaesu_FT-8800_gipbXv.img /tmp/Yaesu_FT-8800_hhYNXL.img /tmp/Yaesu_FT-8800_nz9gEs.img /tmp/Yaesu_FT-8900_94b_4r.img /tmp/Yaesu_FT-8900_VPRanW.img /tmp/Yaesu_FTM-350_2UUPDt.img /tmp/Yaesu_FTM-350_944YWS.img /tmp/Yaesu_FTM-350_Hr9XxY.img /tmp/Yaesu_FTM-350_PvruRU.img /tmp/Yaesu_FTM-350_eKr69c.img /tmp/Yaesu_FTM-350_raOcKU.img /tmp/Yaesu_VX-2_FFDFxi.img /tmp/Yaesu_VX-2_wZzUcN.img /tmp/Yaesu_VX-3_2hjlAS.img /tmp/Yaesu_VX-3_PaZJfi.img /tmp/Yaesu_VX-5_6l8x5T.img /tmp/Yaesu_VX-5_oalB2Z.img /tmp/Yaesu_VX-6_BKHtON.img /tmp/Yaesu_VX-6_G6Y8Lo.img /tmp/Yaesu_VX-7_24DPvk.img /tmp/Yaesu_VX-7_o19gjF.img /tmp/Yaesu_VX-8_6UvtE2.img /tmp/Yaesu_VX-8_uEwrpk.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
[chirp_devel] [PATCH] [ui] Replace / with _ in default filenames. Fixes #3797. Related to #3753
by Tom Hayward 05 Jul '16
by Tom Hayward 05 Jul '16
05 Jul '16
# HG changeset patch
# User Tom Hayward <tom(a)tomh.us>
# Date 1467758450 25200
# Tue Jul 05 15:40:50 2016 -0700
# Node ID 0fb2340c1de9a353cb0eb7d0a2190585e3692e03
# Parent 62236873e87473bc926b06ac2aafab9a7926eec0
[ui] Replace / with _ in default filenames. Fixes #3797. Related to #3753
The FT-857/897 driver has a slash in the model name. When used in the
filename, this slash is interpreted as a directory on Linux and implodes
on Windows. Neither is intended behavior.
This patch substitues an underscore for a slash when generating a default
filename.
diff -r 62236873e874 -r 0fb2340c1de9 chirp/ui/mainapp.py
--- a/chirp/ui/mainapp.py Fri Jul 01 17:31:27 2016 -0400
+++ b/chirp/ui/mainapp.py Tue Jul 05 15:40:50 2016 -0700
@@ -439,7 +439,8 @@
defname = defname_format.format(
vendor=eset.radio.VENDOR,
model=eset.radio.MODEL,
- date=datetime.now().strftime('%Y%m%d'))
+ date=datetime.now().strftime('%Y%m%d')
+ ).replace('/', '_')
types = [(label + " (*.%s)" % eset.radio.FILE_EXTENSION,
eset.radio.FILE_EXTENSION)]
1
0
Hi to all,
We have now the driver class alias feature that allows to show the alias
(clones) of some Chinese radios up front in the UI, but this new feature
has a drawback: once the user save a img of this radio clone that image
stop being from the clone and when opened again will show itself as the
original radio, not the clone.
Tom has make a mod to the save operation to include a pattern (
{vendor}_{model}_{date}.img ) in the name to easy this, but some users
may have some problems with this or at least it will generate some noise
in the site/lists with users complaining about this.
I vote to create a wiki page called "Radio clones" in which we explain
why the users see his FooBar-300 is showed as china_radio-123 when
opened from a image file, this will allow us to tag the clones on the
"Supported Radios" page as clones and redirect to the "Radio clones"
wiki page, or even when the noise arose in the site/list we will have a
link to send and stop infinite threads...
I can generate a draft for the page for the wiki admins to put in place.
(That draft will require some revision as I know my english is not so
good yet)
Is this a good idea?
If so, please wiki admins contact me off list to coordinate.
Thanks.
--
73 Pavel CO7WT.
3
10
Tested changes:
[Pavel Milanes (CO7WT) <pavelmc(a)gmail.com>] [PATCH][Zastone MP-300] Add support for the Zastone MP-300 radio, fixes #3783
It's a clone of a early versions of the QYT KT8900.
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 04a2e867f7f89185ccf8e17663bad03bd6ec14cd
[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 04a2e867f7f89185ccf8e17663bad03bd6ec14cd
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson5748718551076852626.sh
[workspace] $ /bin/sh -xe /tmp/hudson7784994112740741998.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/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py:521:45: W291 trailing whitespace
./chirp/drivers/ft60.py:522:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:523: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/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/ui/mainapp.py:646:13: E128 continuation line under-indented for visual indent
./chirp/ui/mainapp.py:660:5: E303 too many blank lines (2)
./chirp/ui/mainapp.py:1373:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:1377:80: E501 line too long (80 > 79 characters)
./chirp/ui/mainapp.py:1662:80: E501 line too long (85 > 79 characters)
real 0m7.483s
user 0m7.392s
sys 0m0.045s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-07-02 08:27:26,767] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 14.04.4 LTS (Python 2.7.6)
[2016-07-02 08:27:26,776] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-07-02 08:27:26,776] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-07-02 08:27:26,777] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-07-02 08:27:26,778] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-07-02 08:27:26,778] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-07-02 08:27:26,778] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-07-02 08:27:26,778] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-07-02 08:27:26,778] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-07-02 08:27:26,779] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-07-02 08:27:26,780] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-07-02 08:27:26,780] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-07-02 08:27:26,780] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-07-02 08:27:26,780] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-07-02 08:27:26,780] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-07-02 08:27:26,780] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-07-02 08:27:26,781] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-07-02 08:27:26,781] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-07-02 08:27:26,782] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-07-02 08:27:26,782] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-07-02 08:27:26,782] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-07-02 08:27:26,782] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-07-02 08:27:26,782] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-07-02 08:27:26,782] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-07-02 08:27:26,782] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-07-02 08:27:26,783] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-07-02 08:27:26,783] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-07-02 08:27:26,783] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-07-02 08:27:26,783] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-07-02 08:27:26,783] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-07-02 08:27:26,783] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-07-02 08:27:26,783] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-07-02 08:27:26,784] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-07-02 08:27:26,785] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-07-02 08:27:26,785] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-07-02 08:27:26,786] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-07-02 08:27:26,786] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-07-02 08:27:26,786] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-07-02 08:27:26,787] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-07-02 08:27:26,787] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-07-02 08:27:26,787] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-07-02 08:27:26,787] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-07-02 08:27:26,788] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-07-02 08:27:26,788] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-07-02 08:27:26,788] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-07-02 08:27:26,788] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-07-02 08:27:26,788] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-07-02 08:27:26,789] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-07-02 08:27:26,789] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-07-02 08:27:26,789] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-07-02 08:27:26,789] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-07-02 08:27:26,790] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-07-02 08:27:26,790] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-07-02 08:27:26,790] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-07-02 08:27:26,791] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-07-02 08:27:26,796] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-07-02 08:27:26,799] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-07-02 08:27:26,800] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-07-02 08:27:26,800] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-07-02 08:27:26,800] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-07-02 08:27:26,800] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-07-02 08:27:26,800] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-07-02 08:27:26,801] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-07-02 08:27:26,801] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-07-02 08:27:26,801] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-07-02 08:27:26,801] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-07-02 08:27:26,802] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-07-02 08:27:26,802] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-07-02 08:27:26,802] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-07-02 08:27:26,802] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-07-02 08:27:26,803] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-07-02 08:27:26,803] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-07-02 08:27:26,803] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-07-02 08:27:26,803] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-07-02 08:27:26,803] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-07-02 08:27:26,804] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-07-02 08:27:26,804] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-07-02 08:27:26,804] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-07-02 08:27:26,804] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-07-02 08:27:26,805] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-07-02 08:27:26,805] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-07-02 08:27:26,805] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-07-02 08:27:26,805] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-07-02 08:27:26,806] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-07-02 08:27:26,806] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-07-02 08:27:26,806] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-07-02 08:27:26,806] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-07-02 08:27:26,806] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-07-02 08:27:26,806] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-07-02 08:27:26,807] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-07-02 08:27:26,807] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-07-02 08:27:26,807] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-07-02 08:27:26,808] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-07-02 08:27:26,808] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-07-02 08:27:26,808] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-07-02 08:27:26,808] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-07-02 08:27:26,808] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-07-02 08:27:26,808] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-07-02 08:27:26,809] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-07-02 08:27:26,809] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-07-02 08:27:26,809] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-07-02 08:27:26,810] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-07-02 08:27:26,811] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-07-02 08:27:26,811] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-07-02 08:27:26,811] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-07-02 08:27:26,811] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-07-02 08:27:26,811] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-07-02 08:27:26,811] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-07-02 08:27:26,812] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-07-02 08:27:26,813] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-07-02 08:27:26,814] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-07-02 08:27:26,814] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-07-02 08:27:26,814] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-07-02 08:27:26,814] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-07-02 08:27:26,814] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-07-02 08:27:26,815] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-07-02 08:27:26,815] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-07-02 08:27:26,815] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-07-02 08:27:26,815] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-07-02 08:27:26,816] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-07-02 08:27:26,816] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-07-02 08:27:26,817] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-07-02 08:27:26,817] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-07-02 08:27:26,817] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-07-02 08:27:26,817] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_ako9rg.img /tmp/Alinco_DJ596_5eKddb.img /tmp/Alinco_DR235T_nVkFk8.img /tmp/AnyTone_OBLTR-8R_qTHWJ9.img /tmp/AnyTone_TERMN-8R_ncWuwS.img /tmp/BTECH_UV-2501+220_wAE4Fw.img /tmp/BTECH_UV-5001_qVpuOj.img /tmp/Baofeng_BF-888_QuNE10.img /tmp/Baofeng_F-11_AbMGxK.img /tmp/Baofeng_UV-3R_pWL4x_.img /tmp/Baofeng_UV-5R_qmN6Op.img /tmp/Baofeng_UV-B5_i58GkK.img /tmp/Baojie_BJ-9900_Lzi_2L.img /tmp/Baojie_BJ-9900_YTL5Xv.img /tmp/Baojie_BJ-9900_fu3qau.img /tmp/Feidaxin_FD-268A_ekG66s.img /tmp/Feidaxin_FD-268B_qXn4eL.img /tmp/Feidaxin_FD-288B_WhKboK.img /tmp/Icom_IC-208H_rE1O15.img /tmp/Icom_IC-2100H__B74HX.img /tmp/Icom_IC-2200H_QEYqVR.img /tmp/Icom_IC-2720H_AW07cm.img /tmp/Icom_IC-2820H_93jRxE.img /tmp/Icom_IC-Q7A__gFaR9.img /tmp/Icom_IC-T70_sVNFEe.img /tmp/Icom_IC-T7H_UxaVYa.img /tmp/Icom_IC-T8A_50NP8B.img /tmp/Icom_IC-V82_U82_wBAVj7.img /tmp/Icom_IC-W32A_i6ZJt7.img /tmp/Icom_IC-W32A_yo9VxV.img /tmp/Icom_IC-W32A_yphKE8.img /tmp/Icom_IC-W32E_NPI6PU.img /tmp/Icom_IC-W32E_Pfu40H.img /tmp/Icom_IC-W32E_gMaI04.img /tmp/Icom_ID-31A_Es_lmL.img /tmp/Icom_ID-51 Plus_RS8bb_.img /tmp/Icom_ID-51_GSO2X3.img /tmp/Icom_ID-800H_1XIWFl.img /tmp/Icom_ID-880H_WOCGmb.img /tmp/Jetstream_JT220M__HbxXq.img /tmp/Jetstream_JT270M_N28U8M.img /tmp/KYD_IP-620_3iGUCH.img /tmp/Kenwood_TH-D72 (clone mode)_SmhTyN.img /tmp/Kenwood_TK-272G_FDOTCx.img /tmp/Kenwood_TK-760G_80ieTw.img /tmp/Kenwood_TK-8102_lk3QLx.img /tmp/Leixen_VV-898_EaQUx5.img /tmp/Polmar_DB-50M_UPSE9U.img /tmp/Puxing_PX-2R_mG8bSu.img /tmp/Puxing_PX-777_WZ0ESB.img /tmp/TYT_TH-7800_xTE0Iq.img /tmp/TYT_TH-9800_zF5XoP.img /tmp/TYT_TH-UV3R-25_8rpiqJ.img /tmp/TYT_TH-UV3R_J7omB_.img /tmp/TYT_TH-UVF1_CRv9sc.img /tmp/TYT_TH9000_144_Q112At.img /tmp/Vertex Standard_VXA-700_LyByGw.img /tmp/WACCOM_MINI-8900_z6gYpP.img /tmp/Wouxun_KG-816_bNgwrm.img /tmp/Wouxun_KG-818_XfsHVv.img /tmp/Wouxun_KG-UV6_JP79BL.img /tmp/Wouxun_KG-UV8D_HX_hmB.img /tmp/Wouxun_KG-UVD1P_zNj0K3.img /tmp/Yaesu_FT-1802M_MmmRuV.img /tmp/Yaesu_FT-1D_u7ddaD.img /tmp/Yaesu_FT-2800M_sRziIs.img /tmp/Yaesu_FT-2900R_1900R_Qy1mE3.img /tmp/Yaesu_FT-50_BTK4qz.img /tmp/Yaesu_FT-60_rgmLMl.img /tmp/Yaesu_FT-7800_7900_7TQc5I.img /tmp/Yaesu_FT-817ND (US)_Hv1LYA.img /tmp/Yaesu_FT-817ND_EDFuP4.img /tmp/Yaesu_FT-817_tZydR2.img /tmp/Yaesu_FT-857_897 (US)_p9bged.img /tmp/Yaesu_FT-857_897_a_gPuy.img /tmp/Yaesu_FT-8800_7y0D1w.img /tmp/Yaesu_FT-8800_E8T0rk.img /tmp/Yaesu_FT-8800_Fu9hGU.img /tmp/Yaesu_FT-8900_oA_0kr.img /tmp/Yaesu_FTM-350_aYWChC.img /tmp/Yaesu_FTM-350_mHOZyA.img /tmp/Yaesu_FTM-350_rkz2Cb.img /tmp/Yaesu_VX-2_1w7KMB.img /tmp/Yaesu_VX-3_kUiwfV.img /tmp/Yaesu_VX-5_92VDnG.img /tmp/Yaesu_VX-6_4MmljF.img /tmp/Yaesu_VX-7_GN6nRQ.img /tmp/Yaesu_VX-8_oy4fnH.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
Tested changes:
[Jim Unroe <rock.unroe(a)gmail.com>] [New Model] Add support for QYT KT-UV980
New
- Added support for the QYT KT-UV980 Radio to btech driver
related to #2673
[Jim Unroe <rock.unroe(a)gmail.com>] [BTECH] change set_options to be less model specific for 220 band radio #3015
This patch includes the following changes:
Bug fixes
- update branching method for models with 220 band
[Jim Unroe <rock.unroe(a)gmail.com>] [BTECH] rename base class for BTECH #3015
This patch includes the following changes:
Bug fixes
Renamed the base class as BTech (from btech)
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 1171fff35e0c4f98716b22de83fd763edca89349
[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 1171fff35e0c4f98716b22de83fd763edca89349
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson1905089937406067999.sh
[workspace] $ /bin/sh -xe /tmp/hudson3004288766821908841.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.048s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/ft60.py:521:45: W291 trailing whitespace
./chirp/drivers/ft60.py:522:25: E128 continuation line under-indented for visual indent
./chirp/drivers/ft60.py:523: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:681:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:685: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:689:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:692:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:693:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:696:25: 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:718:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:721:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:722:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:725:25: 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:729:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:732:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:733:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:736:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:737:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:740:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:741:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:744:25: 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:751:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:754:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:755:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:758:25: 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:765:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:768:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:769:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:772:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:773:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:776:25: 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:780:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:783:25: 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:787:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:790:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:791:29: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:807:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:808:31: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:811:25: 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:818:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:824:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:829:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:833:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:837:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:841:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:845:25: E128 continuation line under-indented for visual indent
./chirp/drivers/kguv8d.py:890:25: E128 continuation line under-indented for visual indent
./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:591:1: W293 blank line contains whitespace
./chirp/drivers/thd72.py:599:1: W293 blank line contains whitespace
./chirp/ui/mainapp.py:637:13: E128 continuation line under-indented for visual indent
./chirp/ui/mainapp.py:651:5: E303 too many blank lines (2)
./chirp/ui/mainapp.py:1355:80: E501 line too long (81 > 79 characters)
./chirp/ui/mainapp.py:1637:80: E501 line too long (85 > 79 characters)
real 0m7.179s
user 0m7.123s
sys 0m0.042s
================================================
Tests FAILED: driver tests
Build step 'Execute shell' marked build as failure
Email was triggered for: Failure
Sending email for trigger: Failure
1
28