Added the zig_main project to software for zig based implementation of code for robot

This commit is contained in:
2026-05-05 20:14:04 +12:00
parent 7d752f2534
commit f21f909a71
83 changed files with 13631 additions and 0 deletions

View File

@@ -0,0 +1,168 @@
/* stubs.h - Stubs file for zig translate-c with ESP-IDF */
#ifndef STUBS_H
#define STUBS_H
/* Prevent inclusion of problematic cstdlib headers */
#define _STDIO_H_
#define _STDLIB_H_
#define _STRING_H_
#define _WCHAR_H_
#define _SYS_STAT_H
#define _SYS_REENT_H
#define _SYS_TYPES_H
#define _SYS_SIGNAL_H
#define _SYS_TIME_H_
#define _SYS__DEFAULT_FCNTL_H_
#define _MBSTATE_T
#define _SYS_LOCK_H
#define _SYS_UNISTD_H
#define _UNISTD_H
#define _TIME_H_
/* Block system pthread.h — fails translate-c due to _SYS_TYPES_H conflicts;
our pthread_stubs.h provides clean, translate-c-compatible declarations. */
#define __PTHREAD_h
#define _PTHREAD_H
/* Prevent real header from redefining them */
#define __ESP_ASSERT_H__
#define __ESP_VFS_H__
/* Avoid redefining types that exist in real headers */
#undef _mbstate_t
#undef __mbstate_t_defined
/* Define only what's strictly necessary without conflicting */
typedef void *FILE;
// typedef int _LOCK_T;
typedef void *__VALIST;
typedef long off_t;
typedef long _off_t;
typedef unsigned int wint_t;
typedef unsigned int mode_t;
/* Disable macros and attributes that confuse zig translate-c */
#define __restrict
#define __extension__
#define __attribute__(x)
#define __THROW
#define __wur
#define __volatile__
#define __inline
/* Disable IDF-specific attributes */
#define IRAM_ATTR
#define DRAM_ATTR
#define RTC_DATA_ATTR
#define SECTION_ATTR_IMPL(x, y)
#ifdef ESP_STATIC_ASSERT
#undef ESP_STATIC_ASSERT
#endif
#define ESP_STATIC_ASSERT(expr, msg)
/* Block multibyte functions from stdlib */
#define mblen
#define mbtowc
#define wctomb
#define mbstowcs
#define wcstombs
/* Workaround for FreeRTOS TLS dummy field (prevents struct _reent usage) */
#define configTLS_BLOCK_TYPE int
#define portTLS_BLOCK_TYPE int
/* ────────────────────────────────────────────────────────────────────────────
IDF component guards mirror sdkconfig.h / bindings.h logic
Enable ONLY what your project actually uses
────────────────────────────────────────────────────────────────────────────
*/
#include "sdkconfig.h"
/* Always available basics */
#define ESP_IDF_COMP_SOC_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_GPIO_ENABLED // almost always needed
/* Commonly used uncomment what you need */
#define ESP_IDF_COMP_ESP_WIFI_ENABLED
#define ESP_IDF_COMP_ESP_NETIF_ENABLED
#define ESP_IDF_COMP_ESP_EVENT_ENABLED
#define ESP_IDF_COMP_NVS_FLASH_ENABLED
#define ESP_IDF_COMP_ESP_TIMER_ENABLED
#define ESP_IDF_COMP_ESP_PM_ENABLED
#define ESP_IDF_COMP_ESP_TLS_ENABLED
#define ESP_IDF_COMP_MBEDTLS_ENABLED
#define ESP_IDF_COMP_LWIP_ENABLED
#define ESP_IDF_COMP_VFS_ENABLED
/* Drivers (split since ~v5.15.3) enable per driver you use */
#define ESP_IDF_COMP_ESP_DRIVER_UART_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_I2C_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_SPI_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_RMT_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_LEDC_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_GPTIMER_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_ADC_ENABLED
#define ESP_IDF_COMP_ESP_DRIVER_TWAI_ENABLED
#define ESP_IDF_COMP_PTHREAD_ENABLED
/* Optional / advanced enable only if used */
#define ESP_IDF_COMP_ESP_HTTP_CLIENT_ENABLED
#define ESP_IDF_COMP_ESP_HTTP_SERVER_ENABLED
#define ESP_IDF_COMP_ESP_HTTPS_OTA_ENABLED
#define ESP_IDF_COMP_ESP_NOW_ENABLED
#define ESP_IDF_COMP_WPA_SUPPLICANT_ENABLED
#define ESP_IDF_COMP_ESP_COEX_ENABLED
#define ESP_IDF_COMP_ESP_PSRAM_ENABLED // himem/psram
#define ESP_IDF_COMP_ESP_LCD_ENABLED
// #define ESP_IDF_COMP_ESPRESSIF__ESP_TINYUSB_ENABLED
/* Conditional component defines used in bindings.h */
#ifdef ESP_IDF_COMP_ESP_WIFI_ENABLED
#define ESP_IDF_COMP_ESP_NETIF_ENABLED
#endif
#ifdef ESP_IDF_COMP_WPA_SUPPLICANT_ENABLED
#define ESP_IDF_COMP_ESP_WIFI_ENABLED
#endif
/* Version-aware stubs */
#if ESP_IDF_VERSION_MAJOR >= 5
#define ESP_IDF_COMP_ESP_DRIVER_ENABLED 0 // drivers are now per-component
#else
#define ESP_IDF_COMP_DRIVER_ENABLED
#endif
#if ESP_IDF_VERSION_MAJOR >= 5 && ESP_IDF_VERSION_MINOR >= 1
#define ESP_IDF_COMP_ESP_COEX_ENABLED // coexist moved
#endif
#if HAS_ESP_WIFI_REMOTE
#define ESP_IDF_COMP_ESP_WIFI_REMOTE_ENABLED
#endif
#if HAS_ESP_HOSTED
#define ESP_IDF_COMP_ESP_HOSTED_ENABLED
#endif
#include <stddef.h> // for size_t, ptrdiff_t, NULL
#include <stdint.h> // for uint8_t, uint32_t, etc.
#include <sys/types.h> // for additional POSIX types
/* Include AFTER all the protections */
#include "pthread_stubs.h"
#include "bindings.h"
#include "bt_stubs.h"
#include "wifi_stubs.h"
// Optional/Managed Components
// check cmake/extra-components.cmake
#if HAS_LED_STRIP
#include "led_strip.h"
#endif
#if HAS_ESP_DSP
#include "esp_dsp.h"
#endif
#if HAS_ESP_MATTER
#include "matter_stubs.h"
#endif
#endif // STUBS_H