mirror of https://github.com/ARMmbed/mbed-os.git
MCUXpresso: Update KW41 nanostack drivers to not enter deep sleep when active
Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>pull/10796/head
parent
85ef683bfc
commit
9ebbdbf1bb
|
@ -13,6 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#include "mbed_power_mgmt.h"
|
||||
#include "common_functions.h"
|
||||
#include "platform/arm_hal_interrupt.h"
|
||||
#include "platform/arm_hal_phy.h"
|
||||
|
@ -87,8 +88,9 @@ static uint8_t MAC64_addr[8];
|
|||
|
||||
static xcvrState_t mPhySeqState;
|
||||
static uint8_t rf_mac_handle;
|
||||
volatile uint8_t rf_ed_value = 0;
|
||||
static bool rf_ack_pending_state = false;
|
||||
static volatile uint8_t rf_ed_value = 0;
|
||||
static volatile bool rf_ack_pending_state = false;
|
||||
static volatile bool sleep_blocked = false;
|
||||
|
||||
static NanostackRfPhyKw41z *rf = NULL;
|
||||
|
||||
|
@ -155,6 +157,11 @@ static int8_t rf_device_register(void)
|
|||
static void rf_device_unregister(void)
|
||||
{
|
||||
arm_net_phy_unregister(rf_radio_driver_id);
|
||||
|
||||
if (sleep_blocked) {
|
||||
sleep_manager_unlock_deep_sleep();
|
||||
sleep_blocked = false;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -209,16 +216,29 @@ static int8_t rf_interface_state_control(phy_interface_state_e new_state, uint8_
|
|||
/*Reset PHY driver and set to idle*/
|
||||
case PHY_INTERFACE_RESET:
|
||||
rf_abort();
|
||||
if (sleep_blocked) {
|
||||
sleep_manager_unlock_deep_sleep();
|
||||
sleep_blocked = false;
|
||||
}
|
||||
break;
|
||||
/*Disable PHY Interface driver*/
|
||||
case PHY_INTERFACE_DOWN:
|
||||
rf_abort();
|
||||
if (sleep_blocked) {
|
||||
sleep_manager_unlock_deep_sleep();
|
||||
sleep_blocked = false;
|
||||
}
|
||||
break;
|
||||
/*Enable PHY Interface driver*/
|
||||
case PHY_INTERFACE_UP:
|
||||
if (PhyPlmeSetCurrentChannelRequest(rf_channel, 0)) {
|
||||
return 1;
|
||||
}
|
||||
if (!sleep_blocked) {
|
||||
/* Disable enter to deep sleep when transfer active */
|
||||
sleep_manager_lock_deep_sleep();
|
||||
sleep_blocked = true;
|
||||
}
|
||||
rf_receive();
|
||||
break;
|
||||
/*Enable wireless interface ED scan mode*/
|
||||
|
@ -226,6 +246,11 @@ static int8_t rf_interface_state_control(phy_interface_state_e new_state, uint8_
|
|||
if (PhyPlmeSetCurrentChannelRequest(rf_channel, 0)) {
|
||||
return 1;
|
||||
}
|
||||
if (!sleep_blocked) {
|
||||
/* Disable enter to deep sleep when transfer active */
|
||||
sleep_manager_lock_deep_sleep();
|
||||
sleep_blocked = true;
|
||||
}
|
||||
rf_abort();
|
||||
rf_mac_ed_state_enable();
|
||||
break;
|
||||
|
@ -234,6 +259,11 @@ static int8_t rf_interface_state_control(phy_interface_state_e new_state, uint8_
|
|||
if (PhyPlmeSetCurrentChannelRequest(rf_channel, 0)) {
|
||||
return 1;
|
||||
}
|
||||
if (!sleep_blocked) {
|
||||
/* Disable enter to deep sleep when transfer active */
|
||||
sleep_manager_lock_deep_sleep();
|
||||
sleep_blocked = true;
|
||||
}
|
||||
rf_receive();
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue