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>] Fix JT270MH not uploading the first few memories
Also a few other debugging tweaks
Bug #4253
[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 4e61983edcb2d0a70aaa220fd6b39873056bcaca
[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 4e61983edcb2d0a70aaa220fd6b39873056bcaca
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson2144275989446757322.sh
[workspace] $ /bin/sh -xe /tmp/hudson3784536648410571677.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.049s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/alinco.py:595:1: E302 expected 2 blank lines, found 1
./chirp/drivers/alinco.py:603:80: E501 line too long (114 > 79 characters)
./chirp/drivers/alinco.py:608:26: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:608:80: E501 line too long (84 > 79 characters)
./chirp/drivers/alinco.py:616:26: E222 multiple spaces after operator
./chirp/drivers/alinco.py:718:80: E501 line too long (89 > 79 characters)
./chirp/drivers/alinco.py:736:32: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:749:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:750:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:754:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:755:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:758:80: E501 line too long (81 > 79 characters)
./chirp/drivers/alinco.py:763:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:764:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:770:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:771:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:775:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:776:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:779:55: E231 missing whitespace after ','
./chirp/drivers/kyd.py:212:1: E302 expected 2 blank lines, found 1
./chirp/drivers/kyd.py:512:14: E111 indentation is not a multiple of four
real 0m7.555s
user 0m7.440s
sys 0m0.056s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-11-22 11:33:06,850] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-11-22 11:33:06,888] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-11-22 11:33:06,889] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-11-22 11:33:06,890] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-11-22 11:33:06,890] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-11-22 11:33:06,890] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-11-22 11:33:06,890] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-11-22 11:33:06,890] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Alinco_DJ-G7EG = AlincoDJG7EG
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-11-22 11:33:06,891] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-11-22 11:33:06,892] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-11-22 11:33:06,892] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-11-22 11:33:06,892] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-11-22 11:33:06,892] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-11-22 11:33:06,893] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-11-22 11:33:06,893] chirp.directory - INFO: Registered Baofeng_BF-A58 = BFA58
[2016-11-22 11:33:06,893] chirp.directory - INFO: Registered Baofeng_UV-82WP = UV82WP
[2016-11-22 11:33:06,893] chirp.directory - INFO: Registered Baofeng_GT-3WP = GT3WP
[2016-11-22 11:33:06,894] chirp.directory - INFO: Registered Retevis_RT6 = RT6
[2016-11-22 11:33:06,894] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-11-22 11:33:06,895] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-11-22 11:33:06,896] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-11-22 11:33:06,897] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-11-22 11:33:06,898] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-11-22 11:33:06,899] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-11-22 11:33:06,899] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-11-22 11:33:06,899] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-11-22 11:33:06,899] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-11-22 11:33:06,900] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-11-22 11:33:06,900] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-11-22 11:33:06,900] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-11-22 11:33:06,900] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-11-22 11:33:06,901] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-11-22 11:33:06,901] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-11-22 11:33:06,901] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-11-22 11:33:06,901] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-11-22 11:33:06,902] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-11-22 11:33:06,902] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-11-22 11:33:06,902] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-11-22 11:33:06,902] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-11-22 11:33:06,903] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-11-22 11:33:06,903] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-11-22 11:33:06,903] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-11-22 11:33:06,903] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-11-22 11:33:06,911] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-11-22 11:33:06,911] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-11-22 11:33:06,914] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-11-22 11:33:06,915] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-11-22 11:33:06,915] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-11-22 11:33:06,915] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-11-22 11:33:06,915] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-11-22 11:33:06,916] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-11-22 11:33:06,916] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-11-22 11:33:06,916] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-11-22 11:33:06,916] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-11-22 11:33:06,917] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-11-22 11:33:06,917] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-11-22 11:33:06,917] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-11-22 11:33:06,917] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-11-22 11:33:06,917] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-11-22 11:33:06,918] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-11-22 11:33:06,918] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-11-22 11:33:06,918] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-11-22 11:33:06,918] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-11-22 11:33:06,918] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-11-22 11:33:06,919] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-11-22 11:33:06,919] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-11-22 11:33:06,919] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-11-22 11:33:06,919] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-11-22 11:33:06,920] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-11-22 11:33:06,920] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-11-22 11:33:06,920] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-11-22 11:33:06,921] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-11-22 11:33:06,921] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-11-22 11:33:06,921] chirp.directory - INFO: Registered Jetstream_JT270MH = JetstreamJT270MHRadio
[2016-11-22 11:33:06,921] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-11-22 11:33:06,921] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-11-22 11:33:06,922] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-11-22 11:33:06,922] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-11-22 11:33:06,922] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-11-22 11:33:06,922] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-11-22 11:33:06,922] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-11-22 11:33:06,922] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-11-22 11:33:06,924] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-11-22 11:33:06,924] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2016-11-22 11:33:06,924] chirp.directory - INFO: Registered Retevis_RT22 = RT22Radio
[2016-11-22 11:33:06,924] chirp.directory - INFO: Registered WLN_KD-C1 = KDC1
[2016-11-22 11:33:06,924] chirp.directory - INFO: Registered Zastone_ZT-X6 = ZTX6
[2016-11-22 11:33:06,925] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-11-22 11:33:06,925] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-11-22 11:33:06,925] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-11-22 11:33:06,925] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-11-22 11:33:06,925] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-11-22 11:33:06,926] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-11-22 11:33:06,926] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-11-22 11:33:06,926] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-11-22 11:33:06,926] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-11-22 11:33:06,927] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-11-22 11:33:06,927] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-11-22 11:33:06,927] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-11-22 11:33:06,927] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-11-22 11:33:06,928] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-11-22 11:33:06,929] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-11-22 11:33:06,929] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-11-22 11:33:06,929] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-11-22 11:33:06,929] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-11-22 11:33:06,929] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-11-22 11:33:06,929] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-11-22 11:33:06,929] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-11-22 11:33:06,930] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-11-22 11:33:06,931] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-11-22 11:33:06,931] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-11-22 11:33:06,931] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-11-22 11:33:06,931] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-11-22 11:33:06,931] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-11-22 11:33:06,932] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-11-22 11:33:06,932] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-11-22 11:33:06,932] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-11-22 11:33:06,933] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-11-22 11:33:06,933] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-11-22 11:33:06,933] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-11-22 11:33:06,934] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-11-22 11:33:06,934] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-11-22 11:33:06,934] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-11-22 11:33:06,934] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-11-22 11:33:06,935] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-11-22 11:33:06,935] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-11-22 11:33:06,935] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-11-22 11:33:06,936] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-11-22 11:33:06,936] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
Email was triggered for: Success
Sending email for trigger: Success
1
0
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Make Jetstream JT-270MH properly a dual-bank radio
#4241
[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 9d973edb69b0ef502baa4ddb511db184eaaab3cb
[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 9d973edb69b0ef502baa4ddb511db184eaaab3cb
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson5004570537660788340.sh
[workspace] $ /bin/sh -xe /tmp/hudson7606765323893740694.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.056s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/alinco.py:595:1: E302 expected 2 blank lines, found 1
./chirp/drivers/alinco.py:603:80: E501 line too long (114 > 79 characters)
./chirp/drivers/alinco.py:608:26: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:608:80: E501 line too long (84 > 79 characters)
./chirp/drivers/alinco.py:616:26: E222 multiple spaces after operator
./chirp/drivers/alinco.py:718:80: E501 line too long (89 > 79 characters)
./chirp/drivers/alinco.py:736:32: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:749:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:750:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:754:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:755:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:758:80: E501 line too long (81 > 79 characters)
./chirp/drivers/alinco.py:763:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:764:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:770:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:771:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:775:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:776:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:779:55: E231 missing whitespace after ','
./chirp/drivers/kyd.py:212:1: E302 expected 2 blank lines, found 1
./chirp/drivers/kyd.py:512:14: E111 indentation is not a multiple of four
real 0m7.657s
user 0m7.520s
sys 0m0.060s
================================================
Tests FAILED: driver tests
Build step 'Execute shell' marked build as failure
Email was triggered for: Failure
Sending email for trigger: Failure
1
1
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Merge an accidental branch
#0
[Jim Unroe <rock.unroe(a)gmail.com>] [NC-630A] Driver Cleanup
The main purpose of this patch is a general cleanup of the kyd.py driver. Some
things were tweaked to more closely match how the "factory" software behaves
during the cloning process. Also, code was also added to be more selective in
detecting KYD NC-630A images.
Except for adding an alias for the Plant-Tours MT-700, this patch does not add
any new features and does not make any changes that will be apparent to the
CHIRP user.
Related to #4235
[Michael Wagner <michael.wagner(a)gmx.at>] [btech] Adding 2-Tone settings. Last part of #4051
[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 2b00d3e5555c5a4cd886aa9f5b4a6ef851ae412b
[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 2b00d3e5555c5a4cd886aa9f5b4a6ef851ae412b
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson6355729031732681481.sh
[workspace] $ /bin/sh -xe /tmp/hudson8149262716408984273.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/drivers/alinco.py:595:1: E302 expected 2 blank lines, found 1
./chirp/drivers/alinco.py:603:80: E501 line too long (114 > 79 characters)
./chirp/drivers/alinco.py:608:26: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:608:80: E501 line too long (84 > 79 characters)
./chirp/drivers/alinco.py:616:26: E222 multiple spaces after operator
./chirp/drivers/alinco.py:718:80: E501 line too long (89 > 79 characters)
./chirp/drivers/alinco.py:736:32: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:749:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:750:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:754:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:755:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:758:80: E501 line too long (81 > 79 characters)
./chirp/drivers/alinco.py:763:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:764:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:770:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:771:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:775:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:776:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:779:55: E231 missing whitespace after ','
./chirp/drivers/kyd.py:212:1: E302 expected 2 blank lines, found 1
./chirp/drivers/kyd.py:512:14: E111 indentation is not a multiple of four
real 0m7.203s
user 0m7.188s
sys 0m0.004s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-11-19 18:08:03,198] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-11-19 18:08:03,234] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-11-19 18:08:03,234] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-11-19 18:08:03,235] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-11-19 18:08:03,236] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-11-19 18:08:03,236] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-11-19 18:08:03,236] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-11-19 18:08:03,236] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-11-19 18:08:03,236] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-11-19 18:08:03,236] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-11-19 18:08:03,237] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-11-19 18:08:03,238] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-11-19 18:08:03,238] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-11-19 18:08:03,238] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-11-19 18:08:03,238] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-11-19 18:08:03,238] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-11-19 18:08:03,238] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-11-19 18:08:03,239] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-11-19 18:08:03,239] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-11-19 18:08:03,239] chirp.directory - INFO: Registered Alinco_DJ-G7EG = AlincoDJG7EG
[2016-11-19 18:08:03,239] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-11-19 18:08:03,239] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-11-19 18:08:03,239] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-11-19 18:08:03,239] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-11-19 18:08:03,240] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-11-19 18:08:03,240] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-11-19 18:08:03,241] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-11-19 18:08:03,241] chirp.directory - INFO: Registered Baofeng_BF-A58 = BFA58
[2016-11-19 18:08:03,241] chirp.directory - INFO: Registered Baofeng_UV-82WP = UV82WP
[2016-11-19 18:08:03,241] chirp.directory - INFO: Registered Baofeng_GT-3WP = GT3WP
[2016-11-19 18:08:03,241] chirp.directory - INFO: Registered Retevis_RT6 = RT6
[2016-11-19 18:08:03,241] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-11-19 18:08:03,242] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-11-19 18:08:03,242] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-11-19 18:08:03,242] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-11-19 18:08:03,242] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-11-19 18:08:03,243] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-11-19 18:08:03,243] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-11-19 18:08:03,243] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-11-19 18:08:03,243] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-11-19 18:08:03,243] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-11-19 18:08:03,244] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-11-19 18:08:03,245] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-11-19 18:08:03,247] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-11-19 18:08:03,247] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-11-19 18:08:03,247] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-11-19 18:08:03,248] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-11-19 18:08:03,248] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-11-19 18:08:03,248] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-11-19 18:08:03,249] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-11-19 18:08:03,249] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-11-19 18:08:03,249] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-11-19 18:08:03,249] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-11-19 18:08:03,249] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-11-19 18:08:03,250] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-11-19 18:08:03,250] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-11-19 18:08:03,250] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-11-19 18:08:03,250] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-11-19 18:08:03,251] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-11-19 18:08:03,252] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-11-19 18:08:03,252] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-11-19 18:08:03,252] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-11-19 18:08:03,252] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-11-19 18:08:03,260] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-11-19 18:08:03,260] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-11-19 18:08:03,264] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-11-19 18:08:03,264] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-11-19 18:08:03,264] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-11-19 18:08:03,264] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-11-19 18:08:03,265] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-11-19 18:08:03,265] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-11-19 18:08:03,265] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-11-19 18:08:03,265] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-11-19 18:08:03,266] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-11-19 18:08:03,266] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-11-19 18:08:03,266] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-11-19 18:08:03,266] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-11-19 18:08:03,267] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-11-19 18:08:03,267] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-11-19 18:08:03,267] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-11-19 18:08:03,267] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-11-19 18:08:03,268] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-11-19 18:08:03,268] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-11-19 18:08:03,268] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-11-19 18:08:03,268] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-11-19 18:08:03,268] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-11-19 18:08:03,269] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-11-19 18:08:03,269] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-11-19 18:08:03,269] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-11-19 18:08:03,270] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-11-19 18:08:03,270] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-11-19 18:08:03,270] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-11-19 18:08:03,270] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-11-19 18:08:03,270] chirp.directory - INFO: Registered Jetstream_JT270MH = JetstreamJT270MHRadio
[2016-11-19 18:08:03,271] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-11-19 18:08:03,271] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-11-19 18:08:03,271] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-11-19 18:08:03,271] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-11-19 18:08:03,272] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-11-19 18:08:03,272] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-11-19 18:08:03,272] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-11-19 18:08:03,272] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-11-19 18:08:03,273] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-11-19 18:08:03,273] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2016-11-19 18:08:03,274] chirp.directory - INFO: Registered Retevis_RT22 = RT22Radio
[2016-11-19 18:08:03,274] chirp.directory - INFO: Registered WLN_KD-C1 = KDC1
[2016-11-19 18:08:03,274] chirp.directory - INFO: Registered Zastone_ZT-X6 = ZTX6
[2016-11-19 18:08:03,274] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-11-19 18:08:03,275] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-11-19 18:08:03,275] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-11-19 18:08:03,275] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-11-19 18:08:03,275] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-11-19 18:08:03,275] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-11-19 18:08:03,275] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-11-19 18:08:03,276] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-11-19 18:08:03,276] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-11-19 18:08:03,276] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-11-19 18:08:03,277] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-11-19 18:08:03,277] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-11-19 18:08:03,277] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-11-19 18:08:03,277] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-11-19 18:08:03,277] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-11-19 18:08:03,277] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-11-19 18:08:03,277] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-11-19 18:08:03,278] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-11-19 18:08:03,279] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-11-19 18:08:03,279] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-11-19 18:08:03,279] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-11-19 18:08:03,279] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-11-19 18:08:03,279] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-11-19 18:08:03,279] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-11-19 18:08:03,280] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-11-19 18:08:03,281] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-11-19 18:08:03,281] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-11-19 18:08:03,281] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-11-19 18:08:03,281] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-11-19 18:08:03,282] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-11-19 18:08:03,282] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-11-19 18:08:03,283] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-11-19 18:08:03,283] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-11-19 18:08:03,284] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-11-19 18:08:03,285] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-11-19 18:08:03,286] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-11-19 18:08:03,286] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-11-19 18:08:03,287] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-11-19 18:08:03,287] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-11-19 18:08:03,288] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-11-19 18:08:03,289] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-11-19 18:08:03,289] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-11-19 18:08:03,290] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-11-19 18:08:03,290] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
Email was triggered for: Success
Sending email for trigger: Success
1
0
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Add support for Jetstream JT270MH
Thanks to Jetstream for donating a radio!
Fixes #4219
[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 cb8d0bab7c18aff9cd59d1e4393019bb7f5b754b
[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 cb8d0bab7c18aff9cd59d1e4393019bb7f5b754b
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson302646167075126042.sh
[workspace] $ /bin/sh -xe /tmp/hudson7151085385579813098.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.053s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/alinco.py:595:1: E302 expected 2 blank lines, found 1
./chirp/drivers/alinco.py:603:80: E501 line too long (114 > 79 characters)
./chirp/drivers/alinco.py:608:26: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:608:80: E501 line too long (84 > 79 characters)
./chirp/drivers/alinco.py:616:26: E222 multiple spaces after operator
./chirp/drivers/alinco.py:718:80: E501 line too long (89 > 79 characters)
./chirp/drivers/alinco.py:736:32: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:749:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:750:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:754:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:755:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:758:80: E501 line too long (81 > 79 characters)
./chirp/drivers/alinco.py:763:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:764:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:770:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:771:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:775:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:776:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:779:55: E231 missing whitespace after ','
real 0m7.662s
user 0m7.544s
sys 0m0.048s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-11-19 15:13:07,688] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-11-19 15:13:07,726] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-11-19 15:13:07,727] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-11-19 15:13:07,728] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-11-19 15:13:07,728] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-11-19 15:13:07,728] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-11-19 15:13:07,728] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-11-19 15:13:07,728] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Alinco_DJ-G7EG = AlincoDJG7EG
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-11-19 15:13:07,729] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-11-19 15:13:07,730] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-11-19 15:13:07,730] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-11-19 15:13:07,730] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-11-19 15:13:07,731] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-11-19 15:13:07,731] chirp.directory - INFO: Registered Baofeng_BF-A58 = BFA58
[2016-11-19 15:13:07,731] chirp.directory - INFO: Registered Baofeng_UV-82WP = UV82WP
[2016-11-19 15:13:07,731] chirp.directory - INFO: Registered Baofeng_GT-3WP = GT3WP
[2016-11-19 15:13:07,731] chirp.directory - INFO: Registered Retevis_RT6 = RT6
[2016-11-19 15:13:07,732] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-11-19 15:13:07,732] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-11-19 15:13:07,732] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-11-19 15:13:07,733] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-11-19 15:13:07,733] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-11-19 15:13:07,733] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-11-19 15:13:07,733] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-11-19 15:13:07,733] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-11-19 15:13:07,733] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-11-19 15:13:07,734] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-11-19 15:13:07,735] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-11-19 15:13:07,736] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-11-19 15:13:07,736] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-11-19 15:13:07,737] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-11-19 15:13:07,737] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-11-19 15:13:07,737] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-11-19 15:13:07,738] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-11-19 15:13:07,738] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-11-19 15:13:07,738] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-11-19 15:13:07,738] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-11-19 15:13:07,739] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-11-19 15:13:07,739] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-11-19 15:13:07,739] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-11-19 15:13:07,739] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-11-19 15:13:07,739] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-11-19 15:13:07,740] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-11-19 15:13:07,740] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-11-19 15:13:07,740] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-11-19 15:13:07,741] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-11-19 15:13:07,741] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-11-19 15:13:07,741] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-11-19 15:13:07,741] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-11-19 15:13:07,748] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-11-19 15:13:07,749] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-11-19 15:13:07,752] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-11-19 15:13:07,752] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-11-19 15:13:07,752] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-11-19 15:13:07,753] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-11-19 15:13:07,753] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-11-19 15:13:07,753] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-11-19 15:13:07,753] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-11-19 15:13:07,754] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-11-19 15:13:07,754] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-11-19 15:13:07,754] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-11-19 15:13:07,754] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-11-19 15:13:07,754] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-11-19 15:13:07,755] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-11-19 15:13:07,755] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-11-19 15:13:07,755] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-11-19 15:13:07,755] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-11-19 15:13:07,756] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-11-19 15:13:07,756] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-11-19 15:13:07,756] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-11-19 15:13:07,756] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-11-19 15:13:07,756] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-11-19 15:13:07,757] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-11-19 15:13:07,757] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-11-19 15:13:07,757] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-11-19 15:13:07,757] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-11-19 15:13:07,758] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-11-19 15:13:07,758] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-11-19 15:13:07,758] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-11-19 15:13:07,758] chirp.directory - INFO: Registered Jetstream_JT270MH = JetstreamJT270MHRadio
[2016-11-19 15:13:07,758] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-11-19 15:13:07,759] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-11-19 15:13:07,759] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-11-19 15:13:07,759] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-11-19 15:13:07,759] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-11-19 15:13:07,759] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-11-19 15:13:07,760] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-11-19 15:13:07,760] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-11-19 15:13:07,761] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-11-19 15:13:07,761] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2016-11-19 15:13:07,761] chirp.directory - INFO: Registered Retevis_RT22 = RT22Radio
[2016-11-19 15:13:07,762] chirp.directory - INFO: Registered WLN_KD-C1 = KDC1
[2016-11-19 15:13:07,762] chirp.directory - INFO: Registered Zastone_ZT-X6 = ZTX6
[2016-11-19 15:13:07,762] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-11-19 15:13:07,762] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-11-19 15:13:07,763] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-11-19 15:13:07,763] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-11-19 15:13:07,763] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-11-19 15:13:07,763] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-11-19 15:13:07,763] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-11-19 15:13:07,763] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-11-19 15:13:07,764] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-11-19 15:13:07,764] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-11-19 15:13:07,764] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-11-19 15:13:07,764] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-11-19 15:13:07,765] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-11-19 15:13:07,766] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-11-19 15:13:07,766] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-11-19 15:13:07,766] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-11-19 15:13:07,766] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-11-19 15:13:07,766] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-11-19 15:13:07,766] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-11-19 15:13:07,767] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-11-19 15:13:07,768] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-11-19 15:13:07,769] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-11-19 15:13:07,769] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-11-19 15:13:07,770] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-11-19 15:13:07,770] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-11-19 15:13:07,770] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-11-19 15:13:07,771] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-11-19 15:13:07,771] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-11-19 15:13:07,771] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-11-19 15:13:07,771] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-11-19 15:13:07,772] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-11-19 15:13:07,772] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-11-19 15:13:07,773] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-11-19 15:13:07,773] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-11-19 15:13:07,773] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-11-19 15:13:07,773] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
Email was triggered for: Success
Sending email for trigger: Success
1
0
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1479507921 18000
# Node ID 09f726c48ffde792ab267a822e23dcf854fe9906
# Parent cb8d0bab7c18aff9cd59d1e4393019bb7f5b754b
[NC-630A] Driver Cleanup
The main purpose of this patch is a general cleanup of the kyd.py driver. Some
things were tweaked to more closely match how the "factory" software behaves
during the cloning process. Also, code was also added to be more selective in
detecting KYD NC-630A images.
Except for adding an alias for the Plant-Tours MT-700, this patch does not add
any new features and does not make any changes that will be apparent to the
CHIRP user.
Related to #4235
diff -r cb8d0bab7c18 -r 09f726c48ffd chirp/drivers/kyd.py
--- a/chirp/drivers/kyd.py Wed Nov 16 20:23:27 2016 -0800
+++ b/chirp/drivers/kyd.py Fri Nov 18 17:25:21 2016 -0500
@@ -63,7 +63,6 @@
"""
CMD_ACK = "\x06"
-BLOCK_SIZE = 0x08
NC630A_POWER_LEVELS = [chirp_common.PowerLevel("Low", watts=1.00),
chirp_common.PowerLevel("High", watts=5.00)]
@@ -91,8 +90,6 @@
serial = radio.pipe
try:
- serial.write("\x02")
- time.sleep(0.1)
serial.write("PROGRAM")
ack = serial.read(1)
except:
@@ -109,7 +106,7 @@
except:
raise errors.RadioError("Error communicating with radio")
- if not ident.startswith("P32073"):
+ if not ident.startswith(radio._fileid):
LOG.debug(util.hexprint(ident))
raise errors.RadioError("Radio returned unknown identification string")
@@ -123,24 +120,16 @@
raise errors.RadioError("Radio refused to enter programming mode")
-def _nc630a_exit_programming_mode(radio):
- serial = radio.pipe
- try:
- serial.write("E")
- except:
- raise errors.RadioError("Radio refused to exit programming mode")
-
-
def _nc630a_read_block(radio, block_addr, block_size):
serial = radio.pipe
- cmd = struct.pack(">cHb", 'R', block_addr, BLOCK_SIZE)
+ cmd = struct.pack(">cHb", 'R', block_addr, block_size)
expectedresponse = "W" + cmd[1:]
LOG.debug("Reading block %04x..." % (block_addr))
try:
serial.write(cmd)
- response = serial.read(4 + BLOCK_SIZE)
+ response = serial.read(4 + block_size)
if response[:4] != expectedresponse:
raise Exception("Error reading block %04x." % (block_addr))
@@ -160,8 +149,8 @@
def _nc630a_write_block(radio, block_addr, block_size):
serial = radio.pipe
- cmd = struct.pack(">cHb", 'W', block_addr, BLOCK_SIZE)
- data = radio.get_mmap()[block_addr:block_addr + 8]
+ cmd = struct.pack(">cHb", 'W', block_addr, block_size)
+ data = radio.get_mmap()[block_addr:block_addr + block_size]
LOG.debug("Writing Data:")
LOG.debug(util.hexprint(cmd + data))
@@ -187,18 +176,16 @@
status.cur = 0
status.max = radio._memsize
- for addr in range(0, radio._memsize, BLOCK_SIZE):
- status.cur = addr + BLOCK_SIZE
+ for addr in range(0, radio._memsize, radio._block_size):
+ status.cur = addr + radio._block_size
radio.status_fn(status)
- block = _nc630a_read_block(radio, addr, BLOCK_SIZE)
+ block = _nc630a_read_block(radio, addr, radio._block_size)
data += block
LOG.debug("Address: %04x" % addr)
LOG.debug(util.hexprint(block))
- _nc630a_exit_programming_mode(radio)
-
return memmap.MemoryMap(data)
@@ -212,25 +199,30 @@
status.max = radio._memsize
for start_addr, end_addr in radio._ranges:
- for addr in range(start_addr, end_addr, BLOCK_SIZE):
- status.cur = addr + BLOCK_SIZE
+ for addr in range(start_addr, end_addr, radio._block_size):
+ status.cur = addr + radio._block_size
radio.status_fn(status)
- _nc630a_write_block(radio, addr, BLOCK_SIZE)
+ _nc630a_write_block(radio, addr, radio._block_size)
- _nc630a_exit_programming_mode(radio)
+class MT700Alias(chirp_common.Alias):
+ VENDOR = "Plant-Tours"
+ MODEL = "MT-700"
@directory.register
class NC630aRadio(chirp_common.CloneModeRadio):
"""KYD NC-630A"""
VENDOR = "KYD"
MODEL = "NC-630A"
+ ALIASES = [MT700Alias]
BAUD_RATE = 9600
_ranges = [
- (0x0000, 0x0338),
+ (0x0000, 0x0330),
]
- _memsize = 0x0338
+ _memsize = 0x03C8
+ _block_size = 0x08
+ _fileid = "P32073"
def get_features(self):
rf = chirp_common.RadioFeatures()
@@ -403,9 +395,11 @@
_skp = self._memobj.skipflags[bytepos]
if mem.empty:
- _mem.set_raw("\xFF" * (_mem.size() / 8))
+ _mem.set_raw("\xFF" * 16)
return
+ _mem.set_raw("\x00" * 14 + "\xFF" * 2)
+
_mem.rxfreq = mem.freq / 10
if mem.duplex == "off":
@@ -504,3 +498,20 @@
except Exception, e:
LOG.debug(element.get_name())
raise
+
+ @classmethod
+ def match_model(cls, filedata, filename):
+ match_size = match_model = False
+
+ # testing the file data size
+ if len(filedata) in [0x338, 0x3C8]:
+ match_size = True
+
+ # testing model fingerprint
+ if filedata[0x01B8:0x01BE] == cls._fileid:
+ match_model = True
+
+ if match_size and match_model:
+ return True
+ else:
+ return False
1
0
I am trying to work with a user to get his radio supported by CHIRP.
The model (Baofeng UV-6R) is a supported model, but it is a different
firmware version and it behaves a little different in the cloning
process.
I can send him modified uv6r.py files that he can use the "Load
module" feature to test the changes. The issue is that this driver
depends on the baofeng_common.py driver for the cloning process
itself. I can modify this driver and send it to him, but even after
loading it using the "Load module" feature, the original driver
continues to be used.
My question is what do I have to do to be able to allow this user to
use a modified baofeng_common.py driver?
Thanks,
Jim KC9HI
2
5
[chirp_devel] [PATCH] [btech] Adding 2-Tone settings. Last part of #4051
by Michael Wagner (OE4AMW) 18 Nov '16
by Michael Wagner (OE4AMW) 18 Nov '16
18 Nov '16
# HG changeset patch
# User Michael Wagner <michael.wagner(a)gmx.at>
# Date 1479493548 -3600
# Fri Nov 18 19:25:48 2016 +0100
# Node ID b1bb9285f4e1af1be4a44b13fb3df961cc11eabe
# Parent cb8d0bab7c18aff9cd59d1e4393019bb7f5b754b
[btech] Adding 2-Tone settings. Last part of #4051
diff -r cb8d0bab7c18 -r b1bb9285f4e1 chirp/drivers/btech.py
--- a/chirp/drivers/btech.py Wed Nov 16 20:23:27 2016 -0800
+++ b/chirp/drivers/btech.py Fri Nov 18 19:25:48 2016 +0100
@@ -241,6 +241,43 @@
u8 resettime; // * 100 + 100ms
} dtmf_settings;
+#seekto 0x2D00;
+struct {
+ struct {
+ ul16 freq1;
+ u8 unused01[6];
+ ul16 freq2;
+ u8 unused02[6];
+ } _2tone_encode[15];
+ u8 duration_1st_tone; // *10ms
+ u8 duration_2nd_tone; // *10ms
+ u8 duration_gap; // *10ms
+ u8 unused03[13];
+ struct {
+ struct {
+ u8 dec; // one out of LIST_2TONE_DEC
+ u8 response; // one out of LIST_2TONE_RESPONSE
+ u8 alert; // 1-16
+ } decs[4];
+ u8 unused04[4];
+ } _2tone_decode[15];
+ u8 unused05[16];
+
+ struct {
+ ul16 freqA;
+ ul16 freqB;
+ ul16 freqC;
+ ul16 freqD;
+ // unknown what those values mean, but they are
+ // derived from configured frequencies
+ ul16 derived_from_freqA; // 2304000/freqA
+ ul16 derived_from_freqB; // 2304000/freqB
+ ul16 derived_from_freqC; // 2304000/freqC
+ ul16 derived_from_freqD; // 2304000/freqD
+ }freqs[15];
+ u8 reset_time; // * 100 + 100ms - 100-8000ms
+} _2tone;
+
#seekto 0x3000;
struct {
u8 freq[8];
@@ -346,7 +383,11 @@
LIST_DTMF_SPECIAL_VALUES = [ 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00]
LIST_DTMF_DELAY = ["%s ms" % x for x in range(100, 4100, 100)]
CHARSET_DTMF_DIGITS = "0123456789AaBbCcDd#*"
-
+LIST_2TONE_DEC = ["A-B", "A-C", "A-D",
+ "B-A", "B-C", "B-D",
+ "C-A", "C-B", "C-D",
+ "D-A", "D-B", "D-C"]
+LIST_2TONE_RESPONSE = ["None", "Alert", "Transpond", "Alert+Transpond"]
# This is a general serial timeout for all serial read functions.
# Practice has show that about 0.7 sec will be enough to cover all radios.
@@ -2279,6 +2320,216 @@
else:
LOG.debug("Invalid value decode reset time! Disabling.")
+ # 2 Tone
+ encode_2tone = RadioSettingGroup ("encode_2tone", "2 Tone Encode")
+ decode_2tone = RadioSettingGroup ("decode_2tone", "2 Code Decode")
+
+ top.append(encode_2tone)
+ top.append(decode_2tone)
+
+ duration_1st_tone = self._memobj._2tone.duration_1st_tone
+ if duration_1st_tone == 255:
+ LOG.debug("Duration of first 2 Tone digit is not yet " +
+ "configured. Setting to 600ms")
+ duration_1st_tone = 60
+
+ if duration_1st_tone <= len( LIST_5TONE_DELAY ):
+ line = RadioSetting("_2tone.duration_1st_tone",
+ "Duration 1st Tone",
+ RadioSettingValueList(LIST_5TONE_DELAY,
+ LIST_5TONE_DELAY[
+ duration_1st_tone]))
+ encode_2tone.append(line)
+
+ duration_2nd_tone = self._memobj._2tone.duration_2nd_tone
+ if duration_2nd_tone == 255:
+ LOG.debug("Duration of second 2 Tone digit is not yet " +
+ "configured. Setting to 600ms")
+ duration_2nd_tone = 60
+
+ if duration_2nd_tone <= len( LIST_5TONE_DELAY ):
+ line = RadioSetting("_2tone.duration_2nd_tone",
+ "Duration 2nd Tone",
+ RadioSettingValueList(LIST_5TONE_DELAY,
+ LIST_5TONE_DELAY[
+ duration_2nd_tone]))
+ encode_2tone.append(line)
+
+ duration_gap = self._memobj._2tone.duration_gap
+ if duration_gap == 255:
+ LOG.debug("Duration of gap is not yet " +
+ "configured. Setting to 300ms")
+ duration_gap = 30
+
+ if duration_gap <= len( LIST_5TONE_DELAY ):
+ line = RadioSetting("_2tone.duration_gap", "Duration of gap",
+ RadioSettingValueList(LIST_5TONE_DELAY,
+ LIST_5TONE_DELAY[
+ duration_gap]))
+ encode_2tone.append(line)
+
+ def _2tone_validate(value):
+ if value == 0:
+ return 65535
+ if value == 65535:
+ return value
+ if not (300 <= value and value <= 3000):
+ msg = ("2 Tone Frequency: Must be between 300 and 3000 Hz")
+ raise InvalidValueError(msg)
+ return value
+
+ def apply_2tone_freq(setting, obj):
+ val = int(setting.value)
+ if (val == 0) or (val == 65535):
+ obj.set_value(65535)
+ else:
+ obj.set_value(val)
+
+ i = 1
+ for code in self._memobj._2tone._2tone_encode:
+ code_2tone = RadioSettingGroup ("code_2tone_" + str(i),
+ "Encode Code " + str(i))
+ encode_2tone.append(code_2tone)
+
+ tmp = code.freq1
+ if tmp == 65535:
+ tmp = 0
+ val1 = RadioSettingValueInteger(0, 65535, tmp)
+ freq1 = RadioSetting("2tone_code_"+ str(i) + "_freq1",
+ "Frequency 1", val1)
+ val1.set_validate_callback(_2tone_validate)
+ freq1.set_apply_callback(apply_2tone_freq, code.freq1)
+ code_2tone.append(freq1)
+
+ tmp = code.freq2
+ if tmp == 65535:
+ tmp = 0
+ val2 = RadioSettingValueInteger(0, 65535, tmp)
+ freq2 = RadioSetting("2tone_code_"+ str(i) + "_freq2",
+ "Frequency 2", val2)
+ val2.set_validate_callback(_2tone_validate)
+ freq2.set_apply_callback(apply_2tone_freq, code.freq2)
+ code_2tone.append(freq2)
+
+ i = i + 1
+
+ decode_reset_time = _mem._2tone.reset_time
+ if decode_reset_time == 255:
+ decode_reset_time = 59
+ LOG.debug("Decode reset time unconfigured. resetting.")
+ if decode_reset_time <= len(LIST_5TONE_RESET):
+ list = RadioSettingValueList(
+ LIST_5TONE_RESET,
+ LIST_5TONE_RESET[
+ decode_reset_time])
+ line = RadioSetting("_2tone.reset_time",
+ "Decode reset time", list)
+ decode_2tone.append(line)
+ else:
+ LOG.debug("Invalid value decode reset time! Disabling.")
+
+ def apply_2tone_freq_pair(setting, obj):
+ val = int(setting.value)
+ derived_val = 65535
+ frqname = str(setting._name[-5:])
+ derivedname = "derived_from_" + frqname
+
+ if (val == 0):
+ val = 65535
+ derived_val = 65535
+ else:
+ derived_val = int(round(2304000.0/val))
+
+ obj[frqname].set_value( val )
+ obj[derivedname].set_value( derived_val )
+
+ LOG.debug("Apply " + frqname + ": " + str(val) + " | "
+ + derivedname + ": " + str(derived_val))
+
+ i = 1
+ for decode_code in self._memobj._2tone._2tone_decode:
+ _2tone_dec_code = RadioSettingGroup ("code_2tone_" + str(i),
+ "Decode Code " + str(i))
+ decode_2tone.append(_2tone_dec_code)
+
+ j = 1
+ for dec in decode_code.decs:
+ val = dec.dec
+ if val == 255:
+ LOG.debug("Dec for Code " + str(i) + " Dec " + str(j) +
+ " is not yet configured. Setting to 0.")
+ val = 0
+
+ if val <= len( LIST_2TONE_DEC ):
+ line = RadioSetting(
+ "_2tone_dec_settings_" + str(i) + "_dec_" + str(j),
+ "Dec " + str(j), RadioSettingValueList
+ (LIST_2TONE_DEC,
+ LIST_2TONE_DEC[val]))
+ line.set_apply_callback(apply_list_value, dec.dec)
+ _2tone_dec_code.append(line)
+ else:
+ LOG.debug("Invalid value for 2tone dec! Disabling.")
+
+ val = dec.response
+ if val == 255:
+ LOG.debug("Response for Code " + str(i) + " Dec " + str(j)+
+ " is not yet configured. Setting to 0.")
+ val = 0
+
+ if val <= len( LIST_2TONE_RESPONSE ):
+ line = RadioSetting(
+ "_2tone_dec_settings_" + str(i) + "_resp_" + str(j),
+ "Response " + str(j), RadioSettingValueList
+ (LIST_2TONE_RESPONSE,
+ LIST_2TONE_RESPONSE[val]))
+ line.set_apply_callback(apply_list_value, dec.response)
+ _2tone_dec_code.append(line)
+ else:
+ LOG.debug("Invalid value for 2tone response! Disabling.")
+
+ val = dec.alert
+ if val == 255:
+ LOG.debug("Alert for Code " + str(i) + " Dec " + str(j) +
+ " is not yet configured. Setting to 0.")
+ val = 0
+
+ if val <= len( PTTIDCODE_LIST ):
+ line = RadioSetting(
+ "_2tone_dec_settings_" + str(i) + "_alert_" + str(j),
+ "Alert " + str(j), RadioSettingValueList
+ (PTTIDCODE_LIST,
+ PTTIDCODE_LIST[val]))
+ line.set_apply_callback(apply_list_value, dec.alert)
+ _2tone_dec_code.append(line)
+ else:
+ LOG.debug("Invalid value for 2tone alert! Disabling.")
+ j = j + 1
+
+ freq = self._memobj._2tone.freqs[i-1]
+ for char in ['A', 'B', 'C', 'D']:
+ setting_name = "freq" + str(char)
+
+ tmp = freq[setting_name]
+ if tmp == 65535:
+ tmp = 0
+ if tmp != 0:
+ expected = int(round(2304000.0/tmp))
+ from_mem = freq["derived_from_" + setting_name]
+ if expected != from_mem:
+ LOG.error("Expected " + str(expected) +
+ " but read " + str(from_mem ) +
+ ". Disabling 2Tone Decode Freqs!")
+ break
+ val = RadioSettingValueInteger(0, 65535, tmp)
+ frq = RadioSetting("2tone_dec_"+ str(i) + "_freq" + str(char),
+ ("Decode Frequency " +str(char)), val)
+ val.set_validate_callback(_2tone_validate)
+ frq.set_apply_callback(apply_2tone_freq_pair, freq)
+ _2tone_dec_code.append(frq)
+
+ i = i + 1
+
return top
def set_settings(self, settings):
1
0
The "Alising for radio clones" wiki page says the followiong...
<quote>
For example, if you read and save an image of a Juentai JT-6188 Mini,
when you re-open it from the file in your hard drive, you will find
Chirp telling you that this image is for a QYT KT-8900, not the
Juentai JT-6188 Mini. This is completely normal and you are safe using
it for your clone radio.
</quote>
and this
<quote>
Once you want to save a copy of your radio data you will find Chirp is
suggesting you to use the {vendor}_{model}_{date}.img schema, for the
above example you will receive the suggestion to use this:
Juentai_JT-6188 Mini_{date}.img
</quote>
I don't find that his is the case. As soon as the download is
finished, CHIRP displays the {vendor}_{model} of the radio that the
selection is an alias of.
Is this wiki incorrect or am I implementing the "alias" feature incorrectly?
Reference: http://chirp.danplanet.com/projects/chirp/wiki/Aliasing_for_radio_clones
Jim
1
0
Tested changes:
[Dan Smith <dsmith(a)danplanet.com>] Add RT22 image from Jim
Related to #4145
[Jim Unroe <rock.unroe(a)gmail.com>] [NEW MODEL] Add Support for Retevis RT22 and Others
This patch adds support for the following radio models:
Retevis RT22
WLN KD-C1
Zastone ZT-X6
related to #4145
[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 4e4771ee91278ab3b3a3594cb074fede97e782fb
[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 4e4771ee91278ab3b3a3594cb074fede97e782fb
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson8757447550643749949.sh
[workspace] $ /bin/sh -xe /tmp/hudson7771595913304760514.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.053s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/alinco.py:595:1: E302 expected 2 blank lines, found 1
./chirp/drivers/alinco.py:603:80: E501 line too long (114 > 79 characters)
./chirp/drivers/alinco.py:608:26: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:608:80: E501 line too long (84 > 79 characters)
./chirp/drivers/alinco.py:616:26: E222 multiple spaces after operator
./chirp/drivers/alinco.py:718:80: E501 line too long (89 > 79 characters)
./chirp/drivers/alinco.py:736:32: E261 at least two spaces before inline comment
./chirp/drivers/alinco.py:749:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:750:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:754:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:755:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:758:80: E501 line too long (81 > 79 characters)
./chirp/drivers/alinco.py:763:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:764:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:770:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:771:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:775:80: E501 line too long (86 > 79 characters)
./chirp/drivers/alinco.py:776:47: E128 continuation line under-indented for visual indent
./chirp/drivers/alinco.py:779:55: E231 missing whitespace after ','
real 0m7.608s
user 0m7.512s
sys 0m0.036s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2016-11-16 20:28:05,635] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2016-11-16 20:28:05,671] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2016-11-16 20:28:05,671] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2016-11-16 20:28:05,671] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2016-11-16 20:28:05,672] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2016-11-16 20:28:05,673] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2016-11-16 20:28:05,673] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2016-11-16 20:28:05,673] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2016-11-16 20:28:05,673] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2016-11-16 20:28:05,673] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2016-11-16 20:28:05,673] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2016-11-16 20:28:05,674] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2016-11-16 20:28:05,675] chirp.directory - INFO: Registered Alinco_DJ-G7EG = AlincoDJG7EG
[2016-11-16 20:28:05,675] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2016-11-16 20:28:05,675] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2016-11-16 20:28:05,675] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2016-11-16 20:28:05,675] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2016-11-16 20:28:05,675] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2016-11-16 20:28:05,675] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2016-11-16 20:28:05,676] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2016-11-16 20:28:05,677] chirp.directory - INFO: Registered Baofeng_BF-A58 = BFA58
[2016-11-16 20:28:05,677] chirp.directory - INFO: Registered Baofeng_UV-82WP = UV82WP
[2016-11-16 20:28:05,677] chirp.directory - INFO: Registered Baofeng_GT-3WP = GT3WP
[2016-11-16 20:28:05,677] chirp.directory - INFO: Registered Retevis_RT6 = RT6
[2016-11-16 20:28:05,677] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2016-11-16 20:28:05,678] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2016-11-16 20:28:05,678] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2016-11-16 20:28:05,678] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2016-11-16 20:28:05,678] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2016-11-16 20:28:05,678] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2016-11-16 20:28:05,678] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2016-11-16 20:28:05,678] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2016-11-16 20:28:05,679] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2016-11-16 20:28:05,679] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2016-11-16 20:28:05,679] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2016-11-16 20:28:05,679] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2016-11-16 20:28:05,679] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2016-11-16 20:28:05,679] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2016-11-16 20:28:05,680] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2016-11-16 20:28:05,681] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2016-11-16 20:28:05,681] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2016-11-16 20:28:05,681] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2016-11-16 20:28:05,681] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2016-11-16 20:28:05,682] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2016-11-16 20:28:05,682] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2016-11-16 20:28:05,683] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2016-11-16 20:28:05,683] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2016-11-16 20:28:05,683] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2016-11-16 20:28:05,684] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2016-11-16 20:28:05,684] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2016-11-16 20:28:05,684] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2016-11-16 20:28:05,684] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2016-11-16 20:28:05,684] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2016-11-16 20:28:05,685] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2016-11-16 20:28:05,685] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2016-11-16 20:28:05,685] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2016-11-16 20:28:05,685] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2016-11-16 20:28:05,685] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2016-11-16 20:28:05,686] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2016-11-16 20:28:05,686] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2016-11-16 20:28:05,686] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2016-11-16 20:28:05,687] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2016-11-16 20:28:05,687] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2016-11-16 20:28:05,694] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2016-11-16 20:28:05,694] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2016-11-16 20:28:05,698] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2016-11-16 20:28:05,698] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2016-11-16 20:28:05,698] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2016-11-16 20:28:05,698] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2016-11-16 20:28:05,698] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2016-11-16 20:28:05,699] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2016-11-16 20:28:05,699] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2016-11-16 20:28:05,699] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2016-11-16 20:28:05,699] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2016-11-16 20:28:05,700] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2016-11-16 20:28:05,700] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2016-11-16 20:28:05,700] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2016-11-16 20:28:05,700] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2016-11-16 20:28:05,700] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2016-11-16 20:28:05,701] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2016-11-16 20:28:05,701] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2016-11-16 20:28:05,701] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2016-11-16 20:28:05,701] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2016-11-16 20:28:05,701] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2016-11-16 20:28:05,702] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2016-11-16 20:28:05,702] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2016-11-16 20:28:05,702] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2016-11-16 20:28:05,702] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2016-11-16 20:28:05,703] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2016-11-16 20:28:05,703] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2016-11-16 20:28:05,703] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2016-11-16 20:28:05,704] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2016-11-16 20:28:05,704] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2016-11-16 20:28:05,704] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2016-11-16 20:28:05,704] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2016-11-16 20:28:05,705] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2016-11-16 20:28:05,705] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2016-11-16 20:28:05,705] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2016-11-16 20:28:05,705] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2016-11-16 20:28:05,705] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2016-11-16 20:28:05,705] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2016-11-16 20:28:05,707] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2016-11-16 20:28:05,707] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2016-11-16 20:28:05,707] chirp.directory - INFO: Registered Retevis_RT22 = RT22Radio
[2016-11-16 20:28:05,707] chirp.directory - INFO: Registered WLN_KD-C1 = KDC1
[2016-11-16 20:28:05,707] chirp.directory - INFO: Registered Zastone_ZT-X6 = ZTX6
[2016-11-16 20:28:05,708] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2016-11-16 20:28:05,708] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2016-11-16 20:28:05,708] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2016-11-16 20:28:05,708] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2016-11-16 20:28:05,708] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2016-11-16 20:28:05,709] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2016-11-16 20:28:05,709] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2016-11-16 20:28:05,709] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2016-11-16 20:28:05,709] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2016-11-16 20:28:05,710] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2016-11-16 20:28:05,710] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2016-11-16 20:28:05,710] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2016-11-16 20:28:05,711] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2016-11-16 20:28:05,712] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2016-11-16 20:28:05,712] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2016-11-16 20:28:05,712] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2016-11-16 20:28:05,712] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2016-11-16 20:28:05,712] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2016-11-16 20:28:05,712] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2016-11-16 20:28:05,712] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2016-11-16 20:28:05,713] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2016-11-16 20:28:05,714] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2016-11-16 20:28:05,714] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2016-11-16 20:28:05,714] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2016-11-16 20:28:05,714] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2016-11-16 20:28:05,714] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2016-11-16 20:28:05,714] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2016-11-16 20:28:05,715] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2016-11-16 20:28:05,715] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2016-11-16 20:28:05,715] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2016-11-16 20:28:05,716] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2016-11-16 20:28:05,716] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2016-11-16 20:28:05,716] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2016-11-16 20:28:05,717] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2016-11-16 20:28:05,717] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2016-11-16 20:28:05,717] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2016-11-16 20:28:05,718] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2016-11-16 20:28:05,718] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2016-11-16 20:28:05,718] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2016-11-16 20:28:05,719] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2016-11-16 20:28:05,719] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2016-11-16 20:28:05,719] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
Email was triggered for: Success
Sending email for trigger: Success
1
0
16 Nov '16
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1479346453 18000
# Node ID ac13d09dc5746d655d1a48d0e0e3f6bebf6ff7c6
# Parent 4e4771ee91278ab3b3a3594cb074fede97e782fb
[NEW MODEL] Add Support for Retevis RT22 and Others
This patch adds support for the following radio models:
Retevis RT22
WLN KD-C1
Zastone ZT-X6
related to #4145
diff -r 4e4771ee9127 -r ac13d09dc574 chirp/drivers/retevis_rt22.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/chirp/drivers/retevis_rt22.py Wed Nov 16 20:34:13 2016 -0500
@@ -0,0 +1,601 @@
+# Copyright 2016 Jim Unroe <rock.unroe(a)gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import time
+import os
+import struct
+import logging
+
+from chirp import chirp_common, directory, memmap
+from chirp import bitwise, errors, util
+from chirp.settings import RadioSetting, RadioSettingGroup, \
+ RadioSettingValueInteger, RadioSettingValueList, \
+ RadioSettingValueBoolean, RadioSettings, \
+ RadioSettingValueString
+
+LOG = logging.getLogger(__name__)
+
+MEM_FORMAT = """
+#seekto 0x0010;
+struct {
+ lbcd rxfreq[4];
+ lbcd txfreq[4];
+ ul16 rx_tone;
+ ul16 tx_tone;
+ u8 unknown1;
+ u8 unknown3:2,
+ highpower:1, // Power Level
+ wide:1, // Bandwidth
+ unknown4:4;
+ u8 unknown5[2];
+} memory[16];
+
+#seekto 0x012F;
+struct {
+ u8 voice; // Voice Annunciation
+ u8 tot; // Time-out Timer
+ u8 unknown1[3];
+ u8 squelch; // Squelch Level
+ u8 save; // Battery Saver
+ u8 beep; // Beep
+ u8 unknown2[2];
+ u8 vox; // VOX
+ u8 voxgain; // VOX Gain
+ u8 voxdelay; // VOX Delay
+ u8 unknown3[2];
+ u8 pf2key; // PF2 Key
+} settings;
+
+#seekto 0x017E;
+u8 skipflags[2]; // SCAN_ADD
+
+#seekto 0x0300;
+struct {
+ char line1[32];
+ char line2[32];
+} embedded_msg;
+"""
+
+CMD_ACK = "\x06"
+
+RT22_POWER_LEVELS = [chirp_common.PowerLevel("Low", watts=2.00),
+ chirp_common.PowerLevel("High", watts=5.00)]
+
+RT22_DTCS = sorted(chirp_common.DTCS_CODES + [645])
+
+PF2KEY_LIST = ["Scan", "Local Alarm", "Remote Alarm"]
+TIMEOUTTIMER_LIST = [""] + ["%s seconds" % x for x in range(15, 615, 15)]
+VOICE_LIST = ["Off", "Chinese", "English"]
+VOX_LIST = ["OFF"] + ["%s" % x for x in range(1, 17)]
+VOXDELAY_LIST = ["0.5", "1.0", "1.5", "2.0", "2.5", "3.0"]
+
+SETTING_LISTS = {
+ "pf2key": PF2KEY_LIST,
+ "tot": TIMEOUTTIMER_LIST,
+ "voice": VOICE_LIST,
+ "vox": VOX_LIST,
+ "voxdelay": VOXDELAY_LIST,
+ }
+
+VALID_CHARS = chirp_common.CHARSET_ALPHANUMERIC + \
+ "`{|}!\"#$%&'()*+,-./:;<=>?@[]^_"
+
+
+def _rt22_enter_programming_mode(radio):
+ serial = radio.pipe
+
+ magic = "PROGRGS"
+ try:
+ for j in range(0, len(magic)):
+ time.sleep(0.005)
+ serial.write(magic[j])
+ ack = serial.read(1)
+ except:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Error communicating with radio")
+
+ if not ack:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("No response from radio")
+ elif ack != CMD_ACK:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Radio refused to enter programming mode")
+
+ try:
+ serial.write("\x02")
+ ident = serial.read(8)
+ except:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Error communicating with radio")
+
+ if not ident.startswith("P32073"):
+ _rt22_exit_programming_mode(radio)
+ LOG.debug(util.hexprint(ident))
+ raise errors.RadioError("Radio returned unknown identification string")
+
+ try:
+ serial.write(CMD_ACK)
+ ack = serial.read(1)
+ except:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Error communicating with radio")
+
+ if ack != CMD_ACK:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Radio refused to enter programming mode")
+
+ try:
+ serial.write("\x07")
+ ack = serial.read(1)
+ except:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Error communicating with radio")
+
+ if ack != "\x4E":
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Radio refused to enter programming mode")
+
+
+def _rt22_exit_programming_mode(radio):
+ serial = radio.pipe
+ try:
+ serial.write("E")
+ except:
+ raise errors.RadioError("Radio refused to exit programming mode")
+
+
+def _rt22_read_block(radio, block_addr, block_size):
+ serial = radio.pipe
+
+ cmd = struct.pack(">cHb", 'R', block_addr, block_size)
+ expectedresponse = "W" + cmd[1:]
+ LOG.debug("Reading block %04x..." % (block_addr))
+
+ try:
+ for j in range(0, len(cmd)):
+ time.sleep(0.005)
+ serial.write(cmd[j])
+
+ response = serial.read(4 + block_size)
+ if response[:4] != expectedresponse:
+ _rt22_exit_programming_mode(radio)
+ raise Exception("Error reading block %04x." % (block_addr))
+
+ block_data = response[4:]
+
+ serial.write(CMD_ACK)
+ ack = serial.read(1)
+ except:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Failed to read block at %04x" % block_addr)
+
+ if ack != CMD_ACK:
+ _rt22_exit_programming_mode(radio)
+ raise Exception("No ACK reading block %04x." % (block_addr))
+
+ return block_data
+
+
+def _rt22_write_block(radio, block_addr, block_size):
+ serial = radio.pipe
+
+ cmd = struct.pack(">cHb", 'W', block_addr, block_size)
+ data = radio.get_mmap()[block_addr:block_addr + block_size]
+
+ LOG.debug("Writing Data:")
+ LOG.debug(util.hexprint(cmd + data))
+
+ try:
+ for j in range(0, len(cmd)):
+ time.sleep(0.005)
+ serial.write(cmd[j])
+ for j in range(0, len(data)):
+ time.sleep(0.005)
+ serial.write(data[j])
+ if serial.read(1) != CMD_ACK:
+ raise Exception("No ACK")
+ except:
+ _rt22_exit_programming_mode(radio)
+ raise errors.RadioError("Failed to send block "
+ "to radio at %04x" % block_addr)
+
+
+def do_download(radio):
+ LOG.debug("download")
+ _rt22_enter_programming_mode(radio)
+
+ data = ""
+
+ status = chirp_common.Status()
+ status.msg = "Cloning from radio"
+
+ status.cur = 0
+ status.max = radio._memsize
+
+ for addr in range(0, radio._memsize, radio._block_size):
+ status.cur = addr + radio._block_size
+ radio.status_fn(status)
+
+ block = _rt22_read_block(radio, addr, radio._block_size)
+ data += block
+
+ LOG.debug("Address: %04x" % addr)
+ LOG.debug(util.hexprint(block))
+
+ data += radio.MODEL.ljust(8)
+
+ _rt22_exit_programming_mode(radio)
+
+ return memmap.MemoryMap(data)
+
+
+def do_upload(radio):
+ status = chirp_common.Status()
+ status.msg = "Uploading to radio"
+
+ _rt22_enter_programming_mode(radio)
+
+ status.cur = 0
+ status.max = radio._memsize
+
+ for start_addr, end_addr, block_size in radio._ranges:
+ for addr in range(start_addr, end_addr, block_size):
+ status.cur = addr + block_size
+ radio.status_fn(status)
+ _rt22_write_block(radio, addr, block_size)
+
+ _rt22_exit_programming_mode(radio)
+
+
+def model_match(cls, data):
+ """Match the opened/downloaded image to the correct version"""
+
+ if len(data) == 0x0408:
+ rid = data[0x0400:0x0408]
+ return rid.startswith(cls.MODEL)
+ else:
+ return False
+
+
+(a)directory.register
+class RT22Radio(chirp_common.CloneModeRadio):
+ """Retevis RT22"""
+ VENDOR = "Retevis"
+ MODEL = "RT22"
+ BAUD_RATE = 9600
+
+ _ranges = [
+ (0x0000, 0x0180, 0x10),
+ (0x01B8, 0x01F8, 0x10),
+ (0x01F8, 0x0200, 0x08),
+ (0x0200, 0x0340, 0x10),
+ ]
+ _memsize = 0x0400
+ _block_size = 0x40
+
+ def get_features(self):
+ rf = chirp_common.RadioFeatures()
+ rf.has_settings = True
+ rf.has_bank = False
+ rf.has_ctone = True
+ rf.has_cross = True
+ rf.has_rx_dtcs = True
+ rf.has_tuning_step = False
+ rf.can_odd_split = True
+ rf.has_name = False
+ rf.valid_skips = ["", "S"]
+ rf.valid_tmodes = ["", "Tone", "TSQL", "DTCS", "Cross"]
+ rf.valid_cross_modes = ["Tone->Tone", "Tone->DTCS", "DTCS->Tone",
+ "->Tone", "->DTCS", "DTCS->", "DTCS->DTCS"]
+ rf.valid_power_levels = RT22_POWER_LEVELS
+ rf.valid_duplexes = ["", "-", "+", "split", "off"]
+ rf.valid_modes = ["NFM", "FM"] # 12.5 KHz, 25 kHz.
+ rf.memory_bounds = (1, 16)
+ rf.valid_bands = [(400000000, 520000000)]
+
+ return rf
+
+ def process_mmap(self):
+ self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
+
+ def sync_in(self):
+ self._mmap = do_download(self)
+ self.process_mmap()
+
+ def sync_out(self):
+ do_upload(self)
+
+ def get_raw_memory(self, number):
+ return repr(self._memobj.memory[number - 1])
+
+ def _get_tone(self, _mem, mem):
+ def _get_dcs(val):
+ code = int("%03o" % (val & 0x07FF))
+ pol = (val & 0x8000) and "R" or "N"
+ return code, pol
+
+ if _mem.tx_tone != 0xFFFF and _mem.tx_tone > 0x2800:
+ tcode, tpol = _get_dcs(_mem.tx_tone)
+ mem.dtcs = tcode
+ txmode = "DTCS"
+ elif _mem.tx_tone != 0xFFFF:
+ mem.rtone = _mem.tx_tone / 10.0
+ txmode = "Tone"
+ else:
+ txmode = ""
+
+ if _mem.rx_tone != 0xFFFF and _mem.rx_tone > 0x2800:
+ rcode, rpol = _get_dcs(_mem.rx_tone)
+ mem.rx_dtcs = rcode
+ rxmode = "DTCS"
+ elif _mem.rx_tone != 0xFFFF:
+ mem.ctone = _mem.rx_tone / 10.0
+ rxmode = "Tone"
+ else:
+ rxmode = ""
+
+ if txmode == "Tone" and not rxmode:
+ mem.tmode = "Tone"
+ elif txmode == rxmode and txmode == "Tone" and mem.rtone == mem.ctone:
+ mem.tmode = "TSQL"
+ elif txmode == rxmode and txmode == "DTCS" and mem.dtcs == mem.rx_dtcs:
+ mem.tmode = "DTCS"
+ elif rxmode or txmode:
+ mem.tmode = "Cross"
+ mem.cross_mode = "%s->%s" % (txmode, rxmode)
+
+ if mem.tmode == "DTCS":
+ mem.dtcs_polarity = "%s%s" % (tpol, rpol)
+
+ LOG.debug("Got TX %s (%i) RX %s (%i)" %
+ (txmode, _mem.tx_tone, rxmode, _mem.rx_tone))
+
+ def get_memory(self, number):
+ bitpos = (1 << ((number - 1) % 8))
+ bytepos = ((number - 1) / 8)
+ LOG.debug("bitpos %s" % bitpos)
+ LOG.debug("bytepos %s" % bytepos)
+
+ _mem = self._memobj.memory[number - 1]
+ _skp = self._memobj.skipflags[bytepos]
+
+ mem = chirp_common.Memory()
+
+ mem.number = number
+ mem.freq = int(_mem.rxfreq) * 10
+
+ # We'll consider any blank (i.e. 0MHz frequency) to be empty
+ if mem.freq == 0:
+ mem.empty = True
+ return mem
+
+ if _mem.rxfreq.get_raw() == "\xFF\xFF\xFF\xFF":
+ mem.freq = 0
+ mem.empty = True
+ return mem
+
+ if int(_mem.rxfreq) == int(_mem.txfreq):
+ mem.duplex = ""
+ mem.offset = 0
+ else:
+ mem.duplex = int(_mem.rxfreq) > int(_mem.txfreq) and "-" or "+"
+ mem.offset = abs(int(_mem.rxfreq) - int(_mem.txfreq)) * 10
+
+ mem.mode = _mem.wide and "FM" or "NFM"
+
+ self._get_tone(_mem, mem)
+
+ mem.power = RT22_POWER_LEVELS[_mem.highpower]
+
+ mem.skip = "" if (_skp & bitpos) else "S"
+ LOG.debug("mem.skip %s" % mem.skip)
+
+ return mem
+
+ def _set_tone(self, mem, _mem):
+ def _set_dcs(code, pol):
+ val = int("%i" % code, 8) + 0x2800
+ if pol == "R":
+ val += 0x8000
+ return val
+
+ if mem.tmode == "Cross":
+ tx_mode, rx_mode = mem.cross_mode.split("->")
+ elif mem.tmode == "Tone":
+ tx_mode = mem.tmode
+ rx_mode = None
+ else:
+ tx_mode = rx_mode = mem.tmode
+
+ if tx_mode == "DTCS":
+ _mem.tx_tone = mem.tmode != "DTCS" and \
+ _set_dcs(mem.dtcs, mem.dtcs_polarity[0]) or \
+ _set_dcs(mem.rx_dtcs, mem.dtcs_polarity[0])
+ elif tx_mode:
+ _mem.tx_tone = tx_mode == "Tone" and \
+ int(mem.rtone * 10) or int(mem.ctone * 10)
+ else:
+ _mem.tx_tone = 0xFFFF
+
+ if rx_mode == "DTCS":
+ _mem.rx_tone = _set_dcs(mem.rx_dtcs, mem.dtcs_polarity[1])
+ elif rx_mode:
+ _mem.rx_tone = int(mem.ctone * 10)
+ else:
+ _mem.rx_tone = 0xFFFF
+
+ LOG.debug("Set TX %s (%i) RX %s (%i)" %
+ (tx_mode, _mem.tx_tone, rx_mode, _mem.rx_tone))
+
+ def set_memory(self, mem):
+ bitpos = (1 << ((mem.number - 1) % 8))
+ bytepos = ((mem.number - 1) / 8)
+ LOG.debug("bitpos %s" % bitpos)
+ LOG.debug("bytepos %s" % bytepos)
+
+ _mem = self._memobj.memory[mem.number - 1]
+ _skp = self._memobj.skipflags[bytepos]
+
+ if mem.empty:
+ _mem.set_raw("\xFF" * (_mem.size() / 8))
+ return
+
+ _mem.rxfreq = mem.freq / 10
+
+ if mem.duplex == "off":
+ for i in range(0, 4):
+ _mem.txfreq[i].set_raw("\xFF")
+ elif mem.duplex == "split":
+ _mem.txfreq = mem.offset / 10
+ elif mem.duplex == "+":
+ _mem.txfreq = (mem.freq + mem.offset) / 10
+ elif mem.duplex == "-":
+ _mem.txfreq = (mem.freq - mem.offset) / 10
+ else:
+ _mem.txfreq = mem.freq / 10
+
+ _mem.wide = mem.mode == "FM"
+
+ self._set_tone(mem, _mem)
+
+ _mem.highpower = mem.power == RT22_POWER_LEVELS[1]
+
+ if mem.skip != "S":
+ _skp |= bitpos
+ else:
+ _skp &= ~bitpos
+ LOG.debug("_skp %s" % _skp)
+
+ def get_settings(self):
+ _settings = self._memobj.settings
+ _message = self._memobj.embedded_msg
+ basic = RadioSettingGroup("basic", "Basic Settings")
+ top = RadioSettings(basic)
+
+ rs = RadioSetting("squelch", "Squelch Level",
+ RadioSettingValueInteger(0, 9, _settings.squelch))
+ basic.append(rs)
+
+ rs = RadioSetting("tot", "Time-out timer",
+ RadioSettingValueList(
+ TIMEOUTTIMER_LIST,
+ TIMEOUTTIMER_LIST[_settings.tot]))
+ basic.append(rs)
+
+ rs = RadioSetting("voice", "Voice Prompts",
+ RadioSettingValueList(
+ VOICE_LIST, VOICE_LIST[_settings.voice]))
+ basic.append(rs)
+
+ rs = RadioSetting("pf2key", "PF2 Key",
+ RadioSettingValueList(
+ PF2KEY_LIST, PF2KEY_LIST[_settings.pf2key]))
+ basic.append(rs)
+
+ rs = RadioSetting("vox", "Vox",
+ RadioSettingValueBoolean(_settings.vox))
+ basic.append(rs)
+
+ rs = RadioSetting("voxgain", "VOX Level",
+ RadioSettingValueList(
+ VOX_LIST, VOX_LIST[_settings.voxgain]))
+ basic.append(rs)
+
+ rs = RadioSetting("voxdelay", "VOX Delay Time",
+ RadioSettingValueList(
+ VOXDELAY_LIST,
+ VOXDELAY_LIST[_settings.voxdelay]))
+ basic.append(rs)
+
+ rs = RadioSetting("save", "Battery Save",
+ RadioSettingValueBoolean(_settings.save))
+ basic.append(rs)
+
+ rs = RadioSetting("beep", "Beep",
+ RadioSettingValueBoolean(_settings.beep))
+ basic.append(rs)
+
+ def _filter(name):
+ filtered = ""
+ for char in str(name):
+ if char in VALID_CHARS:
+ filtered += char
+ else:
+ filtered += " "
+ return filtered
+
+ rs = RadioSetting("embedded_msg.line1", "Embedded Message 1",
+ RadioSettingValueString(0, 32, _filter(
+ _message.line1)))
+ basic.append(rs)
+
+ rs = RadioSetting("embedded_msg.line2", "Embedded Message 2",
+ RadioSettingValueString(0, 32, _filter(
+ _message.line2)))
+ basic.append(rs)
+
+ return top
+
+ def set_settings(self, settings):
+ for element in settings:
+ if not isinstance(element, RadioSetting):
+ self.set_settings(element)
+ continue
+ else:
+ try:
+ if "." in element.get_name():
+ bits = element.get_name().split(".")
+ obj = self._memobj
+ for bit in bits[:-1]:
+ obj = getattr(obj, bit)
+ setting = bits[-1]
+ else:
+ obj = self._memobj.settings
+ setting = element.get_name()
+
+ 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) in [0x0408, ]:
+ match_size = True
+
+ # testing the model fingerprint
+ match_model = model_match(cls, filedata)
+
+ if match_size and match_model:
+ return True
+ else:
+ return False
+
+(a)directory.register
+class KDC1(RT22Radio):
+ """WLN KD-C1"""
+ VENDOR = "WLN"
+ MODEL = "KD-C1"
+
+(a)directory.register
+class ZTX6(RT22Radio):
+ """Zastone ZT-X6"""
+ VENDOR = "Zastone"
+ MODEL = "ZT-X6"
1
0