Project

General

Profile

Bug #6363 » 2to3.patch

Update to Python 3 with PyGObject (most of the way there) - M T, 01/28/2019 07:38 PM

View differences:

chirp/bandplan.py
34 34
                for tone in tones:
35 35
                    assert tone in chirp_common.TONES, (
36 36
                        "tone %s not one of %s" % (tone, chirp_common.TONES))
37
        except AssertionError, e:
37
        except AssertionError as e:
38 38
            raise ValueError("%s %s: %s" % (name, limits, e))
39 39

  
40 40
        self.name = name
chirp/bitwise.py
91 91
            pp(i, level+2)
92 92
        elif isinstance(i, tuple):
93 93
            if isinstance(i[1], str):
94
                print "%s%s: %s" % (" " * level, i[0], i[1])
94
                print("%s%s: %s" % (" " * level, i[0], i[1]))
95 95
            else:
96
                print "%s%s:" % (" " * level, i[0])
96
                print("%s%s:" % (" " * level, i[0]))
97 97
                pp(i, level+2)
98 98
        elif isinstance(i, str):
99
            print "%s%s" % (" " * level, i)
99
            print("%s%s" % (" " * level, i))
100 100

  
101 101

  
102 102
def array_copy(dst, src):
......
120 120

  
121 121
def int_to_bcd(bcd_array, value):
122 122
    """Convert an int like 1234 into bcdDataElements like "\x12\x34" """
123
    for i in reversed(range(0, len(bcd_array))):
123
    for i in range(len(bcd_array) - 1, -1, -1):
124 124
        bcd_array[i].set_value(value % 100)
125 125
        value /= 100
126 126

  
......
233 233
    def __set_value_bbcd(self, value):
234 234
        for i in reversed(self.__items):
235 235
            twodigits = value % 100
236
            value /= 100
236
            value //= 100
237 237
            i.set_value(twodigits)
238 238

  
239 239
    def __set_value_lbcd(self, value):
240 240
        for i in self.__items:
241 241
            twodigits = value % 100
242
            value /= 100
242
            value //= 100
243 243
            i.set_value(twodigits)
244 244

  
245 245
    def __set_value_char(self, value):
......
309 309
    def __mul__(self, val):
310 310
        return self.get_value() * val
311 311

  
312
    def __div__(self, val):
312
    def __truediv__(self, val):
313 313
        return self.get_value() / val
314 314

  
315
    def __floordiv__(self, val):
316
        return self.get_value() // val
317

  
315 318
    def __add__(self, val):
316 319
        return self.get_value() + val
317 320

  
......
336 339
    def __rmul__(self, val):
337 340
        return val * self.get_value()
338 341

  
339
    def __rdiv__(self, val):
342
    def __rtruediv__(self, val):
340 343
        return val / self.get_value()
341 344

  
345
    def __rfloordiv__(self, val):
346
        return val // self.get_value()
347

  
342 348
    def __rand__(self, val):
343 349
        return val & self.get_value()
344 350

  
......
369 375
        self.set_value(self.get_value() * val)
370 376
        return self
371 377

  
372
    def __idiv__(self, val):
378
    def __itruediv__(self, val):
373 379
        self.set_value(self.get_value() / val)
374 380
        return self
375 381

  
382
    def __ifloordiv__(self, val):
383
        self.set_value(self.get_value() // val)
384
        return self
385

  
376 386
    def __imod__(self, val):
377 387
        self.set_value(self.get_value() % val)
378 388
        return self
......
410 420
    def __ge__(self, val):
411 421
        return self.get_value() >= val
412 422

  
413
    def __nonzero__(self):
423
    def __bool__(self):
414 424
        return self.get_value() != 0
415 425

  
416 426

  
......
638 648
            s += "  %15s: %s%s" % (prop, repr(self._generators[prop]),
639 649
                                   os.linesep)
640 650
        s += "} %s (%i bytes at 0x%04X)%s" % (self._name,
641
                                              self.size() / 8,
651
                                              self.size() // 8,
642 652
                                              self._offset,
643 653
                                              os.linesep)
644 654
        return s
......
647 657
        self._generators = {}
648 658
        self._keys = []
649 659
        self._count = 1
650
        if "name" in kwargs.keys():
660
        if "name" in kwargs:
651 661
            self._name = kwargs["name"]
652 662
            del kwargs["name"]
653 663
        else:
......
706 716
        return size
707 717

  
708 718
    def get_raw(self):
709
        size = self.size() / 8
719
        size = self.size() // 8
710 720
        return self._data[self._offset:self._offset+size]
711 721

  
712 722
    def set_raw(self, buffer):
713
        if len(buffer) != (self.size() / 8):
723
        if len(buffer) != (self.size() // 8):
714 724
            raise ValueError("Struct size mismatch during set_raw()")
715 725
        self._data[self._offset] = buffer
716 726

  
......
755 765
        self._generators[name] = gen
756 766

  
757 767
    def do_bitfield(self, dtype, bitfield):
758
        bytes = self._types[dtype](self._data, 0).size() / 8
768
        bytes = self._types[dtype](self._data, 0).size() // 8
759 769
        bitsleft = bytes * 8
760 770

  
761 771
        for _bitdef, defn in bitfield:
......
812 822
                    self._offset += int((i+1) % 8 == 0)
813 823
                else:
814 824
                    gen = self._types[dtype](self._data, self._offset)
815
                    self._offset += (gen.size() / 8)
825
                    self._offset += (gen.size() // 8)
816 826
                res.append(gen)
817 827

  
818 828
            if count == 1:
......
908 918
    data = "\xab\x7F\x81abc\x12\x34"
909 919
    tree = parse(defn, data)
910 920

  
911
    print repr(tree)
921
    print(repr(tree))
912 922

  
913
    print "Foo %i" % tree.mystruct.foo
914
    print "Highbit: %i SixZeros: %i: Lowbit: %i" % (tree.mystruct.highbit,
923
    print("Foo %i" % tree.mystruct.foo)
924
    print("Highbit: %i SixZeros: %i: Lowbit: %i" % (tree.mystruct.highbit,
915 925
                                                    tree.mystruct.sixzeros,
916
                                                    tree.mystruct.lowbit)
917
    print "String: %s" % tree.mystruct.string
918
    print "Fourdigits: %i" % tree.mystruct.fourdigits
926
                                                    tree.mystruct.lowbit))
927
    print("String: %s" % tree.mystruct.string)
928
    print("Fourdigits: %i" % tree.mystruct.fourdigits)
919 929

  
920 930
    import sys
921 931
    sys.exit(0)
......
947 957
    # Mess with it a little
948 958
    p = Processor(data, 0)
949 959
    obj = p.parse(ast)
950
    print "Object: %s" % obj
951
    print obj["foo"][0]["bcdL"]
952
    print obj["tail"]
953
    print obj["foo"][0]["bar"]
960
    print("Object: %s" % obj)
961
    print(obj["foo"][0]["bcdL"])
962
    print(obj["tail"])
963
    print(obj["foo"][0]["bar"])
954 964
    obj["foo"][0]["bar"].set_value(255 << 8)
955 965
    obj["foo"][0]["twobit"].set_value(0)
956 966
    obj["foo"][0]["onebit"].set_value(1)
957
    print "%i" % int(obj["foo"][0]["bar"])
967
    print("%i" % int(obj["foo"][0]["bar"]))
958 968

  
959 969
    for i in obj["foo"][0]["array"]:
960
        print int(i)
970
        print(int(i))
961 971
    obj["foo"][0]["array"][1].set_value(255)
962 972

  
963 973
    for i in obj["foo"][0]["bcdL"]:
964
        print i.get_value()
974
        print(i.get_value())
965 975

  
966 976
    int_to_bcd(obj["foo"][0]["bcdL"], 1234)
967
    print bcd_to_int(obj["foo"][0]["bcdL"])
977
    print(bcd_to_int(obj["foo"][0]["bcdL"]))
968 978

  
969 979
    set_string(obj["foo"][0]["str"], "xyz")
970
    print get_string(obj["foo"][0]["str"])
980
    print(get_string(obj["foo"][0]["str"]))
971 981

  
972
    print repr(data.get_packed())
982
    print(repr(data.get_packed()))
chirp/bitwise_grammar.py
120 120
        def __iter__(self):
121 121
            return self
122 122

  
123
        def next(self):
123
        def __next__(self):
124 124
            self.line += 1
125 125
            try:
126 126
                # Note, FileInput objects keep the newlines
chirp/chirp_common.py
17 17
import json
18 18
import logging
19 19
import math
20
from io import open
20 21
from chirp import errors, memmap, CHIRP_VERSION
21 22

  
22 23
LOG = logging.getLogger(__name__)
......
190 191
    def __gt__(self, val):
191 192
        return int(self) > int(val)
192 193

  
193
    def __nonzero__(self):
194
    def __bool__(self):
194 195
        return int(self) != 0
195 196

  
196 197
    def __repr__(self):
......
226 227
def format_freq(freq):
227 228
    """Format a frequency given in Hz as a string"""
228 229

  
229
    return "%i.%06i" % (freq / 1000000, freq % 1000000)
230
    return "%i.%06i" % (freq // 1000000, freq % 1000000)
230 231

  
231 232

  
232 233
class ImmutableValueError(ValueError):
......
739 740
        if name.startswith("_"):
740 741
            self.__dict__[name] = val
741 742
            return
742
        elif name not in self._valid_map.keys():
743
        elif name not in self._valid_map:
743 744
            raise ValueError("No such attribute `%s'" % name)
744 745

  
745 746
        if type(self._valid_map[name]) == tuple:
......
868 869

  
869 870
    def is_a_feature(self, name):
870 871
        """Returns True if @name is a valid feature flag name"""
871
        return name in self._valid_map.keys()
872
        return name in self._valid_map
872 873

  
873 874
    def __getitem__(self, name):
874 875
        return self.__dict__[name]
......
970 971
                    msg = ValidationError("Frequency requires %.2fkHz step" %
971 972
                                          required_step(mem.freq))
972 973
                    msgs.append(msg)
973
            except errors.InvalidDataError, e:
974
            except errors.InvalidDataError as e:
974 975
                msgs.append(str(e))
975 976

  
976 977
        if self.valid_characters:
......
1163 1164

  
1164 1165
    def load_mmap(self, filename):
1165 1166
        """Load the radio's memory map from @filename"""
1166
        mapfile = file(filename, "rb")
1167
        mapfile = open(filename, "rb")
1167 1168
        data = mapfile.read()
1168 1169
        if self.MAGIC in data:
1169 1170
            data, self._metadata = self._strip_metadata(data)
......
1181 1182
        If IOError raise a File Access Error Exception
1182 1183
        """
1183 1184
        try:
1184
            mapfile = file(filename, "wb")
1185
            mapfile = open(filename, "wb")
1185 1186
            mapfile.write(self._mmap.get_packed())
1186 1187
            if filename.lower().endswith(".img"):
1187 1188
                mapfile.write(self.MAGIC)
......
1310 1311
    def __str__(self):
1311 1312
        try:
1312 1313
            pct = (self.cur / float(self.max)) * 100
1313
            nticks = int(pct) / 10
1314
            nticks = int(pct) // 10
1314 1315
            ticks = "=" * nticks
1315 1316
        except ValueError:
1316 1317
            pct = 0.0
......
1364 1365
    else:
1365 1366
        raise errors.InvalidDataError("Unable to calculate the required " +
1366 1367
                                      "tuning step for %i.%5i" %
1367
                                      (freq / 1000000, freq % 1000000))
1368
                                      (freq // 1000000, freq % 1000000))
1368 1369

  
1369 1370

  
1370 1371
def fix_rounded_step(freq):
......
1558 1559
    myfilter = ''.join(
1559 1560
        [
1560 1561
            [replacechar, chr(x)][chr(x) in validcharset]
1561
            for x in xrange(256)
1562
            for x in range(256)
1562 1563
        ])
1563 1564
    return astring.translate(myfilter)
1564 1565

  
chirp/detect.py
42 42
        ser.baudrate = 9600
43 43
        md = icf.get_model_data(ser)
44 44
        return _icom_model_data_to_rclass(md)
45
    except errors.RadioError, e:
45
    except errors.RadioError as e:
46 46
        LOG.error("_detect_icom_radio: %s", e)
47 47

  
48 48
    # ICOM IC-91/92 Live-mode radios @ 4800/38400 baud
......
97 97
        if rclass.VENDOR == "Kenwood":
98 98
            models[rclass.MODEL] = rclass
99 99

  
100
    if r_id in models.keys():
100
    if r_id in list(models.keys()):
101 101
        return models[r_id]
102 102
    else:
103 103
        raise errors.RadioError("Unsupported model `%s'" % r_id)
chirp/directory.py
14 14
# You should have received a copy of the GNU General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from io import open
17 18
import os
18 19
import tempfile
19 20
import logging
......
53 54
    """Register radio @cls with the directory"""
54 55
    global DRV_TO_RADIO
55 56
    ident = radio_class_id(cls)
56
    if ident in DRV_TO_RADIO.keys():
57
    if ident in DRV_TO_RADIO:
57 58
        if ALLOW_DUPS:
58 59
            LOG.warn("Replacing existing driver id `%s'" % ident)
59 60
        else:
......
102 103
            pass  # Skip non-Icoms
103 104

  
104 105
    if img_data:
105
        f = file(img_file, "wb")
106
        f = open(img_file, "wb")
106 107
        f.write(img_data)
107 108
        f.close()
108 109
    else:
......
131 132
        image_file = tempf
132 133

  
133 134
    if os.path.exists(image_file):
134
        f = file(image_file, "rb")
135
        f = open(image_file, "rb")
135 136
        filedata = f.read()
136 137
        f.close()
137 138
    else:
chirp/dmrmarc.py
16 16
import json
17 17
import logging
18 18
import tempfile
19
import urllib
19
import urllib.request, urllib.parse, urllib.error
20 20
from chirp import chirp_common, errors
21 21
from chirp.settings import RadioSetting, RadioSettingGroup, \
22 22
     RadioSettingValueList
......
51 51

  
52 52
    def do_fetch(self):
53 53
        fn = tempfile.mktemp(".json")
54
        filename, headers = urllib.urlretrieve(self.URL, fn)
54
        filename, headers = urllib.request.urlretrieve(self.URL, fn)
55 55
        with open(fn, 'r') as f:
56 56
            try:
57 57
                self._repeaters = json.load(f)['repeaters']
......
108 108

  
109 109
        rs = RadioSetting(
110 110
            "color_code", "Color Code", RadioSettingValueList(
111
                range(16), int(repeater.get('color_code', 0))))
111
                list(range(16)), int(repeater.get('color_code', 0))))
112 112
        mem.extra.append(rs)
113 113

  
114 114
        return mem
chirp/drivers/alinco.py
199 199
            self._mmap = self._download(self._memsize)
200 200
        except errors.RadioError:
201 201
            raise
202
        except Exception, e:
202
        except Exception as e:
203 203
            raise errors.RadioError("Failed to communicate with radio: %s" % e)
204 204
        self.process_mmap()
205 205

  
......
208 208
            self._upload(self._memsize)
209 209
        except errors.RadioError:
210 210
            raise
211
        except Exception, e:
211
        except Exception as e:
212 212
            raise errors.RadioError("Failed to communicate with radio: %s" % e)
213 213

  
214 214
    def get_raw_memory(self, number):
......
287 287
        return rf
288 288

  
289 289
    def _get_used(self, number):
290
        _usd = self._memobj.used_flags[number / 8]
290
        _usd = self._memobj.used_flags[number // 8]
291 291
        bit = (0x80 >> (number % 8))
292 292
        return _usd & bit
293 293

  
294 294
    def _set_used(self, number, is_used):
295
        _usd = self._memobj.used_flags[number / 8]
295
        _usd = self._memobj.used_flags[number // 8]
296 296
        bit = (0x80 >> (number % 8))
297 297
        if is_used:
298 298
            _usd |= bit
......
322 322

  
323 323
    def get_memory(self, number):
324 324
        _mem = self._memobj.memory[number]
325
        _skp = self._memobj.skips[number / 8]
326
        _usd = self._memobj.used_flags[number / 8]
325
        _skp = self._memobj.skips[number // 8]
326
        _usd = self._memobj.used_flags[number // 8]
327 327
        bit = (0x80 >> (number % 8))
328 328

  
329 329
        mem = chirp_common.Memory()
......
357 357

  
358 358
    def set_memory(self, mem):
359 359
        _mem = self._memobj.memory[mem.number]
360
        _skp = self._memobj.skips[mem.number / 8]
361
        _usd = self._memobj.used_flags[mem.number / 8]
360
        _skp = self._memobj.skips[mem.number // 8]
361
        _usd = self._memobj.used_flags[mem.number // 8]
362 362
        bit = (0x80 >> (mem.number % 8))
363 363

  
364 364
        if self._get_used(mem.number) and not mem.empty:
......
815 815
        # Get a low-level memory object mapped to the image
816 816
        _mem = self._memobj.memory[mem.number]
817 817
        if mem.empty:
818
            _mem.set_raw("\xff" * (_mem.size()/8))
818
            _mem.set_raw("\xff" * (_mem.size()//8))
819 819
            _mem.empty = 0x00
820 820
        else:
821 821
            _mem.empty = self._get_empty_flag(mem.freq, mem.mode)
chirp/drivers/anytone.py
159 159

  
160 160

  
161 161
def _is_loc_used(memobj, loc):
162
    return memobj.flags[loc / 2].get_raw() != "\xFF"
162
    return memobj.flags[loc // 2].get_raw() != "\xFF"
163 163

  
164 164

  
165 165
def _addr_to_loc(addr):
166
    return (addr - 0x2000) / 32
166
    return (addr - 0x2000) // 32
167 167

  
168 168

  
169 169
def _should_send_addr(memobj, addr):
......
177 177
    try:
178 178
        radio.pipe.write(data)
179 179
        radio.pipe.read(len(data))
180
    except Exception, e:
180
    except Exception as e:
181 181
        LOG.error("Error writing to radio: %s" % e)
182 182
        raise errors.RadioError("Unable to write to radio")
183 183

  
......
185 185
def _read(radio, length):
186 186
    try:
187 187
        data = radio.pipe.read(length)
188
    except Exception, e:
188
    except Exception as e:
189 189
        LOG.error("Error reading from radio: %s" % e)
190 190
        raise errors.RadioError("Unable to read from radio")
191 191

  
......
381 381
    def _get_memobjs(self, number):
382 382
        number -= 1
383 383
        _mem = self._memobj.memory[number]
384
        _flg = FlagObj(self._memobj.flags[number / 2],
384
        _flg = FlagObj(self._memobj.flags[number // 2],
385 385
                       number % 2 and "even" or "odd")
386 386
        return _mem, _flg
387 387

  
......
513 513

  
514 514
        rs = RadioSetting("welcome", "Welcome Message",
515 515
                          RadioSettingValueString(0, 8,
516
                                                  filter(_settings.welcome)))
516
                                                  list(filter(_settings.welcome))))
517 517
        basic.append(rs)
518 518

  
519 519
        rs = RadioSetting("beep", "Beep Enabled",
chirp/drivers/anytone_ht.py
34 34
mem_format = """
35 35
struct memory {
36 36
  bbcd freq[4];
37
  bbcd offset[4];     
38
  u8 unknown1:4,      
37
  bbcd offset[4];
38
  u8 unknown1:4,
39 39
     tune_step:4;
40
  u8 unknown2:2,      
40
  u8 unknown2:2,
41 41
     txdcsextra:1,
42 42
     txinv:1,
43 43
     channel_width:2,
44 44
     unknown3:1,
45 45
     tx_off:1;
46
  u8 unknown4:2,      
46
  u8 unknown4:2,
47 47
     rxdcsextra:1,
48 48
     rxinv:1,
49 49
     power:2,
50 50
     duplex:2;
51
  u8 unknown5:4,      
51
  u8 unknown5:4,
52 52
     rxtmode:2,
53 53
     txtmode:2;
54
  u8 unknown6:2,      
54
  u8 unknown6:2,
55 55
     txtone:6;
56
  u8 unknown7:2,      
56
  u8 unknown7:2,
57 57
     rxtone:6;
58
  u8 txcode;          
59
  u8 rxcode;          
60
  u8 unknown8[3];     
61
  char name[6];       
62
  u8 squelch:4,       
58
  u8 txcode;
59
  u8 rxcode;
60
  u8 unknown8[3];
61
  char name[6];
62
  u8 squelch:4,
63 63
     unknown9:2,
64 64
     bcl:2;
65
  u8 unknownA;        
66
  u8 unknownB:7,      
65
  u8 unknownA;
66
  u8 unknownB:7,
67 67
     sqlmode:1;
68 68
  u8 unknownC[4];
69 69
};
......
71 71
#seekto 0x0010;
72 72
struct {
73 73
    u8 unknown1;
74
    u8 unknown2:5,     
74
    u8 unknown2:5,
75 75
       bands1:3;
76
    char model[7];     
77
    u8 unknown3:5,     
76
    char model[7];
77
    u8 unknown3:5,
78 78
       bands2:3;
79
    u8 unknown4[6];    
80
    u8 unknown5[16];   
81
    char date[9];      
82
    u8 unknown6[7];    
83
    u8 unknown7[16];   
84
    u8 unknown8[16];   
85
    char dealer[16];   
86
    char stockdate[9]; 
87
    u8 unknown9[7];    
88
    char selldate[9];  
89
    u8 unknownA[7];    
79
    u8 unknown4[6];
80
    u8 unknown5[16];
81
    char date[9];
82
    u8 unknown6[7];
83
    u8 unknown7[16];
84
    u8 unknown8[16];
85
    char dealer[16];
86
    char stockdate[9];
87
    u8 unknown9[7];
88
    char selldate[9];
89
    u8 unknownA[7];
90 90
    char seller[16];
91 91
} oem_info;
92 92

  
......
233 233
def _echo_write(radio, data):
234 234
    try:
235 235
        radio.pipe.write(data)
236
    except Exception, e:
236
    except Exception as e:
237 237
        LOG.error("Error writing to radio: %s" % e)
238 238
        raise errors.RadioError("Unable to write to radio")
239 239

  
......
241 241
def _read(radio, length):
242 242
    try:
243 243
        data = radio.pipe.read(length)
244
    except Exception, e:
244
    except Exception as e:
245 245
        LOG.error("Error reading from radio: %s" % e)
246 246
        raise errors.RadioError("Unable to read from radio")
247 247

  
......
447 447
        rf.can_odd_split = True
448 448
        rf.memory_bounds = (0, 199)
449 449
        return rf
450
                        
450

  
451 451
    def sync_in(self):
452 452
        self._mmap = _download(self)
453 453
        self.process_mmap()
......
471 471

  
472 472
    def get_memory(self, number):
473 473
        bitpos = (1 << (number % 8))
474
        bytepos = (number / 8)
474
        bytepos = (number // 8)
475 475

  
476 476
        _mem = self._memobj.memory[number]
477 477
        _skp = self._memobj.skip_flags[bytepos]
......
536 536

  
537 537
    def set_memory(self, mem):
538 538
        bitpos = (1 << (mem.number % 8))
539
        bytepos = (mem.number / 8)
539
        bytepos = (mem.number // 8)
540 540

  
541 541
        _mem = self._memobj.memory[mem.number]
542 542
        _skp = self._memobj.skip_flags[bytepos]
......
930 930
                    else:
931 931
                        LOG.debug("Setting %s = %s" % (setting, element.value))
932 932
                        setattr(obj, setting, element.value)
933
                except Exception, e:
933
                except Exception as e:
934 934
                    LOG.debug(element.get_name())
935 935
                    raise
936 936

  
chirp/drivers/ap510.py
13 13
# You should have received a copy of the GNU General Public License
14 14
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
15 15

  
16
import itertools
17
from io import open
16 18
import struct
17 19
from time import sleep
18 20
import logging
......
35 37

  
36 38

  
37 39
def encode_base100(v):
38
    return (v / 100 << 8) + (v % 100)
40
    return (v // 100 << 8) + (v % 100)
39 41

  
40 42

  
41 43
def decode_base100(u16):
......
44 46

  
45 47
def drain(pipe):
46 48
    """Chew up any data waiting on @pipe"""
47
    for x in xrange(3):
49
    for x in range(3):
48 50
        buf = pipe.read(4096)
49 51
        if not buf:
50 52
            return
......
53 55

  
54 56
def enter_setup(pipe):
55 57
    """Put AP510 in configuration mode."""
56
    for x in xrange(30):
58
    for x in range(30):
57 59
        if x % 2:
58 60
            pipe.write("@SETUP")
59 61
        else:
......
84 86
        radio.pipe.write("@DISP")
85 87
    buf = ""
86 88

  
87
    for status.cur in xrange(status.cur, status.max):
89
    for status.cur in range(status.cur, status.max):
88 90
        buf += radio.pipe.read(1024)
89 91
        if buf.endswith("\r\n"):
90 92
            status.cur = status.max
......
109 111

  
110 112
    status.msg = "Uploading"
111 113
    status.cur = 1
112
    status.max = len(radio._mmap._memobj.items())
114
    status.max = len(radio._mmap._memobj.items())  # TODO: could this be simplified to len(radio._mmap._memobj)?
113 115
    for k, v in radio._mmap._memobj.items():
114 116
        if k == '00':
115 117
            continue
......
242 244

  
243 245
class AP510Memory20141215(AP510Memory):
244 246
    """Compatible with firmware version 20141215"""
245
    ATTR_MAP = dict(AP510Memory.ATTR_MAP.items() + {
246
        'tx_volume': '21',  # 1-6
247
        'rx_volume': '22',  # 1-9
248
        'tx_power': '23',  # 1: 1 watt,  0: 0.5 watt
249
        'tx_serial_ui_out': '24',
250
        'path1': '25',
251
        'path2': '26',
252
        'path3': '27',  # like "WIDE1 1" else "0"
253
        'multiple': '28',
254
        'auto_on': '29',
255
    }.items())
247
    ATTR_MAP = dict(itertools.chain(AP510Memory.ATTR_MAP.items(), (
248
        ('tx_volume', '21'),  # 1-6
249
        ('rx_volume', '22'),  # 1-9
250
        ('tx_power', '23'),  # 1: 1 watt,  0: 0.5 watt
251
        ('tx_serial_ui_out', '24'),
252
        ('path1', '25'),
253
        ('path2', '26'),
254
        ('path3', '27'),  # like "WIDE1 1" else "0"
255
        ('multiple', '28'),
256
        ('auto_on', '29'),
257
    )))
256 258

  
257 259
    def get_multiple(self):
258 260
        return dict(zip(
......
380 382
            data = download(self)
381 383
        except errors.RadioError:
382 384
            raise
383
        except Exception, e:
385
        except Exception as e:
384 386
            raise errors.RadioError("Failed to communicate with radio: %s" % e)
385 387

  
386 388
        # _mmap isn't a Chirp MemoryMap, but since AP510Memory implements
......
398 400
            upload(self)
399 401
        except errors.RadioError:
400 402
            raise
401
        except Exception, e:
403
        except Exception as e:
402 404
            raise errors.RadioError("Failed to communicate with radio: %s" % e)
403 405

  
404 406
    def load_mmap(self, filename):
405 407
        """Load the radio's memory map from @filename"""
406
        mapfile = file(filename, "rb")
408
        mapfile = open(filename, "rb")
407 409
        data = mapfile.read()
408 410
        if data.startswith('\r\n00=%s 20141215' % self._model):
409 411
            self._mmap = AP510Memory20141215(data)
......
600 602
        try:
601 603
            system.append(RadioSetting("tx_volume", "Transmit volume",
602 604
                          RadioSettingValueList(
603
                              map(str, range(1, 7)), self._mmap.tx_volume)))
605
                              list(map(str, range(1, 7))), self._mmap.tx_volume)))
604 606
            system.append(RadioSetting("rx_volume", "Receive volume",
605 607
                          RadioSettingValueList(
606
                              map(str, range(1, 10)), self._mmap.rx_volume)))
608
                              list(map(str, range(1, 10))), self._mmap.rx_volume)))
607 609
            system.append(RadioSetting("squelch", "Squelch",
608 610
                          RadioSettingValueList(
609
                              map(str, range(0, 9)),
611
                              list(map(str, range(0, 9))),
610 612
                              str(self._mmap.multiple['squelch']))))
611 613
            system.append(RadioSetting("tx_serial_ui_out", "Tx serial UI out",
612 614
                          RadioSettingValueBoolean(
chirp/drivers/baofeng_common.py
164 164
        try:
165 165
            data = _do_ident(radio, magic)
166 166
            return data
167
        except errors.RadioError, e:
168
            print e
167
        except errors.RadioError as e:
168
            print(e)
169 169
            error = e
170 170
            time.sleep(2)
171 171
    if error:
......
196 196
    # UI progress
197 197
    status = chirp_common.Status()
198 198
    status.cur = 0
199
    status.max = radio._mem_size / radio._recv_block_size
199
    status.max = radio._mem_size // radio._recv_block_size
200 200
    status.msg = "Cloning from radio..."
201 201
    radio.status_fn(status)
202 202

  
......
226 226
        data += d
227 227

  
228 228
        # UI Update
229
        status.cur = addr / radio._recv_block_size
229
        status.cur = addr // radio._recv_block_size
230 230
        status.msg = "Cloning from radio..."
231 231
        radio.status_fn(status)
232 232

  
......
266 266
    # UI progress
267 267
    status = chirp_common.Status()
268 268
    status.cur = 0
269
    status.max = radio._mem_size / radio._send_block_size
269
    status.max = radio._mem_size // radio._send_block_size
270 270
    status.msg = "Cloning to radio..."
271 271
    radio.status_fn(status)
272 272

  
......
288 288
                raise errors.RadioError(msg)
289 289

  
290 290
            # UI Update
291
            status.cur = addr / radio._send_block_size
291
            status.cur = addr // radio._send_block_size
292 292
            status.msg = "Cloning to radio..."
293 293
            radio.status_fn(status)
294 294

  
......
336 336
            _upload(self)
337 337
        except errors.RadioError:
338 338
            raise
339
        except Exception, e:
339
        except Exception as e:
340 340
            # If anything unexpected happens, make sure we raise
341 341
            # a RadioError and log the problem
342 342
            LOG.exception('Unexpected error during upload')
343 343
            raise errors.RadioError('Unexpected error communicating '
344 344
                                    'with the radio')
345
                                    
345

  
346 346
    def get_features(self):
347 347
        """Get the radio's features"""
348 348

  
......
379 379
        rf.valid_bands = self.VALID_BANDS
380 380

  
381 381
        return rf
382
        
382

  
383 383
    def _is_txinh(self, _mem):
384 384
        raw_tx = ""
385 385
        for i in range(0, 4):
......
621 621
                    elif element.value.get_mutable():
622 622
                        LOG.debug("Setting %s = %s" % (setting, element.value))
623 623
                        setattr(obj, setting, element.value)
624
                except Exception, e:
624
                except Exception as e:
625 625
                    LOG.debug(element.get_name())
626 626
                    raise
627 627

  
......
635 635
                    value = int(val.get_value() * 10)
636 636
                LOG.debug("Setting fm_presets = %s" % (value))
637 637
                self._memobj.fm_presets = value
638
            except Exception, e:
638
            except Exception as e:
639 639
                LOG.debug(element.get_name())
640 640
                raise
chirp/drivers/baofeng_uv3r.py
19 19
import os
20 20
import logging
21 21

  
22
from wouxun_common import do_download, do_upload
22
from .wouxun_common import do_download, do_upload
23 23
from chirp import util, chirp_common, bitwise, errors, directory
24 24
from chirp.settings import RadioSetting, RadioSettingGroup, \
25 25
                RadioSettingValueBoolean, RadioSettingValueList, \
......
51 51
    for _i in range(0, 10):
52 52
        try:
53 53
            return _uv3r_prep(radio)
54
        except errors.RadioError, e:
54
        except errors.RadioError as e:
55 55
            time.sleep(1)
56 56

  
57 57
    raise e
......
64 64
        return do_download(radio, 0x0000, 0x0E40, 0x0010)
65 65
    except errors.RadioError:
66 66
        raise
67
    except Exception, e:
67
    except Exception as e:
68 68
        raise errors.RadioError("Failed to communicate with radio: %s" % e)
69 69

  
70 70

  
......
75 75
        return do_upload(radio, 0x0000, 0x0E40, 0x0010)
76 76
    except errors.RadioError:
77 77
        raise
78
    except Exception, e:
78
    except Exception as e:
79 79
        raise errors.RadioError("Failed to communicate with radio: %s" % e)
80 80

  
81 81

  
......
427 427
                              CH_FLAG_LIST, CH_FLAG_LIST[_settings.ch_flag]))
428 428
        basic.append(rs)
429 429

  
430
        _limit = int(self._memobj.limits.lower_vhf) / 10
430
        _limit = int(self._memobj.limits.lower_vhf) // 10
431 431
        if _limit < 115 or _limit > 239:
432 432
            _limit = 144
433 433
        rs = RadioSetting("limits.lower_vhf", "VHF Lower Limit (115-239 MHz)",
......
439 439
        rs.set_apply_callback(apply_limit, self._memobj.limits)
440 440
        basic.append(rs)
441 441

  
442
        _limit = int(self._memobj.limits.upper_vhf) / 10
442
        _limit = int(self._memobj.limits.upper_vhf) // 10
443 443
        if _limit < 115 or _limit > 239:
444 444
            _limit = 146
445 445
        rs = RadioSetting("limits.upper_vhf", "VHF Upper Limit (115-239 MHz)",
......
451 451
        rs.set_apply_callback(apply_limit, self._memobj.limits)
452 452
        basic.append(rs)
453 453

  
454
        _limit = int(self._memobj.limits.lower_uhf) / 10
454
        _limit = int(self._memobj.limits.lower_uhf) // 10
455 455
        if _limit < 200 or _limit > 529:
456 456
            _limit = 420
457 457
        rs = RadioSetting("limits.lower_uhf", "UHF Lower Limit (200-529 MHz)",
......
463 463
        rs.set_apply_callback(apply_limit, self._memobj.limits)
464 464
        basic.append(rs)
465 465

  
466
        _limit = int(self._memobj.limits.upper_uhf) / 10
466
        _limit = int(self._memobj.limits.upper_uhf) // 10
467 467
        if _limit < 200 or _limit > 529:
468 468
            _limit = 450
469 469
        rs = RadioSetting("limits.upper_uhf", "UHF Upper Limit (200-529 MHz)",
......
622 622
                    else:
623 623
                        LOG.debug("Setting %s = %s" % (setting, element.value))
624 624
                        setattr(obj, setting, element.value)
625
                except Exception, e:
625
                except Exception as e:
626 626
                    LOG.debug(element.get_name())
627 627
                    raise
628 628

  
......
638 638
                LOG.debug("Setting fm_presets[%1i] = %s" % (index, value))
639 639
                setting = self._memobj.fm_presets
640 640
                setting[index] = value
641
            except Exception, e:
641
            except Exception as e:
642 642
                LOG.debug(element.get_name())
643 643
                raise
644 644

  
chirp/drivers/bf-t1.py
225 225

  
226 226
    except errors.RadioError:
227 227
        raise
228
    except Exception, e:
228
    except Exception as e:
229 229
        raise errors.RadioError("Error sending Magic to radio:\n%s" % e)
230 230

  
231 231

  
......
283 283
    _do_ident(radio, status)
284 284

  
285 285
    # reset the progress bar in the UI
286
    status.max = MEM_SIZE / BLOCK_SIZE
286
    status.max = MEM_SIZE // BLOCK_SIZE
287 287
    status.msg = "Cloning from radio..."
288 288
    status.cur = 0
289 289
    radio.status_fn(status)
......
303 303
        data += d
304 304

  
305 305
        # UI Update
306
        status.cur = addr / BLOCK_SIZE
306
        status.cur = addr // BLOCK_SIZE
307 307
        status.msg = "Cloning from radio..."
308 308
        radio.status_fn(status)
309 309

  
......
328 328
    data = radio.get_mmap()
329 329

  
330 330
    # Reset the UI progress
331
    status.max = WRITE_SIZE / BLOCK_SIZE
331
    status.max = WRITE_SIZE // BLOCK_SIZE
332 332
    status.cur = 0
333 333
    status.msg = "Cloning to radio..."
334 334
    radio.status_fn(status)
......
358 358
            raise errors.RadioError("Bad ACK writing block 0x%04x:" % addr)
359 359

  
360 360
        # UI Update
361
        status.cur = addr / BLOCK_SIZE
361
        status.cur = addr // BLOCK_SIZE
362 362
        status.msg = "Cloning to radio..."
363 363
        radio.status_fn(status)
364 364

  
......
503 503
        """Get the radio's features"""
504 504

  
505 505
        rf = chirp_common.RadioFeatures()
506
        rf.valid_special_chans = SPECIALS.keys()
506
        rf.valid_special_chans = list(SPECIALS.keys())
507 507
        rf.has_settings = True
508 508
        rf.has_bank = False
509 509
        rf.has_tuning_step = False
......
560 560
            _upload(self)
561 561
        except errors.RadioError:
562 562
            raise
563
        except Exception, e:
563
        except Exception as e:
564 564
            raise errors.RadioError("Error: %s" % e)
565 565

  
566 566
    def _decode_tone(self, val, inv):
......
842 842

  
843 843
        rs = RadioSetting("vhfl", "VHF Low Limit",
844 844
                          RadioSettingValueInteger(130, 174, int(
845
                              _settings.vhfl) / 10))
845
                              _settings.vhfl) // 10))
846 846
        rs.set_apply_callback(apply_limit, _settings)
847 847
        adv.append(rs)
848 848

  
849 849
        rs = RadioSetting("vhfh", "VHF High Limit",
850 850
                          RadioSettingValueInteger(130, 174, int(
851
                              _settings.vhfh) / 10))
851
                              _settings.vhfh) // 10))
852 852
        rs.set_apply_callback(apply_limit, _settings)
853 853
        adv.append(rs)
854 854

  
855 855
        rs = RadioSetting("uhfl", "UHF Low Limit",
856 856
                          RadioSettingValueInteger(400, 520, int(
857
                              _settings.uhfl) / 10))
857
                              _settings.uhfl) // 10))
858 858
        rs.set_apply_callback(apply_limit, _settings)
859 859
        adv.append(rs)
860 860

  
861 861
        rs = RadioSetting("uhfh", "UHF High Limit",
862 862
                          RadioSettingValueInteger(400, 520, int(
863
                              _settings.uhfh) / 10))
863
                              _settings.uhfh) // 10))
864 864
        rs.set_apply_callback(apply_limit, _settings)
865 865
        adv.append(rs)
866 866

  
......
893 893
                    setattr(_settings, name, value)
894 894

  
895 895
                LOG.debug("Setting %s: %s" % (name, value))
896
            except Exception, e:
896
            except Exception as e:
897 897
                LOG.debug(element.get_name())
898 898
                raise
899 899

  
chirp/drivers/bj9900.py
61 61
    # 2 char per byte hex string
62 62
    # on CR LF terminated lines of 96 char
63 63
    # plus an empty line at the end
64
    _datsize = (_memsize * 2) / 96 * 98 + 2
64
    _datsize = (_memsize * 2) // 96 * 98 + 2
65 65

  
66 66
    # block are read in same order as original sw eventhough they are not
67 67
    # in physical order
......
178 178
            self._mmap = self._clone_in()
179 179
        except errors.RadioError:
180 180
            raise
181
        except Exception, e:
181
        except Exception as e:
182 182
            raise errors.RadioError("Failed to communicate with radio: %s" % e)
183 183
        self.process_mmap()
184 184

  
......
187 187
            self._clone_out()
188 188
        except errors.RadioError:
189 189
            raise
190
        except Exception, e:
190
        except Exception as e:
191 191
            raise errors.RadioError("Failed to communicate with radio: %s" % e)
192 192

  
193 193
    def process_mmap(self):
......
240 240
        _mem = self._memobj.memory[mem.number - 1]
241 241

  
242 242
        if mem.empty:
243
            _mem.set_raw("\xff" * (_mem.size() / 8))    # clean up
243
            _mem.set_raw("\xff" * (_mem.size() // 8))    # clean up
244 244
            _mem.namelen = 0
245 245
            return
246 246

  
chirp/drivers/bjuv55.py
647 647
                value = int(val.get_value() * 10 - 870)
648 648
                LOG.debug("Setting fm_preset = %s" % (value))
649 649
                self._memobj.fm_preset = value
650
            except Exception, e:
650
            except Exception as e:
651 651
                LOG.debug(element.get_name())
652 652
                raise
chirp/drivers/boblov_x3plus.py
313 313
        rmem = self._memobj.memory[memory.number - 1]
314 314

  
315 315
        if memory.empty:
316
            rmem.set_raw('\xFF' * (rmem.size() / 8))
316
            rmem.set_raw('\xFF' * (rmem.size() // 8))
317 317
            return
318 318

  
319 319
        rmem.rxfreq = memory.freq / 10
chirp/drivers/btech.py
314 314
            # hits some models more than others.
315 315
            #
316 316
            # To cope with that we introduce a delay on the writes.
317
            # Many option have been tested (delaying only after error occures, 
317
            # Many option have been tested (delaying only after error occures,
318 318
            # after short reads, only for linux, ...)
319 319
            # Finally, a static delay was chosen as simplest of all solutions
320 320
            # (Michael Wagner, OE4AMW)
......
403 403

  
404 404
    except errors.RadioError:
405 405
        raise
406
    except Exception, e:
406
    except Exception as e:
407 407
        raise errors.RadioError("Error sending Magic to radio:\n%s" % e)
408 408

  
409 409

  
......
527 527
                     util.hexprint(discard))
528 528

  
529 529
    # reset the progress bar in the UI
530
    status.max = MEM_SIZE / BLOCK_SIZE
530
    status.max = MEM_SIZE // BLOCK_SIZE
531 531
    status.msg = "Cloning from radio..."
532 532
    status.cur = 0
533 533
    radio.status_fn(status)
......
547 547
        data += d
548 548

  
549 549
        # UI Update
550
        status.cur = addr / BLOCK_SIZE
550
        status.cur = addr // BLOCK_SIZE
551 551
        status.msg = "Cloning from radio..."
552 552
        radio.status_fn(status)
553 553

  
......
571 571
    data = radio.get_mmap()
572 572

  
573 573
    # Reset the UI progress
574
    status.max = MEM_SIZE / TX_BLOCK_SIZE
574
    status.max = MEM_SIZE // TX_BLOCK_SIZE
575 575
    status.cur = 0
576 576
    status.msg = "Cloning to radio..."
577 577
    radio.status_fn(status)
......
610 610
            raise errors.RadioError("Bad ACK writing block 0x%04x:" % addr)
611 611

  
612 612
         # UI Update
613
        status.cur = addr / TX_BLOCK_SIZE
613
        status.cur = addr // TX_BLOCK_SIZE
614 614
        status.msg = "Cloning to radio..."
615 615
        radio.status_fn(status)
616 616

  
......
768 768
            _upload(self)
769 769
        except errors.RadioError:
770 770
            raise
771
        except Exception, e:
771
        except Exception as e:
772 772
            raise errors.RadioError("Error: %s" % e)
773 773

  
774 774
    def get_raw_memory(self, number):
......
928 928
        if _mem.get_raw()[0] == "\xFF":
929 929
            LOG.debug("This mem was empty before")
930 930
            mem_was_empty = True
931
        
931

  
932 932
        # if empty memmory
933 933
        if mem.empty:
934 934
            # the channel itself
......
1063 1063
        else:
1064 1064
            toa = RadioSetting("settings.apo", "Time out alert timer",
1065 1065
                               RadioSettingValueList(
1066
                                   LIST_OFF1TO10, 
1066
                                   LIST_OFF1TO10,
1067 1067
                                   LIST_OFF1TO10[_mem.settings.apo]))
1068 1068
            basic.append(toa)
1069 1069

  
......
1195 1195
            basic.append(ponmsg)
1196 1196

  
1197 1197
        if self.COLOR_LCD:
1198
            mainfc = RadioSetting("settings.mainfc", 
1198
            mainfc = RadioSetting("settings.mainfc",
1199 1199
                                  "Main LCD foreground color",
1200 1200
                                      RadioSettingValueList(
1201 1201
                                          LIST_COLOR8,
......
1315 1315
            else:
1316 1316
                tdrab = RadioSetting("settings.tdrab", "TDR return time",
1317 1317
                                     RadioSettingValueList(
1318
                                         LIST_OFF1TO50, 
1318
                                         LIST_OFF1TO50,
1319 1319
                                         LIST_OFF1TO50[_mem.settings.tdrab]))
1320 1320
                basic.append(tdrab)
1321 1321

  
......
1958 1958
                for i in range(7, -1, -1):
1959 1959
                    obj.freq[i] = value % 10
1960 1960
                    value /= 10
1961
        
1961

  
1962 1962
            _presets = self._memobj.fm_radio_preset
1963 1963
            i = 1
1964 1964
            for preset in _presets:
1965
                line = RadioSetting("fm_presets_"+ str(i), 
1965
                line = RadioSetting("fm_presets_"+ str(i),
1966 1966
                                    "Station name " + str(i),
1967 1967
                                        RadioSettingValueString(0, 6, _filter(
1968 1968
                                            preset.broadcast_station_name)))
1969
                line.set_apply_callback(apply_fm_preset_name, 
1969
                line.set_apply_callback(apply_fm_preset_name,
1970 1970
                                        preset.broadcast_station_name)
1971
            
1971

  
1972 1972
                val = RadioSettingValueFloat(0, 108,
1973 1973
                                             convert_bytes_to_freq(
1974 1974
                                                 preset.freq))
......
1978 1978
                fmfreq.set_apply_callback(apply_fm_freq, preset)
1979 1979
                fm_presets.append(line)
1980 1980
                fm_presets.append(fmfreq)
1981
            
1981

  
1982 1982
                i = i + 1
1983 1983

  
1984 1984
         # DTMF-Setting
......
1988 1988
                                               "DTMF Decoding Settings")
1989 1989
        top.append(dtmf_enc_settings)
1990 1990
        top.append(dtmf_dec_settings)
1991
        txdisable = RadioSetting("dtmf_settings.txdisable", 
1991
        txdisable = RadioSetting("dtmf_settings.txdisable",
1992 1992
                                 "TX-Disable",
1993 1993
                                 RadioSettingValueBoolean(
1994 1994
                                     _mem.dtmf_settings.txdisable))
1995 1995
        dtmf_enc_settings.append(txdisable)
1996 1996

  
1997
        rxdisable = RadioSetting("dtmf_settings.rxdisable", 
1997
        rxdisable = RadioSetting("dtmf_settings.rxdisable",
1998 1998
                                 "RX-Disable",
1999 1999
                                 RadioSettingValueBoolean(
2000 2000
                                     _mem.dtmf_settings.rxdisable))
......
2039 2039
        codes = self._memobj.dtmf_codes
2040 2040
        i = 1
2041 2041
        for dtmfcode in codes:
2042
            val = RadioSettingValueString(0, 16, 
2042
            val = RadioSettingValueString(0, 16,
2043 2043
                                          memory2string(dtmfcode.code),
2044 2044
                                          False, CHARSET_DTMF_DIGITS)
2045 2045
            line = RadioSetting("dtmf_code_" + str(i) + "_code",
......
2048 2048
            dtmf_enc_settings.append(line)
2049 2049
            i = i + 1
2050 2050

  
2051
        line = RadioSetting("dtmf_settings.mastervice", 
2051
        line = RadioSetting("dtmf_settings.mastervice",
2052 2052
                            "Master and Vice ID",
2053 2053
                            RadioSettingValueBoolean(
2054 2054
                                _mem.dtmf_settings.mastervice))
2055 2055
        dtmf_dec_settings.append(line)
2056 2056

  
2057
        val = RadioSettingValueString(0, 16, 
2057
        val = RadioSettingValueString(0, 16,
2058 2058
                                      memory2string(
2059 2059
                                          _mem.dtmf_settings.masterid),
2060 2060
                                          False, CHARSET_DTMF_DIGITS)
......
2064 2064
                                _mem.dtmf_settings.masterid)
2065 2065
        dtmf_dec_settings.append(line)
2066 2066

  
2067
        line = RadioSetting("dtmf_settings.minspection", 
2067
        line = RadioSetting("dtmf_settings.minspection",
2068 2068
                            "Master Inspection",
2069 2069
                            RadioSettingValueBoolean(
2070 2070
                                _mem.dtmf_settings.minspection))
2071 2071
        dtmf_dec_settings.append(line)
2072 2072

  
2073
        line = RadioSetting("dtmf_settings.mmonitor", 
2073
        line = RadioSetting("dtmf_settings.mmonitor",
2074 2074
                            "Master Monitor",
2075 2075
                            RadioSettingValueBoolean(
2076 2076
                                _mem.dtmf_settings.mmonitor))
2077 2077
        dtmf_dec_settings.append(line)
2078 2078

  
2079
        line = RadioSetting("dtmf_settings.mstun", 
2079
        line = RadioSetting("dtmf_settings.mstun",
2080 2080
                            "Master Stun",
2081 2081
                            RadioSettingValueBoolean(
2082 2082
                                _mem.dtmf_settings.mstun))
2083 2083
        dtmf_dec_settings.append(line)
2084 2084

  
2085
        line = RadioSetting("dtmf_settings.mkill", 
2085
        line = RadioSetting("dtmf_settings.mkill",
2086 2086
                            "Master Kill",
2087 2087
                            RadioSettingValueBoolean(
2088 2088
                                _mem.dtmf_settings.mkill))
2089 2089
        dtmf_dec_settings.append(line)
2090 2090

  
2091
        line = RadioSetting("dtmf_settings.mrevive", 
2091
        line = RadioSetting("dtmf_settings.mrevive",
2092 2092
                            "Master Revive",
2093 2093
                            RadioSettingValueBoolean(
2094 2094
                                _mem.dtmf_settings.mrevive))
2095 2095
        dtmf_dec_settings.append(line)
2096 2096

  
2097
        val = RadioSettingValueString(0, 16, 
2097
        val = RadioSettingValueString(0, 16,
2098 2098
                                      memory2string(
2099 2099
                                          _mem.dtmf_settings.viceid),
2100 2100
                                          False, CHARSET_DTMF_DIGITS)
......
2104 2104
                                _mem.dtmf_settings.viceid)
2105 2105
        dtmf_dec_settings.append(line)
2106 2106

  
2107
        line = RadioSetting("dtmf_settings.vinspection", 
2107
        line = RadioSetting("dtmf_settings.vinspection",
2108 2108
                            "Vice Inspection",
2109 2109
                            RadioSettingValueBoolean(
2110 2110
                                _mem.dtmf_settings.vinspection))
2111 2111
        dtmf_dec_settings.append(line)
2112 2112

  
2113
        line = RadioSetting("dtmf_settings.vmonitor", 
2113
        line = RadioSetting("dtmf_settings.vmonitor",
2114 2114
                            "Vice Monitor",
2115 2115
                            RadioSettingValueBoolean(
2116 2116
                                _mem.dtmf_settings.vmonitor))
2117 2117
        dtmf_dec_settings.append(line)
2118 2118

  
2119
        line = RadioSetting("dtmf_settings.vstun", 
2119
        line = RadioSetting("dtmf_settings.vstun",
2120 2120
                            "Vice Stun",
2121 2121
                            RadioSettingValueBoolean(
2122 2122
                                _mem.dtmf_settings.vstun))
2123 2123
        dtmf_dec_settings.append(line)
2124 2124

  
2125
        line = RadioSetting("dtmf_settings.vkill", 
2125
        line = RadioSetting("dtmf_settings.vkill",
2126 2126
                            "Vice Kill",
2127 2127
                            RadioSettingValueBoolean(
2128 2128
                                _mem.dtmf_settings.vkill))
2129 2129
        dtmf_dec_settings.append(line)
2130 2130

  
2131
        line = RadioSetting("dtmf_settings.vrevive", 
2131
        line = RadioSetting("dtmf_settings.vrevive",
2132 2132
                            "Vice Revive",
2133 2133
                            RadioSettingValueBoolean(
2134 2134
                                _mem.dtmf_settings.vrevive))
2135 2135
        dtmf_dec_settings.append(line)
2136 2136

  
2137
        val = RadioSettingValueString(0, 16, 
2137
        val = RadioSettingValueString(0, 16,
2138 2138
                                      memory2string(
2139 2139
                                          _mem.dtmf_settings.inspection),
2140 2140
                                          False, CHARSET_DTMF_DIGITS)
......
2144 2144
                                _mem.dtmf_settings.inspection)
2145 2145
        dtmf_dec_settings.append(line)
2146 2146

  
2147
        val = RadioSettingValueString(0, 16, 
2147
        val = RadioSettingValueString(0, 16,
2148 2148
                                      memory2string(
2149 2149
                                          _mem.dtmf_settings.alarmcode),
2150 2150
                                          False, CHARSET_DTMF_DIGITS)
......
2154 2154
                                _mem.dtmf_settings.alarmcode)
2155 2155
        dtmf_dec_settings.append(line)
2156 2156

  
2157
        val = RadioSettingValueString(0, 16, 
2157
        val = RadioSettingValueString(0, 16,
2158 2158
                                      memory2string(
2159 2159
                                          _mem.dtmf_settings.kill),
2160 2160
                                          False, CHARSET_DTMF_DIGITS)
......
2164 2164
                                _mem.dtmf_settings.kill)
2165 2165
        dtmf_dec_settings.append(line)
2166 2166

  
2167
        val = RadioSettingValueString(0, 16, 
2167
        val = RadioSettingValueString(0, 16,
2168 2168
                                      memory2string(
2169 2169
                                          _mem.dtmf_settings.monitor),
2170 2170
                                          False, CHARSET_DTMF_DIGITS)
......
2174 2174
                                _mem.dtmf_settings.monitor)
2175 2175
        dtmf_dec_settings.append(line)
2176 2176

  
2177
        val = RadioSettingValueString(0, 16, 
2177
        val = RadioSettingValueString(0, 16,
2178 2178
                                      memory2string(
2179 2179
                                          _mem.dtmf_settings.stun),
2180 2180
                                          False, CHARSET_DTMF_DIGITS)
......
2184 2184
                                _mem.dtmf_settings.stun)
2185 2185
        dtmf_dec_settings.append(line)
2186 2186

  
2187
        val = RadioSettingValueString(0, 16, 
2187
        val = RadioSettingValueString(0, 16,
2188 2188
                                      memory2string(
2189 2189
                                          _mem.dtmf_settings.revive),
2190 2190
                                          False, CHARSET_DTMF_DIGITS)
......
2264 2264
        _5tone_standards = self._memobj._5tone_std_settings
2265 2265
        i = 0
2266 2266
        for standard in _5tone_standards:
2267
            std_5tone = RadioSettingGroup ("std_5tone_" + str(i), 
2267
            std_5tone = RadioSettingGroup ("std_5tone_" + str(i),
2268 2268
                                           LIST_5TONE_STANDARDS[i])
2269 2269
            stds_5tone.append(std_5tone)
2270
 
2270

  
2271 2271
            period = standard.period
2272 2272
            if period == 255:
2273
                LOG.debug("Period for " + LIST_5TONE_STANDARDS[i] + 
... This diff was truncated because it exceeds the maximum size that can be displayed.
(1-1/2)