2.8 KiB
Transceiver: Layer 0 data transceiving
class Transceiver.Transceiver.Transceiver(device, filter, onodeID, cache, catch, cryptographyInfo, network)
Handling LoRa transceiving
cLog
Reference to run.Node.cLog for logging
cryptographyInfo
Cryptography instance for encrypting transmissions
- Type: Cryptography.WhaleSong.DHEFern
filter
Sponge.base.Filter instance for filtering packets
- Type: Sponge.base.Filter
tcache
Data backend Daisy Cache
- Type: Daisy.Cache.Cache
tcatch
Daisy Catch Cache for Catch operations
- Type: Daisy.Catch.Catch
notConnected
Whether the transceiver has been connected to yet
- Type: bool
acks
Acknowledgements received per packet
- Type: dict
onodeID
PierMesh node ID
messages
Message completion acknowldgements
- Type: dict
Notes
TODO: Check if we can remove cpid
async addPackets(data, sender, senderName, recipient, recipientNode, directID=False, packetsClass=None, encrypt=False)
Convert binary data to Message and send each packet :param data: Data to send :type data: bytes :param sender: Peer/Node ID of sender :param senderName: ID matching specific user title :param recipient: Peer/Node ID of recipient :param recipientNode: Node ID of node to route to :param directID: If set send to this Node only :param packetsClass: Protocol for message
async announce()
Announce loop runner
awaitFullResponse(pid)
TODO
Wait for message completed response
async awaitResponse(pid)
Wait for acknowldgement response
async initNodeDH(dhefOb, recipientNode, onodeID)
Send Diffie Hellman initialization message
onConnection(interface, topic=<class 'pubsub.core.callables.AUTO_TOPIC'>)
When the node connects start announce loop and end the waiting loop
onReceive(packet, interface)
Run each received packet through Sponge.base.Filters sieve using a new event loop
async progressCheck()
Checks if acknowldgement was received per packet and if not resends
responseCheck(packet)
On acknowldgement response set acks based on response TODO: Stop this being sent to sieve
send(packet, recipientNode=False)
Send individual packet
- Parameters: recipientNode – If set send to specified node
async sendAnnounce(dontRespond=False)
Send an announce packet (contains basic network mapping information) every so often so new nodes autoconnect