blob: ff8670687bed11ab9d1801aab2fd3f2b2ec251c5 [file] [log] [blame]
Alexander Steffen299bc622017-06-29 23:14:58 +02001#ifndef MICROPY_INCLUDED_ESP8266_MODMACHINE_H
2#define MICROPY_INCLUDED_ESP8266_MODMACHINE_H
Damien George1a65ff12016-04-12 13:53:04 +01003
4#include "py/obj.h"
5
Damien George87c62502015-02-13 22:21:44 +00006extern const mp_obj_type_t pyb_pin_type;
Damien Georgede8b5852015-06-22 23:03:17 +01007extern const mp_obj_type_t pyb_rtc_type;
Damien George342d9032015-12-29 00:19:23 +00008
Damien George4ebdb1f2016-10-18 11:06:20 +11009MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_info_obj);
Damien Georgea6aa35a2016-04-28 12:23:55 +010010
Damien George7059c8c2016-02-11 11:41:58 +000011typedef struct _pyb_pin_obj_t {
12 mp_obj_base_t base;
Damien George7059c8c2016-02-11 11:41:58 +000013 uint16_t phys_port;
Damien George7059c8c2016-02-11 11:41:58 +000014 uint16_t func;
Damien Georgea9a732a2016-04-13 22:38:44 +010015 uint32_t periph;
Damien George7059c8c2016-02-11 11:41:58 +000016} pyb_pin_obj_t;
17
Damien Georgea2d5d842016-04-22 10:04:12 +010018const pyb_pin_obj_t pyb_pin_obj[16 + 1];
19
Trammell hudson96a2cc52020-02-25 22:53:46 +010020#define GPIO_MODE_INPUT (0)
21#define GPIO_MODE_OUTPUT (1)
22#define GPIO_MODE_OPEN_DRAIN (2) // synthesised
23#define GPIO_PULL_NONE (0)
24#define GPIO_PULL_UP (1)
25// Removed in SDK 1.1.0
26// #define GPIO_PULL_DOWN (2)
27
28extern uint8_t pin_mode[16 + 1];
29
Damien George674bf1b2016-04-14 11:15:43 +010030void pin_init0(void);
Damien George674bf1b2016-04-14 11:15:43 +010031
Damien George342d9032015-12-29 00:19:23 +000032uint mp_obj_get_pin(mp_obj_t pin_in);
Damien George7059c8c2016-02-11 11:41:58 +000033pyb_pin_obj_t *mp_obj_get_pin_obj(mp_obj_t pin_in);
Damien George342d9032015-12-29 00:19:23 +000034int pin_get(uint pin);
35void pin_set(uint pin, int value);
Damien George1a65ff12016-04-12 13:53:04 +010036
Paul Sokolovsky8bc3fc22016-11-06 01:30:19 +030037extern uint32_t pyb_rtc_alarm0_wake;
38extern uint64_t pyb_rtc_alarm0_expiry;
39
Damien George8f20cdc2020-09-14 12:15:03 +100040void pyb_rtc_set_us_since_epoch(uint64_t nowus);
41uint64_t pyb_rtc_get_us_since_epoch();
Paul Sokolovsky8bc3fc22016-11-06 01:30:19 +030042void rtc_prepare_deepsleep(uint64_t sleep_us);
43
Alexander Steffen299bc622017-06-29 23:14:58 +020044#endif // MICROPY_INCLUDED_ESP8266_MODMACHINE_H