<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"># HG changeset patch<o:p></o:p></p>
<p class="MsoNormal"># User Brad Schuler <<a href="mailto:brad@schuler.ws">brad@schuler.ws</a>><o:p></o:p></p>
<p class="MsoNormal"># Date 1605593121 25200<o:p></o:p></p>
<p class="MsoNormal"># Mon Nov 16 23:05:21 2020 -0700<o:p></o:p></p>
<p class="MsoNormal"># Node ID 2df5ebf6cb44272135be7174f0df8c4325667889<o:p></o:p></p>
<p class="MsoNormal"># Parent ea826afbd7489de236b7d1895f4552a32d78fb04<o:p></o:p></p>
<p class="MsoNormal">[anytone_iii] Modifications necessary to pass standard CHIRP automated testing<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Related to issue #3941<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">diff -r ea826afbd748 -r 2df5ebf6cb44 chirp/drivers/anytone_iii.py<o:p></o:p></p>
<p class="MsoNormal">--- a/chirp/drivers/anytone_iii.py Thu Nov 12 00:09:58 2020 -0700<o:p></o:p></p>
<p class="MsoNormal">+++ b/chirp/drivers/anytone_iii.py Mon Nov 16 23:05:21 2020 -0700<o:p></o:p></p>
<p class="MsoNormal">@@ -39,7 +39,7 @@<o:p></o:p></p>
<p class="MsoNormal"> def __init__(self, radio, name='Banks'):<o:p></o:p></p>
<p class="MsoNormal"> super(ATBankModel, self).__init__(radio, name)<o:p></o:p></p>
<p class="MsoNormal"> self._banks = []<o:p></o:p></p>
<p class="MsoNormal">- self._memBounds = (0, 760)<o:p></o:p></p>
<p class="MsoNormal">+ self._memBounds = range(0, 750)<o:p></o:p></p>
<p class="MsoNormal"> for i in range(0, 10):<o:p></o:p></p>
<p class="MsoNormal"> self._banks.append(chirp_common.Bank(self, i, string.uppercase[i]))<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">@@ -53,6 +53,13 @@<o:p></o:p></p>
<p class="MsoNormal"> self._radio.set_bank(memory.number, bank.get_index())<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"> def remove_memory_from_mapping(self, memory, mapping):<o:p></o:p></p>
<p class="MsoNormal">+ # I would argue that removing a memory from a mapping in which it does not exist should not throw an error.<o:p></o:p></p>
<p class="MsoNormal">+ # The end result is the requested result. The memory is not in the mapping.<o:p></o:p></p>
<p class="MsoNormal">+ # However, to pass the CHIRP TestCaseBanks, I must throw an error. This causes more code to execute than necessary.<o:p></o:p></p>
<p class="MsoNormal">+ # I could just call _radio.clr_bank, but now I must get_bank and compare.<o:p></o:p></p>
<p class="MsoNormal">+ index = self._radio.get_bank(memory.number)<o:p></o:p></p>
<p class="MsoNormal">+ if (index is None or index != mapping.get_index()):<o:p></o:p></p>
<p class="MsoNormal">+ raise Exception("Memory %d is not in bank %s" % (memory.number, bank.get_name()))<o:p></o:p></p>
<p class="MsoNormal"> self._radio.clr_bank(memory.number)<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"> def get_mapping_memories(self, bank):<o:p></o:p></p>
<p class="MsoNormal">@@ -765,6 +772,7 @@<o:p></o:p></p>
<p class="MsoNormal"> rf.has_settings = True<o:p></o:p></p>
<p class="MsoNormal"> rf.valid_modes = MODES + ['AM']<o:p></o:p></p>
<p class="MsoNormal"> rf.valid_tmodes = ['', 'Tone', 'TSQL', 'DTCS', 'Cross']<o:p></o:p></p>
<p class="MsoNormal">+ rf.valid_cross_modes = ["Tone->Tone", "DTCS->", "->DTCS", "Tone->DTCS", "DTCS->Tone", "->Tone", "DTCS->DTCS"]<o:p></o:p></p>
<p class="MsoNormal"> rf.valid_duplexes = DUPLEXES<o:p></o:p></p>
<p class="MsoNormal"> rf.valid_tuning_steps = TUNING_STEPS<o:p></o:p></p>
<p class="MsoNormal"> rf.valid_bands = BANDS<o:p></o:p></p>
<p class="MsoNormal">@@ -1239,6 +1247,8 @@<o:p></o:p></p>
<p class="MsoNormal"> dtmfId = element.value<o:p></o:p></p>
<p class="MsoNormal"> elif name == "5ToneId":<o:p></o:p></p>
<p class="MsoNormal"> fiveToneId = element.value<o:p></o:p></p>
<p class="MsoNormal">+ elif isinstance(element.value, _RadioSettingValueOffsetInt):<o:p></o:p></p>
<p class="MsoNormal">+ setattr(_emergency, name, int(element.value) + element.value.offset)<o:p></o:p></p>
<p class="MsoNormal"> else:<o:p></o:p></p>
<p class="MsoNormal"> setattr(_emergency, name, element.value)<o:p></o:p></p>
<p class="MsoNormal"> if EMER_ENI_TYPES[_emergency.eniType] == 'DTMF':<o:p></o:p></p>
</div>
</body>
</html>