diff options
Diffstat (limited to 'include/arch/esp8266')
-rw-r--r-- | include/arch/esp8266/driver/gpio.h | 30 | ||||
-rw-r--r-- | include/arch/esp8266/driver/stdin.h | 24 | ||||
-rw-r--r-- | include/arch/esp8266/driver/stdout.h | 61 | ||||
-rw-r--r-- | include/arch/esp8266/driver/uptime.h | 28 | ||||
-rw-r--r-- | include/arch/esp8266/user_config.h | 5 |
5 files changed, 148 insertions, 0 deletions
diff --git a/include/arch/esp8266/driver/gpio.h b/include/arch/esp8266/driver/gpio.h new file mode 100644 index 0000000..3db5d9d --- /dev/null +++ b/include/arch/esp8266/driver/gpio.h @@ -0,0 +1,30 @@ +#ifndef GPIO_H +#define GPIO_H + +class GPIO { + private: + GPIO(const GPIO ©); + + public: + GPIO () {} + + enum Pin : unsigned char { + d3 = 0, tx, d4, rx, d2, d1, + d6 = 12, d7, d5, d8, + d0 = 16 + }; + + void setup(); + void led_on(unsigned char id); + void led_off(unsigned char id); + void led_toggle(unsigned char id); + void input(unsigned char const pin); + void input(unsigned char const pin, bool pullup); + void output(unsigned char const pin); + unsigned char read(unsigned char const pin); + void write(unsigned char const pin, unsigned char value); +}; + +extern GPIO gpio; + +#endif diff --git a/include/arch/esp8266/driver/stdin.h b/include/arch/esp8266/driver/stdin.h new file mode 100644 index 0000000..6462e0c --- /dev/null +++ b/include/arch/esp8266/driver/stdin.h @@ -0,0 +1,24 @@ +#ifndef STANDARDINPUT_H +#define STANDARDINPUT_H + +class StandardInput { + private: + StandardInput(const StandardInput ©); + char buffer[8]; + unsigned char write_pos, read_pos; + + public: + StandardInput() : write_pos(0), read_pos(0) {} + void setup(); + bool hasKey(); + char getKey(); + + inline void addKey(char key) { + buffer[write_pos++] = key; + write_pos %= 8; + } +}; + +extern StandardInput kin; + +#endif diff --git a/include/arch/esp8266/driver/stdout.h b/include/arch/esp8266/driver/stdout.h new file mode 100644 index 0000000..038de2e --- /dev/null +++ b/include/arch/esp8266/driver/stdout.h @@ -0,0 +1,61 @@ +#ifndef STANDARDOUTPUT_H +#define STANDARDOUTPUT_H + +class StandardOutput { + private: + StandardOutput(const StandardOutput ©); + char digit_buffer[sizeof(long long) * 8]; + unsigned char base; + + public: + StandardOutput (); + void setup(); + + void put(char c); + void write(const char *s); + void flush() {} + void printf_uint8(unsigned char num); + void printf_float(float num); + + StandardOutput & operator<<(char c); + StandardOutput & operator<<(unsigned char c); + StandardOutput & operator<<(unsigned short number); + StandardOutput & operator<<(short number); + StandardOutput & operator<<(unsigned int number); + StandardOutput & operator<<(int number); + StandardOutput & operator<<(unsigned long number); + StandardOutput & operator<<(long number); + StandardOutput & operator<<(unsigned long long number); + StandardOutput & operator<<(long long number); + StandardOutput & operator<<(void *pointer); + StandardOutput & operator<<(const char *text); + StandardOutput & operator<<(StandardOutput & (*fun) (StandardOutput &)); + + void setBase(unsigned char b); +}; + + +// ENDL: new line character (and flush) +StandardOutput & endl(StandardOutput & os); + +// BIN: print numbers in binary form. +StandardOutput & bin(StandardOutput & os); + +// OCT: print numbers in octal form. +StandardOutput & oct(StandardOutput & os); + +// DEC: print numbers in decimal form. +StandardOutput & dec(StandardOutput & os); + +// HEX: print numbers in hexadecimal form. +StandardOutput & hex(StandardOutput & os); + +// FLUSH: flush StandardOutput buffer +StandardOutput & flush(StandardOutput & os); + +// TERM: zero-termination +StandardOutput & term(StandardOutput & os); + +extern StandardOutput kout; + +#endif diff --git a/include/arch/esp8266/driver/uptime.h b/include/arch/esp8266/driver/uptime.h new file mode 100644 index 0000000..21740c9 --- /dev/null +++ b/include/arch/esp8266/driver/uptime.h @@ -0,0 +1,28 @@ +#ifndef UPTIME_H +#define UPTIME_H + +extern "C" { +#include "osapi.h" +#include "user_interface.h" +} +#include "c_types.h" + +class Uptime { + private: + Uptime(const Uptime ©); + + public: + Uptime () {} + inline uint32_t get_us() { return system_get_time(); } + + inline uint32_t get_cycles() + { + uint32_t ccount; + asm volatile ("esync; rsr %0,ccount":"=a" (ccount)); + return ccount; + } +}; + +extern Uptime uptime; + +#endif diff --git a/include/arch/esp8266/user_config.h b/include/arch/esp8266/user_config.h new file mode 100644 index 0000000..529fb46 --- /dev/null +++ b/include/arch/esp8266/user_config.h @@ -0,0 +1,5 @@ +/* + * required by ESP8266 SDK's osapi.h + * + * Intentionally left blank. + */ |