/* * Compatibility routines for the Espressif SDK and its API * * Part of esp-open-rtos * Copyright (C) 2015 Superhouse Automation Pty Ltd * BSD Licensed as described in the file LICENSE */ #include #include #include #include #include void IRAM *zalloc(size_t nbytes) { return calloc(1, nbytes); } extern void (*__init_array_start)(void); extern void (*__init_array_end)(void); /* Do things which should be done as part of the SDK startup code, but aren't. TODO: Move into app_main.c */ void sdk_compat_initialise() { /* Call C++ constructors or C functions marked with __attribute__((constructor)) */ void (**p)(void); for ( p = &__init_array_start; p != &__init_array_end; ++p) (*p)(); } /* UART RX function from Espressif SDK internals. * * Not part of published API. */ int sdk_uart_rx_one_char(char *buf) { int c = uart_getc_nowait(0); if(c < 0) return 1; *buf = (char)c; return 0; }