File: test_kguv920.py

package info (click to toggle)
chirp 1%3A20251108-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,728 kB
  • sloc: python: 156,369; ansic: 296; sh: 219; xml: 24; makefile: 19
file content (65 lines) | stat: -rw-r--r-- 1,999 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Copyright 2022 Dan Smith <chirp@f.danplanet.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


import struct

import unittest

from chirp.drivers import kguv920pa
from chirp import memmap


class FakeSerial:
    def __init__(self):
        self.ibuf = b''
        self.obuf = b''

    def write(self, b):
        assert isinstance(b, bytes)
        self.obuf += b

    def read(self, n):
        print('read %i (rem %i)' % (n, len(self.ibuf)))
        r = self.ibuf[:n]
        self.ibuf = self.ibuf[n:]
        return r


class TestClone(unittest.TestCase):
    def test_identify(self):
        s = FakeSerial()
        s.ibuf = struct.pack(
            'BBBB10sB', 0, 0, 0,
            len(kguv920pa.KGUV920PARadio._model),
            kguv920pa._str_encode(kguv920pa.KGUV920PARadio._model), 3)
        print(s.ibuf)
        d = kguv920pa.KGUV920PARadio(s)
        d._identify()

    def test_download(self):
        s = FakeSerial()
        oneresp = struct.pack('xxxB16sB', 0x10, b'\x01' * 16, 0)
        s.ibuf = oneresp * 2
        d = kguv920pa.KGUV920PARadio(s)
        d._do_download(0, 0x20, 0x10)

    def test_upload(self):
        s = FakeSerial()
        s.ibuf = (struct.pack('>xxxBHB', 0x02, 0, 2) +
                  struct.pack('>xxxBHB', 0x02, 0x10, 2))
        d = kguv920pa.KGUV920PARadio(s)
        d._mmap = memmap.MemoryMapBytes(b'\x00' * 0x20)
        d._do_upload(0, 0x20, 0x10)