[python] Add an ion module

This commit is contained in:
Romain Goyet
2019-09-17 15:58:22 +02:00
committed by LeaNumworks
parent 190e31ef4a
commit 9d66b23848
6 changed files with 39 additions and 0 deletions

View File

@@ -130,6 +130,8 @@ port_src += $(addprefix python/port/,\
port.c \
builtins.c \
helpers.c \
mod/ion/modion.cpp \
mod/ion/modion_table.cpp \
mod/kandinsky/modkandinsky.cpp \
mod/kandinsky/modkandinsky_table.c \
mod/time/modtime.c \

View File

@@ -15,6 +15,10 @@
QCFG(BYTES_IN_LEN, (1))
QCFG(BYTES_IN_HASH, (2))
// Ion QSTR
Q(ion)
Q(keydown)
// Kandinsky QSTRs
Q(kandinsky)
Q(color)

View File

@@ -0,0 +1,13 @@
extern "C" {
#include "modion.h"
#include <py/objtuple.h>
#include <py/runtime.h>
}
#include <ion.h>
#include "port.h"
mp_obj_t modion_keyboard_keydown(mp_obj_t key_o) {
Ion::Keyboard::Key key = static_cast<Ion::Keyboard::Key>(mp_obj_get_int(key_o));
Ion::Keyboard::State state = Ion::Keyboard::scan();
return MP_OBJ_NEW_SMALL_INT(state.keyDown(key));
}

View File

@@ -0,0 +1,3 @@
#include <py/obj.h>
mp_obj_t modion_keyboard_keydown(mp_obj_t key_o);

View File

@@ -0,0 +1,15 @@
#include "modion.h"
MP_DEFINE_CONST_FUN_OBJ_1(modion_keyboard_keydown_obj, modion_keyboard_keydown);
STATIC const mp_rom_map_elem_t modion_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ion) },
{ MP_ROM_QSTR(MP_QSTR_keydown), MP_ROM_PTR(&modion_keyboard_keydown_obj) },
};
STATIC MP_DEFINE_CONST_DICT(modion_module_globals, modion_module_globals_table);
const mp_obj_module_t modion_module = {
.base = { &mp_type_module },
.globals = (mp_obj_dict_t*)&modion_module_globals,
};

View File

@@ -112,11 +112,13 @@ typedef long mp_off_t;
#define MP_STATE_PORT MP_STATE_VM
extern const struct _mp_obj_module_t modion_module;
extern const struct _mp_obj_module_t modkandinsky_module;
extern const struct _mp_obj_module_t modtime_module;
extern const struct _mp_obj_module_t modturtle_module;
#define MICROPY_PORT_BUILTIN_MODULES \
{ MP_ROM_QSTR(MP_QSTR_ion), MP_ROM_PTR(&modion_module) }, \
{ MP_ROM_QSTR(MP_QSTR_kandinsky), MP_ROM_PTR(&modkandinsky_module) }, \
{ MP_ROM_QSTR(MP_QSTR_time), MP_ROM_PTR(&modtime_module) }, \
{ MP_ROM_QSTR(MP_QSTR_turtle), MP_ROM_PTR(&modturtle_module) }, \