📄 phy.h
字号:
/*
V0.1 Initial Release 10/July/2006 RBR
*/
#ifndef PHY_H
#define PHY_H
#include "compiler.h"
#include "halstack.h"
#define aMaxPHYPacketSize 127
#define aTurnaroundTime 12
#define MAX_TX_TRANSMIT_TIME (SYMBOLS_TO_MACTICKS(150)) //a little long..
typedef enum _RADIO_STATUS_ENUM {
RADIO_STATUS_OFF,
RADIO_STATUS_RX_ON,
RADIO_STATUS_TX_ON,
RADIO_STATUS_RXTX_ON
}RADIO_STATUS_ENUM;
typedef struct _PHY_PIB {
PHY_FREQ_ENUM phyCurrentFrequency; //current frequency in KHz (2405000 = 2.405 GHz)
BYTE phyCurrentChannel;
UINT32 phyChannelsSupported;
BYTE phyTransmitPower;
BYTE phyCCAMode;
union _PHY_DATA_flags {
BYTE val;
struct {
unsigned txFinished:1; //indicates if TX at PHY level is finished...
unsigned txBuffLock:1; //lock the TX buffer.
}bits;
}flags;
UINT32 txStartTime;
BYTE *currentTxFrm; //current frame
BYTE currentTxFlen; //current TX frame length
}PHY_PIB;
typedef union _PHY_ARGS {
struct _PHY_INIT_RADIO {
RADIO_FLAGS radio_flags;
}phy_init_radio_args;
}PHY_ARGS;
typedef struct _PHY_SERVICE {
LRWPAN_SVC_ENUM cmd;
PHY_ARGS args;
LRWPAN_STATUS_ENUM status;
}PHY_SERVICE;
typedef enum _PHY_STATE_ENUM {
PHY_STATE_IDLE,
PHY_STATE_COMMAND_START,
PHY_STATE_TX_WAIT
} PHY_STATE_ENUM;
extern PHY_STATE_ENUM phyState;
extern PHY_PIB phy_pib;
extern PHY_SERVICE a_phy_service;
extern BYTE tmpTxBuff[LRWPAN_MAX_FRAME_SIZE];
//prototypes
void phyFSM(void);
void phyInit(void );
#define phyIdle() (phyState == PHY_STATE_IDLE)
#define phyBusy() (phyState != PHY_STATE_IDLE)
#define phyTxLocked() (phy_pib.flags.bits.txBuffLock == 1)
#define MACIsPutReady() (phy_pib.flags.bits.txBuffLock == 0)
#define phyTxUnLocked() (phy_pib.flags.bits.txBuffLock == 0)
#define phyGrabTxLock() phy_pib.flags.bits.txBuffLock = 1
#define phyReleaseTxLock() phy_pib.flags.bits.txBuffLock = 0
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -