blob: afa96d372becc08b033ccd7131f0cd8dee8bd769 [file] [log] [blame]
@startuml
participant RADIO
participant Driver
-> State: WaitingRxFrame
RADIO -> Driver: EV: FRAMESTART
activate Driver
activate RADIO
Driver -> Mutex: lock
activate Mutex
Driver -> State: RxHeader
deactivate Driver
RADIO -> Driver: EV: BCMATCH
activate Driver
Driver -->> RADIO: get_bcc()
RADIO --> Driver: BCC_INIT
Driver -> Driver: Check frame type: Data
Driver -> Driver: Check dest address: short
Driver -> RADIO: set_bcc(BCC_SHORT_ADDR)
deactivate Driver
RADIO -> Driver: EV: BCMATCH
activate Driver
Driver -->> RADIO: get_bcc()
RADIO --> Driver: BCC_SHORT_ADDR
Driver -> Driver: Check dest addr: Matched unicast
Driver -> Flags: ReceivingBroadcastFrame = false
Driver -> State: RxFrame
deactivate Driver
RADIO -> RADIO: EV: END / TASK: DISABLE
deactivate RADIO
RADIO -> Driver: EV: END
activate Driver
Driver -> Driver: Check CRC: OK
RADIO -> RADIO: EV: DISABLED / TASK: TXEN
Driver -> Driver: Prepare ACK
Driver -->> Flags: receivigBroadcastFrame?
Flags --> Driver: false
Driver -> Driver: Check if ACK requested: true
Driver -> State: TxAck
Driver -> Driver: set pending bit in ACK()
deactivate Driver
RADIO -> Driver: EV: DISABLED
RADIO -> RADIO: EV: READY / TASK: START
activate RADIO
RADIO -> Driver: EV: READY
activate Driver
Driver -> RADIO: disable_tifs_shorts_ack()
deactivate Driver
RADIO -> Driver: EV: FRAMESTART
RADIO -> RADIO: EV: END / TASK: DISABLE
deactivate RADIO
RADIO -> Driver: EV: END
activate Driver
Driver -> RADIO: disable_tifs_shorts_all()
Driver -> State: WaitingRxFrame
deactivate Driver
RADIO -> Driver: EV: DISABLED
activate Driver
Driver -> RADIO: TASK: RXEN
Driver -> Mutex: unlock
deactivate Mutex
Driver -> RADIO: clear_event(DISABLED)
deactivate Driver
Driver -> Higher_Layer: received()
@enduml