Transmit routines implementation.
Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries.
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "phy.h"
#include "sysConfig.h"
#include "sysTimer.h"
#include "nwk.h"
#include "nwkTx.h"
#include "nwkFrame.h"
#include "nwkRoute.h"
#include "nwkCommand.h"
#include "nwkSecurity.h"
Macros | |
#define | NWK_TX_ACK_WAIT_TIMER_INTERVAL 50 /* ms */ |
#define | NWK_TX_DELAY_JITTER_MASK 0x07 |
#define | NWK_TX_DELAY_TIMER_INTERVAL 10 /* ms */ |
Enumerations | |
enum | { NWK_TX_STATE_ENCRYPT = 0x10, NWK_TX_STATE_WAIT_DELAY = 0x11, NWK_TX_STATE_DELAY = 0x12, NWK_TX_STATE_SEND = 0x13, NWK_TX_STATE_WAIT_CONF = 0x14, NWK_TX_STATE_SENT = 0x15, NWK_TX_STATE_WAIT_ACK = 0x16, NWK_TX_STATE_CONFIRM = 0x17 } |
Functions | |
bool | nwkTxAckReceived (NWK_DataInd_t *ind) |
static void | nwkTxAckWaitTimerHandler (SYS_Timer_t *timer) |
void | nwkTxBroadcastFrame (NwkFrame_t *frame) |
void | nwkTxConfirm (NwkFrame_t *frame, uint8_t status) |
static uint8_t | nwkTxConvertPhyStatus (uint8_t status) |
static void | nwkTxDelayTimerHandler (SYS_Timer_t *timer) |
void | nwkTxFrame (NwkFrame_t *frame) |
void | nwkTxInit (void) |
Initializes the Tx module. More... | |
void | nwkTxTaskHandler (void) |
Tx Module task handler. More... | |
void | PHY_DataConf (uint8_t status) |
Variables | |
static SYS_Timer_t | nwkTxAckWaitTimer |
static SYS_Timer_t | nwkTxDelayTimer |
static NwkFrame_t * | nwkTxPhyActiveFrame |
#define NWK_TX_ACK_WAIT_TIMER_INTERVAL 50 /* ms */ |
Referenced by nwkTxInit(), and nwkTxTaskHandler().
#define NWK_TX_DELAY_JITTER_MASK 0x07 |
Referenced by nwkTxBroadcastFrame(), and nwkTxFrame().
#define NWK_TX_DELAY_TIMER_INTERVAL 10 /* ms */ |
Referenced by nwkTxInit().
anonymous enum |
bool nwkTxAckReceived | ( | NWK_DataInd_t * | ind | ) |
References command, NwkCommandAck_t::control, NWK_DataInd_t::data, if(), NULL, NWK_TX_STATE_CONFIRM, NWK_TX_STATE_WAIT_ACK, nwkFrameNext(), NwkCommandAck_t::seq, and NWK_DataInd_t::size.
Referenced by nwkRxSeriveDataInd().
|
static |
References NULL, NWK_NO_ACK_STATUS, NWK_TX_STATE_WAIT_ACK, nwkFrameNext(), nwkTxConfirm(), NwkFrame_t::state, SYS_TimerStart(), and NwkFrame_t::tx.
Referenced by nwkTxInit().
void nwkTxBroadcastFrame | ( | NwkFrame_t * | frame | ) |
References NwkIb_t::addr, NwkFrame_t::data, NwkFrame_t::header, NwkFrameHeader_t::macDstAddr, NwkFrameHeader_t::macDstPanId, NwkFrameHeader_t::macFcf, NwkFrameHeader_t::macSeq, NwkIb_t::macSeqNum, NwkFrameHeader_t::macSrcAddr, NULL, NWK_BROADCAST_ADDR, NWK_SUCCESS_STATUS, NWK_TX_DELAY_JITTER_MASK, NWK_TX_STATE_DELAY, nwkFrameAlloc(), nwkIb, NwkFrame_t::size, NwkFrame_t::state, and NwkFrame_t::tx.
Referenced by nwkRxHandleReceivedFrame().
void nwkTxConfirm | ( | NwkFrame_t * | frame, |
uint8_t | status | ||
) |
References NWK_TX_STATE_CONFIRM, NwkFrame_t::state, and NwkFrame_t::tx.
Referenced by nwkTxAckWaitTimerHandler().
|
static |
References NWK_ERROR_STATUS, NWK_PHY_CHANNEL_ACCESS_FAILURE_STATUS, NWK_PHY_NO_ACK_STATUS, NWK_SUCCESS_STATUS, PHY_STATUS_CHANNEL_ACCESS_FAILURE, PHY_STATUS_NO_ACK, and PHY_STATUS_SUCCESS.
Referenced by PHY_DataConf().
|
static |
References NULL, NWK_TX_STATE_SEND, NWK_TX_STATE_WAIT_DELAY, nwkFrameNext(), NwkFrame_t::state, SYS_TimerStart(), and NwkFrame_t::tx.
Referenced by nwkTxInit().
void nwkTxFrame | ( | NwkFrame_t * | frame | ) |
References NwkIb_t::addr, header, NwkFrame_t::header, NwkFrameHeader_t::macDstAddr, NwkFrameHeader_t::macDstPanId, NwkFrameHeader_t::macFcf, NwkFrameHeader_t::macSeq, NwkIb_t::macSeqNum, NwkFrameHeader_t::macSrcAddr, NWK_BROADCAST_ADDR, NWK_BROADCAST_PANID, NWK_SUCCESS_STATUS, NWK_TX_CONTROL_BROADCAST_PAN_ID, NWK_TX_CONTROL_DIRECT_LINK, NWK_TX_CONTROL_ROUTING, NWK_TX_DELAY_JITTER_MASK, NWK_TX_STATE_DELAY, NWK_TX_STATE_ENCRYPT, NwkFrameHeader_t::nwkDstAddr, NwkFrameHeader_t::nwkFcf, nwkIb, NwkIb_t::panId, NwkFrameHeader_t::security, NwkFrame_t::state, and NwkFrame_t::tx.
Referenced by nwkDataReqSendFrame(), and nwkRxSendAck().
void nwkTxInit | ( | void | ) |
Initializes the Tx module.
References SYS_Timer_t::handler, SYS_Timer_t::interval, SYS_Timer_t::mode, NULL, NWK_TX_ACK_WAIT_TIMER_INTERVAL, NWK_TX_DELAY_TIMER_INTERVAL, nwkTxAckWaitTimerHandler(), nwkTxDelayTimerHandler(), and SYS_TIMER_INTERVAL_MODE.
Referenced by NWK_Init().
void nwkTxTaskHandler | ( | void | ) |
Tx Module task handler.
References NwkIb_t::addr, NwkFrame_t::header, NwkIb_t::lock, NULL, NWK_ACK_WAIT_TIME, NWK_SUCCESS_STATUS, NWK_TX_ACK_WAIT_TIMER_INTERVAL, NWK_TX_STATE_CONFIRM, NWK_TX_STATE_DELAY, NWK_TX_STATE_ENCRYPT, NWK_TX_STATE_SEND, NWK_TX_STATE_SENT, NWK_TX_STATE_WAIT_ACK, NWK_TX_STATE_WAIT_CONF, NWK_TX_STATE_WAIT_DELAY, NwkFrameHeader_t::nwkFcf, nwkFrameFree(), nwkFrameNext(), nwkIb, NwkFrameHeader_t::nwkSrcAddr, PHY_DataReq(), NwkFrame_t::size, NwkFrame_t::state, SYS_TimerStart(), and NwkFrame_t::tx.
Referenced by NWK_TaskHandler().
void PHY_DataConf | ( | uint8_t | status | ) |
References NwkIb_t::lock, NULL, NWK_TX_STATE_SENT, nwkIb, nwkTxConvertPhyStatus(), NwkFrame_t::state, and NwkFrame_t::tx.
Referenced by PHY_TaskHandler().
|
static |
|
static |
|
static |