Developers
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2017
- 17 participants
- 28 discussions
04 Jun '17
# HG changeset patch
# User Angus Ainslie <angus(a)akkea.ca>
# Date 1496602648 21600
# Sun Jun 04 12:57:28 2017 -0600
# Node ID bce7268580f053fc2d447bcdb512b0ca1f517749
# Parent d2f85ac7d1b2734606faad26c49cb1671708897c
[FT1D] Fix test for backtrack code - issue #4877
diff -r d2f85ac7d1b2 -r bce7268580f0 chirp/drivers/ft1d.py
--- a/chirp/drivers/ft1d.py Sat Jun 03 17:06:28 2017 -0600
+++ b/chirp/drivers/ft1d.py Sun Jun 04 12:57:28 2017 -0600
@@ -20,9 +20,10 @@
from chirp.drivers import yaesu_clone
from chirp import chirp_common, directory, bitwise
-from chirp.settings import RadioSettingGroup, RadioSetting, RadioSettings
-from chirp.settings import RadioSettingValueInteger, RadioSettingValueString
-from chirp.settings import RadioSettingValueList, RadioSettingValueBoolean
+from chirp.settings import RadioSettingGroup, RadioSetting, RadioSettings, \
+ RadioSettingValueInteger, RadioSettingValueString, \
+ RadioSettingValueList, RadioSettingValueBoolean, \
+ InvalidValueError
from textwrap import dedent
LOG = logging.getLogger(__name__)
@@ -620,6 +621,9 @@
_DTMF_SPEED = ("50ms", "100ms")
_DTMF_DELAY = ("50ms", "250ms", "450ms", "750ms", "1000ms")
_MY_SYMBOL = ("/[ Person", "/b Bike", "/> Car", "User selected")
+ _BACKTRACK_STATUS = ("Valid", "Invalid")
+ _NS_HEMI = ("N", "S")
+ _WE_HEMI = ("W", "E")
@classmethod
def get_prompts(cls):
@@ -1480,6 +1484,21 @@
return menu
+ def backtrack_ll_validate(self, number, min, max):
+ if str(number).lstrip('0').strip().isdigit() and \
+ int(str(number).lstrip('0')) <= max and \
+ int(str(number).lstrip('0')) >= min:
+ return True
+
+ return False
+
+ def backtrack_zero_pad(self, number, l):
+ number = str(number).strip()
+ while len(number) < l:
+ number = '0' + number
+
+ return str(number)
+
def _get_backtrack_settings(self):
menu = RadioSettingGroup("backtrack", "Backtrack")
@@ -1497,13 +1516,16 @@
bt = self._memobj.backtrack[i]
- val = RadioSettingValueInteger(0, 16, bt.status)
+ val = RadioSettingValueList(
+ self._BACKTRACK_STATUS,
+ self._BACKTRACK_STATUS[0 if bt.status == 1 else 1])
rs = RadioSetting(
"%s.status" % bt_idx,
prefix + "status", val)
+ rs.set_apply_callback(self.apply_backtrack_status, bt)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and int(bt.year) < 100:
val = RadioSettingValueInteger(0, 99, bt.year)
else:
val = RadioSettingValueInteger(0, 99, 0)
@@ -1512,7 +1534,7 @@
prefix + "year", val)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and int(bt.mon) <= 12:
val = RadioSettingValueInteger(0, 12, bt.mon)
else:
val = RadioSettingValueInteger(0, 12, 0)
@@ -1548,7 +1570,8 @@
prefix + "min", val)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and \
+ (str(bt.NShemi) == 'N' or str(bt.NShemi) == 'S'):
val = RadioSettingValueString(0, 1, str(bt.NShemi))
else:
val = RadioSettingValueString(0, 1, ' ')
@@ -1558,34 +1581,41 @@
rs.set_apply_callback(self.apply_NShemi, bt)
menu.append(rs)
- if bt.status == 1:
- val = RadioSettingValueString(0, 3, str(bt.lat))
+ if bt.status == 1 and self.backtrack_ll_validate(bt.lat, 0, 90):
+ val = RadioSettingValueString(
+ 0, 3, self.backtrack_zero_pad(bt.lat, 3))
else:
val = RadioSettingValueString(0, 3, ' ')
rs = RadioSetting("%s.lat" % bt_idx, prefix + "Latitude", val)
+ rs.set_apply_callback(self.apply_bt_lat, bt)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and \
+ self.backtrack_ll_validate(bt.lat_min, 0, 59):
val = RadioSettingValueString(
- 0, 2, str(bt.lat_min))
+ 0, 2, self.backtrack_zero_pad(bt.lat_min, 2))
else:
val = RadioSettingValueString(0, 2, ' ')
rs = RadioSetting(
"%s.lat_min" % bt_idx,
prefix + "Latitude Minutes", val)
+ rs.set_apply_callback(self.apply_bt_lat_min, bt)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and \
+ self.backtrack_ll_validate(bt.lat_dec_sec, 0, 9999):
val = RadioSettingValueString(
- 0, 4, str(bt.lat_dec_sec))
+ 0, 4, self.backtrack_zero_pad(bt.lat_dec_sec, 4))
else:
val = RadioSettingValueString(0, 4, ' ')
rs = RadioSetting(
"%s.lat_dec_sec" % bt_idx,
prefix + "Latitude Decimal Seconds", val)
+ rs.set_apply_callback(self.apply_bt_lat_dec_sec, bt)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and \
+ (str(bt.WEhemi) == 'W' or str(bt.WEhemi) == 'E'):
val = RadioSettingValueString(
0, 1, str(bt.WEhemi))
else:
@@ -1596,32 +1626,37 @@
rs.set_apply_callback(self.apply_WEhemi, bt)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and self.backtrack_ll_validate(bt.lon, 0, 180):
val = RadioSettingValueString(
- 0, 3, str(bt.lon))
+ 0, 3, self.backtrack_zero_pad(bt.lon, 3))
else:
val = RadioSettingValueString(0, 3, ' ')
rs = RadioSetting("%s.lon" % bt_idx, prefix + "Longitude", val)
+ rs.set_apply_callback(self.apply_bt_lon, bt)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and \
+ self.backtrack_ll_validate(bt.lon_min, 0, 59):
val = RadioSettingValueString(
- 0, 2, str(bt.lon_min))
+ 0, 2, self.backtrack_zero_pad(bt.lon_min, 2))
else:
val = RadioSettingValueString(0, 2, ' ')
rs = RadioSetting(
"%s.lon_min" % bt_idx,
prefix + "Longitude Minutes", val)
+ rs.set_apply_callback(self.apply_bt_lon_min, bt)
menu.append(rs)
- if bt.status == 1:
+ if bt.status == 1 and \
+ self.backtrack_ll_validate(bt.lon_dec_sec, 0, 9999):
val = RadioSettingValueString(
- 0, 4, str(bt.lon_dec_sec))
+ 0, 4, self.backtrack_zero_pad(bt.lon_dec_sec, 4))
else:
val = RadioSettingValueString(0, 4, ' ')
rs = RadioSetting(
"%s.lon_dec_sec" % bt_idx,
prefix + "Longitude Decimal Seconds", val)
+ rs.set_apply_callback(self.apply_bt_lon_dec_sec, bt)
menu.append(rs)
return menu
@@ -1863,6 +1898,15 @@
val.append(0xFF)
cls._memobj.dtmf[i].memory = val
+ def apply_backtrack_status(cls, setting, obj):
+ status = setting.value.get_value()
+
+ if status == 'Valid':
+ val = 1
+ else:
+ val = 8
+ setattr(obj, "status", val)
+
def apply_NShemi(cls, setting, obj):
hemi = setting.value.get_value().upper()
@@ -1876,3 +1920,46 @@
if hemi != 'W' and hemi != 'E':
hemi = ' '
setattr(obj, "WEhemi", hemi)
+
+ def apply_WEhemi(cls, setting, obj):
+ hemi = setting.value.get_value().upper()
+
+ if hemi != 'W' and hemi != 'E':
+ hemi = ' '
+ setattr(obj, "WEhemi", hemi)
+
+ def apply_bt_lat(cls, setting, obj):
+ val = setting.value.get_value()
+ val = cls.backtrack_zero_pad(val, 3)
+
+ setattr(obj, "lat", val)
+
+ def apply_bt_lat_min(cls, setting, obj):
+ val = setting.value.get_value()
+ val = cls.backtrack_zero_pad(val, 2)
+
+ setattr(obj, "lat_min", val)
+
+ def apply_bt_lat_dec_sec(cls, setting, obj):
+ val = setting.value.get_value()
+ val = cls.backtrack_zero_pad(val, 4)
+
+ setattr(obj, "lat_dec_sec", val)
+
+ def apply_bt_lon(cls, setting, obj):
+ val = setting.value.get_value()
+ val = cls.backtrack_zero_pad(val, 3)
+
+ setattr(obj, "lon", val)
+
+ def apply_bt_lon_min(cls, setting, obj):
+ val = setting.value.get_value()
+ val = cls.backtrack_zero_pad(val, 2)
+
+ setattr(obj, "lon_min", val)
+
+ def apply_bt_lon_dec_sec(cls, setting, obj):
+ val = setting.value.get_value()
+ val = cls.backtrack_zero_pad(val, 4)
+
+ setattr(obj, "lon_dec_sec", val)
1
0
[chirp_devel] [PATCH] [FT1D] Add support for setting backtrack targets - issue #4877
by Angus Ainslie 04 Jun '17
by Angus Ainslie 04 Jun '17
04 Jun '17
# HG changeset patch
# User Angus Ainslie <angus(a)akkea.ca>
# Date 1496430289 21600
# Fri Jun 02 13:04:49 2017 -0600
# Node ID 678d3f1e4944193d17f9bd6392be2e4270fc7655
# Parent d4222df0000cdde3311e54df02edf80858720316
[FT1D] Add support for setting backtrack targets - issue #4877
diff -r d4222df0000c -r 678d3f1e4944 chirp/drivers/ft1d.py
--- a/chirp/drivers/ft1d.py Fri Jun 02 06:21:43 2017 +0900
+++ b/chirp/drivers/ft1d.py Fri Jun 02 13:04:49 2017 -0600
@@ -342,6 +342,30 @@
} aprs_message_pkt[60];
"""
+MEM_BACKTRACK_FORMAT = """
+#seekto 0xdf06;
+struct {
+ u8 status; // 01 full 08 empty
+ u8 reserved0; // 00
+ bbcd year; // 17
+ bbcd mon; // 06
+ bbcd day; // 01
+ u8 reserved1; // 06
+ bbcd hour; // 21
+ bbcd min; // xx
+ u8 reserved2; // 00
+ u8 reserved3; // 00
+ char NShemi[1];
+ char lat[3];
+ char lat_min[2];
+ char lat_dec_sec[4];
+ char WEhemi[1];
+ char lon[3];
+ char lon_min[2];
+ char lon_dec_sec[4];
+} backtrack[3];
+
+"""
MEM_CHECKSUM_FORMAT = """
#seekto 0x1FDC9;
u8 checksum;
@@ -368,7 +392,6 @@
chirp_common.PowerLevel("L2", watts=1.00),
chirp_common.PowerLevel("L1", watts=0.05)]
-
class FT1Bank(chirp_common.NamedBank):
"""A FT1D bank"""
@@ -617,7 +640,7 @@
def process_mmap(self):
mem_format = MEM_SETTINGS_FORMAT + MEM_FORMAT + MEM_APRS_FORMAT + \
- MEM_CHECKSUM_FORMAT
+ MEM_BACKTRACK_FORMAT + MEM_CHECKSUM_FORMAT
self._memobj = bitwise.parse(mem_format % self._mem_params, self._mmap)
def get_features(self):
@@ -1456,6 +1479,140 @@
return menu
+ def _get_backtrack_settings(self):
+
+ menu = RadioSettingGroup( "backtrack", "Backtrack")
+
+ for i in range(3):
+ prefix = ''
+ if i == 0 :
+ prefix = "Star "
+ if i == 1 :
+ prefix = "L1 "
+ if i == 2 :
+ prefix = "L2 "
+
+ bt_idx = "backtrack[%d]" % i
+
+ bt = self._memobj.backtrack[i]
+
+ val = RadioSettingValueInteger(0, 16, bt.status)
+ rs = RadioSetting("%s.status" % bt_idx,
+ prefix + "status", val)
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueInteger(0, 99, bt.year)
+ else :
+ val = RadioSettingValueInteger(0, 99, 0)
+ rs = RadioSetting("%s.year" % bt_idx,
+ prefix + "year", val)
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueInteger(0, 12, bt.mon)
+ else :
+ val = RadioSettingValueInteger(0, 12, 0)
+ rs = RadioSetting("%s.mon" % bt_idx,
+ prefix + "month", val)
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueInteger(0, 31, bt.day)
+ else :
+ val = RadioSettingValueInteger(0, 31, 0)
+ rs = RadioSetting("%s.day" % bt_idx,
+ prefix + "day", val)
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueInteger(0, 23, bt.hour)
+ else :
+ val = RadioSettingValueInteger(0, 23, 0)
+ rs = RadioSetting("%s.hour" % bt_idx,
+ prefix + "hour", val)
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueInteger(0, 59, bt.min)
+ else :
+ val = RadioSettingValueInteger(0, 59, 0)
+ rs = RadioSetting("%s.min" % bt_idx,
+ prefix + "min", val)
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString( 0, 1, str(bt.NShemi))
+ else :
+ val = RadioSettingValueString( 0, 1, ' ')
+ rs = RadioSetting("%s.NShemi" % bt_idx, prefix + "NS hemisphere", val)
+ rs.set_apply_callback(self.apply_NShemi, bt )
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString( 0, 3, str(bt.lat))
+ else :
+ val = RadioSettingValueString( 0, 3, ' ')
+ rs = RadioSetting("%s.lat" % bt_idx, prefix + "Latitude", val)
+ #rs.set_apply_callback(self.apply_NShemi, bt )
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString(
+ 0, 2, str(bt.lat_min))
+ else :
+ val = RadioSettingValueString( 0, 2, ' ')
+ rs = RadioSetting("%s.lat_min" % bt_idx, prefix + "Latitude Minutes", val)
+ #rs.set_apply_callback(self.apply_NShemi, bt )
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString(
+ 0, 4, str(bt.lat_dec_sec))
+ else :
+ val = RadioSettingValueString( 0, 4, ' ')
+ rs = RadioSetting("%s.lat_dec_sec" % bt_idx, prefix + "Latitude Decimal Seconds", val)
+ #rs.set_apply_callback(self.apply_NShemi, bt )
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString(
+ 0, 1, str(bt.WEhemi))
+ else :
+ val = RadioSettingValueString( 0, 1, ' ')
+ rs = RadioSetting("%s.WEhemi" % bt_idx, prefix + "WE hemisphere", val)
+ rs.set_apply_callback(self.apply_WEhemi, bt )
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString(
+ 0, 3, str(bt.lon))
+ else :
+ val = RadioSettingValueString( 0, 3, ' ')
+ rs = RadioSetting("%s.lon" % bt_idx, prefix + "Longitude", val)
+ #rs.set_apply_callback(self.apply_NShemi, bt )
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString(
+ 0, 2, str(bt.lon_min))
+ else :
+ val = RadioSettingValueString( 0, 2, ' ')
+ rs = RadioSetting("%s.lon_min" % bt_idx, prefix + "Longitude Minutes", val)
+ #rs.set_apply_callback(self.apply_NShemi, bt )
+ menu.append(rs)
+
+ if bt.status == 1 :
+ val = RadioSettingValueString(
+ 0, 4, str(bt.lon_dec_sec))
+ else :
+ val = RadioSettingValueString( 0, 4, ' ')
+ rs = RadioSetting("%s.lon_dec_sec" % bt_idx, prefix + "Longitude Decimal Seconds", val)
+ #rs.set_apply_callback(self.apply_NShemi, bt )
+ menu.append(rs)
+
+ return menu
+
def _get_scan_settings(self):
menu = RadioSettingGroup("scan_settings", "Scan")
scan_settings = self._memobj.scan_settings
@@ -1536,7 +1693,8 @@
self._get_aprs_beacons(),
self._get_dtmf_settings(),
self._get_misc_settings(),
- self._get_scan_settings())
+ self._get_scan_settings(),
+ self._get_backtrack_settings())
return top
def get_settings(self):
@@ -1691,3 +1849,17 @@
for x in range(len(val), 16):
val.append(0xFF)
cls._memobj.dtmf[i].memory = val
+
+ def apply_NShemi(cls, setting, obj ):
+ hemi = setting.value.get_value().upper()
+
+ if hemi != 'N' and hemi != 'S' :
+ hemi = ' '
+ setattr(obj, "NShemi", hemi )
+
+ def apply_WEhemi(cls, setting, obj ):
+ hemi = setting.value.get_value().upper()
+
+ if hemi != 'W' and hemi != 'E' :
+ hemi = ' '
+ setattr(obj, "WEhemi", hemi )
3
7
(Questions marked with ***)
I’ve had absolutely no luck communicating with FT2D via the USB, not even while running Windoze on my Macintosh. The 0x26aa/0001 VID/PID are not registered with USB.org. I conclude that that Yaesu are either encrypting the communications, or that the “special drivers” needed for the FT2D are jiggered to match the VID/PID. I tried doing that jiggering by hand to drivers and failed to get any serial access. I cannot find a Prolific-supplied chip that might support the microphone/speaker/camera as well as firmware update and memory access . That functionality would presumably need a Quad UART (or I2S and UART) to be multiplexed onto the USB.
*** Has anybody looked inside an FT2D to identify the chip that is being used to connect to USB? FTDI and SiLabs market chips that would fill the bill.
*** I don’t think the “clone” function is required to read or write, since the ADMS-8 software doesn’t mention it. Anybody successfully connected to FT2D without “clone”?
Since serial communications won’t work (yet?) I’ve proven that I can get the microSD card to carry information betwixt FT2D and my computer. And I can use the Yaesu-supplied ADMS-8 software to “program” the file on the card. So I don’t need memory dumps from the radio directly, at least while doing mapping. But it’s been suggested that chirp could use an import/export capability, using data in the actual radio format, rather than a chirp-interpreted memory.
*** Has anybody already looked at or roughed in a radio-format Import/export capability for chirp?
One other USB “weirdness” is that plugging in any active USB disconnects both the builtin speaker/mike and any plugin speaker/mike. The FT2D doesn’t even check to see if there’s a microphone/speaker connected to the USB port before disabling the others.
I have started trying to reverse engineer the FT2D BACKUP.DAT file, which I presume is a memory dump. At the moment I'm concentrating on just the repeater-memory fields, rather than the APRS or other general settings. From reading the FT1D source code, I’m not confident that there’s really all that much similarity to the FT2D, except perhaps for Yaesu’s penchant for 0xFF-filling text fields.
*** Is Another Yaesu product using a similar memory definition (perhaps the 400?)
It’s disconcerting that a full-reset FT2D (power-on-BACK-DISP-BAND) seems to keep all of its memories intact except for the memory map and maybe the first memory slot. At least that’s the case as evidenced by a reformatted microSD card being written from a reset FT2D: It contained almost all of my hand-inserted memory locations AND APRS data, although ADMS-8 honors that memory map and only displays the first memory slot. It’s fortunate for Yaesu that nobody keeps truly private information on the FT2D; reading a backup microSD card provides almost all the information even after a “full reset”!
1
0
[chirp_devel] [PATCH] [FT1D] fix the PEP8 warnings in the backtrack settings - issue #4877
by Angus Ainslie 03 Jun '17
by Angus Ainslie 03 Jun '17
03 Jun '17
# HG changeset patch
# User Angus Ainslie <angus(a)akkea.ca>
# Date 1496531188 21600
# Sat Jun 03 17:06:28 2017 -0600
# Node ID d2f85ac7d1b2734606faad26c49cb1671708897c
# Parent 678d3f1e4944193d17f9bd6392be2e4270fc7655
[FT1D] fix the PEP8 warnings in the backtrack settings - issue #4877
diff -r 678d3f1e4944 -r d2f85ac7d1b2 chirp/drivers/ft1d.py
--- a/chirp/drivers/ft1d.py Fri Jun 02 13:04:49 2017 -0600
+++ b/chirp/drivers/ft1d.py Sat Jun 03 17:06:28 2017 -0600
@@ -392,6 +392,7 @@
chirp_common.PowerLevel("L2", watts=1.00),
chirp_common.PowerLevel("L1", watts=0.05)]
+
class FT1Bank(chirp_common.NamedBank):
"""A FT1D bank"""
@@ -1481,136 +1482,148 @@
def _get_backtrack_settings(self):
- menu = RadioSettingGroup( "backtrack", "Backtrack")
+ menu = RadioSettingGroup("backtrack", "Backtrack")
for i in range(3):
prefix = ''
- if i == 0 :
+ if i == 0:
prefix = "Star "
- if i == 1 :
+ if i == 1:
prefix = "L1 "
- if i == 2 :
+ if i == 2:
prefix = "L2 "
bt_idx = "backtrack[%d]" % i
-
+
bt = self._memobj.backtrack[i]
val = RadioSettingValueInteger(0, 16, bt.status)
- rs = RadioSetting("%s.status" % bt_idx,
- prefix + "status", val)
- menu.append(rs)
-
- if bt.status == 1 :
- val = RadioSettingValueInteger(0, 99, bt.year)
- else :
- val = RadioSettingValueInteger(0, 99, 0)
- rs = RadioSetting("%s.year" % bt_idx,
- prefix + "year", val)
- menu.append(rs)
-
- if bt.status == 1 :
- val = RadioSettingValueInteger(0, 12, bt.mon)
- else :
- val = RadioSettingValueInteger(0, 12, 0)
- rs = RadioSetting("%s.mon" % bt_idx,
- prefix + "month", val)
- menu.append(rs)
-
- if bt.status == 1 :
- val = RadioSettingValueInteger(0, 31, bt.day)
- else :
- val = RadioSettingValueInteger(0, 31, 0)
- rs = RadioSetting("%s.day" % bt_idx,
- prefix + "day", val)
+ rs = RadioSetting(
+ "%s.status" % bt_idx,
+ prefix + "status", val)
menu.append(rs)
- if bt.status == 1 :
- val = RadioSettingValueInteger(0, 23, bt.hour)
- else :
- val = RadioSettingValueInteger(0, 23, 0)
- rs = RadioSetting("%s.hour" % bt_idx,
- prefix + "hour", val)
- menu.append(rs)
-
- if bt.status == 1 :
- val = RadioSettingValueInteger(0, 59, bt.min)
- else :
- val = RadioSettingValueInteger(0, 59, 0)
- rs = RadioSetting("%s.min" % bt_idx,
- prefix + "min", val)
+ if bt.status == 1:
+ val = RadioSettingValueInteger(0, 99, bt.year)
+ else:
+ val = RadioSettingValueInteger(0, 99, 0)
+ rs = RadioSetting(
+ "%s.year" % bt_idx,
+ prefix + "year", val)
menu.append(rs)
- if bt.status == 1 :
- val = RadioSettingValueString( 0, 1, str(bt.NShemi))
- else :
- val = RadioSettingValueString( 0, 1, ' ')
- rs = RadioSetting("%s.NShemi" % bt_idx, prefix + "NS hemisphere", val)
- rs.set_apply_callback(self.apply_NShemi, bt )
+ if bt.status == 1:
+ val = RadioSettingValueInteger(0, 12, bt.mon)
+ else:
+ val = RadioSettingValueInteger(0, 12, 0)
+ rs = RadioSetting(
+ "%s.mon" % bt_idx,
+ prefix + "month", val)
menu.append(rs)
- if bt.status == 1 :
- val = RadioSettingValueString( 0, 3, str(bt.lat))
- else :
- val = RadioSettingValueString( 0, 3, ' ')
+ if bt.status == 1:
+ val = RadioSettingValueInteger(0, 31, bt.day)
+ else:
+ val = RadioSettingValueInteger(0, 31, 0)
+ rs = RadioSetting(
+ "%s.day" % bt_idx,
+ prefix + "day", val)
+ menu.append(rs)
+
+ if bt.status == 1:
+ val = RadioSettingValueInteger(0, 23, bt.hour)
+ else:
+ val = RadioSettingValueInteger(0, 23, 0)
+ rs = RadioSetting(
+ "%s.hour" % bt_idx,
+ prefix + "hour", val)
+ menu.append(rs)
+
+ if bt.status == 1:
+ val = RadioSettingValueInteger(0, 59, bt.min)
+ else:
+ val = RadioSettingValueInteger(0, 59, 0)
+ rs = RadioSetting(
+ "%s.min" % bt_idx,
+ prefix + "min", val)
+ menu.append(rs)
+
+ if bt.status == 1:
+ val = RadioSettingValueString(0, 1, str(bt.NShemi))
+ else:
+ val = RadioSettingValueString(0, 1, ' ')
+ rs = RadioSetting(
+ "%s.NShemi" % bt_idx,
+ prefix + "NS hemisphere", val)
+ rs.set_apply_callback(self.apply_NShemi, bt)
+ menu.append(rs)
+
+ if bt.status == 1:
+ val = RadioSettingValueString(0, 3, str(bt.lat))
+ else:
+ val = RadioSettingValueString(0, 3, ' ')
rs = RadioSetting("%s.lat" % bt_idx, prefix + "Latitude", val)
- #rs.set_apply_callback(self.apply_NShemi, bt )
menu.append(rs)
-
- if bt.status == 1 :
+
+ if bt.status == 1:
val = RadioSettingValueString(
0, 2, str(bt.lat_min))
- else :
- val = RadioSettingValueString( 0, 2, ' ')
- rs = RadioSetting("%s.lat_min" % bt_idx, prefix + "Latitude Minutes", val)
- #rs.set_apply_callback(self.apply_NShemi, bt )
+ else:
+ val = RadioSettingValueString(0, 2, ' ')
+ rs = RadioSetting(
+ "%s.lat_min" % bt_idx,
+ prefix + "Latitude Minutes", val)
menu.append(rs)
-
- if bt.status == 1 :
+
+ if bt.status == 1:
val = RadioSettingValueString(
0, 4, str(bt.lat_dec_sec))
- else :
- val = RadioSettingValueString( 0, 4, ' ')
- rs = RadioSetting("%s.lat_dec_sec" % bt_idx, prefix + "Latitude Decimal Seconds", val)
- #rs.set_apply_callback(self.apply_NShemi, bt )
+ else:
+ val = RadioSettingValueString(0, 4, ' ')
+ rs = RadioSetting(
+ "%s.lat_dec_sec" % bt_idx,
+ prefix + "Latitude Decimal Seconds", val)
menu.append(rs)
-
- if bt.status == 1 :
+
+ if bt.status == 1:
val = RadioSettingValueString(
0, 1, str(bt.WEhemi))
- else :
- val = RadioSettingValueString( 0, 1, ' ')
- rs = RadioSetting("%s.WEhemi" % bt_idx, prefix + "WE hemisphere", val)
- rs.set_apply_callback(self.apply_WEhemi, bt )
+ else:
+ val = RadioSettingValueString(0, 1, ' ')
+ rs = RadioSetting(
+ "%s.WEhemi" % bt_idx,
+ prefix + "WE hemisphere", val)
+ rs.set_apply_callback(self.apply_WEhemi, bt)
menu.append(rs)
- if bt.status == 1 :
+ if bt.status == 1:
val = RadioSettingValueString(
0, 3, str(bt.lon))
- else :
- val = RadioSettingValueString( 0, 3, ' ')
+ else:
+ val = RadioSettingValueString(0, 3, ' ')
rs = RadioSetting("%s.lon" % bt_idx, prefix + "Longitude", val)
- #rs.set_apply_callback(self.apply_NShemi, bt )
menu.append(rs)
-
- if bt.status == 1 :
+
+ if bt.status == 1:
val = RadioSettingValueString(
0, 2, str(bt.lon_min))
- else :
- val = RadioSettingValueString( 0, 2, ' ')
- rs = RadioSetting("%s.lon_min" % bt_idx, prefix + "Longitude Minutes", val)
- #rs.set_apply_callback(self.apply_NShemi, bt )
+ else:
+ val = RadioSettingValueString(0, 2, ' ')
+ rs = RadioSetting(
+ "%s.lon_min" % bt_idx,
+ prefix + "Longitude Minutes", val)
menu.append(rs)
-
- if bt.status == 1 :
+
+ if bt.status == 1:
val = RadioSettingValueString(
0, 4, str(bt.lon_dec_sec))
- else :
- val = RadioSettingValueString( 0, 4, ' ')
- rs = RadioSetting("%s.lon_dec_sec" % bt_idx, prefix + "Longitude Decimal Seconds", val)
- #rs.set_apply_callback(self.apply_NShemi, bt )
+ else:
+ val = RadioSettingValueString(0, 4, ' ')
+ rs = RadioSetting(
+ "%s.lon_dec_sec" % bt_idx,
+ prefix + "Longitude Decimal Seconds", val)
menu.append(rs)
-
+
return menu
def _get_scan_settings(self):
@@ -1850,16 +1863,16 @@
val.append(0xFF)
cls._memobj.dtmf[i].memory = val
- def apply_NShemi(cls, setting, obj ):
+ def apply_NShemi(cls, setting, obj):
hemi = setting.value.get_value().upper()
- if hemi != 'N' and hemi != 'S' :
+ if hemi != 'N' and hemi != 'S':
hemi = ' '
- setattr(obj, "NShemi", hemi )
+ setattr(obj, "NShemi", hemi)
- def apply_WEhemi(cls, setting, obj ):
+ def apply_WEhemi(cls, setting, obj):
hemi = setting.value.get_value().upper()
- if hemi != 'W' and hemi != 'E' :
+ if hemi != 'W' and hemi != 'E':
hemi = ' '
- setattr(obj, "WEhemi", hemi )
+ setattr(obj, "WEhemi", hemi)
1
0
Tested changes:
[SASANO Takayoshi <uaa(a)mx5.nisiq.net>] fix for bug #4863
Delete function cannot work when translating msgid "Loc", this is caused
by "Loc" (instead of _("Loc")). And, non_editable flag in make_editor()
has same problem. Both fixed.
[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 a959b8baac1086145e1a211a6e4572dd3e975104
[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 a959b8baac1086145e1a211a6e4572dd3e975104
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson3429059744630334677.sh
[workspace] $ /bin/sh -xe /tmp/hudson7486231461776841619.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.074s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/platform.py:255:80: E501 line too long (82 > 79 characters)
./chirp/ui/mainapp.py:1909:80: E501 line too long (82 > 79 characters)
./chirp/ui/mainapp.py:1965:80: E501 line too long (82 > 79 characters)
real 0m8.503s
user 0m8.296s
sys 0m0.068s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2017-06-02 08:58:32,226] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.2 LTS (Python 2.7.12)
[2017-06-02 08:58:32,240] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2017-06-02 08:58:32,241] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2017-06-02 08:58:32,242] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2017-06-02 08:58:32,245] chirp.directory - INFO: Registered Alinco_DJ-G7EG = AlincoDJG7EG
[2017-06-02 08:58:32,246] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2017-06-02 08:58:32,246] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2017-06-02 08:58:32,246] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2017-06-02 08:58:32,246] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2017-06-02 08:58:32,246] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2017-06-02 08:58:32,247] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2017-06-02 08:58:32,247] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2017-06-02 08:58:32,248] chirp.directory - INFO: Registered Baofeng_BF-A58 = BFA58
[2017-06-02 08:58:32,248] chirp.directory - INFO: Registered Baofeng_UV-82WP = UV82WP
[2017-06-02 08:58:32,248] chirp.directory - INFO: Registered Baofeng_GT-3WP = GT3WP
[2017-06-02 08:58:32,248] chirp.directory - INFO: Registered Retevis_RT6 = RT6
[2017-06-02 08:58:32,248] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2017-06-02 08:58:32,249] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2017-06-02 08:58:32,249] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2017-06-02 08:58:32,249] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2017-06-02 08:58:32,249] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2017-06-02 08:58:32,249] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2017-06-02 08:58:32,249] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2017-06-02 08:58:32,250] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2017-06-02 08:58:32,250] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered BTECH_UV-25X2 = UV25X2
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered BTECH_UV-25X4 = UV25X4
[2017-06-02 08:58:32,251] chirp.directory - INFO: Registered BTECH_UV-50X2 = UV50X2
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered QYT_KT7900D = KT7900D
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered QYT_KT8900D = KT8900D
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2017-06-02 08:58:32,252] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2017-06-02 08:58:32,253] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2017-06-02 08:58:32,253] chirp.directory - INFO: Registered Feidaxin_FD-460UH = FD460UHRadio
[2017-06-02 08:58:32,253] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2017-06-02 08:58:32,254] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2017-06-02 08:58:32,254] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2017-06-02 08:58:32,254] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2017-06-02 08:58:32,255] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2017-06-02 08:58:32,255] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2017-06-02 08:58:32,256] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2017-06-02 08:58:32,256] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2017-06-02 08:58:32,256] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2017-06-02 08:58:32,256] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2017-06-02 08:58:32,256] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2017-06-02 08:58:32,257] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2017-06-02 08:58:32,257] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2017-06-02 08:58:32,257] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2017-06-02 08:58:32,257] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2017-06-02 08:58:32,257] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2017-06-02 08:58:32,258] chirp.directory - INFO: Registered Yaesu_FTM-3200D_R = FTM3200Radio
[2017-06-02 08:58:32,258] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2017-06-02 08:58:32,259] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2017-06-02 08:58:32,259] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2017-06-02 08:58:32,259] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2017-06-02 08:58:32,259] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2017-06-02 08:58:32,266] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2017-06-02 08:58:32,267] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2017-06-02 08:58:32,270] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2017-06-02 08:58:32,270] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2017-06-02 08:58:32,270] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2017-06-02 08:58:32,270] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2017-06-02 08:58:32,271] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2017-06-02 08:58:32,271] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2017-06-02 08:58:32,271] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2017-06-02 08:58:32,272] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2017-06-02 08:58:32,272] chirp.directory - INFO: Registered Icom_IC-P7 = ICP7Radio
[2017-06-02 08:58:32,272] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2017-06-02 08:58:32,272] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2017-06-02 08:58:32,273] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2017-06-02 08:58:32,273] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2017-06-02 08:58:32,273] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2017-06-02 08:58:32,273] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2017-06-02 08:58:32,274] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2017-06-02 08:58:32,274] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2017-06-02 08:58:32,274] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2017-06-02 08:58:32,274] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2017-06-02 08:58:32,274] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2017-06-02 08:58:32,275] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2017-06-02 08:58:32,275] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2017-06-02 08:58:32,275] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2017-06-02 08:58:32,275] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2017-06-02 08:58:32,276] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2017-06-02 08:58:32,276] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2017-06-02 08:58:32,276] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2017-06-02 08:58:32,278] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2017-06-02 08:58:32,278] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2017-06-02 08:58:32,278] chirp.directory - INFO: Registered Jetstream_JT270MH = JetstreamJT270MHRadio
[2017-06-02 08:58:32,278] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2017-06-02 08:58:32,278] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2017-06-02 08:58:32,279] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2017-06-02 08:58:32,279] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2017-06-02 08:58:32,279] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2017-06-02 08:58:32,279] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2017-06-02 08:58:32,279] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2017-06-02 08:58:32,279] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2017-06-02 08:58:32,280] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2017-06-02 08:58:32,281] chirp.directory - INFO: Registered Retevis_RT1 = RT1Radio
[2017-06-02 08:58:32,281] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2017-06-02 08:58:32,281] chirp.directory - INFO: Registered Retevis_RT22 = RT22Radio
[2017-06-02 08:58:32,281] chirp.directory - INFO: Registered WLN_KD-C1 = KDC1
[2017-06-02 08:58:32,281] chirp.directory - INFO: Registered Zastone_ZT-X6 = ZTX6
[2017-06-02 08:58:32,281] chirp.directory - INFO: Registered LUITON_LT-316 = LT316
[2017-06-02 08:58:32,282] chirp.directory - INFO: Registered TID_TD-M8 = TDM8
[2017-06-02 08:58:32,282] chirp.directory - INFO: Registered Rugged_RH5R-V2 = RH5RV2
[2017-06-02 08:58:32,282] chirp.directory - INFO: Registered TDXone_TD-Q8A = TDXoneTDQ8A
[2017-06-02 08:58:32,283] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2017-06-02 08:58:32,283] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2017-06-02 08:58:32,283] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2017-06-02 08:58:32,284] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2017-06-02 08:58:32,284] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2017-06-02 08:58:32,284] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2017-06-02 08:58:32,284] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2017-06-02 08:58:32,284] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2017-06-02 08:58:32,284] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2017-06-02 08:58:32,285] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2017-06-02 08:58:32,285] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2017-06-02 08:58:32,286] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2017-06-02 08:58:32,287] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2017-06-02 08:58:32,287] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2017-06-02 08:58:32,287] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2017-06-02 08:58:32,287] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2017-06-02 08:58:32,287] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2017-06-02 08:58:32,287] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2017-06-02 08:58:32,287] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2017-06-02 08:58:32,288] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2017-06-02 08:58:32,288] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2017-06-02 08:58:32,288] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2017-06-02 08:58:32,288] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2017-06-02 08:58:32,288] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2017-06-02 08:58:32,288] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2017-06-02 08:58:32,288] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2017-06-02 08:58:32,289] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2017-06-02 08:58:32,290] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2017-06-02 08:58:32,290] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2017-06-02 08:58:32,290] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2017-06-02 08:58:32,290] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2017-06-02 08:58:32,291] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2017-06-02 08:58:32,291] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2017-06-02 08:58:32,292] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2017-06-02 08:58:32,292] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2017-06-02 08:58:32,292] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2017-06-02 08:58:32,293] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2017-06-02 08:58:32,293] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2017-06-02 08:58:32,293] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2017-06-02 08:58:32,293] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2017-06-02 08:58:32,294] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2017-06-02 08:58:32,294] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2017-06-02 08:58:32,294] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2017-06-02 08:58:32,294] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
Email was triggered for: Success
Sending email for trigger: Success
1
0
01 Jun '17
Hello,
I am trying to create ja.po (Japanese tranlation) for CHIRP.
I want to make a translation to "Smart Tone Modes" and "Show Instructions".
It is easy to simply "スマートトーンモード" and "手順を表示" but
they don't describe what is there functions.
What does they works? Can anyone tell me how to check easyly these functions?
--
SASANO Takayoshi (JG1UAA) <uaa(a)mx5.nisiq.net>
1
0
# HG changeset patch
# User SASANO Takayoshi <uaa(a)mx5.nisiq.net>
# Date 1496352103 -32400
# Fri Jun 02 06:21:43 2017 +0900
# Node ID d4222df0000cdde3311e54df02edf80858720316
# Parent a959b8baac1086145e1a211a6e4572dd3e975104
fix for bug #4863
Delete function cannot work when translating msgid "Loc", this is caused
by "Loc" (instead of _("Loc")). And, non_editable flag in make_editor()
has same problem. Both fixed.
diff -r a959b8baac10 -r d4222df0000c chirp/ui/memedit.py
--- a/chirp/ui/memedit.py Thu Jun 01 12:24:58 2017 -0700
+++ b/chirp/ui/memedit.py Fri Jun 02 06:21:43 2017 +0900
@@ -496,7 +496,7 @@
to_remove = []
for path in paths:
iter = self.store.get_iter(path)
- cur_pos, = self.store.get(iter, self.col("Loc"))
+ cur_pos, = self.store.get(iter, self.col(_("Loc")))
to_remove.append(cur_pos)
self.store.set(iter, self.col("_filled"), False)
job = common.RadioJob(None, "erase_memory", cur_pos)
@@ -972,7 +972,7 @@
LOG.error(e)
col_order = default_col_order
- non_editable = ["Loc"]
+ non_editable = [_("Loc")]
unsupported_cols = self.get_unsupported_columns()
visible_cols = self.get_columns_visible()
1
0
Tested changes:
[Wade Simmons <wade(a)wades.im>] [FTM-3200D] Add support for Yaesu FTM-3200D
This patch adds basic CHIRP support for programming the FTM-3200D. This radio
shares most of its memory layout with the FT1D, so it has been created as a
subclass of that radio.
#4279
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 93e58a8a1a2ac3e50b255cca410821f756bac4a9
[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 93e58a8a1a2ac3e50b255cca410821f756bac4a9
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson8629854955772319428.sh
[workspace] $ /bin/sh -xe /tmp/hudson5836126424643457057.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.076s
OK
FAIL: Please keep commit message lines to <80 columns
Checking for PEP8 regressions...
./chirp/platform.py:255:80: E501 line too long (82 > 79 characters)
./chirp/ui/mainapp.py:1909:80: E501 line too long (82 > 79 characters)
./chirp/ui/mainapp.py:1965:80: E501 line too long (82 > 79 characters)
real 0m8.188s
user 0m8.012s
sys 0m0.036s
================================================
Tests FAILED: style tests
Build step 'Execute shell' marked build as failure
Email was triggered for: Failure
Sending email for trigger: Failure
1
1