15#include "IEEE802_11_Phy.h"
16#include "../BatteryModel/BatteryModel.h"
18PHY_TX_STATUS get_radio_state(PIEEE802_11_PHY_VAR phy)
20 return phy->radio.radioState;
23static bool isChangeRadioIsPermitted(PIEEE802_11_MAC_VAR mac,
24 PIEEE802_11_PHY_VAR phy,
25 PHY_TX_STATUS newState,
27 UINT64 transmissionId)
29 PHY_TX_STATUS oldState = phy->radio.radioState;
31 if (newState == RX_ON_BUSY && isMacTransmittingState(mac))
34 if (oldState == RX_ON_IDLE)
37 if (phy->radio.transmissionId == transmissionId)
40 if (phy->radio.peerId != peerId)
43 if (phy->radio.transmissionId != transmissionId)
46 if (oldState == RX_ON_BUSY && newState != RX_ON_IDLE)
49 if (oldState == TRX_ON_BUSY && newState != RX_ON_IDLE)
55bool set_radio_state(NETSIM_ID d,
59 UINT64 transmissionId)
61 PIEEE802_11_PHY_VAR phy = IEEE802_11_PHY(d, in);
62 PIEEE802_11_MAC_VAR mac = IEEE802_11_MAC(d, in);
63 if (phy == NULL) {
return false; }
64 if (phy->radio.radioState == RX_OFF)
67 if (!isChangeRadioIsPermitted(mac, phy, state, peerId, transmissionId))
70 ptrBATTERY battery = phy->battery;
74 isChange = battery_set_mode(battery, state, pstruEventDetails->dEventTime);
79 phy->radio.radioState = state;
80 phy->radio.peerId = peerId;
81 phy->radio.transmissionId = transmissionId;
84 phy->radio.radioState = RX_OFF;
85 phy->radio.eventId = pstruEventDetails->nEventId;
89bool is_radio_idle(PIEEE802_11_PHY_VAR phy)
91 return (phy->radio.radioState==RX_ON_IDLE);