Oliver Fabel 1 год назад
Родитель
Сommit
5028779db9

+ 2 - 0
CHANGELOG.md

@@ -9,8 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Added
 
+* support external imports
 * `time` module support
 * `random` module support
+* basic `flipperzero` module
 * some test python scripts
 
 ## [0.1.0-alpha.1] - 2024-04-01

+ 4 - 0
Makefile

@@ -3,6 +3,10 @@ MICROPYTHON_TOP = ./lib/micropython
 
 PACKAGE_DIR = ./lib/micropython-build
 
+SRC_C = ./lib/micropython-port/modflipperzero.c
+
+SRC_QSTR += ./lib/micropython-port/modflipperzero.c
+
 include ./Makefile.micropython
 
 $(PACKAGE_DIR): all

+ 8 - 0
examples/flipperzero_test.py

@@ -0,0 +1,8 @@
+import time
+import flipperzero
+
+flipperzero.vibro(True)
+
+time.sleep_ms(125)
+
+flipperzero.vibro(False)

+ 7 - 0
lib/micropython-port/_modflipperzero.c

@@ -0,0 +1,7 @@
+#include <stdbool.h>
+
+#include <furi_hal.h>
+
+void mp_flipper_vibro(bool state) {
+    furi_hal_vibro_on(state);
+}

+ 5 - 0
lib/micropython-port/_modflipperzero.h

@@ -0,0 +1,5 @@
+#pragma once
+
+#include <stdbool.h>
+
+void mp_flipper_vibro(bool state);

+ 24 - 0
lib/micropython-port/modflipperzero.c

@@ -0,0 +1,24 @@
+#include <py/obj.h>
+#include <py/runtime.h>
+
+#include "_modflipperzero.h"
+
+static mp_obj_t flipperzero_vibro(mp_obj_t state) {
+    mp_flipper_vibro(state == mp_const_true);
+
+    return mp_const_true;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(flipperzero_vibro_obj, flipperzero_vibro);
+
+static const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
+    {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_flipperzero)},
+    {MP_ROM_QSTR(MP_QSTR_vibro), MP_ROM_PTR(&flipperzero_vibro_obj)},
+};
+static MP_DEFINE_CONST_DICT(flipperzero_module_globals, flipperzero_module_globals_table);
+
+const mp_obj_module_t flipperzero_module = {
+    .base = {&mp_type_module},
+    .globals = (mp_obj_dict_t*)&flipperzero_module_globals,
+};
+
+MP_REGISTER_MODULE(MP_QSTR_flipperzero, flipperzero_module);