Developers
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 1 participants
- 2965 discussions
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] [LT-725UV] Add Test image
#3745
[Jim Unroe <rock.unroe(a)gmail.com>] [LT-725UV] Add Support for LUITON LT-725UV
This patch adds basic support for the LUITON LT-725UV mobile radio.
#3745
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 161256cc3a33c31b8c1664d133c3b97f378a8f43
[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 161256cc3a33c31b8c1664d133c3b97f378a8f43
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson2037923225659446783.sh
[workspace] $ /bin/sh -xe /tmp/hudson6595993680464644417.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.050s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py: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.205s
user 0m7.176s
sys 0m0.016s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-09-04 08:42:53,899] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-09-04 08:42:53,941] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-09-04 08:42:53,941] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-09-04 08:42:53,941] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-09-04 08:42:53,942] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-09-04 08:42:53,943] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-09-04 08:42:53,943] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-09-04 08:42:53,943] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-09-04 08:42:53,943] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-09-04 08:42:53,943] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-09-04 08:42:53,944] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-09-04 08:42:53,945] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-09-04 08:42:53,945] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-09-04 08:42:53,945] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-09-04 08:42:53,945] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-09-04 08:42:53,945] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-09-04 08:42:53,945] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-09-04 08:42:53,946] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-09-04 08:42:53,946] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-09-04 08:42:53,947] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-09-04 08:42:53,947] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-09-04 08:42:53,947] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-09-04 08:42:53,947] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-09-04 08:42:53,948] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-09-04 08:42:53,948] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-09-04 08:42:53,948] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-09-04 08:42:53,948] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-09-04 08:42:53,948] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-09-04 08:42:53,948] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-09-04 08:42:53,948] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-09-04 08:42:53,949] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-09-04 08:42:53,950] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-09-04 08:42:53,950] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-09-04 08:42:53,950] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-09-04 08:42:53,950] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-09-04 08:42:53,950] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-09-04 08:42:53,950] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-09-04 08:42:53,951] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-09-04 08:42:53,951] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-09-04 08:42:53,952] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-09-04 08:42:53,952] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-09-04 08:42:53,952] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-09-04 08:42:53,953] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-09-04 08:42:53,953] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-09-04 08:42:53,953] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-09-04 08:42:53,953] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-09-04 08:42:53,954] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-09-04 08:42:53,954] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-09-04 08:42:53,954] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-09-04 08:42:53,954] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-09-04 08:42:53,954] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-09-04 08:42:53,955] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-09-04 08:42:53,955] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-09-04 08:42:53,955] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-09-04 08:42:53,956] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-09-04 08:42:53,956] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-09-04 08:42:53,956] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-09-04 08:42:53,963] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-09-04 08:42:53,966] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-09-04 08:42:53,967] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-09-04 08:42:53,967] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-09-04 08:42:53,967] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-09-04 08:42:53,967] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-09-04 08:42:53,967] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-09-04 08:42:53,967] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-09-04 08:42:53,968] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-09-04 08:42:53,968] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-09-04 08:42:53,968] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-09-04 08:42:53,969] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-09-04 08:42:53,969] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-09-04 08:42:53,969] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-09-04 08:42:53,969] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-09-04 08:42:53,970] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-09-04 08:42:53,970] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-09-04 08:42:53,970] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-09-04 08:42:53,970] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-09-04 08:42:53,970] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-09-04 08:42:53,971] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-09-04 08:42:53,971] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-09-04 08:42:53,971] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-09-04 08:42:53,971] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-09-04 08:42:53,972] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-09-04 08:42:53,972] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-09-04 08:42:53,972] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-09-04 08:42:53,972] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-09-04 08:42:53,973] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-09-04 08:42:53,973] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-09-04 08:42:53,973] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-09-04 08:42:53,973] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-09-04 08:42:53,974] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-09-04 08:42:53,974] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-09-04 08:42:53,974] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-09-04 08:42:53,974] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-09-04 08:42:53,974] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-09-04 08:42:53,974] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-09-04 08:42:53,976] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-09-04 08:42:53,976] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-09-04 08:42:53,976] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-09-04 08:42:53,976] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-09-04 08:42:53,976] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-09-04 08:42:53,976] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-09-04 08:42:53,977] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-09-04 08:42:53,977] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-09-04 08:42:53,977] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-09-04 08:42:53,977] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-09-04 08:42:53,978] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-09-04 08:42:53,978] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-09-04 08:42:53,978] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-09-04 08:42:53,978] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-09-04 08:42:53,978] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-09-04 08:42:53,978] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-09-04 08:42:53,978] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-09-04 08:42:53,979] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-09-04 08:42:53,979] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-09-04 08:42:53,979] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-09-04 08:42:53,979] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-09-04 08:42:53,979] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-09-04 08:42:53,979] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-09-04 08:42:53,979] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-09-04 08:42:53,980] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-09-04 08:42:53,981] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-09-04 08:42:53,982] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-09-04 08:42:53,982] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-09-04 08:42:53,982] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-09-04 08:42:53,982] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-09-04 08:42:53,983] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-09-04 08:42:53,983] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-09-04 08:42:53,983] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-09-04 08:42:53,984] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-09-04 08:42:53,984] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-09-04 08:42:53,984] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-09-04 08:42:53,985] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-09-04 08:42:53,985] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-09-04 08:42:53,985] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-09-04 08:42:53,986] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-09-04 08:42:53,986] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-09-04 08:42:53,986] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-09-04 08:42:53,986] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_zmydct.img /tmp/Alinco_DJ596_XuBT_U.img /tmp/Alinco_DR235T_TTt72J.img /tmp/AnyTone_OBLTR-8R_xsfs7e.img /tmp/AnyTone_TERMN-8R_09eMOQ.img /tmp/BTECH_UV-2501+220_fKpNZw.img /tmp/BTECH_UV-5001_k4tuqZ.img /tmp/BTECH_UV-50X3_CQ8K_o.img /tmp/BTECH_UV-50X3_Cco6io.img /tmp/BTECH_UV-50X3_fVQ8Pd.img /tmp/BTECH_UV-5X3_ktqnJI.img /tmp/Baofeng_BF-888_EfMfZd.img /tmp/Baofeng_F-11_lXnP99.img /tmp/Baofeng_UV-3R_zh0Otm.img /tmp/Baofeng_UV-5R_KP_XCB.img /tmp/Baofeng_UV-6R_20Xjda.img /tmp/Baofeng_UV-B5_o_IQW_.img /tmp/Baojie_BJ-9900_9btIB0.img /tmp/Baojie_BJ-9900_UI96gA.img /tmp/Baojie_BJ-9900_lE17c3.img /tmp/Feidaxin_FD-268A_jyJwcd.img /tmp/Feidaxin_FD-268B_OyqOaY.img /tmp/Feidaxin_FD-288B_Hcz24V.img /tmp/Icom_IC-208H_OPzZOU.img /tmp/Icom_IC-2100H_lUll_h.img /tmp/Icom_IC-2200H_EHJJjP.img /tmp/Icom_IC-2720H_aYZNxW.img /tmp/Icom_IC-2820H_oS3PJb.img /tmp/Icom_IC-Q7A_65zIvo.img /tmp/Icom_IC-T70_v4HGha.img /tmp/Icom_IC-T7H_L8RvHa.img /tmp/Icom_IC-T8A_UBN8R1.img /tmp/Icom_IC-V82_U82_IjYm2q.img /tmp/Icom_IC-W32A_41wOYB.img /tmp/Icom_IC-W32A_4sKB3r.img /tmp/Icom_IC-W32A_MWjeEy.img /tmp/Icom_IC-W32E_FTBeBM.img /tmp/Icom_IC-W32E_M5k5Y9.img /tmp/Icom_IC-W32E_sKg8vT.img /tmp/Icom_ID-31A_dVsmzK.img /tmp/Icom_ID-51 Plus_U2jmjO.img /tmp/Icom_ID-51_9aWKPT.img /tmp/Icom_ID-800H_9bBiZp.img /tmp/Icom_ID-880H_UA5xkk.img /tmp/Jetstream_JT220M_c9YkLz.img /tmp/Jetstream_JT270M_TEDkU_.img /tmp/KYD_IP-620_kGujS9.img /tmp/Kenwood_TH-D72 (clone mode)_fChn7P.img /tmp/Kenwood_TK-272G_MotfJU.img /tmp/Kenwood_TK-760G_AFhBk4.img /tmp/Kenwood_TK-8102_Nc9tPM.img /tmp/LUITON_LT-725UV_G1_E8J.img /tmp/LUITON_LT-725UV_W6P_Uc.img /tmp/LUITON_LT-725UV_ziruky.img /tmp/Leixen_VV-898_4TIExb.img /tmp/Polmar_DB-50M_Ismjbi.img /tmp/Puxing_PX-2R_SC7CAz.img /tmp/Puxing_PX-777_KMSuML.img /tmp/TYT_TH-7800_vyankQ.img /tmp/TYT_TH-9800_pXMvhz.img /tmp/TYT_TH-UV3R-25_nMOmiD.img /tmp/TYT_TH-UV3R_ARgFVf.img /tmp/TYT_TH-UVF1_exC4Rh.img /tmp/TYT_TH9000_144_CyVfeF.img /tmp/Vertex Standard_VXA-700_IaClqz.img /tmp/WACCOM_MINI-8900_8jH3bD.img /tmp/Wouxun_KG-816_avkoDH.img /tmp/Wouxun_KG-818_U7ruSQ.img /tmp/Wouxun_KG-UV6_5HGwKr.img /tmp/Wouxun_KG-UV8D_B0E6iQ.img /tmp/Wouxun_KG-UVD1P_TSE5C6.img /tmp/Yaesu_FT-1802M_6gWMLq.img /tmp/Yaesu_FT-1D_0kITy6.img /tmp/Yaesu_FT-2800M_N487Yv.img /tmp/Yaesu_FT-2900R_1900R_WaVCsw.img /tmp/Yaesu_FT-50_dLhSeB.img /tmp/Yaesu_FT-60_4ZDRfP.img /tmp/Yaesu_FT-7800_7900_ZyQTNR.img /tmp/Yaesu_FT-817ND (US)_FGO0nA.img /tmp/Yaesu_FT-817ND_IXEjEE.img /tmp/Yaesu_FT-817_hm517X.img /tmp/Yaesu_FT-857_897 (US)_sRU5sz.img /tmp/Yaesu_FT-857_897_izOqne.img /tmp/Yaesu_FT-8800_0BJAv4.img /tmp/Yaesu_FT-8800_70QO5h.img /tmp/Yaesu_FT-8800_jWpdNx.img /tmp/Yaesu_FT-8900_bFt5pH.img /tmp/Yaesu_FTM-350_8dCac_.img /tmp/Yaesu_FTM-350_9wuVI1.img /tmp/Yaesu_FTM-350_FWAgzv.img /tmp/Yaesu_VX-2_NUVJtP.img /tmp/Yaesu_VX-3_LdZKwB.img /tmp/Yaesu_VX-5_tyWPmQ.img /tmp/Yaesu_VX-6_G9PIeT.img /tmp/Yaesu_VX-7_iE5QnQ.img /tmp/Yaesu_VX-8_n7JskV.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
Tested changes:
[Brian Dickman <brian.maybe(a)gmail.com>] [leixen] Revert 94db968fce11, unneeded patch that was refactored
Related to #3899
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 617ef175811dcf0d49b8dba8769e845972ebf672
[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 617ef175811dcf0d49b8dba8769e845972ebf672
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson6323529516009017340.sh
[workspace] $ /bin/sh -xe /tmp/hudson7501124288616746732.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.054s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py: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.561s
user 0m7.460s
sys 0m0.036s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-09-04 08:37:54,679] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-09-04 08:37:54,718] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-09-04 08:37:54,719] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-09-04 08:37:54,720] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-09-04 08:37:54,721] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-09-04 08:37:54,721] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-09-04 08:37:54,721] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-09-04 08:37:54,722] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-09-04 08:37:54,722] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-09-04 08:37:54,722] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-09-04 08:37:54,722] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-09-04 08:37:54,722] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-09-04 08:37:54,723] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-09-04 08:37:54,723] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-09-04 08:37:54,723] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-09-04 08:37:54,723] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-09-04 08:37:54,724] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-09-04 08:37:54,724] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-09-04 08:37:54,726] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-09-04 08:37:54,726] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-09-04 08:37:54,728] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-09-04 08:37:54,728] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-09-04 08:37:54,728] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-09-04 08:37:54,728] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-09-04 08:37:54,729] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-09-04 08:37:54,729] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-09-04 08:37:54,729] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-09-04 08:37:54,729] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-09-04 08:37:54,730] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-09-04 08:37:54,731] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-09-04 08:37:54,732] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-09-04 08:37:54,732] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-09-04 08:37:54,733] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-09-04 08:37:54,733] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-09-04 08:37:54,733] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-09-04 08:37:54,734] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-09-04 08:37:54,734] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-09-04 08:37:54,734] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-09-04 08:37:54,734] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-09-04 08:37:54,734] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-09-04 08:37:54,735] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-09-04 08:37:54,735] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-09-04 08:37:54,735] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-09-04 08:37:54,735] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-09-04 08:37:54,736] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-09-04 08:37:54,736] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-09-04 08:37:54,736] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-09-04 08:37:54,737] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-09-04 08:37:54,737] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-09-04 08:37:54,737] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-09-04 08:37:54,737] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-09-04 08:37:54,744] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-09-04 08:37:54,747] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-09-04 08:37:54,748] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-09-04 08:37:54,748] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-09-04 08:37:54,748] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-09-04 08:37:54,748] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-09-04 08:37:54,748] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-09-04 08:37:54,749] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-09-04 08:37:54,749] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-09-04 08:37:54,749] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-09-04 08:37:54,750] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-09-04 08:37:54,750] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-09-04 08:37:54,750] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-09-04 08:37:54,750] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-09-04 08:37:54,750] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-09-04 08:37:54,751] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-09-04 08:37:54,751] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-09-04 08:37:54,751] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-09-04 08:37:54,751] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-09-04 08:37:54,751] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-09-04 08:37:54,752] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-09-04 08:37:54,752] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-09-04 08:37:54,752] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-09-04 08:37:54,752] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-09-04 08:37:54,753] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-09-04 08:37:54,753] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-09-04 08:37:54,753] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-09-04 08:37:54,753] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-09-04 08:37:54,754] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-09-04 08:37:54,754] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-09-04 08:37:54,754] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-09-04 08:37:54,754] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-09-04 08:37:54,754] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-09-04 08:37:54,754] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-09-04 08:37:54,755] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-09-04 08:37:54,755] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-09-04 08:37:54,755] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-09-04 08:37:54,755] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-09-04 08:37:54,755] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-09-04 08:37:54,756] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-09-04 08:37:54,757] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-09-04 08:37:54,757] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-09-04 08:37:54,757] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-09-04 08:37:54,757] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-09-04 08:37:54,757] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-09-04 08:37:54,758] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-09-04 08:37:54,758] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-09-04 08:37:54,758] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-09-04 08:37:54,758] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-09-04 08:37:54,758] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-09-04 08:37:54,759] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-09-04 08:37:54,760] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-09-04 08:37:54,760] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-09-04 08:37:54,760] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-09-04 08:37:54,760] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-09-04 08:37:54,760] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-09-04 08:37:54,760] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-09-04 08:37:54,760] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-09-04 08:37:54,761] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-09-04 08:37:54,762] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-09-04 08:37:54,762] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-09-04 08:37:54,762] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-09-04 08:37:54,762] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-09-04 08:37:54,762] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-09-04 08:37:54,763] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-09-04 08:37:54,763] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-09-04 08:37:54,763] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-09-04 08:37:54,764] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-09-04 08:37:54,764] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-09-04 08:37:54,764] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-09-04 08:37:54,765] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-09-04 08:37:54,765] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-09-04 08:37:54,765] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-09-04 08:37:54,766] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-09-04 08:37:54,766] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-09-04 08:37:54,766] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-09-04 08:37:54,766] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-09-04 08:37:54,766] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_87GLr6.img /tmp/Alinco_DJ175_WDbQlB.img /tmp/Alinco_DJ596_ACtvB6.img /tmp/Alinco_DJ596_rAIlde.img /tmp/Alinco_DR235T_YFuius.img /tmp/Alinco_DR235T_jDs0Vc.img /tmp/AnyTone_OBLTR-8R_0mvDCI.img /tmp/AnyTone_OBLTR-8R_T5d2xs.img /tmp/AnyTone_TERMN-8R__98LnZ.img /tmp/AnyTone_TERMN-8R_hjaW8C.img /tmp/BTECH_UV-2501+220_XlbMkA.img /tmp/BTECH_UV-2501+220_Y1ZpuU.img /tmp/BTECH_UV-5001_Wp6W4x.img /tmp/BTECH_UV-5001_iRIaRG.img /tmp/BTECH_UV-50X3_31xWNf.img /tmp/BTECH_UV-50X3_4aWot5.img /tmp/BTECH_UV-50X3_GMpdKQ.img /tmp/BTECH_UV-50X3_LGHgj4.img /tmp/BTECH_UV-50X3_LGKvDy.img /tmp/BTECH_UV-50X3_PM4pWQ.img /tmp/BTECH_UV-5X3_eFS4fZ.img /tmp/BTECH_UV-5X3_pZM8V2.img /tmp/Baofeng_BF-888_5FyW24.img /tmp/Baofeng_BF-888__nWNd_.img /tmp/Baofeng_F-11_CGogD9.img /tmp/Baofeng_F-11_xTu0WO.img /tmp/Baofeng_UV-3R_X50TV7.img /tmp/Baofeng_UV-3R_dlcy4P.img /tmp/Baofeng_UV-5R_9Z8e93.img /tmp/Baofeng_UV-5R_JtJiYT.img /tmp/Baofeng_UV-6R_WBBSw_.img /tmp/Baofeng_UV-6R_loxEkB.img /tmp/Baofeng_UV-B5_UMZsyG.img /tmp/Baofeng_UV-B5_a8uMBW.img /tmp/Baojie_BJ-9900_TlScq4.img /tmp/Baojie_BJ-9900_TzWFXg.img /tmp/Baojie_BJ-9900_UYSk3D.img /tmp/Baojie_BJ-9900_bYtP47.img /tmp/Baojie_BJ-9900_chdYOg.img /tmp/Baojie_BJ-9900_fRKevV.img /tmp/Feidaxin_FD-268A__sm0xl.img /tmp/Feidaxin_FD-268A_hgfuh6.img /tmp/Feidaxin_FD-268B_BNCnvJ.img /tmp/Feidaxin_FD-268B_XGHQyS.img /tmp/Feidaxin_FD-288B_6jBYLv.img /tmp/Feidaxin_FD-288B_8x8X9p.img /tmp/Icom_IC-208H_IaxQWi.img /tmp/Icom_IC-208H_jRBlsQ.img /tmp/Icom_IC-2100H_58Angp.img /tmp/Icom_IC-2100H_Qzxmiq.img /tmp/Icom_IC-2200H_Cm0kFP.img /tmp/Icom_IC-2200H_gKqvMb.img /tmp/Icom_IC-2720H_Al4CFM.img /tmp/Icom_IC-2720H_sQfSaD.img /tmp/Icom_IC-2820H_DKkzC8.img /tmp/Icom_IC-2820H_T_Zuep.img /tmp/Icom_IC-Q7A_2OeS8H.img /tmp/Icom_IC-Q7A_cs40vr.img /tmp/Icom_IC-T70_EvZrCX.img /tmp/Icom_IC-T70_KrfQXV.img /tmp/Icom_IC-T7H_JdhWax.img /tmp/Icom_IC-T7H_m6mBJW.img /tmp/Icom_IC-T8A_7jo9Ur.img /tmp/Icom_IC-T8A_Namw6Z.img /tmp/Icom_IC-V82_U82_hgvG6Q.img /tmp/Icom_IC-V82_U82_s4WkJK.img /tmp/Icom_IC-W32A_Npb1Ef.img /tmp/Icom_IC-W32A_SeKJpG.img /tmp/Icom_IC-W32A_Siotio.img /tmp/Icom_IC-W32A_mt4Bx7.img /tmp/Icom_IC-W32A_nETWqX.img /tmp/Icom_IC-W32A_vsqVOZ.img /tmp/Icom_IC-W32E_723YhC.img /tmp/Icom_IC-W32E_7AXGS1.img /tmp/Icom_IC-W32E_9Ds2wC.img /tmp/Icom_IC-W32E_ilw06b.img /tmp/Icom_IC-W32E_lhC8mz.img /tmp/Icom_IC-W32E_nLJz9t.img /tmp/Icom_ID-31A_Ibb_DE.img /tmp/Icom_ID-31A_tO2oG5.img /tmp/Icom_ID-51 Plus_d_wxDo.img /tmp/Icom_ID-51 Plus_jBBNln.img /tmp/Icom_ID-51_SO0Hdu.img /tmp/Icom_ID-51_TQoQP_.img /tmp/Icom_ID-800H_4ACxO2.img /tmp/Icom_ID-800H_S_DbL1.img /tmp/Icom_ID-880H_fsByHE.img /tmp/Icom_ID-880H_shTipW.img /tmp/Jetstream_JT220M_4BUSwQ.img /tmp/Jetstream_JT220M_tnu7sE.img /tmp/Jetstream_JT270M_ixQ0t7.img /tmp/Jetstream_JT270M_ymyBXe.img /tmp/KYD_IP-620_OGNfgl.img /tmp/KYD_IP-620_eJmvJ7.img /tmp/Kenwood_TH-D72 (clone mode)_AdJS7F.img /tmp/Kenwood_TH-D72 (clone mode)_ihMroE.img /tmp/Kenwood_TK-272G_Zo_WJG.img /tmp/Kenwood_TK-272G_jF04sq.img /tmp/Kenwood_TK-760G_8hXyRG.img /tmp/Kenwood_TK-760G_yp_Wn3.img /tmp/Kenwood_TK-8102_k8h29i.img /tmp/Kenwood_TK-8102_s9z3il.img /tmp/Leixen_VV-898_4TeWel.img /tmp/Leixen_VV-898_pZHsue.img /tmp/Polmar_DB-50M_MCYelQ.img /tmp/Polmar_DB-50M_bI0L97.img /tmp/Puxing_PX-2R_oDA9ip.img /tmp/Puxing_PX-2R_wmTmBf.img /tmp/Puxing_PX-777_NiW4gI.img /tmp/Puxing_PX-777_gmjxz_.img /tmp/TYT_TH-7800_TOTCSN.img /tmp/TYT_TH-7800_TbZHS3.img /tmp/TYT_TH-9800_n0z0OB.img /tmp/TYT_TH-9800_vGRXd9.img /tmp/TYT_TH-UV3R-25_K9Z8PX.img /tmp/TYT_TH-UV3R-25_ocF4Os.img /tmp/TYT_TH-UV3R_Rio1JR.img /tmp/TYT_TH-UV3R_tpTUXQ.img /tmp/TYT_TH-UVF1_02hN64.img /tmp/TYT_TH-UVF1_Q354d2.img /tmp/TYT_TH9000_144_1Oc0pM.img /tmp/TYT_TH9000_144_aom_04.img /tmp/Vertex Standard_VXA-700_d_t5YI.img /tmp/Vertex Standard_VXA-700_epVqjg.img /tmp/WACCOM_MINI-8900_eFLIJO.img /tmp/WACCOM_MINI-8900_fvurCW.img /tmp/Wouxun_KG-816_Krl2ks.img /tmp/Wouxun_KG-816_a7LJc3.img /tmp/Wouxun_KG-818_AmKbYj.img /tmp/Wouxun_KG-818_zCPOea.img /tmp/Wouxun_KG-UV6_iC8DeP.img /tmp/Wouxun_KG-UV6_lVPrHB.img /tmp/Wouxun_KG-UV8D_KPUP1f.img /tmp/Wouxun_KG-UV8D_Yc_ONF.img /tmp/Wouxun_KG-UVD1P_FAzDQz.img /tmp/Wouxun_KG-UVD1P_YYonQk.img /tmp/Yaesu_FT-1802M_I8EEeT.img /tmp/Yaesu_FT-1802M_d7tG16.img /tmp/Yaesu_FT-1D_191PTJ.img /tmp/Yaesu_FT-1D_tbeROy.img /tmp/Yaesu_FT-2800M_szNCDE.img /tmp/Yaesu_FT-2800M_utrqKn.img /tmp/Yaesu_FT-2900R_1900R_6CFqVJ.img /tmp/Yaesu_FT-2900R_1900R_NweHdU.img /tmp/Yaesu_FT-50_ICWHGy.img /tmp/Yaesu_FT-50_WmRGyU.img /tmp/Yaesu_FT-60_EI696W.img /tmp/Yaesu_FT-60_dL3skF.img /tmp/Yaesu_FT-7800_7900_1gyDkO.img /tmp/Yaesu_FT-7800_7900_CXM0jW.img /tmp/Yaesu_FT-817ND (US)_OgPwoF.img /tmp/Yaesu_FT-817ND (US)_Otge0d.img /tmp/Yaesu_FT-817ND_HE0pBr.img /tmp/Yaesu_FT-817ND_VG89uW.img /tmp/Yaesu_FT-817_Fi1qo8.img /tmp/Yaesu_FT-817_OPQEe4.img /tmp/Yaesu_FT-857_897 (US)_Nuv3Mh.img /tmp/Yaesu_FT-857_897 (US)_SKOdO0.img /tmp/Yaesu_FT-857_897_4lfREL.img /tmp/Yaesu_FT-857_897_GZxjsB.img /tmp/Yaesu_FT-8800_K5CDXG.img /tmp/Yaesu_FT-8800_NtPzBN.img /tmp/Yaesu_FT-8800_QFMze3.img /tmp/Yaesu_FT-8800_fzkyWQ.img /tmp/Yaesu_FT-8800_l6f1yP.img /tmp/Yaesu_FT-8800_sdehPX.img /tmp/Yaesu_FT-8900_gL7ELS.img /tmp/Yaesu_FT-8900_jLuxZ6.img /tmp/Yaesu_FTM-350_0p7Cxc.img /tmp/Yaesu_FTM-350_5TBPgU.img /tmp/Yaesu_FTM-350_eoR4yP.img /tmp/Yaesu_FTM-350_k3eocs.img /tmp/Yaesu_FTM-350_pwqh8t.img /tmp/Yaesu_FTM-350_xIw4WA.img /tmp/Yaesu_VX-2_X3mRKl.img /tmp/Yaesu_VX-2_h5V9z_.img /tmp/Yaesu_VX-3_C_pXDR.img /tmp/Yaesu_VX-3_h4V60H.img /tmp/Yaesu_VX-5_RkRYPK.img /tmp/Yaesu_VX-5_s13ixf.img /tmp/Yaesu_VX-6_DvpNC4.img /tmp/Yaesu_VX-6_r5Cw_Q.img /tmp/Yaesu_VX-7_MpNFkT.img /tmp/Yaesu_VX-7_ckNVnj.img /tmp/Yaesu_VX-8_Xbyq8P.img /tmp/Yaesu_VX-8_vwTXX8.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
04 Sep '16
# HG changeset patch
# User Brian Dickman <brian.maybe(a)gmail.com>
# Date 1472935944 25200
# Sat Sep 03 13:52:24 2016 -0700
# Node ID d9eda786d470f7845f96d3ada98e3de65f5213a6
# Parent 3d8359621d43d5713869497d17182d6a43aebd67
[leixen] [ 1 of 2 ] Migrate radio paramters into class to prepare for
multiple models
Parameterize the mmap to account for changes between the 898 and 898S
models. Move power levels into the class out of the global module
level. Extend model matching to additional bytes to tell apart
additional models. Related to #3889, #3327, #3065.
diff -r 3d8359621d43 -r d9eda786d470 chirp/drivers/leixen.py
--- a/chirp/drivers/leixen.py Sat Sep 03 08:37:00 2016 -0700
+++ b/chirp/drivers/leixen.py Sat Sep 03 13:52:24 2016 -0700
@@ -135,14 +135,13 @@
u8 unknown5;
u8 pttidoff:1,
dtmfoff:1,
- unknown6:1,
+ %(unknownormode)s,
tailcut:1,
aliasop:1,
talkaroundoff:1,
voxoff:1,
skip:1;
- u8 power:1,
- mode:1
+ u8 %(modeorpower)s,
reverseoff:1,
blckoff:1,
unknown7:1,
@@ -223,8 +222,6 @@
"Reverse"
]
-POWER_LEVELS = [chirp_common.PowerLevel("Low", watts=4),
- chirp_common.PowerLevel("High", watts=10)]
MODES = ["NFM", "FM"]
WTFTONES = map(float, xrange(56, 64))
TONES = WTFTONES + chirp_common.TONES
@@ -326,7 +323,8 @@
_ranges = [(0x0d00, 0x2000)]
image_ident = _image_ident_from_image(radio)
- if image_ident.startswith(radio._file_ident) and "LX-" in image_ident:
+ if image_ident.startswith(radio._file_ident) and \
+ radio._model_ident in image_ident:
_ranges = radio._ranges
do_ident(radio)
@@ -371,6 +369,8 @@
BAUD_RATE = 9600
_file_ident = "Leixen"
+ _model_ident = 'LX-\x89\x85\x63'
+
_memsize = 0x2000
_ranges = [
(0x0000, 0x013f),
@@ -382,6 +382,11 @@
(0x0d00, 0x2000),
]
+ _mem_formatter = {'unknownormode': 'unknown6:1',
+ 'modeorpower': 'mode:1, power:1'}
+ _power_levels = [chirp_common.PowerLevel("Low", watts=4),
+ chirp_common.PowerLevel("High", watts=10)]
+
def get_features(self):
rf = chirp_common.RadioFeatures()
rf.has_settings = True
@@ -402,7 +407,7 @@
"DTCS->DTCS"]
rf.valid_characters = chirp_common.CHARSET_ASCII
rf.valid_name_length = 7
- rf.valid_power_levels = POWER_LEVELS
+ rf.valid_power_levels = self._power_levels
rf.valid_duplexes = ["", "-", "+", "split", "off"]
rf.valid_skips = ["", "S"]
rf.valid_bands = [(136000000, 174000000),
@@ -419,7 +424,7 @@
self.process_mmap()
def process_mmap(self):
- self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
+ self._memobj = bitwise.parse(MEM_FORMAT %
self._mem_formatter, self._mmap)
def sync_out(self):
try:
@@ -492,12 +497,8 @@
self._get_tone(mem, _mem)
mem.mode = MODES[_mem.mode]
- mem.power = POWER_LEVELS[_mem.power]
- mem.skip = _mem.skip and "S" or ""
-
- self._get_tone(mem, _mem)
- mem.mode = MODES[_mem.mode]
- mem.power = POWER_LEVELS[_mem.power]
+ powerindex = _mem.power if _mem.power < len(self._power_levels) else -1
+ mem.power = self._power_levels[powerindex]
mem.skip = _mem.skip and "S" or ""
mem.extra = RadioSettingGroup("Extra", "extra")
@@ -595,7 +596,7 @@
self._set_tone(mem, _mem)
- _mem.power = mem.power and POWER_LEVELS.index(mem.power) or 0
+ _mem.power = mem.power and self._power_levels.index(mem.power) or 0
_mem.mode = MODES.index(mem.mode)
_mem.skip = mem.skip == "S"
_name.name = mem.name.ljust(7)
@@ -934,9 +935,7 @@
@classmethod
def match_model(cls, filedata, filename):
if filedata[0x168:0x170].startswith(cls._file_ident) and \
- filedata[0x170:0x178].startswith("LX-\x89\x85"):
- return True
- elif filedata[0x900:0x906] == cls.MODEL:
+
filedata[0x170:0x178].startswith(cls._model_ident):
return True
else:
return False
@@ -949,3 +948,4 @@
MODEL = "JT270M"
_file_ident = "JET"
+ _model_ident = 'LX-\x89\x85\x53'
2
1
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1472946898 14400
# Node ID 75cb01b8fb0d0a0f523db839a1eb876839861050
# Parent 617ef175811dcf0d49b8dba8769e845972ebf672
[LT-725UV] Add Support for LUITON LT-725UV
This patch adds basic support for the LUITON LT-725UV mobile radio.
#3745
diff -r 617ef175811d -r 75cb01b8fb0d chirp/drivers/lt725uv.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/chirp/drivers/lt725uv.py Sat Sep 03 19:54:58 2016 -0400
@@ -0,0 +1,763 @@
+# Copyright 2016:
+# * Jim Unroe KC9HI, <rock.unroe(a)gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import time
+import 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 = """
+#seekto 0x0200;
+struct {
+ u8 unknown1;
+ u8 volume;
+ u8 unknown2[2];
+ u8 wtled;
+ u8 rxled;
+ u8 txled;
+ u8 ledsw;
+ u8 beep;
+ u8 ring;
+ u8 bcl;
+ u8 tot;
+} settings;
+
+struct vfo {
+ u8 unknown1[2];
+ u32 rxfreq;
+ u8 unknown2[8];
+ u8 power;
+ u8 unknown3[3];
+ u24 offset;
+ u32 step;
+ u8 sql;
+};
+
+#seekto 0x0300;
+struct {
+ struct vfo vfoa;
+} upper;
+
+#seekto 0x0380;
+struct {
+ struct vfo vfob;
+} lower;
+
+struct mem {
+ u32 rxfreq;
+ u16 is_rxdigtone:1,
+ rxdtcs_pol:1,
+ rxtone:14;
+ u8 recvmode;
+ u32 txfreq;
+ u16 is_txdigtone:1,
+ txdtcs_pol:1,
+ txtone:14;
+ u8 botsignal;
+ u8 eotsignal;
+ u8 power:1,
+ wide:1,
+ compandor:1
+ scrambler:1
+ unknown:4;
+ u8 namelen;
+ u8 name[6];
+ u8 unused;
+};
+
+#seekto 0x0400;
+struct mem upper_memory[128];
+
+#seekto 0x1000;
+struct mem lower_memory[128];
+
+"""
+
+MEM_SIZE = 0x1C00
+BLOCK_SIZE = 0x40
+STIMEOUT = 2
+
+LIST_RECVMODE = ["", "QT/DQT", "QT/DQT + Signaling"]
+LIST_SIGNAL = ["Off"] + ["DTMF%s" % x for x in range(1, 9)] + \
+ ["DTMF%s + Identity" % x for x in range(1, 9)] + \
+ ["Identity code"]
+LIST_POWER = ["Low", "Mid", "High"]
+LIST_COLOR = ["Off", "Orange", "Blue", "Purple"]
+LIST_LEDSW = ["Auto", "On"]
+LIST_RING = ["Off"] + ["%s seconds" % x for x in range(1, 10)]
+LIST_TIMEOUT = ["Off"] + ["%s seconds" % x for x in range(30, 630, 30)]
+
+
+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 _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(">4sHH", cmd, addr, length)
+ # add the data if set
+ if len(data) != 0:
+ frame += data
+ # return the data
+ return frame
+
+
+def _recv(radio, addr, length):
+ """Get data from the radio """
+
+ data = _rawrecv(radio, length)
+
+ # DEBUG
+ LOG.info("Response:")
+ LOG.debug(util.hexprint(data))
+
+ return data
+
+
+def _do_ident(radio):
+ """Put the radio in PROGRAM mode & identify it"""
+ # set the serial discipline
+ radio.pipe.baudrate = 19200
+ radio.pipe.parity = "N"
+ radio.pipe.timeout = STIMEOUT
+
+ # flush input buffer
+ _clean_buffer(radio)
+
+ magic = "PROM_LIN"
+
+ _rawsend(radio, magic)
+
+ ack = _rawrecv(radio, 1)
+ if ack != "\x06":
+ _exit_program_mode(radio)
+ if ack:
+ LOG.debug(repr(ack))
+ raise errors.RadioError("Radio did not respond")
+
+ return True
+
+
+def _exit_program_mode(radio):
+ endframe = "EXIT"
+ _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("READ", 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, BLOCK_SIZE)
+
+ # 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)
+
+ data += "LT-725UV"
+
+ return data
+
+
+def _upload(radio):
+ """Upload procedure"""
+
+ # 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 starts here
+ for addr in range(0, MEM_SIZE, BLOCK_SIZE):
+ # sending the data
+ data = radio.get_mmap()[addr:addr + BLOCK_SIZE]
+
+ frame = _make_frame("WRIE", 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)
+
+ # 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[0x1C00:0x1C08]
+
+ if rid == cls.MODEL:
+ return True
+
+ return False
+
+
+def _split(rf, f1, f2):
+ """Returns False if the two freqs are in the same band (no split)
+ or True otherwise"""
+
+ # determine if the two freqs are in the same band
+ for low, high in rf.valid_bands:
+ if f1 >= low and f1 <= high and \
+ f2 >= low and f2 <= high:
+ # if the two freqs are on the same Band this is not a split
+ return False
+
+ # if you get here is because the freq pairs are split
+ return True
+
+
+(a)directory.register
+class LT725UV(chirp_common.CloneModeRadio,
+ chirp_common.ExperimentalRadio):
+ """LUITON LT-725UV Radio"""
+ VENDOR = "LUITON"
+ MODEL = "LT-725UV"
+ MODES = ["NFM", "FM"]
+ TONES = chirp_common.TONES
+ DTCS_CODES = sorted(chirp_common.DTCS_CODES + [645])
+ NAME_LENGTH = 6
+ DTMF_CHARS = list("0123456789ABCD*#")
+
+ VALID_BANDS = [(136000000, 176000000),
+ (400000000, 480000000)]
+
+ # valid chars on the LCD
+ VALID_CHARS = chirp_common.CHARSET_ALPHANUMERIC + \
+ "`{|}!\"#$%&'()*+,-./:;<=>?@[]^_"
+
+ @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 = True
+ 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 = self.MODES
+ rf.valid_characters = self.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_skips = []
+ rf.valid_name_length = self.NAME_LENGTH
+ rf.valid_dtcs_codes = self.DTCS_CODES
+ rf.valid_bands = self.VALID_BANDS
+ rf.memory_bounds = (1, 128)
+ return rf
+
+ def get_sub_devices(self):
+ return [LT725UVUpper(self._mmap), LT725UVLower(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 - 1])
+
+ def _memory_obj(self, suffix=""):
+ return getattr(self._memobj, "%s_memory%s" % (self._vfo, suffix))
+
+ def _get_dcs(self, val):
+ return int(str(val)[2:-18])
+
+ def _set_dcs(self, val):
+ return int(str(val), 16)
+
+ def get_memory(self, number):
+ _mem = self._memory_obj()[number - 1]
+
+ mem = chirp_common.Memory()
+ mem.number = number
+
+ if _mem.get_raw()[0] == "\xff":
+ mem.empty = True
+ return mem
+
+ mem.freq = int(_mem.rxfreq) * 10
+
+ if _mem.txfreq == 0xFFFFFFFF:
+ # TX freq not set
+ mem.duplex = "off"
+ mem.offset = 0
+ elif int(_mem.rxfreq) == int(_mem.txfreq):
+ mem.duplex = ""
+ mem.offset = 0
+ elif _split(self.get_features(), mem.freq, int(_mem.txfreq) * 10):
+ mem.duplex = "split"
+ mem.offset = int(_mem.txfreq) * 10
+ else:
+ mem.duplex = int(_mem.rxfreq) > int(_mem.txfreq) and "-" or "+"
+ mem.offset = abs(int(_mem.rxfreq) - int(_mem.txfreq)) * 10
+
+ for char in _mem.name[:_mem.namelen]:
+ mem.name += chr(char)
+
+ dtcs_pol = ["N", "N"]
+
+ if _mem.rxtone == 0x3FFF:
+ rxmode = ""
+ elif _mem.is_rxdigtone == 0:
+ # ctcss
+ rxmode = "Tone"
+ mem.ctone = int(_mem.rxtone) / 10.0
+ else:
+ # digital
+ rxmode = "DTCS"
+ mem.rx_dtcs = self._get_dcs(_mem.rxtone)
+ if _mem.rxdtcs_pol == 1:
+ dtcs_pol[1] = "R"
+
+ if _mem.txtone == 0x3FFF:
+ txmode = ""
+ elif _mem.is_txdigtone == 0:
+ # ctcss
+ txmode = "Tone"
+ mem.rtone = int(_mem.txtone) / 10.0
+ else:
+ # digital
+ txmode = "DTCS"
+ mem.dtcs = self._get_dcs(_mem.txtone)
+ if _mem.txdtcs_pol == 1:
+ dtcs_pol[0] = "R"
+
+ if txmode == "Tone" and not rxmode:
+ mem.tmode = "Tone"
+ elif txmode == rxmode and txmode == "Tone" and mem.rtone == mem.ctone:
+ mem.tmode = "TSQL"
+ elif txmode == rxmode and txmode == "DTCS" and mem.dtcs == mem.rx_dtcs:
+ mem.tmode = "DTCS"
+ elif rxmode or txmode:
+ mem.tmode = "Cross"
+ mem.cross_mode = "%s->%s" % (txmode, rxmode)
+
+ mem.dtcs_polarity = "".join(dtcs_pol)
+
+ mem.mode = self.MODES[_mem.wide]
+
+ # Extra
+ mem.extra = RadioSettingGroup("extra", "Extra")
+
+ if _mem.recvmode == 0xFF:
+ val = 0x00
+ else:
+ val = _mem.recvmode
+ recvmode = RadioSetting("recvmode", "Receiving mode",
+ RadioSettingValueList(LIST_RECVMODE,
+ LIST_RECVMODE[val]))
+ mem.extra.append(recvmode)
+
+ if _mem.botsignal == 0xFF:
+ val = 0x00
+ else:
+ val = _mem.botsignal
+ botsignal = RadioSetting("botsignal", "Launch signaling",
+ RadioSettingValueList(LIST_SIGNAL,
+ LIST_SIGNAL[val]))
+ mem.extra.append(botsignal)
+
+ if _mem.eotsignal == 0xFF:
+ val = 0x00
+ else:
+ val = _mem.eotsignal
+ eotsignal = RadioSetting("eotsignal", "Transmit end signaling",
+ RadioSettingValueList(LIST_SIGNAL,
+ LIST_SIGNAL[val]))
+ mem.extra.append(eotsignal)
+
+ compandor = RadioSetting("compandor", "Compandor",
+ RadioSettingValueBoolean(bool(_mem.compandor)))
+ mem.extra.append(compandor)
+
+ scrambler = RadioSetting("scrambler", "Scrambler",
+ RadioSettingValueBoolean(bool(_mem.scrambler)))
+ mem.extra.append(scrambler)
+
+ return mem
+
+ def set_memory(self, mem):
+ _mem = self._memory_obj()[mem.number - 1]
+
+ if mem.empty:
+ _mem.set_raw("\xff" * 24)
+ _mem.namelen = 0
+ return
+
+ _mem.set_raw("\xFF" * 15 + "\x00\x00" + "\xFF" * 7)
+
+ _mem.rxfreq = mem.freq / 10
+ if mem.duplex == "off":
+ _mem.txfreq = 0xFFFFFFFF
+ elif mem.duplex == "split":
+ _mem.txfreq = mem.offset / 10
+ elif mem.duplex == "+":
+ _mem.txfreq = (mem.freq + mem.offset) / 10
+ elif mem.duplex == "-":
+ _mem.txfreq = (mem.freq - mem.offset) / 10
+ else:
+ _mem.txfreq = mem.freq / 10
+
+ _mem.namelen = len(mem.name)
+ _namelength = self.get_features().valid_name_length
+ for i in range(_namelength):
+ try:
+ _mem.name[i] = ord(mem.name[i])
+ except IndexError:
+ _mem.name[i] = 0xFF
+
+ rxmode = ""
+ txmode = ""
+
+ if mem.tmode == "Tone":
+ txmode = "Tone"
+ elif mem.tmode == "TSQL":
+ rxmode = "Tone"
+ txmode = "TSQL"
+ elif mem.tmode == "DTCS":
+ rxmode = "DTCSSQL"
+ txmode = "DTCS"
+ elif mem.tmode == "Cross":
+ txmode, rxmode = mem.cross_mode.split("->", 1)
+
+ if rxmode == "":
+ _mem.rxdtcs_pol = 1
+ _mem.is_rxdigtone = 1
+ _mem.rxtone = 0x3FFF
+ elif rxmode == "Tone":
+ _mem.rxdtcs_pol = 0
+ _mem.is_rxdigtone = 0
+ _mem.rxtone = int(mem.ctone * 10)
+ elif rxmode == "DTCSSQL":
+ _mem.rxdtcs_pol = 1 if mem.dtcs_polarity[1] == "R" else 0
+ _mem.is_rxdigtone = 1
+ _mem.rxtone = self._set_dcs(mem.dtcs)
+ elif rxmode == "DTCS":
+ _mem.rxdtcs_pol = 1 if mem.dtcs_polarity[1] == "R" else 0
+ _mem.is_rxdigtone = 1
+ _mem.rxtone = self._set_dcs(mem.rx_dtcs)
+
+ if txmode == "":
+ _mem.txdtcs_pol = 1
+ _mem.is_txdigtone = 1
+ _mem.txtone = 0x3FFF
+ elif txmode == "Tone":
+ _mem.txdtcs_pol = 0
+ _mem.is_txdigtone = 0
+ _mem.txtone = int(mem.rtone * 10)
+ elif txmode == "TSQL":
+ _mem.txdtcs_pol = 0
+ _mem.is_txdigtone = 0
+ _mem.txtone = int(mem.ctone * 10)
+ elif txmode == "DTCS":
+ _mem.txdtcs_pol = 1 if mem.dtcs_polarity[0] == "R" else 0
+ _mem.is_txdigtone = 1
+ _mem.txtone = self._set_dcs(mem.dtcs)
+
+ _mem.wide = self.MODES.index(mem.mode)
+
+ # extra settings
+ for setting in mem.extra:
+ setattr(_mem, setting.get_name(), setting.value)
+
+ 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
+
+ volume = RadioSetting("settings.volume", "Volume",
+ RadioSettingValueInteger(0, 20,
+ _mem.settings.volume))
+ basic.append(volume)
+
+ powera = RadioSetting("upper.vfoa.power", "Power (Upper)",
+ RadioSettingValueList(LIST_POWER, LIST_POWER[
+ _mem.upper.vfoa.power]))
+ basic.append(powera)
+
+ powerb = RadioSetting("lower.vfob.power", "Power (Lower)",
+ RadioSettingValueList(LIST_POWER, LIST_POWER[
+ _mem.lower.vfob.power]))
+ basic.append(powerb)
+
+ wtled = RadioSetting("settings.wtled", "Standby LED Color",
+ RadioSettingValueList(LIST_COLOR, LIST_COLOR[
+ _mem.settings.wtled]))
+ basic.append(wtled)
+
+ rxled = RadioSetting("settings.rxled", "RX LED Color",
+ RadioSettingValueList(LIST_COLOR, LIST_COLOR[
+ _mem.settings.rxled]))
+ basic.append(rxled)
+
+ txled = RadioSetting("settings.txled", "TX LED Color",
+ RadioSettingValueList(LIST_COLOR, LIST_COLOR[
+ _mem.settings.txled]))
+ basic.append(txled)
+
+ ledsw = RadioSetting("settings.ledsw", "Back light mode",
+ RadioSettingValueList(LIST_LEDSW, LIST_LEDSW[
+ _mem.settings.ledsw]))
+ basic.append(ledsw)
+
+ beep = RadioSetting("settings.beep", "Beep",
+ RadioSettingValueBoolean(bool(_mem.settings.beep)))
+ basic.append(beep)
+
+ ring = RadioSetting("settings.ring", "Ring",
+ RadioSettingValueList(LIST_RING, LIST_RING[
+ _mem.settings.ring]))
+ basic.append(ring)
+
+ bcl = RadioSetting("settings.bcl", "Busy channel lockout",
+ RadioSettingValueBoolean(bool(_mem.settings.bcl)))
+ basic.append(bcl)
+
+ tot = RadioSetting("settings.tot", "Timeout Timer",
+ RadioSettingValueList(LIST_TIMEOUT, LIST_TIMEOUT[
+ _mem.settings.tot]))
+ basic.append(tot)
+
+ if _mem.upper.vfoa.sql == 0xFF:
+ val = 0x04
+ else:
+ val = _mem.upper.vfoa.sql
+ sqla = RadioSetting("upper.vfoa.sql", "Squelch (Upper)",
+ RadioSettingValueInteger(0, 9, val))
+ basic.append(sqla)
+
+ if _mem.lower.vfob.sql == 0xFF:
+ val = 0x04
+ else:
+ val = _mem.lower.vfob.sql
+ sqlb = RadioSetting("lower.vfob.sql", "Squelch (Lower)",
+ RadioSettingValueInteger(0, 9, val))
+ basic.append(sqlb)
+
+ 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
+ match_model = False
+
+ # testing the file data size
+ if len(filedata) == MEM_SIZE + 8:
+ 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
+
+
+class LT725UVUpper(LT725UV):
+ VARIANT = "Upper"
+ _vfo = "upper"
+
+
+class LT725UVLower(LT725UV):
+ VARIANT = "Lower"
+ _vfo = "lower"
1
1
--
Brian
1
0
[chirp_devel] [PATCH] [ 2 of 2 ] leixen] Adds new model, Leixen VV-898S (tri-power 25W)
by Brian Dickman 03 Sep '16
by Brian Dickman 03 Sep '16
03 Sep '16
# HG changeset patch
# User Brian Dickman <brian.maybe(a)gmail.com>
# Date 1472936188 25200
# Sat Sep 03 13:56:28 2016 -0700
# Node ID ecde4295b27703667ab8d26d19c5e945a6ea7dc1
# Parent d9eda786d470f7845f96d3ada98e3de65f5213a6
[leixen] [patch 2 of 2] Adds new model, Leixen VV-898S (tri-power 25W)
Also works for VV-898E. Resolves #3889, #3327, #3065.
diff -r d9eda786d470 -r ecde4295b277 chirp/drivers/leixen.py
--- a/chirp/drivers/leixen.py Sat Sep 03 13:52:24 2016 -0700
+++ b/chirp/drivers/leixen.py Sat Sep 03 13:56:28 2016 -0700
@@ -949,3 +949,17 @@
_file_ident = "JET"
_model_ident = 'LX-\x89\x85\x53'
+
+
+(a)directory.register
+class LeixenVV898SRadio(LeixenVV898Radio):
+ """Leixen VV-898S, also VV-898E which is identical"""
+ VENDOR = "Leixen"
+ MODEL = "VV-898S"
+
+ _model_ident = 'LX-\x89\x85\x75'
+ _mem_formatter = {'unknownormode': 'mode:1',
+ 'modeorpower': 'power:2'}
+ _power_levels = [chirp_common.PowerLevel("Low", watts=5),
+ chirp_common.PowerLevel("Med", watts=10),
+ chirp_common.PowerLevel("High", watts=25)]
1
0
# HG changeset patch
# User Brian Dickman <brian.maybe(a)gmail.com>
# Date 1472917020 25200
# Sat Sep 03 08:37:00 2016 -0700
# Node ID 3d8359621d43d5713869497d17182d6a43aebd67
# Parent 617ef175811dcf0d49b8dba8769e845972ebf672
[leixen] Revert 94db968fce11, unneeded patch that was refactored
diff -r 617ef175811d -r 3d8359621d43 chirp/drivers/leixen.py
--- a/chirp/drivers/leixen.py Wed Aug 31 21:37:06 2016 -0700
+++ b/chirp/drivers/leixen.py Sat Sep 03 08:37:00 2016 -0700
@@ -356,15 +356,6 @@
ack = radio.pipe.read(8)
-class LeixenMemory(chirp_common.Memory):
- '''Leixen memory which supports non-standard tones and codes'''
- def __init__(self):
- chirp_common.Memory.__init__(self)
-
- self._valid_map["rtone"] = TONES
- self._valid_map["ctone"] = TONES
-
-
# Declaring Aliases
class LT898UV(chirp_common.Alias):
VENDOR = "LUITON"
@@ -475,7 +466,7 @@
_mem = self._memobj.memory[number - 1]
_name = self._memobj.name[number - 1]
- mem = LeixenMemory()
+ mem = chirp_common.Memory()
mem.number = number
if _mem.get_raw()[:4] == "\xFF\xFF\xFF\xFF":
1
0
Tested changes:
[Brian Dickman <brian.maybe(a)gmail.com>] [leixen] Filter out-of-bounds audio processor setting, fixes #3675
After doing a clear all reset on the VV-898, the apro setting on
memory 1 is out of range (0xff), but the radio honors it as "off"
anyway. This fix prevents such a memory from throwing an exception on
download.
[Brian Dickman <brian.maybe(a)gmail.com>] [leixen] Support non-standard tones on VV898 radio memories. Fixes #3899.
This issue used to cause some download corruption when a radio memory
had one of the non-standard tones (as the factory image did). Note
that there is no RadioFeatures "valid tones" map, so these extra tones
can not currently be selected during new memory creation.
[Brian Dickman <brian.maybe(a)gmail.com>] [leixen] Support non-standard tones on VV898 radio memories. Fixes #3899.
This issue used to cause some download corruption when a radio memory had
one of the non-standard tones (as the factory image did). Note that there
is no RadioFeatures "valid tones" map, so these extra tones can not
currently be selected during new memory creation.
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev bf777f74e27695ef2f54e7852dda88fb14bbfa2d
[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 bf777f74e27695ef2f54e7852dda88fb14bbfa2d
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson6092443488499209763.sh
[workspace] $ /bin/sh -xe /tmp/hudson5146875047200843510.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.058s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/chirp_common.py:33:32: E202 whitespace before ']'
./chirp/drivers/ft2900.py:1236:1: E265 block comment should start with '# '
./chirp/drivers/ft60.py: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.572s
user 0m7.456s
sys 0m0.032s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-09-02 12:57:54,960] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-09-02 12:57:54,998] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-09-02 12:57:54,999] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-09-02 12:57:55,000] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-09-02 12:57:55,000] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-09-02 12:57:55,000] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-09-02 12:57:55,000] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-09-02 12:57:55,000] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-09-02 12:57:55,000] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-09-02 12:57:55,001] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-09-02 12:57:55,001] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-09-02 12:57:55,001] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-09-02 12:57:55,001] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-09-02 12:57:55,001] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-09-02 12:57:55,001] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-09-02 12:57:55,001] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-09-02 12:57:55,002] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-09-02 12:57:55,002] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-09-02 12:57:55,003] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-09-02 12:57:55,003] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-09-02 12:57:55,003] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-09-02 12:57:55,004] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-09-02 12:57:55,004] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-09-02 12:57:55,004] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-09-02 12:57:55,004] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-09-02 12:57:55,004] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-09-02 12:57:55,004] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-09-02 12:57:55,004] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-09-02 12:57:55,005] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-09-02 12:57:55,006] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-09-02 12:57:55,006] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-09-02 12:57:55,006] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-09-02 12:57:55,006] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-09-02 12:57:55,006] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-09-02 12:57:55,006] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-09-02 12:57:55,006] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-09-02 12:57:55,007] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-09-02 12:57:55,007] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-09-02 12:57:55,008] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-09-02 12:57:55,008] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-09-02 12:57:55,008] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-09-02 12:57:55,009] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-09-02 12:57:55,009] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-09-02 12:57:55,009] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-09-02 12:57:55,009] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-09-02 12:57:55,010] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-09-02 12:57:55,010] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-09-02 12:57:55,010] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-09-02 12:57:55,010] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-09-02 12:57:55,010] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-09-02 12:57:55,011] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-09-02 12:57:55,011] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-09-02 12:57:55,012] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-09-02 12:57:55,012] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-09-02 12:57:55,012] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-09-02 12:57:55,012] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-09-02 12:57:55,019] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-09-02 12:57:55,023] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-09-02 12:57:55,023] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-09-02 12:57:55,023] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-09-02 12:57:55,023] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-09-02 12:57:55,023] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-09-02 12:57:55,024] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-09-02 12:57:55,024] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-09-02 12:57:55,024] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-09-02 12:57:55,025] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-09-02 12:57:55,025] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-09-02 12:57:55,025] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-09-02 12:57:55,025] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-09-02 12:57:55,025] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-09-02 12:57:55,025] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-09-02 12:57:55,026] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-09-02 12:57:55,026] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-09-02 12:57:55,026] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-09-02 12:57:55,026] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-09-02 12:57:55,027] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-09-02 12:57:55,027] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-09-02 12:57:55,027] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-09-02 12:57:55,027] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-09-02 12:57:55,027] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-09-02 12:57:55,028] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-09-02 12:57:55,028] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-09-02 12:57:55,028] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-09-02 12:57:55,029] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-09-02 12:57:55,029] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-09-02 12:57:55,029] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-09-02 12:57:55,029] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-09-02 12:57:55,029] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-09-02 12:57:55,030] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-09-02 12:57:55,030] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-09-02 12:57:55,030] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-09-02 12:57:55,030] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-09-02 12:57:55,030] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-09-02 12:57:55,031] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-09-02 12:57:55,031] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-09-02 12:57:55,031] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-09-02 12:57:55,032] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-09-02 12:57:55,032] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-09-02 12:57:55,032] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-09-02 12:57:55,032] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-09-02 12:57:55,032] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-09-02 12:57:55,033] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-09-02 12:57:55,033] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-09-02 12:57:55,033] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-09-02 12:57:55,034] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-09-02 12:57:55,035] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-09-02 12:57:55,036] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-09-02 12:57:55,037] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-09-02 12:57:55,037] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-09-02 12:57:55,037] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-09-02 12:57:55,037] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-09-02 12:57:55,037] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-09-02 12:57:55,038] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-09-02 12:57:55,038] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-09-02 12:57:55,038] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-09-02 12:57:55,038] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-09-02 12:57:55,039] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-09-02 12:57:55,039] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-09-02 12:57:55,039] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-09-02 12:57:55,040] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-09-02 12:57:55,040] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-09-02 12:57:55,040] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-09-02 12:57:55,041] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-09-02 12:57:55,041] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-09-02 12:57:55,041] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-09-02 12:57:55,041] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-09-02 12:57:55,042] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
+ rm /tmp/Alinco_DJ175_76SE6d.img /tmp/Alinco_DJ175_MohtV2.img /tmp/Alinco_DJ596_LrCi39.img /tmp/Alinco_DJ596_izp7hj.img /tmp/Alinco_DR235T_fwq6RG.img /tmp/Alinco_DR235T_qIMV1Z.img /tmp/AnyTone_OBLTR-8R_FF6PGe.img /tmp/AnyTone_OBLTR-8R_L1FJqk.img /tmp/AnyTone_TERMN-8R_eO8_17.img /tmp/AnyTone_TERMN-8R_v25WHy.img /tmp/BTECH_UV-2501+220_uZxJqL.img /tmp/BTECH_UV-2501+220_uz3iJz.img /tmp/BTECH_UV-5001_4ft1pU.img /tmp/BTECH_UV-5001_51PtYu.img /tmp/BTECH_UV-50X3_IVea4g.img /tmp/BTECH_UV-50X3_NgLnv1.img /tmp/BTECH_UV-50X3_YnvR7q.img /tmp/BTECH_UV-50X3_Z0LhZS.img /tmp/BTECH_UV-50X3_reBIGr.img /tmp/BTECH_UV-50X3_zU8zxP.img /tmp/BTECH_UV-5X3_6odJHI.img /tmp/BTECH_UV-5X3_feeJKC.img /tmp/Baofeng_BF-888__wVyPg.img /tmp/Baofeng_BF-888_b93y3Q.img /tmp/Baofeng_F-11_N5aUka.img /tmp/Baofeng_F-11_eIm8AI.img /tmp/Baofeng_UV-3R_lwznLY.img /tmp/Baofeng_UV-3R_r4PO8y.img /tmp/Baofeng_UV-5R_KM2OOd.img /tmp/Baofeng_UV-5R_fxUqgw.img /tmp/Baofeng_UV-6R_WgxeEE.img /tmp/Baofeng_UV-6R_iTlH0Z.img /tmp/Baofeng_UV-B5_VPfVKz.img /tmp/Baofeng_UV-B5_WsOeJo.img /tmp/Baojie_BJ-9900_1cbTtg.img /tmp/Baojie_BJ-9900_70heET.img /tmp/Baojie_BJ-9900_QxBLzy.img /tmp/Baojie_BJ-9900_hrkM8c.img /tmp/Baojie_BJ-9900_q56x7p.img /tmp/Baojie_BJ-9900_txIFU2.img /tmp/Feidaxin_FD-268A_CrK7k1.img /tmp/Feidaxin_FD-268A_Q_9EDN.img /tmp/Feidaxin_FD-268B_eJSg8s.img /tmp/Feidaxin_FD-268B_hbDvLI.img /tmp/Feidaxin_FD-288B_0W5LqY.img /tmp/Feidaxin_FD-288B_t8TRtH.img /tmp/Icom_IC-208H_7gIazk.img /tmp/Icom_IC-208H_pEupu3.img /tmp/Icom_IC-2100H_DtN5bW.img /tmp/Icom_IC-2100H_m22Oop.img /tmp/Icom_IC-2200H_47Nt6y.img /tmp/Icom_IC-2200H_sbZ_IW.img /tmp/Icom_IC-2720H_SexE9k.img /tmp/Icom_IC-2720H_ptF2Mz.img /tmp/Icom_IC-2820H_Ne92rc.img /tmp/Icom_IC-2820H_lB4d8d.img /tmp/Icom_IC-Q7A_4ImMv_.img /tmp/Icom_IC-Q7A_D8Owfe.img /tmp/Icom_IC-T70_i0KZj9.img /tmp/Icom_IC-T70_pU4vaz.img /tmp/Icom_IC-T7H_MzVda3.img /tmp/Icom_IC-T7H_niKzoS.img /tmp/Icom_IC-T8A_HnZHC4.img /tmp/Icom_IC-T8A_WApcyL.img /tmp/Icom_IC-V82_U82_a7i6xS.img /tmp/Icom_IC-V82_U82_mIHZnV.img /tmp/Icom_IC-W32A_2CiY1K.img /tmp/Icom_IC-W32A_AgYV6g.img /tmp/Icom_IC-W32A_B108yK.img /tmp/Icom_IC-W32A_E4r3Vi.img /tmp/Icom_IC-W32A_YskUyT.img /tmp/Icom_IC-W32A_bDXlNY.img /tmp/Icom_IC-W32E_C2Bfac.img /tmp/Icom_IC-W32E_K4eMKF.img /tmp/Icom_IC-W32E_LLGFq4.img /tmp/Icom_IC-W32E_OD7vQ2.img /tmp/Icom_IC-W32E_T7MuBB.img /tmp/Icom_IC-W32E_s6HwDQ.img /tmp/Icom_ID-31A_2n1tZW.img /tmp/Icom_ID-31A_BCJSyb.img /tmp/Icom_ID-51 Plus_MZ2Q0P.img /tmp/Icom_ID-51 Plus_yt6T4l.img /tmp/Icom_ID-51_6mYVTe.img /tmp/Icom_ID-51_74Qw_E.img /tmp/Icom_ID-800H_0YbChP.img /tmp/Icom_ID-800H_oBkXhq.img /tmp/Icom_ID-880H_dvh69n.img /tmp/Icom_ID-880H_yvgI6A.img /tmp/Jetstream_JT220M_O7oYjB.img /tmp/Jetstream_JT220M_oW_4bZ.img /tmp/Jetstream_JT270M_JYgycd.img /tmp/Jetstream_JT270M_py8ydb.img /tmp/KYD_IP-620_jEmr9r.img /tmp/KYD_IP-620_n7uzPX.img /tmp/Kenwood_TH-D72 (clone mode)_NhVN2_.img /tmp/Kenwood_TH-D72 (clone mode)_gSmteF.img /tmp/Kenwood_TK-272G_5SNSDU.img /tmp/Kenwood_TK-272G_cndNHZ.img /tmp/Kenwood_TK-760G_mEWIst.img /tmp/Kenwood_TK-760G_sFZGFg.img /tmp/Kenwood_TK-8102_FtNvwW.img /tmp/Kenwood_TK-8102_K9IZwu.img /tmp/Leixen_VV-898_CSPgaQ.img /tmp/Leixen_VV-898_tndAWJ.img /tmp/Polmar_DB-50M_fhxQeZ.img /tmp/Polmar_DB-50M_vStJEK.img /tmp/Puxing_PX-2R_L_Kndf.img /tmp/Puxing_PX-2R_jhkJeJ.img /tmp/Puxing_PX-777_8jXeAN.img /tmp/Puxing_PX-777_stWctf.img /tmp/TYT_TH-7800_bcdZsg.img /tmp/TYT_TH-7800_vJaAG9.img /tmp/TYT_TH-9800_O_vjtV.img /tmp/TYT_TH-9800_duqOjr.img /tmp/TYT_TH-UV3R-25_CckZE7.img /tmp/TYT_TH-UV3R-25_zsQBeu.img /tmp/TYT_TH-UV3R_HAUsrm.img /tmp/TYT_TH-UV3R_t0_qCa.img /tmp/TYT_TH-UVF1_279ixb.img /tmp/TYT_TH-UVF1_Dgx007.img /tmp/TYT_TH9000_144_OJ39wo.img /tmp/TYT_TH9000_144_salBN9.img /tmp/Vertex Standard_VXA-700_I0FlsZ.img /tmp/Vertex Standard_VXA-700_jo6xJy.img /tmp/WACCOM_MINI-8900_BtmehZ.img /tmp/WACCOM_MINI-8900_zYCZzy.img /tmp/Wouxun_KG-816_Pc53Kx.img /tmp/Wouxun_KG-816_vPaqlB.img /tmp/Wouxun_KG-818_HZPuy_.img /tmp/Wouxun_KG-818_XFDfH2.img /tmp/Wouxun_KG-UV6_KcPm1j.img /tmp/Wouxun_KG-UV6_yc7kKt.img /tmp/Wouxun_KG-UV8D_mWZWg2.img /tmp/Wouxun_KG-UV8D_nghFdW.img /tmp/Wouxun_KG-UVD1P_ErMxkx.img /tmp/Wouxun_KG-UVD1P_c7zGG8.img /tmp/Yaesu_FT-1802M_JqhzSN.img /tmp/Yaesu_FT-1802M_fkrjfw.img /tmp/Yaesu_FT-1D_MXr3PC.img /tmp/Yaesu_FT-1D_SgW0kQ.img /tmp/Yaesu_FT-2800M_B2WMew.img /tmp/Yaesu_FT-2800M_zlVmpC.img /tmp/Yaesu_FT-2900R_1900R_M4KDFq.img /tmp/Yaesu_FT-2900R_1900R_X3peet.img /tmp/Yaesu_FT-50_0cs6O4.img /tmp/Yaesu_FT-50_NvD5bi.img /tmp/Yaesu_FT-60_OTc7Ro.img /tmp/Yaesu_FT-60_wvWYxo.img /tmp/Yaesu_FT-7800_7900_O70Kyz.img /tmp/Yaesu_FT-7800_7900_wb5LNA.img /tmp/Yaesu_FT-817ND (US)_3RrUlZ.img /tmp/Yaesu_FT-817ND (US)_t6Qkmz.img /tmp/Yaesu_FT-817ND_IjQ0tI.img /tmp/Yaesu_FT-817ND_ULyYjf.img /tmp/Yaesu_FT-817_DQkHIF.img /tmp/Yaesu_FT-817_ZeRYWp.img /tmp/Yaesu_FT-857_897 (US)_5huJNf.img /tmp/Yaesu_FT-857_897 (US)_9lQSCj.img /tmp/Yaesu_FT-857_897_UA4BZp.img /tmp/Yaesu_FT-857_897_cRRwh3.img /tmp/Yaesu_FT-8800_313Ib1.img /tmp/Yaesu_FT-8800_IP_XsS.img /tmp/Yaesu_FT-8800_JoOHRY.img /tmp/Yaesu_FT-8800_PdL0n9.img /tmp/Yaesu_FT-8800_iCOdwU.img /tmp/Yaesu_FT-8800_iG2tkB.img /tmp/Yaesu_FT-8900_8YUUdw.img /tmp/Yaesu_FT-8900_HfKFN7.img /tmp/Yaesu_FTM-350_5xcZKR.img /tmp/Yaesu_FTM-350_RTA_bZ.img /tmp/Yaesu_FTM-350_SmJ9kp.img /tmp/Yaesu_FTM-350_Tm8crl.img /tmp/Yaesu_FTM-350_V51kZa.img /tmp/Yaesu_FTM-350_uoo4RZ.img /tmp/Yaesu_VX-2_RNUzah.img /tmp/Yaesu_VX-2_b7EO_U.img /tmp/Yaesu_VX-3_6haHd3.img /tmp/Yaesu_VX-3_obkKvC.img /tmp/Yaesu_VX-5_LH9iXC.img /tmp/Yaesu_VX-5_W22jRZ.img /tmp/Yaesu_VX-6_MN4PRl.img /tmp/Yaesu_VX-6_f4d7_k.img /tmp/Yaesu_VX-7_hRjNXY.img /tmp/Yaesu_VX-7_kuEscG.img /tmp/Yaesu_VX-8_DSB2xh.img /tmp/Yaesu_VX-8_nqmYDH.img
Email was triggered for: Success
Sending email for trigger: Success
1
0
What's the current attitude towards parameterized memory maps, to
support different models with varying locations/names of values?
I'm working on adding Leixen VV-898S support. They decided to take
what used to be 1 bit for Power and 1 bit for Mode and instead use
both bits for Power, and move Mode to a previously unused bit. I could
work around this by parameterizing the map, so it would look sorta
like this:
u8 %s:1,
foo1:1,
foo2:1,
foo3:1,
foo4:1,
foo5:1,
%s;
The first radio would format it as:
MEM_FORMAT % ( 'unknown' , 'mode:1,power:1' )
while the second would format it as:
MEM_FORMAT % ( 'mode' , 'power:2' )
Any fundamental objections to this approach? Should I just suck it up
and combine the bits at read time on the second radio instead of
parameterizing?
--
Brian
2
2
[chirp_devel] [PATCH] [leixen] Filter out-of-bounds audio processor setting
by Brian Dickman 31 Aug '16
by Brian Dickman 31 Aug '16
31 Aug '16
# HG changeset patch
# User Brian Dickman <brian.maybe(a)gmail.com>
# Date 1472704355 25200
# Wed Aug 31 21:32:35 2016 -0700
# Node ID 6be6cfb51c15e604d78ad5bcd5f421adac718c4f
# Parent 072644da3599231a2b8fe6a0b89186a7b4beab26
[leixen] Filter out-of-bounds audio processor setting, fixes #3675
After doing a clear all reset on the VV-898, the apro setting on
memory 1 is out of range (0xff), but the radio honors it as "off"
anyway. This fix prevents such a memory from throwing an exception on
download.
diff -r 072644da3599 -r 6be6cfb51c15 chirp/drivers/leixen.py
--- a/chirp/drivers/leixen.py Wed Aug 31 19:46:58 2016 -0700
+++ b/chirp/drivers/leixen.py Wed Aug 31 21:32:35 2016 -0700
@@ -512,11 +512,13 @@
RadioSettingValueList(
opts, opts[_mem.tailcut]))
mem.extra.append(rs)
+ apro = _mem.apro if _mem.apro < 0x5 else 0
+ rs = RadioSetting("apro", "Audio Processing",
opts = ["Off", "Compander", "Scrambler", "TX Scrambler",
"RX Scrambler"]
rs = RadioSetting("apro", "Audio Processing",
RadioSettingValueList(
- opts, opts[_mem.apro]))
+ opts, opts[apro]))
mem.extra.append(rs)
opts = ["On", "Off"]
rs = RadioSetting("voxoff", "VOX",
1
1