ref: ad1df2d2a01bd064e643287ff305673dfede3ce3
dir: /SX127xHsm.qm/
<?xml version="1.0" encoding="UTF-8"?>
<model version="5.2.5" links="0">
<framework name="qpc"/>
<package name="net.frst.heymac" stereotype="0x02">
<class name="SX127x" superclass="qpc::QHsm">
<documentation>// HSM for SX127x LoRa Phy layer</documentation>
<attribute name="timeEvt" type="QTimeEvt" visibility="0x02" properties="0x00"/>
<attribute name="actionQueue" type="QEQueue" visibility="0x00" properties="0x00"/>
<statechart properties="0x01">
<initial target="../1">
<action>QTimeEvt_armX(&me->timeEvt, BSP_TICKS_PER_SEC/2, BSP_TICKS_PER_SEC/2);</action>
<initial_glyph conn="26,6,5,0,4,6">
<action box="0,-2,10,2"/>
</initial_glyph>
</initial>
<state name="_initializing">
<entry brief="tmout_evt.post_in(0.0)"/>
<tran trig="_PHY_TMOUT">
<choice target="../../../2">
<guard brief="sx127x.open()">true</guard>
<choice_glyph conn="36,20,4,0,8">
<action box="-11,4,13,2"/>
</choice_glyph>
</choice>
<tran_glyph conn="20,20,3,-1,16">
<action box="0,-2,20,2"/>
</tran_glyph>
</tran>
<state_glyph node="20,12,20,10">
<entry box="1,2,19,2"/>
</state_glyph>
</state>
<state name="_scheduling">
<entry brief="post_in(delay)"/>
<tran trig="_PHY_TMOUT">
<choice target="../../../3">
<guard>true</guard>
<choice_glyph conn="36,40,5,3,6,-8,2">
<action box="1,0,10,2"/>
</choice_glyph>
</choice>
<choice target="../../../4/2">
<guard>true</guard>
<choice_glyph conn="36,40,4,0,6,18,8">
<action box="1,0,10,2"/>
</choice_glyph>
</choice>
<choice target="../../../4/3">
<guard>true</guard>
<choice_glyph conn="36,40,5,0,-10,14">
<action box="1,0,10,2"/>
</choice_glyph>
</choice>
<tran_glyph conn="20,36,3,-1,16,4">
<action box="0,-2,10,2"/>
</tran_glyph>
</tran>
<tran trig="_PHY_RQST">
<tran_glyph conn="20,38,3,-1,12">
<action box="0,-2,10,2"/>
</tran_glyph>
</tran>
<state_glyph node="20,28,20,16">
<entry box="1,2,18,2"/>
</state_glyph>
</state>
<state name="_txing">
<entry brief="write_opmode(TX)"/>
<exit brief="tmout_evt.disarm()"/>
<tran trig="_DIO_TX_DONE" target="../../2">
<tran_glyph conn="44,36,3,0,24,-10,-30,2">
<action box="0,-2,18,2"/>
</tran_glyph>
</tran>
<tran trig="_PHY_TMOUT">
<tran_glyph conn="44,40,3,-1,14">
<action box="0,-2,12,2"/>
</tran_glyph>
</tran>
<tran trig="_PHY_RQST">
<tran_glyph conn="44,38,3,-1,14">
<action box="0,-2,12,2"/>
</tran_glyph>
</tran>
<tran trig="_DIO_MODE_RDY" target="../../2">
<tran_glyph conn="44,42,3,0,24,-16,-30,2">
<action box="0,-2,16,2"/>
</tran_glyph>
</tran>
<state_glyph node="44,28,18,16">
<entry box="1,2,16,2"/>
<exit box="1,4,16,2"/>
</state_glyph>
</state>
<state name="_lingering">
<exit brief="write_opmode(STBY)"/>
<tran trig="_PHY_RQST">
<choice target="../../../2">
<guard brief="_default_action">true</guard>
<choice_glyph conn="34,90,5,0,34,-64,-30,2">
<action box="1,-2,13,2"/>
</choice_glyph>
</choice>
<choice>
<guard brief="else">// not empty</guard>
<action>// not empty 2</action>
<choice_glyph conn="34,90,4,-1,2,26">
<action box="1,0,10,2"/>
</choice_glyph>
</choice>
<tran_glyph conn="20,90,3,-1,14">
<action box="0,-2,12,2"/>
</tran_glyph>
</tran>
<tran trig="_PHY_TMOUT" target="../../2">
<tran_glyph conn="20,94,3,0,48,-68,-30,2">
<action box="0,-2,12,2"/>
</tran_glyph>
</tran>
<state name="_sleeping">
<state_glyph node="50,54,10,8"/>
</state>
<state name="_listening">
<entry brief="prdc_evt.post_every()"/>
<exit brief="prdc_evt.disarm()"/>
<tran trig="_DIO_VALID_HDR" target="../4">
<tran_glyph conn="22,66,3,0,20,2">
<action box="0,-2,18,2"/>
</tran_glyph>
</tran>
<tran trig="_PHY_PRDC">
<action brief="updt_noise()"/>
<tran_glyph conn="22,64,3,-1,20">
<action box="0,-2,20,2"/>
</tran_glyph>
</tran>
<tran trig="_DIO_RX_TMOUT" target="../../../2">
<tran_glyph conn="22,84,3,0,46,-58,-30,2">
<action box="0,-2,14,2"/>
</tran_glyph>
</tran>
<tran trig="_DIO_RX_DONE" target="../../../2">
<tran_glyph conn="22,82,3,0,46,-56,-30,2">
<action box="0,-2,18,2"/>
</tran_glyph>
</tran>
<state name="_rxing">
<exit brief="tmout_evt.disarm()"/>
<tran trig="_PHY_RQST">
<tran_glyph conn="24,76,3,-1,18">
<action box="0,-2,10,2"/>
</tran_glyph>
</tran>
<state_glyph node="24,68,22,10">
<exit box="1,2,19,2"/>
</state_glyph>
</state>
<state_glyph node="22,54,26,32">
<entry box="1,2,19,2"/>
<exit box="1,4,17,2"/>
</state_glyph>
</state>
<state_glyph node="20,48,42,50">
<exit box="1,2,17,2"/>
</state_glyph>
</state>
<state_diagram size="95,117"/>
</statechart>
</class>
<class name="ActionEvt" superclass="qpc::QEvt"/>
</package>
<directory name="src">
<file name="sx127x.c">
<text>#include "qpc.h"
#include "bsp.h"
Q_DEFINE_THIS_FILE
enum SX127x_Signals {
_PHY_TMOUT_SIG = Q_USER_SIG,
_PHY_RQST_SIG,
_DIO_TX_DONE_SIG,
_DIO_MODE_RDY_SIG,
_DIO_VALID_HDR_SIG,
_PHY_PRDC_SIG,
_DIO_RX_TMOUT_SIG,
_DIO_RX_DONE_SIG
}
/* Active object class -----------------------------------------------------*/
$declare${net.frst.heymac::ActionEvt}
$declare${net.frst.heymac::SX127x}
#define LINGER_TIME \
(QTimeEvtCtr)((BSP_random() % BSP_TICKS_PER_SEC) + BSP_TICKS_PER_SEC)
$define${net.frst.heymac::SX127x}
$define${net.frst.heymac::ActionEvt}</text>
</file>
<file name="sx127x.h">
<text>#ifndef SX127X_H
#define SX127X_H
enum SX127x_Signals {
_PHY_TMOUT_SIG = Q_USER_SIG,
_PHY_RQST_SIG,
_DIO_TX_DONE_SIG,
_DIO_MODE_RDY_SIG,
_DIO_VALID_HDR_SIG,
_PHY_PRDC_SIG,
_DIO_RX_TMOUT_SIG,
_DIO_RX_DONE_SIG
}
#endif</text>
</file>
<file name="main.c" properties="external"/>
</directory>
</model>