1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-25 20:02:37 +03:00

Declare __get_adc_mode and __get_rf_mode with C++ linkage

Workaround for #1759. Using extern "C" qualifiers in sketch breaks compilation in Arduino IDE 1.6.8.
This commit is contained in:
Ivan Grokhotkov 2016-03-13 22:11:19 +03:00
parent 9d4208ef3b
commit 730764075e
3 changed files with 22 additions and 2 deletions

View File

@ -55,7 +55,8 @@ enum RFMode {
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; }
#define RF_MODE(mode) int __get_rf_mode() { return mode; }
#define RF_PRE_INIT() void __run_user_rf_pre_init()
// compatibility definitions
#define WakeMode RFMode
@ -71,7 +72,7 @@ enum ADCMode {
ADC_VDD = 255
};
#define ADC_MODE(mode) extern "C" int __get_adc_mode(void) { return (int) (mode); }
#define ADC_MODE(mode) int __get_adc_mode(void) { return (int) (mode); }
typedef enum {
FM_QIO = 0x00,

View File

@ -242,6 +242,14 @@ static const uint8_t ICACHE_FLASH_ATTR phy_init_data[128] =
[114] = 2
};
// These functions will be overriden from C++ code.
// Unfortunately, we can't use extern "C" because Arduino preprocessor
// doesn't generate forward declarations for extern "C" functions correctly,
// so we use mangled names here.
#define __get_adc_mode _Z14__get_adc_modev
#define __get_rf_mode _Z13__get_rf_modev
#define __run_user_rf_pre_init _Z22__run_user_rf_pre_initv
extern int __real_register_chipv6_phy(uint8_t* init_data);
extern int __wrap_register_chipv6_phy(uint8_t* init_data) {
if (init_data != NULL) {

View File

@ -0,0 +1,11 @@
ADC_MODE(ADC_VCC);
RF_MODE(RF_DISABLED);
RF_PRE_INIT()
{
}
void setup() {
}
void loop() {
}