From 432198f178528d870ee90c6eed9ad754136e3e1a Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 19 Jun 2015 20:46:01 +0300 Subject: [PATCH] disabling RF (work-in-progress) --- cores/esp8266/Esp.h | 21 +++++++++++++++------ cores/esp8266/core_esp8266_main.cpp | 8 +++++++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index 2b58b79d1..d264690a9 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -45,13 +45,22 @@ typedef enum { #define cli() ets_intr_lock() // IRQ Disable #define sei() ets_intr_unlock() // IRQ Enable -enum WakeMode { - WAKE_RF_DEFAULT = 0, // RF_CAL or not after deep-sleep wake up, depends on init data byte 108. - WAKE_RFCAL = 1, // RF_CAL after deep-sleep wake up, there will be large current. - WAKE_NO_RFCAL = 2, // no RF_CAL after deep-sleep wake up, there will only be small current. - WAKE_RF_DISABLED = 4 // disable RF after deep-sleep wake up, just like modem sleep, there will be the smallest current. +enum RFMode { + RF_DEFAULT = 0, // RF_CAL or not after deep-sleep wake up, depends on init data byte 108. + RF_CAL = 1, // RF_CAL after deep-sleep wake up, there will be large current. + RF_NO_CAL = 2, // no RF_CAL after deep-sleep wake up, there will only be small current. + RF_DISABLED = 4 // disable RF after deep-sleep wake up, just like modem sleep, there will be the smallest current. }; +#define RF_MODE(mode) extern "C" int __get_rf_mode() { return mode; } + +// compatibility definitions +#define WakeMode RFMode +#define WAKE_RF_DEFAULT RF_DEFAULT +#define WAKE_RFCAL RF_CAL +#define WAKE_NO_RFCAL RF_NO_CAL +#define WAKE_RF_DISABLED RF_DISABLED + typedef enum { FM_QIO = 0x00, FM_QOUT = 0x01, @@ -72,7 +81,7 @@ class EspClass { void wdtDisable(); void wdtFeed(); - void deepSleep(uint32_t time_us, WakeMode mode = WAKE_RF_DEFAULT); + void deepSleep(uint32_t time_us, RFMode mode = RF_DEFAULT); void reset(); void restart(); diff --git a/cores/esp8266/core_esp8266_main.cpp b/cores/esp8266/core_esp8266_main.cpp index 0142ba9e8..0b165fcaf 100644 --- a/cores/esp8266/core_esp8266_main.cpp +++ b/cores/esp8266/core_esp8266_main.cpp @@ -118,9 +118,15 @@ void init_done() { esp_schedule(); } +extern "C" int __get_rf_mode() __attribute__((weak)); +extern "C" int __get_rf_mode() +{ + return 0; // default mode +} + extern "C" { void user_rf_pre_init() { - + system_phy_set_rfoption(__get_rf_mode()); } }