diff --git a/cores/esp32/esp32-hal-gpio.c b/cores/esp32/esp32-hal-gpio.c index df0e6a29984..15a808642ce 100644 --- a/cores/esp32/esp32-hal-gpio.c +++ b/cores/esp32/esp32-hal-gpio.c @@ -104,14 +104,14 @@ extern void ARDUINO_ISR_ATTR __pinMode(uint8_t pin, uint8_t mode) #endif if (pin >= SOC_GPIO_PIN_COUNT) { - log_e("Invalid IO %i selected", pin); + log_e("Invalid pin selected"); return; } if(perimanGetPinBus(pin, ESP32_BUS_TYPE_GPIO) == NULL){ perimanSetBusDeinit(ESP32_BUS_TYPE_GPIO, gpioDetachBus); if(!perimanClearPinBus(pin)){ - log_e("Deinit of previous bus from IO %i failed", pin); + log_e("Deinit of previous bus failed"); return; } } @@ -140,7 +140,7 @@ extern void ARDUINO_ISR_ATTR __pinMode(uint8_t pin, uint8_t mode) } if(gpio_config(&conf) != ESP_OK) { - log_e("IO %i config failed", pin); + log_e("GPIO config failed"); return; } if(perimanGetPinBus(pin, ESP32_BUS_TYPE_GPIO) == NULL){ @@ -151,11 +151,16 @@ extern void ARDUINO_ISR_ATTR __pinMode(uint8_t pin, uint8_t mode) } } +#ifdef RGB_BUILTIN +uint8_t RGB_BUILTIN_storage = 0; +#endif + extern void ARDUINO_ISR_ATTR __digitalWrite(uint8_t pin, uint8_t val) { #ifdef RGB_BUILTIN if(pin == RGB_BUILTIN){ //use RMT to set all channels on/off + RGB_BUILTIN_storage=val; const uint8_t comm_val = val != 0 ? RGB_BRIGHTNESS : 0; neopixelWrite(RGB_BUILTIN, comm_val, comm_val, comm_val); return; @@ -164,17 +169,23 @@ extern void ARDUINO_ISR_ATTR __digitalWrite(uint8_t pin, uint8_t val) if(perimanGetPinBus(pin, ESP32_BUS_TYPE_GPIO) != NULL){ gpio_set_level((gpio_num_t)pin, val); } else { - log_e("IO %i is not set as GPIO.", pin); + log_e("Pin is not set as GPIO."); } } extern int ARDUINO_ISR_ATTR __digitalRead(uint8_t pin) { + #ifdef RGB_BUILTIN + if(pin == RGB_BUILTIN){ + return RGB_BUILTIN_storage; + } + #endif + if(perimanGetPinBus(pin, ESP32_BUS_TYPE_GPIO) != NULL){ return gpio_get_level((gpio_num_t)pin); } else { - log_e("IO %i is not set as GPIO.", pin); + log_e("Pin is not set as GPIO."); return 0; } } @@ -204,7 +215,7 @@ extern void __attachInterruptFunctionalArg(uint8_t pin, voidFuncPtrArg userFunc, interrupt_initialized = (err == ESP_OK) || (err == ESP_ERR_INVALID_STATE); } if(!interrupt_initialized) { - log_e("IO %i ISR Service Failed To Start", pin); + log_e("GPIO ISR Service Failed To Start"); return; } @@ -256,14 +267,6 @@ extern void __detachInterrupt(uint8_t pin) gpio_set_intr_type((gpio_num_t)pin, GPIO_INTR_DISABLE); } -extern void enableInterrupt(uint8_t pin) { - gpio_intr_enable((gpio_num_t)pin); -} - -extern void disableInterrupt(uint8_t pin) { - gpio_intr_disable((gpio_num_t)pin); -} - extern void pinMode(uint8_t pin, uint8_t mode) __attribute__ ((weak, alias("__pinMode"))); extern void digitalWrite(uint8_t pin, uint8_t val) __attribute__ ((weak, alias("__digitalWrite")));