GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( ed28a0...ea8853 )
by Benjamin
85:42
created

Node.enableRxScanMode()   A

Complexity

Conditions 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 1
1
import threading
2
from queue import Queue, Empty
3
4
from libAnt.driver import Driver, DriverException
5
from libAnt.message import *
6
7
8
class Network:
9
    def __init__(self, key: bytes = b'\x00' * 8, name: str = None):
10
        self.key = key
11
        self.name = name
12
        self.number = 0
13
14
    def __str__(self):
15
        return self.name
16
17
18
class Pump(threading.Thread):
19
    def __init__(self, driver: Driver, out: Queue, onSucces, onFailure):
20
        super().__init__()
21
        self._stopper = threading.Event()
22
        self._driver = driver
23
        self._out = out
24
        self._waiters = []
25
        self._onSuccess = onSucces
26
        self._onFailure = onFailure
27
28
    def stop(self):
29
        self._stopper.set()
30
31
    def stopped(self):
32
        return self._stopper.isSet()
33
34
    def run(self):
35
        with self._driver as d:
36
            while not self._stopper.is_set():
37
                #  Write
38
                try:
39
                    outMsg = self._out.get(block=False)
40
                    self._waiters.append(outMsg)
41
                    d.write(outMsg)
42
                except Empty:
43
                    pass
44
                except DriverException:
45
                    self._stopper.set()
46
                    break
47
48
                # Read
49
                try:
50
                    msg = d.read()  # TODO: add timeout to driver
51
                    if msg.type == MESSAGE_CHANNEL_EVENT:
52
                        # This is a response to our outgoing message
53
                        for w in self._waiters:
54
                            if w.type == msg.content[1]:  # ACK
55
                                self._waiters.remove(w)
56
                                #  TODO: Call waiter callback from tuple (waiter, callback)
57
                                break
58
                    elif msg.type == MESSAGE_CHANNEL_BROADCAST_DATA:
59
                        bmsg = BroadcastMessage(msg.type, msg.content).build(msg.content)
60
                        try:
61
                            self._onSuccess(bmsg)
62
                        except Exception as e:
63
                            self._onFailure(e)
64
65
                except DriverException as e:
66
                    self._stopper.set()
67
                    self._onFailure(e)
68
                    break
69
70
71
class Node:
72
    def __init__(self, driver, name=None):
73
        self._driver = driver
74
        self._name = name
75
        self._out = Queue()
76
        self._pump = None
77
        self._configMessages = Queue()
78
79
    def __enter__(self):
80
        return self
81
82
    def __exit__(self, exc_type, exc_val, exc_tb):
83
        self.stop()
84
85
    def start(self, onSuccess, onFailure):
86
        if not self.isRunning():
87
            self._pump = Pump(self._driver, self._out, onSuccess, onFailure)
88
            self._pump.start()
89
90
    def enableRxScanMode(self, networkKey=ANTPLUS_NETWORK_KEY, channelType=CHANNEL_TYPE_ONEWAY_RECEIVE,
91
                         frequency: int = 2457, rxTimestamp: bool = True, rssi: bool = True, channelId: bool = True):
92
        self._out.put(SystemResetMessage())
93
        self._out.put(SetNetworkKeyMessage(0, networkKey))
94
        self._out.put(AssignChannelMessage(0, channelType))
95
        self._out.put(SetChannelIdMessage(0))
96
        self._out.put(SetChannelRfFrequencyMessage(0, frequency))
97
        self._out.put(EnableExtendedMessagesMessage())
98
        self._out.put(LibConfigMessage(rxTimestamp, rssi, channelId))
99
        self._out.put(OpenRxScanModeMessage())
100
101
    def stop(self):
102
        if self.isRunning():
103
            self._pump.stop()
104
            self._pump.join()
105
106
    def isRunning(self):
107
        if self._pump is None:
108
            return False
109
        return self._pump.is_alive()
110
111
    def getCapabilities(self):
112
        pass
113