diff --git a/test_dongle.py b/examples/test_dongle.py similarity index 61% rename from test_dongle.py rename to examples/test_dongle.py index 1c61f97..b266e71 100644 --- a/test_dongle.py +++ b/examples/test_dongle.py @@ -11,13 +11,18 @@ with gex.DongleAdapter(gex.TrxRawUSB(remote=True), 0x10) as transport: # connect GEX client library to the remote slave client = gex.Client(transport) - do = gex.DOut(client, "led") - adc = gex.ADC(client, "adc") - while True: - do.toggle(confirm=True) - print(adc.read_smooth()) - time.sleep(0.2) + client.query_raw(type=gex.MSG_PING) + print("ok") + time.sleep(0.1) + + # do = gex.DOut(client, "led") + # adc = gex.ADC(client, "adc") + # + # while True: + # do.toggle(confirm=True) + # print(adc.read_smooth()) + # time.sleep(0.2) # adc = gex.ADC(client, "adc") # for j in range(10): diff --git a/gex/transport.py b/gex/transport.py index 2145607..57fe7d2 100644 --- a/gex/transport.py +++ b/gex/transport.py @@ -72,7 +72,7 @@ class DongleAdapter(BaseGexTransport): pld_len = pp.u8() pld = pp.blob(pld_len) - # print("Rx chunk(%d): %s" % (pld_len, pld)) + #print("Rx chunk(%d): %s" % (pld_len, pld)) if slave_addr == self._slaveAddr: if self._listener is not None: @@ -84,8 +84,6 @@ class DongleAdapter(BaseGexTransport): def write(self, buffer): # multipart sending pb = gex.PayloadBuilder() - # pb.u8(0x47) - # pb.u8(0xB8) pb.u8(ord('m')) pb.u8(self._slaveAddr) pb.u16(len(buffer)) @@ -101,6 +99,9 @@ class DongleAdapter(BaseGexTransport): spaceused = len(pb.buf) fits = min(64-spaceused, len(buffer)) pb.blob(buffer[start:fits]) + + # TODO rewrite this to send_raw + if (spaceused + fits) < 64: pb.zeros(64 - (spaceused + fits)) start += fits @@ -126,28 +127,25 @@ class DongleAdapter(BaseGexTransport): def poll(self, timeout, testfunc=None): self._transport.poll(timeout, testfunc) - def gw_reset(self): - pb = gex.PayloadBuilder() - # pb.u8(0x47) - # pb.u8(0xB8) - pb.u8(ord('r')) + def gw_write_raw(self, pb:gex.PayloadBuilder): spaceused = len(pb.buf) pb.zeros(64 - spaceused) self._transport.write(pb.close()) + def gw_reset(self): + pb = gex.PayloadBuilder() + pb.u8(ord('r')) + self.gw_write_raw(pb) + def gw_add_nodes(self, nodes): pb = gex.PayloadBuilder() - # pb.u8(0x47) - # pb.u8(0xB8) pb.u8(ord('n')) pb.u8(len(nodes)) for n in nodes: pb.u8(n) - spaceused = len(pb.buf) - pb.zeros(64 - spaceused) - self._transport.write(pb.close()) + self.gw_write_raw(pb) def gw_get_net_id(self): if self._address is not None: @@ -155,12 +153,8 @@ class DongleAdapter(BaseGexTransport): return self._address pb = gex.PayloadBuilder() - # pb.u8(0x47) - # pb.u8(0xB8) pb.u8(ord('i')) - spaceused = len(pb.buf) - pb.zeros(64 - spaceused) - self._transport.write(pb.close()) + self.gw_write_raw(pb) self.poll(0.5, lambda: self._address is not None) return self._address