| 
									
										
										
										
											2021-03-11 12:11:53 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  Arduino.h - Main include file for the Arduino SDK | 
					
						
							|  |  |  |  Copyright (c) 2005-2013 Arduino Team.  All right reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  License as published by the Free Software Foundation; either | 
					
						
							|  |  |  |  version 2.1 of the License, or (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  Lesser General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  |  License along with this library; if not, write to the Free Software | 
					
						
							|  |  |  |  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef HAL_ESP32_HAL_H_
 | 
					
						
							|  |  |  | #define HAL_ESP32_HAL_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <stdint.h>
 | 
					
						
							|  |  |  | #include <stdbool.h>
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include <stdlib.h>
 | 
					
						
							| 
									
										
										
										
											2016-11-13 13:40:31 +02:00
										 |  |  | #include <stdarg.h>
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #include <inttypes.h>
 | 
					
						
							|  |  |  | #include <string.h>
 | 
					
						
							| 
									
										
										
										
											2016-10-07 23:31:49 +03:00
										 |  |  | #include <math.h>
 | 
					
						
							| 
									
										
										
										
											2016-11-18 15:14:02 +02:00
										 |  |  | #include "sdkconfig.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-03 23:03:50 +02:00
										 |  |  | #include "esp_system.h"
 | 
					
						
							| 
									
										
										
										
											2021-04-05 14:23:58 +03:00
										 |  |  | #include "esp_sleep.h"
 | 
					
						
							| 
									
										
										
										
											2021-10-01 17:34:20 +03:00
										 |  |  | #include "freertos/FreeRTOS.h"
 | 
					
						
							|  |  |  | #include "freertos/task.h"
 | 
					
						
							|  |  |  | #include "freertos/queue.h"
 | 
					
						
							|  |  |  | #include "freertos/semphr.h"
 | 
					
						
							|  |  |  | #include "freertos/event_groups.h"
 | 
					
						
							| 
									
										
										
										
											2021-04-05 14:23:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-02 13:03:48 +02:00
										 |  |  | #ifndef F_CPU
 | 
					
						
							| 
									
										
										
										
											2021-04-05 14:23:58 +03:00
										 |  |  | #if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4
 | 
					
						
							| 
									
										
										
										
											2016-12-02 13:03:48 +02:00
										 |  |  | #define F_CPU (CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ * 1000000U)
 | 
					
						
							| 
									
										
										
										
											2021-04-05 14:23:58 +03:00
										 |  |  | #elif CONFIG_IDF_TARGET_ESP32S2
 | 
					
						
							|  |  |  | #define F_CPU (CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ * 1000000U)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if CONFIG_ARDUINO_ISR_IRAM
 | 
					
						
							|  |  |  | #define ARDUINO_ISR_ATTR IRAM_ATTR
 | 
					
						
							|  |  |  | #define ARDUINO_ISR_FLAG ESP_INTR_FLAG_IRAM
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #define ARDUINO_ISR_ATTR
 | 
					
						
							|  |  |  | #define ARDUINO_ISR_FLAG (0)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ARDUINO_RUNNING_CORE
 | 
					
						
							|  |  |  | #define ARDUINO_RUNNING_CORE CONFIG_ARDUINO_RUNNING_CORE
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ARDUINO_EVENT_RUNNING_CORE
 | 
					
						
							|  |  |  | #define ARDUINO_EVENT_RUNNING_CORE CONFIG_ARDUINO_EVENT_RUNNING_CORE
 | 
					
						
							| 
									
										
										
										
											2016-12-02 13:03:48 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-16 17:36:52 +02:00
										 |  |  | //forward declaration from freertos/portmacro.h
 | 
					
						
							| 
									
										
										
										
											2017-02-11 00:25:15 +02:00
										 |  |  | void vPortYield(void); | 
					
						
							|  |  |  | void yield(void); | 
					
						
							| 
									
										
										
										
											2016-11-16 17:36:52 +02:00
										 |  |  | #define optimistic_yield(u)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #define ESP_REG(addr) *((volatile uint32_t *)(addr))
 | 
					
						
							|  |  |  | #define NOP() asm volatile ("nop")
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "esp32-hal-log.h"
 | 
					
						
							|  |  |  | #include "esp32-hal-matrix.h"
 | 
					
						
							|  |  |  | #include "esp32-hal-uart.h"
 | 
					
						
							|  |  |  | #include "esp32-hal-gpio.h"
 | 
					
						
							| 
									
										
										
										
											2016-12-08 23:43:41 +02:00
										 |  |  | #include "esp32-hal-touch.h"
 | 
					
						
							|  |  |  | #include "esp32-hal-dac.h"
 | 
					
						
							|  |  |  | #include "esp32-hal-adc.h"
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #include "esp32-hal-spi.h"
 | 
					
						
							|  |  |  | #include "esp32-hal-i2c.h"
 | 
					
						
							| 
									
										
										
										
											2016-10-20 00:31:03 +03:00
										 |  |  | #include "esp32-hal-ledc.h"
 | 
					
						
							| 
									
										
										
										
											2018-09-17 23:19:27 +02:00
										 |  |  | #include "esp32-hal-rmt.h"
 | 
					
						
							| 
									
										
										
										
											2017-01-09 17:57:17 +02:00
										 |  |  | #include "esp32-hal-sigmadelta.h"
 | 
					
						
							| 
									
										
										
										
											2016-12-09 17:47:30 +02:00
										 |  |  | #include "esp32-hal-timer.h"
 | 
					
						
							| 
									
										
										
										
											2017-02-23 01:11:57 +02:00
										 |  |  | #include "esp32-hal-bt.h"
 | 
					
						
							| 
									
										
										
										
											2018-06-30 23:06:50 +02:00
										 |  |  | #include "esp32-hal-psram.h"
 | 
					
						
							| 
									
										
										
										
											2019-01-09 10:07:54 +01:00
										 |  |  | #include "esp32-hal-cpu.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-03 23:03:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-18 17:47:06 +08:00
										 |  |  | //returns chip temperature in Celsius
 | 
					
						
							|  |  |  | float temperatureRead(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-28 20:37:33 +02:00
										 |  |  | #if CONFIG_AUTOSTART_ARDUINO
 | 
					
						
							|  |  |  | //enable/disable WDT for Arduino's setup and loop functions
 | 
					
						
							|  |  |  | void enableLoopWDT(); | 
					
						
							|  |  |  | void disableLoopWDT(); | 
					
						
							| 
									
										
										
										
											2019-01-12 13:02:38 +01:00
										 |  |  | //feed WDT for the loop task
 | 
					
						
							|  |  |  | void feedLoopWDT(); | 
					
						
							| 
									
										
										
										
											2018-12-28 20:37:33 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-28 21:14:46 +02:00
										 |  |  | //enable/disable WDT for the IDLE task on Core 0 (SYSTEM)
 | 
					
						
							|  |  |  | void enableCore0WDT(); | 
					
						
							|  |  |  | void disableCore0WDT(); | 
					
						
							|  |  |  | #ifndef CONFIG_FREERTOS_UNICORE
 | 
					
						
							|  |  |  | //enable/disable WDT for the IDLE task on Core 1 (Arduino)
 | 
					
						
							| 
									
										
										
										
											2018-12-28 20:37:33 +02:00
										 |  |  | void enableCore1WDT(); | 
					
						
							|  |  |  | void disableCore1WDT(); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-13 17:13:13 +02:00
										 |  |  | //if xCoreID < 0 or CPU is unicore, it will use xTaskCreate, else xTaskCreatePinnedToCore
 | 
					
						
							|  |  |  | //allows to easily handle all possible situations without repetitive code
 | 
					
						
							|  |  |  | BaseType_t xTaskCreateUniversal( TaskFunction_t pxTaskCode, | 
					
						
							|  |  |  |                         const char * const pcName, | 
					
						
							|  |  |  |                         const uint32_t usStackDepth, | 
					
						
							|  |  |  |                         void * const pvParameters, | 
					
						
							|  |  |  |                         UBaseType_t uxPriority, | 
					
						
							|  |  |  |                         TaskHandle_t * const pxCreatedTask, | 
					
						
							|  |  |  |                         const BaseType_t xCoreID ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-22 15:47:12 +03:00
										 |  |  | unsigned long micros(); | 
					
						
							|  |  |  | unsigned long millis(); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | void delay(uint32_t); | 
					
						
							|  |  |  | void delayMicroseconds(uint32_t us); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-01 13:23:17 +02:00
										 |  |  | #if !CONFIG_ESP32_PHY_AUTO_INIT
 | 
					
						
							|  |  |  | void arduino_phy_init(); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-18 15:07:25 +02:00
										 |  |  | #if !CONFIG_AUTOSTART_ARDUINO
 | 
					
						
							|  |  |  | void initArduino(); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* HAL_ESP32_HAL_H_ */
 |