|
36 | 36 | # define OPTIONAL_ASSEMBLERS_SUPPORT
|
37 | 37 | # endif
|
38 | 38 |
|
| 39 | +// Hook to pull in optional interrupts and timers support. |
| 40 | +# if __has_include("interrupts.h") |
| 41 | +# include "interrupts.h" |
| 42 | +# else |
| 43 | +# define OPTIONAL_INTERRUPTS_VOCABULARIES |
| 44 | +# define OPTIONAL_INTERRUPTS_SUPPORT |
| 45 | +# endif |
| 46 | + |
39 | 47 | // Hook to pull in optional Oled support.
|
40 | 48 | # if __has_include("oled.h")
|
41 | 49 | # include "oled.h"
|
@@ -101,13 +109,13 @@ static cell_t ResizeFile(cell_t fd, cell_t size);
|
101 | 109 | OPTIONAL_I2C_SUPPORT \
|
102 | 110 | OPTIONAL_SOCKETS_SUPPORT \
|
103 | 111 | OPTIONAL_FREERTOS_SUPPORT \
|
104 |
| - OPTIONAL_INTERRUPTS_SUPPORT \ |
105 | 112 | CALLING_OPCODE_LIST \
|
106 | 113 | FLOATING_POINT_LIST
|
107 | 114 |
|
108 | 115 | #define EXTERNAL_OPTIONAL_MODULE_SUPPORT \
|
109 | 116 | OPTIONAL_ASSEMBLERS_SUPPORT \
|
110 | 117 | OPTIONAL_CAMERA_SUPPORT \
|
| 118 | + OPTIONAL_INTERRUPTS_SUPPORT \ |
111 | 119 | OPTIONAL_OLED_SUPPORT \
|
112 | 120 | OPTIONAL_RMT_SUPPORT \
|
113 | 121 | OPTIONAL_SERIAL_BLUETOOTH_SUPPORT \
|
@@ -278,85 +286,6 @@ static cell_t ResizeFile(cell_t fd, cell_t size);
|
278 | 286 | YV(rtos, xPortGetCoreID, PUSH xPortGetCoreID())
|
279 | 287 | #endif
|
280 | 288 |
|
281 |
| -#ifndef ENABLE_INTERRUPTS_SUPPORT |
282 |
| -# define OPTIONAL_INTERRUPTS_SUPPORT |
283 |
| -#else |
284 |
| -# ifndef SIM_PRINT_ONLY |
285 |
| -# include "esp_intr_alloc.h" |
286 |
| -# include "driver/timer.h" |
287 |
| -# include "driver/gpio.h" |
288 |
| -static cell_t EspIntrAlloc(cell_t source, cell_t flags, cell_t xt, cell_t arg, void *ret); |
289 |
| -static cell_t GpioIsrHandlerAdd(cell_t pin, cell_t xt, cell_t arg); |
290 |
| -static cell_t TimerIsrCallbackAdd(cell_t group, cell_t timer, cell_t xt, cell_t arg, cell_t flags); |
291 |
| -static void TimerInitNull(cell_t group, cell_t timer); |
292 |
| -# endif |
293 |
| -# define OPTIONAL_INTERRUPTS_SUPPORT \ |
294 |
| - YV(interrupts, gpio_config, n0 = gpio_config((const gpio_config_t *) a0)) \ |
295 |
| - YV(interrupts, gpio_reset_pin, n0 = gpio_reset_pin((gpio_num_t) n0)) \ |
296 |
| - YV(interrupts, gpio_set_intr_type, n0 = gpio_set_intr_type((gpio_num_t) n1, (gpio_int_type_t) n0); NIP) \ |
297 |
| - YV(interrupts, gpio_intr_enable, n0 = gpio_intr_enable((gpio_num_t) n0)) \ |
298 |
| - YV(interrupts, gpio_intr_disable, n0 = gpio_intr_disable((gpio_num_t) n0)) \ |
299 |
| - YV(interrupts, gpio_set_level, n0 = gpio_set_level((gpio_num_t) n1, n0); NIP) \ |
300 |
| - YV(interrupts, gpio_get_level, n0 = gpio_get_level((gpio_num_t) n0)) \ |
301 |
| - YV(interrupts, gpio_set_direction, n0 = gpio_set_direction((gpio_num_t) n1, (gpio_mode_t) n0); NIP) \ |
302 |
| - YV(interrupts, gpio_set_pull_mode, n0 = gpio_set_pull_mode((gpio_num_t) n1, (gpio_pull_mode_t) n0); NIP) \ |
303 |
| - YV(interrupts, gpio_wakeup_enable, n0 = gpio_wakeup_enable((gpio_num_t) n1, (gpio_int_type_t) n0); NIP) \ |
304 |
| - YV(interrupts, gpio_wakeup_disable, n0 = gpio_wakeup_disable((gpio_num_t) n0)) \ |
305 |
| - YV(interrupts, gpio_pullup_en, n0 = gpio_pullup_en((gpio_num_t) n0)) \ |
306 |
| - YV(interrupts, gpio_pullup_dis, n0 = gpio_pullup_dis((gpio_num_t) n0)) \ |
307 |
| - YV(interrupts, gpio_pulldown_en, n0 = gpio_pulldown_en((gpio_num_t) n0)) \ |
308 |
| - YV(interrupts, gpio_pulldown_dis, n0 = gpio_pulldown_dis((gpio_num_t) n0)) \ |
309 |
| - YV(interrupts, gpio_hold_en, n0 = gpio_hold_en((gpio_num_t) n0)) \ |
310 |
| - YV(interrupts, gpio_hold_dis, n0 = gpio_hold_dis((gpio_num_t) n0)) \ |
311 |
| - YV(interrupts, gpio_deep_sleep_hold_en, gpio_deep_sleep_hold_en()) \ |
312 |
| - YV(interrupts, gpio_deep_sleep_hold_dis, gpio_deep_sleep_hold_dis()) \ |
313 |
| - YV(interrupts, gpio_install_isr_service, n0 = gpio_install_isr_service(n0)) \ |
314 |
| - YV(interrupts, gpio_uninstall_isr_service, gpio_uninstall_isr_service()) \ |
315 |
| - YV(interrupts, gpio_isr_handler_add, n0 = GpioIsrHandlerAdd(n2, n1, n0); NIPn(2)) \ |
316 |
| - YV(interrupts, gpio_isr_handler_remove, n0 = gpio_isr_handler_remove((gpio_num_t) n0)) \ |
317 |
| - YV(interrupts, gpio_set_drive_capability, n0 = gpio_set_drive_capability((gpio_num_t) n1, (gpio_drive_cap_t) n0); NIP) \ |
318 |
| - YV(interrupts, gpio_get_drive_capability, n0 = gpio_get_drive_capability((gpio_num_t) n1, (gpio_drive_cap_t *) a0); NIP) \ |
319 |
| - YV(interrupts, esp_intr_alloc, n0 = EspIntrAlloc(n4, n3, n2, n1, a0); NIPn(4)) \ |
320 |
| - YV(interrupts, esp_intr_free, n0 = esp_intr_free((intr_handle_t) n0)) \ |
321 |
| - YV(timers, timer_isr_callback_add, n0 = TimerIsrCallbackAdd(n4, n3, n2, n1, n0); NIPn(4)) \ |
322 |
| - YV(timers, timer_init_null, TimerInitNull(n1, n0); DROPn(2)) \ |
323 |
| - YV(timers, timer_get_counter_value, \ |
324 |
| - n0 = timer_get_counter_value((timer_group_t) n2, (timer_idx_t) n1, \ |
325 |
| - (uint64_t *) a0); NIPn(2)) \ |
326 |
| - YV(timers, timer_set_counter_value, \ |
327 |
| - uint64_t val = *(uint64_t *) a0; \ |
328 |
| - n0 = timer_set_counter_value((timer_group_t) n2, (timer_idx_t) n1, val); NIPn(2)) \ |
329 |
| - YV(timers, timer_start, \ |
330 |
| - n0 = timer_start((timer_group_t) n1, (timer_idx_t) n0); NIP) \ |
331 |
| - YV(timers, timer_pause, \ |
332 |
| - n0 = timer_pause((timer_group_t) n1, (timer_idx_t) n0); NIP) \ |
333 |
| - YV(timers, timer_set_counter_mode, \ |
334 |
| - n0 = timer_set_counter_mode((timer_group_t) n2, (timer_idx_t) n1, \ |
335 |
| - (timer_count_dir_t) n0); NIPn(2)) \ |
336 |
| - YV(timers, timer_set_auto_reload, \ |
337 |
| - n0 = timer_set_auto_reload((timer_group_t) n2, (timer_idx_t) n1, \ |
338 |
| - (timer_autoreload_t) n0); NIPn(2)) \ |
339 |
| - YV(timers, timer_set_divider, \ |
340 |
| - n0 = timer_set_divider((timer_group_t) n2, (timer_idx_t) n1, n0); NIPn(2)) \ |
341 |
| - YV(timers, timer_set_alarm_value, uint64_t val = *(uint64_t *) a0; \ |
342 |
| - n0 = timer_set_alarm_value((timer_group_t) n2, (timer_idx_t) n1, val); NIPn(2)) \ |
343 |
| - YV(timers, timer_get_alarm_value, \ |
344 |
| - n0 = timer_get_alarm_value((timer_group_t) n2, (timer_idx_t) n1, \ |
345 |
| - (uint64_t *) a0); NIPn(2)) \ |
346 |
| - YV(timers, timer_set_alarm, \ |
347 |
| - n0 = timer_set_alarm((timer_group_t) n2, (timer_idx_t) n1, \ |
348 |
| - (timer_alarm_t) n0); NIPn(2)) \ |
349 |
| - YV(timers, timer_group_intr_enable, \ |
350 |
| - n0 = timer_group_intr_enable((timer_group_t) n1, (timer_intr_t) n0); NIP) \ |
351 |
| - YV(timers, timer_group_intr_disable, \ |
352 |
| - n0 = timer_group_intr_disable((timer_group_t) n1, (timer_intr_t) n0); NIP) \ |
353 |
| - YV(timers, timer_enable_intr, \ |
354 |
| - n0 = timer_enable_intr((timer_group_t) n1, (timer_idx_t) n0); NIP) \ |
355 |
| - YV(timers, timer_disable_intr, \ |
356 |
| - n0 = timer_disable_intr((timer_group_t) n1, (timer_idx_t) n0); NIP) |
357 |
| - |
358 |
| -#endif |
359 |
| - |
360 | 289 | #ifndef ENABLE_SOCKETS_SUPPORT
|
361 | 290 | # define OPTIONAL_SOCKETS_SUPPORT
|
362 | 291 | #else
|
|
0 commit comments