# ifndef ESPMISSINGINCLUDES_H
# define ESPMISSINGINCLUDES_H
# include <stdint.h>
# include <c_types.h>
# include <ets_sys.h>
//Missing function prototypes in include folders. Gcc will warn on these if we don't define 'em anywhere.
//MOST OF THESE ARE GUESSED! but they seem to swork and shut up the compiler.
typedef struct espconn espconn ;
int atoi ( const char * nptr ) ;
void ets_install_putc1 ( void * routine ) ; // necessary for #define os_xxx -> ets_xxx
void ets_isr_attach ( int intr , void * handler , void * arg ) ;
void ets_isr_mask ( unsigned intr ) ;
void ets_isr_unmask ( unsigned intr ) ;
int ets_memcmp ( const void * s1 , const void * s2 , size_t n ) ;
void * ets_memcpy ( void * dest , const void * src , size_t n ) ;
void * ets_memset ( void * s , int c , size_t n ) ;
int ets_sprintf ( char * str , const char * format , . . . ) __attribute__ ( ( format ( printf , 2 , 3 ) ) ) ;
int ets_str2macaddr ( void * , void * ) ;
int ets_strcmp ( const char * s1 , const char * s2 ) ;
char * ets_strcpy ( char * dest , const char * src ) ;
size_t ets_strlen ( const char * s ) ;
int ets_strncmp ( const char * s1 , const char * s2 , int len ) ;
char * ets_strncpy ( char * dest , const char * src , size_t n ) ;
char * ets_strstr ( const char * haystack , const char * needle ) ;
void ets_timer_arm_new ( ETSTimer * a , int b , int c , int isMstimer ) ;
void ets_timer_disarm ( ETSTimer * a ) ;
void ets_timer_setfn ( ETSTimer * t , ETSTimerFunc * fn , void * parg ) ;
void ets_update_cpu_frequency ( int freqmhz ) ;
int os_printf ( const char * format , . . . ) __attribute__ ( ( format ( printf , 1 , 2 ) ) ) ;
int os_snprintf ( char * str , size_t size , const char * format , . . . ) __attribute__ ( ( format ( printf , 3 , 4 ) ) ) ;
int os_printf_plus ( const char * format , . . . ) __attribute__ ( ( format ( printf , 1 , 2 ) ) ) ;
void pvPortFree ( void * ptr ) ;
void * pvPortMalloc ( size_t xWantedSize ) ;
void * pvPortZalloc ( size_t ) ;
void uart_div_modify ( int no , unsigned int freq ) ;
void vPortFree ( void * ptr ) ;
void * vPortMalloc ( size_t xWantedSize ) ;
uint32 system_get_time ( ) ;
//uint8 wifi_get_opmode(void); // defined in SDK 1.0.0 onwards
//int os_random(); // defined in SDK 1.1.0 onwards
int rand ( void ) ;
void ets_bzero ( void * s , size_t n ) ;
void ets_delay_us ( int ms ) ;
// disappeared in SDK 1.1.0:
# define os_timer_done ets_timer_done
# define os_timer_handler_isr ets_timer_handler_isr
# define os_timer_init ets_timer_init
// This is not missing in SDK 1.1.0 but causes a parens error
# undef PIN_FUNC_SELECT
# define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \
WRITE_PERI_REG ( PIN_NAME , \
( READ_PERI_REG ( PIN_NAME ) & ~ ( PERIPHS_IO_MUX_FUNC < < PERIPHS_IO_MUX_FUNC_S ) ) \
| ( ( ( ( FUNC & BIT2 ) < < 2 ) | ( FUNC & 0x3 ) ) < < PERIPHS_IO_MUX_FUNC_S ) ) ; \
} while ( 0 )
# endif