#ifndef INTERFACE_H
#define INTERFACE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include <stdbool.h>
#include <stdint.h>
#include <stdarg.h>
#ifdef LINUX
-#define MAXTASKS 5
-#define MAXSDSS 100
+#define NAPINS 128
+#define NDPINS 128
+#define STACKSIZE 1024
+#define MEMSIZE 1024
#define HAVELED 1
#define HAVEAIO 1
#define HAVEDIO 1
extern char **gargv;
#elif defined STM
-#define MAXTASKS 5
-#define MAXSDSS 100
+#define NAPINS 128
+#define NDPINS 128
+#define STACKSIZE 1024
+#define MEMSIZE 1024
#define HAVELED 1
#define HAVEAIO 1
#define HAVEDIO 1
+#elif defined ARDUINO_ESP8266_NODEMCU
+#define NAPINS 128
+#define NDPINS 128
+#define STACKSIZE 1024
+#define MEMSIZE 1024
+#define HAVELED 0
+#define HAVEAIO 0
+#define HAVEDIO 0
+
+#elif defined ARDUINO_AVR_UNO
+#define NAPINS 128
+#define NDPINS 128
+#define STACKSIZE 64
+#define MEMSIZE 256
+#define HAVELED 0
+#define HAVEAIO 0
+#define HAVEDIO 0
#else
//Add you device here
#endif
#define read16() 256*(uint8_t)read_byte() + (uint8_t)read_byte()
#define from16(a, b) 256*a+b
-#define write16(i) { write_byte((uint8_t)i/256); write_byte((uint8_t)i%256); }
+#define write16(i) { write_byte((uint8_t)(i/256)); write_byte((uint8_t)(i%256)); }
/* Communication */
bool input_available(void);
#endif
/* Delay and communication */
-long millis(void);
-void delay(long ms);
+unsigned long getmillis(void);
+void msdelay(unsigned long ms);
/* Auxilliary */
-void setup(void);
+void real_setup(void);
void debug(char *fmt, ...);
void pdie(char *s);
void die(char *fmt, ...);
+void reset(void);
+#ifdef __cplusplus
+}
+#endif
#endif