Class BabelLoRaDemo

java.lang.Object
pt.unl.fct.di.novasys.babel.core.GenericProtocol
pt.paradigmshift.iot.demos.BabelLoRaDemo
All Implemented Interfaces:
BabelDemo

public class BabelLoRaDemo extends pt.unl.fct.di.novasys.babel.core.GenericProtocol implements BabelDemo
Minimal LoRa send/receive demo built on the ParadigmShift radio stack.

It shows the radio-agnostic pattern that the gateway uses in production: the application talks only to the shared babel-radio-api surface — it sends with a BroadcastRadioPacketRequest addressed to LoRaProtocol.PROTOCOL_ID and receives via the generic RadioPacketReceivedNotification. The same code would work against any radio that implements babel-radio-api; nothing here is LoRa-specific except the target protocol id and the optional LoRaPacketReceivedNotification down-cast used to print the RSSI.

Two roles, selected by the constructor flag:

  • sender — broadcasts "ParadigmShift LoRa #<n>" every few seconds (and also prints anything it hears);
  • receiver — only listens and prints received frames.
Run two Raspberry Pis, each with a Waveshare SX126X HAT — one as sender, one as receiver — to see frames cross the air.

Runs only on a Pi with the LoRa HAT attached. Developed by ParadigmShift, Lda.

Author:
ParadigmShift, Lda (info@paradigmshift.pt)
  • Nested Class Summary

    Nested classes/interfaces inherited from class pt.unl.fct.di.novasys.babel.core.GenericProtocol

    pt.unl.fct.di.novasys.babel.core.GenericProtocol.ProtocolMetricsBabelMetrics
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    Config key: UART device the LoRa HAT is on.
    static final String
     
    static final String
    Config key: 16-bit on-air address of this node (hex, e.g.
    static final String
     

    Fields inherited from class pt.unl.fct.di.novasys.babel.core.GenericProtocol

    babel, babelSecurity

    Fields inherited from interface pt.unl.fct.di.tardis.babel.iot.demos.BabelDemo

    PROTO_ID, PROTO_NAME
  • Constructor Summary

    Constructors
    Constructor
    Description
    BabelLoRaDemo(boolean sender)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Builds and starts this demo's Babel runtime: obtain Babel.getInstance(), load config, instantiate and register the control/radio protocols the demo needs plus the demo itself, init(...) each in dependency order, and finally Babel.start() the event loop.
    void
     

    Methods inherited from class pt.unl.fct.di.novasys.babel.core.GenericProtocol

    addSecret, addSecret, addSecret, addSecret, cancelTimer, closeConnection, closeConnection, closeConnection, closeConnection, closeConnection, closeConnection, createChannel, createSecureChannel, createSecureChannel, createSecureChannel, createSecureChannelWithAliases, createSecureChannelWithAliases, createSecureChannelWithIdentities, createSecureChannelWithIdentities, createSecureChannelWithProtoIdentities, enableGenericMetrics, generateIdentity, generateIdentity, generateIdentity, generateIdentity, generateIdentity, generateIdentity, generateIdentity, generateSecret, generateSecret, generateSecret, generateSecret, generateSecretFromPassword, generateSecretFromPassword, generateSecretFromPassword, generateSecretFromPassword, getChannelOrThrow, getDefaultChannel, getDefaultProtoIdentity, getDefaultProtoIdentityCrypt, getDefaultProtoSecret, getMillisSinceBabelStart, getOrGenerateDefaultProtoIdentity, getProtoId, getProtoName, hasProtocolThreadStarted, openConnection, openConnection, openConnection, openConnection, registerChannelEventHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageHandler, registerMessageSerializer, registerMetric, registerReplyHandler, registerRequestHandler, registerSharedChannel, registerTimerHandler, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendReply, sendRequest, setDefaultChannel, setDefaultProtoIdentity, setDefaultProtoIdentity, setDefaultProtoSecret, setupPeriodicTimer, setupTimer, startEventThread, subscribeNotification, triggerNotification, unsubscribeNotification

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • BabelLoRaDemo

      public BabelLoRaDemo(boolean sender)
      Parameters:
      sender - true to broadcast periodically, false to run as a pure receiver
  • Method Details

    • init

      public void init(Properties props) throws pt.unl.fct.di.novasys.babel.exceptions.HandlerRegistrationException
      Specified by:
      init in class pt.unl.fct.di.novasys.babel.core.GenericProtocol
      Throws:
      pt.unl.fct.di.novasys.babel.exceptions.HandlerRegistrationException
    • execute

      public void execute() throws Exception
      Description copied from interface: BabelDemo
      Builds and starts this demo's Babel runtime: obtain Babel.getInstance(), load config, instantiate and register the control/radio protocols the demo needs plus the demo itself, init(...) each in dependency order, and finally Babel.start() the event loop. Main calls this once.
      Specified by:
      execute in interface BabelDemo
      Throws:
      Exception