# Transceiver: Layer 0 data transceiving ### *class* Transceiver.Transceiver.Transceiver(device, filter, onodeID, cache, catch, cryptographyInfo, network) Handling LoRa transceiving [🔗 Source](https://git.utopic.work/PierMesh/piermesh/src/branch/main/src/Transceiver/Transceiver.py) #### 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](/PierMesh/piermesh/src/branch/main/docs/Sponge/base.md#Sponge.base.Filter) #### tcache Data backend Daisy Cache * **Type:** [Daisy.Cache.Cache](/PierMesh/piermesh/src/branch/main/docs/Daisy/Cache.md#Daisy.Cache.Cache) #### tcatch Daisy Catch Cache for Catch operations * **Type:** [Daisy.Catch.Catch](/PierMesh/piermesh/src/branch/main/docs/Daisy/Catch.md#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=) 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 #### *async* sendMessage(message: Message)