Oliver Fabel před 1 rokem
rodič
revize
739f1b38e2
3 změnil soubory, kde provedl 82 přidání a 33 odebrání
  1. 13 2
      genhdr/qstrdefs.generated.h
  2. 58 29
      mp_flipper_logging.c
  3. 11 2
      mp_flipper_logging.h

+ 13 - 2
genhdr/qstrdefs.generated.h

@@ -181,6 +181,8 @@ QDEF1(MP_QSTR_ALIGN_END, 248, 9, "ALIGN_END")
 QDEF1(MP_QSTR_BinaryFileIO, 106, 12, "BinaryFileIO")
 QDEF1(MP_QSTR_BinaryFileIO, 106, 12, "BinaryFileIO")
 QDEF1(MP_QSTR_CANVAS_BLACK, 213, 12, "CANVAS_BLACK")
 QDEF1(MP_QSTR_CANVAS_BLACK, 213, 12, "CANVAS_BLACK")
 QDEF1(MP_QSTR_CANVAS_WHITE, 53, 12, "CANVAS_WHITE")
 QDEF1(MP_QSTR_CANVAS_WHITE, 53, 12, "CANVAS_WHITE")
+QDEF1(MP_QSTR_DEBUG, 52, 5, "DEBUG")
+QDEF1(MP_QSTR_ERROR, 157, 5, "ERROR")
 QDEF1(MP_QSTR_FONT_PRIMARY, 133, 12, "FONT_PRIMARY")
 QDEF1(MP_QSTR_FONT_PRIMARY, 133, 12, "FONT_PRIMARY")
 QDEF1(MP_QSTR_FONT_SECONDARY, 51, 14, "FONT_SECONDARY")
 QDEF1(MP_QSTR_FONT_SECONDARY, 51, 14, "FONT_SECONDARY")
 QDEF1(MP_QSTR_GPIO_MODE_ANALOG, 29, 16, "GPIO_MODE_ANALOG")
 QDEF1(MP_QSTR_GPIO_MODE_ANALOG, 29, 16, "GPIO_MODE_ANALOG")
@@ -204,6 +206,7 @@ QDEF1(MP_QSTR_GPIO_SPEED_HIGH, 125, 15, "GPIO_SPEED_HIGH")
 QDEF1(MP_QSTR_GPIO_SPEED_LOW, 71, 14, "GPIO_SPEED_LOW")
 QDEF1(MP_QSTR_GPIO_SPEED_LOW, 71, 14, "GPIO_SPEED_LOW")
 QDEF1(MP_QSTR_GPIO_SPEED_MEDIUM, 78, 17, "GPIO_SPEED_MEDIUM")
 QDEF1(MP_QSTR_GPIO_SPEED_MEDIUM, 78, 17, "GPIO_SPEED_MEDIUM")
 QDEF1(MP_QSTR_GPIO_SPEED_VERY_HIGH, 154, 20, "GPIO_SPEED_VERY_HIGH")
 QDEF1(MP_QSTR_GPIO_SPEED_VERY_HIGH, 154, 20, "GPIO_SPEED_VERY_HIGH")
+QDEF1(MP_QSTR_INFO, 235, 4, "INFO")
 QDEF1(MP_QSTR_INPUT_BUTTON_BACK, 174, 17, "INPUT_BUTTON_BACK")
 QDEF1(MP_QSTR_INPUT_BUTTON_BACK, 174, 17, "INPUT_BUTTON_BACK")
 QDEF1(MP_QSTR_INPUT_BUTTON_DOWN, 247, 17, "INPUT_BUTTON_DOWN")
 QDEF1(MP_QSTR_INPUT_BUTTON_DOWN, 247, 17, "INPUT_BUTTON_DOWN")
 QDEF1(MP_QSTR_INPUT_BUTTON_LEFT, 94, 17, "INPUT_BUTTON_LEFT")
 QDEF1(MP_QSTR_INPUT_BUTTON_LEFT, 94, 17, "INPUT_BUTTON_LEFT")
@@ -219,7 +222,7 @@ QDEF1(MP_QSTR_LIGHT_BACKLIGHT, 17, 15, "LIGHT_BACKLIGHT")
 QDEF1(MP_QSTR_LIGHT_BLUE, 90, 10, "LIGHT_BLUE")
 QDEF1(MP_QSTR_LIGHT_BLUE, 90, 10, "LIGHT_BLUE")
 QDEF1(MP_QSTR_LIGHT_GREEN, 95, 11, "LIGHT_GREEN")
 QDEF1(MP_QSTR_LIGHT_GREEN, 95, 11, "LIGHT_GREEN")
 QDEF1(MP_QSTR_LIGHT_RED, 215, 9, "LIGHT_RED")
 QDEF1(MP_QSTR_LIGHT_RED, 215, 9, "LIGHT_RED")
-QDEF1(MP_QSTR_Logger, 113, 6, "Logger")
+QDEF1(MP_QSTR_NONE, 79, 4, "NONE")
 QDEF1(MP_QSTR_SPEAKER_NOTE_A0, 95, 15, "SPEAKER_NOTE_A0")
 QDEF1(MP_QSTR_SPEAKER_NOTE_A0, 95, 15, "SPEAKER_NOTE_A0")
 QDEF1(MP_QSTR_SPEAKER_NOTE_A1, 94, 15, "SPEAKER_NOTE_A1")
 QDEF1(MP_QSTR_SPEAKER_NOTE_A1, 94, 15, "SPEAKER_NOTE_A1")
 QDEF1(MP_QSTR_SPEAKER_NOTE_A2, 93, 15, "SPEAKER_NOTE_A2")
 QDEF1(MP_QSTR_SPEAKER_NOTE_A2, 93, 15, "SPEAKER_NOTE_A2")
@@ -330,7 +333,9 @@ QDEF1(MP_QSTR_SPEAKER_NOTE_GS7, 13, 16, "SPEAKER_NOTE_GS7")
 QDEF1(MP_QSTR_SPEAKER_NOTE_GS8, 2, 16, "SPEAKER_NOTE_GS8")
 QDEF1(MP_QSTR_SPEAKER_NOTE_GS8, 2, 16, "SPEAKER_NOTE_GS8")
 QDEF1(MP_QSTR_SPEAKER_VOLUME_MAX, 66, 18, "SPEAKER_VOLUME_MAX")
 QDEF1(MP_QSTR_SPEAKER_VOLUME_MAX, 66, 18, "SPEAKER_VOLUME_MAX")
 QDEF1(MP_QSTR_SPEAKER_VOLUME_MIN, 92, 18, "SPEAKER_VOLUME_MIN")
 QDEF1(MP_QSTR_SPEAKER_VOLUME_MIN, 92, 18, "SPEAKER_VOLUME_MIN")
+QDEF1(MP_QSTR_TRACE, 196, 5, "TRACE")
 QDEF1(MP_QSTR_TextFileIO, 56, 10, "TextFileIO")
 QDEF1(MP_QSTR_TextFileIO, 56, 10, "TextFileIO")
+QDEF1(MP_QSTR_WARN, 239, 4, "WARN")
 QDEF0(MP_QSTR___add__, 196, 7, "__add__")
 QDEF0(MP_QSTR___add__, 196, 7, "__add__")
 QDEF1(MP_QSTR___bases__, 3, 9, "__bases__")
 QDEF1(MP_QSTR___bases__, 3, 9, "__bases__")
 QDEF0(MP_QSTR___bool__, 43, 8, "__bool__")
 QDEF0(MP_QSTR___bool__, 43, 8, "__bool__")
@@ -394,19 +399,21 @@ QDEF1(MP_QSTR_difference_update, 156, 17, "difference_update")
 QDEF1(MP_QSTR_discard, 15, 7, "discard")
 QDEF1(MP_QSTR_discard, 15, 7, "discard")
 QDEF1(MP_QSTR_encode, 67, 6, "encode")
 QDEF1(MP_QSTR_encode, 67, 6, "encode")
 QDEF1(MP_QSTR_errno, 193, 5, "errno")
 QDEF1(MP_QSTR_errno, 193, 5, "errno")
+QDEF1(MP_QSTR_error, 189, 5, "error")
 QDEF1(MP_QSTR_filter, 37, 6, "filter")
 QDEF1(MP_QSTR_filter, 37, 6, "filter")
 QDEF1(MP_QSTR_flipperzero, 179, 11, "flipperzero")
 QDEF1(MP_QSTR_flipperzero, 179, 11, "flipperzero")
 QDEF1(MP_QSTR_float, 53, 5, "float")
 QDEF1(MP_QSTR_float, 53, 5, "float")
 QDEF1(MP_QSTR_flush, 97, 5, "flush")
 QDEF1(MP_QSTR_flush, 97, 5, "flush")
 QDEF1(MP_QSTR_function, 39, 8, "function")
 QDEF1(MP_QSTR_function, 39, 8, "function")
 QDEF1(MP_QSTR_generator, 150, 9, "generator")
 QDEF1(MP_QSTR_generator, 150, 9, "generator")
-QDEF1(MP_QSTR_getLogger, 71, 9, "getLogger")
+QDEF1(MP_QSTR_getLevel, 197, 8, "getLevel")
 QDEF1(MP_QSTR_getrandbits, 102, 11, "getrandbits")
 QDEF1(MP_QSTR_getrandbits, 102, 11, "getrandbits")
 QDEF1(MP_QSTR_gpio_deinit_pin, 120, 15, "gpio_deinit_pin")
 QDEF1(MP_QSTR_gpio_deinit_pin, 120, 15, "gpio_deinit_pin")
 QDEF1(MP_QSTR_gpio_get_pin, 85, 12, "gpio_get_pin")
 QDEF1(MP_QSTR_gpio_get_pin, 85, 12, "gpio_get_pin")
 QDEF1(MP_QSTR_gpio_init_pin, 185, 13, "gpio_init_pin")
 QDEF1(MP_QSTR_gpio_init_pin, 185, 13, "gpio_init_pin")
 QDEF1(MP_QSTR_gpio_set_pin, 65, 12, "gpio_set_pin")
 QDEF1(MP_QSTR_gpio_set_pin, 65, 12, "gpio_set_pin")
 QDEF1(MP_QSTR_hex, 112, 3, "hex")
 QDEF1(MP_QSTR_hex, 112, 3, "hex")
+QDEF1(MP_QSTR_info, 235, 4, "info")
 QDEF1(MP_QSTR_infrared_is_busy, 195, 16, "infrared_is_busy")
 QDEF1(MP_QSTR_infrared_is_busy, 195, 16, "infrared_is_busy")
 QDEF1(MP_QSTR_infrared_receive, 112, 16, "infrared_receive")
 QDEF1(MP_QSTR_infrared_receive, 112, 16, "infrared_receive")
 QDEF1(MP_QSTR_infrared_transmit, 81, 17, "infrared_transmit")
 QDEF1(MP_QSTR_infrared_transmit, 81, 17, "infrared_transmit")
@@ -421,6 +428,7 @@ QDEF1(MP_QSTR_light_blink_set_color, 217, 21, "light_blink_set_color")
 QDEF1(MP_QSTR_light_blink_start, 121, 17, "light_blink_start")
 QDEF1(MP_QSTR_light_blink_start, 121, 17, "light_blink_start")
 QDEF1(MP_QSTR_light_blink_stop, 33, 16, "light_blink_stop")
 QDEF1(MP_QSTR_light_blink_stop, 33, 16, "light_blink_stop")
 QDEF1(MP_QSTR_light_set, 134, 9, "light_set")
 QDEF1(MP_QSTR_light_set, 134, 9, "light_set")
+QDEF1(MP_QSTR_log, 33, 3, "log")
 QDEF1(MP_QSTR_logging, 70, 7, "logging")
 QDEF1(MP_QSTR_logging, 70, 7, "logging")
 QDEF1(MP_QSTR_max, 177, 3, "max")
 QDEF1(MP_QSTR_max, 177, 3, "max")
 QDEF1(MP_QSTR_maximum_space_recursion_space_depth_space_exceeded, 115, 32, "maximum recursion depth exceeded")
 QDEF1(MP_QSTR_maximum_space_recursion_space_depth_space_exceeded, 115, 32, "maximum recursion depth exceeded")
@@ -440,6 +448,7 @@ QDEF1(MP_QSTR_readlines, 106, 9, "readlines")
 QDEF1(MP_QSTR_reversed, 161, 8, "reversed")
 QDEF1(MP_QSTR_reversed, 161, 8, "reversed")
 QDEF1(MP_QSTR_seed, 146, 4, "seed")
 QDEF1(MP_QSTR_seed, 146, 4, "seed")
 QDEF1(MP_QSTR_seek, 157, 4, "seek")
 QDEF1(MP_QSTR_seek, 157, 4, "seek")
+QDEF1(MP_QSTR_setLevel, 81, 8, "setLevel")
 QDEF1(MP_QSTR_sleep, 234, 5, "sleep")
 QDEF1(MP_QSTR_sleep, 234, 5, "sleep")
 QDEF1(MP_QSTR_sleep_ms, 11, 8, "sleep_ms")
 QDEF1(MP_QSTR_sleep_ms, 11, 8, "sleep_ms")
 QDEF1(MP_QSTR_sleep_us, 19, 8, "sleep_us")
 QDEF1(MP_QSTR_sleep_us, 19, 8, "sleep_us")
@@ -456,7 +465,9 @@ QDEF1(MP_QSTR_ticks_ms, 66, 8, "ticks_ms")
 QDEF1(MP_QSTR_ticks_us, 90, 8, "ticks_us")
 QDEF1(MP_QSTR_ticks_us, 90, 8, "ticks_us")
 QDEF1(MP_QSTR_time, 240, 4, "time")
 QDEF1(MP_QSTR_time, 240, 4, "time")
 QDEF1(MP_QSTR_time_ns, 114, 7, "time_ns")
 QDEF1(MP_QSTR_time_ns, 114, 7, "time_ns")
+QDEF1(MP_QSTR_trace, 164, 5, "trace")
 QDEF1(MP_QSTR_union, 246, 5, "union")
 QDEF1(MP_QSTR_union, 246, 5, "union")
 QDEF1(MP_QSTR_vibro_set, 216, 9, "vibro_set")
 QDEF1(MP_QSTR_vibro_set, 216, 9, "vibro_set")
+QDEF1(MP_QSTR_warn, 175, 4, "warn")
 QDEF1(MP_QSTR_writable, 247, 8, "writable")
 QDEF1(MP_QSTR_writable, 247, 8, "writable")
 QDEF1(MP_QSTR__brace_open__colon__hash_b_brace_close_, 88, 5, "{:#b}")
 QDEF1(MP_QSTR__brace_open__colon__hash_b_brace_close_, 88, 5, "{:#b}")

+ 58 - 29
mp_flipper_logging.c

@@ -4,56 +4,85 @@
 
 
 #include "py/obj.h"
 #include "py/obj.h"
 
 
-extern const mp_obj_type_t mp_flipper_logger_type;
+#include "mp_flipper_logging.h"
 
 
-typedef struct _mp_flipper_logger_t {
-    mp_obj_base_t base;
-    mp_obj_t name;
-} mp_flipper_logger_t;
-
-static mp_obj_t mp_flipper_logger_debug(size_t n_args, const mp_obj_t* args) {
-    if(n_args < 2) {
+static mp_obj_t mp_flipper_logging_log_internal(uint8_t level, size_t n_args, const mp_obj_t* args) {
+    if(n_args < 1 || level < mp_flipper_log_get_level()) {
         return mp_const_none;
         return mp_const_none;
     }
     }
 
 
-    mp_flipper_logger_t* logger = MP_OBJ_TO_PTR(args[0]);
+    mp_obj_t values = n_args > 1 ? mp_obj_new_tuple(n_args - 1, &args[1]) : mp_const_empty_tuple;
+    mp_obj_t message = mp_obj_str_binary_op(MP_BINARY_OP_MODULO, args[0], values);
+
+    mp_flipper_log(level, mp_obj_str_get_str(message));
+
+    return mp_const_none;
+}
 
 
-    mp_obj_t values = mp_obj_new_tuple(n_args - 2, &args[2]);
-    mp_obj_t message = mp_obj_str_binary_op(MP_BINARY_OP_MODULO, args[1], values);
+static mp_obj_t mp_flipper_logging_get_level() {
+    return mp_obj_new_int_from_uint(mp_flipper_log_get_level());
+}
+static MP_DEFINE_CONST_FUN_OBJ_0(mp_flipper_logging_get_level_obj, mp_flipper_logging_get_level);
 
 
-    mp_flipper_log_debug(mp_obj_str_get_str(logger->name), mp_obj_str_get_str(message));
+static mp_obj_t mp_flipper_logging_set_level(mp_obj_t level) {
+    mp_flipper_log_set_level(mp_obj_get_int(level));
 
 
     return mp_const_none;
     return mp_const_none;
 }
 }
-static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_flipper_logger_debug_obj, 2, 4, mp_flipper_logger_debug);
+static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logging_set_level_obj, mp_flipper_logging_set_level);
+
+static mp_obj_t mp_flipper_logging_log(size_t n_args, const mp_obj_t* args) {
+    if(n_args < 2) {
+        return mp_const_none;
+    }
 
 
-static mp_obj_t mp_flipper_logger_name(mp_obj_t self) {
-    mp_flipper_logger_t* logger = MP_OBJ_TO_PTR(self);
+    uint8_t level = mp_obj_get_int(args[0]);
 
 
-    return logger->name;
+    return mp_flipper_logging_log_internal(level, n_args - 1, &args[1]);
 }
 }
-static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logger_name_obj, mp_flipper_logger_name);
+static MP_DEFINE_CONST_FUN_OBJ_VAR(mp_flipper_logging_log_obj, 2, mp_flipper_logging_log);
 
 
-static const mp_map_elem_t mp_flipper_logger_locals_dict_table[] = {
-    {MP_OBJ_NEW_QSTR(MP_QSTR_name), MP_ROM_PTR(&mp_flipper_logger_name_obj)},
-    {MP_ROM_QSTR(MP_QSTR_debug), MP_ROM_PTR(&mp_flipper_logger_debug_obj)},
-};
-static MP_DEFINE_CONST_DICT(mp_flipper_logger_locals_dict, mp_flipper_logger_locals_dict_table);
+static mp_obj_t mp_flipper_logging_trace(size_t n_args, const mp_obj_t* args) {
+    return mp_flipper_logging_log_internal(MP_FLIPPER_LOG_LEVEL_TRACE, n_args, args);
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR(mp_flipper_logging_trace_obj, 1, mp_flipper_logging_trace);
 
 
-MP_DEFINE_CONST_OBJ_TYPE(mp_flipper_logger_type, MP_QSTR_Logger, MP_TYPE_FLAG_NONE, locals_dict, &mp_flipper_logger_locals_dict);
+static mp_obj_t mp_flipper_logging_debug(size_t n_args, const mp_obj_t* args) {
+    return mp_flipper_logging_log_internal(MP_FLIPPER_LOG_LEVEL_DEBUG, n_args, args);
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR(mp_flipper_logging_debug_obj, 1, mp_flipper_logging_debug);
 
 
-static mp_obj_t mp_flipper_logging_get_logger(mp_obj_t name) {
-    mp_flipper_logger_t* logger = mp_obj_malloc(mp_flipper_logger_t, &mp_flipper_logger_type);
+static mp_obj_t mp_flipper_logging_info(size_t n_args, const mp_obj_t* args) {
+    return mp_flipper_logging_log_internal(MP_FLIPPER_LOG_LEVEL_INFO, n_args, args);
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR(mp_flipper_logging_info_obj, 1, mp_flipper_logging_info);
 
 
-    logger->name = name;
+static mp_obj_t mp_flipper_logging_warn(size_t n_args, const mp_obj_t* args) {
+    return mp_flipper_logging_log_internal(MP_FLIPPER_LOG_LEVEL_WARN, n_args, args);
+}
+static MP_DEFINE_CONST_FUN_OBJ_VAR(mp_flipper_logging_warn_obj, 1, mp_flipper_logging_warn);
 
 
-    return MP_OBJ_FROM_PTR(logger);
+static mp_obj_t mp_flipper_logging_error(size_t n_args, const mp_obj_t* args) {
+    return mp_flipper_logging_log_internal(MP_FLIPPER_LOG_LEVEL_ERROR, n_args, args);
 }
 }
-static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logging_get_logger_obj, mp_flipper_logging_get_logger);
+static MP_DEFINE_CONST_FUN_OBJ_VAR(mp_flipper_logging_error_obj, 1, mp_flipper_logging_error);
 
 
 static const mp_rom_map_elem_t mp_module_logging_globals_table[] = {
 static const mp_rom_map_elem_t mp_module_logging_globals_table[] = {
     {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_logging)},
     {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_logging)},
-    {MP_ROM_QSTR(MP_QSTR_getLogger), MP_ROM_PTR(&mp_flipper_logging_get_logger_obj)},
+    {MP_ROM_QSTR(MP_QSTR_getLevel), MP_ROM_PTR(&mp_flipper_logging_get_level_obj)},
+    {MP_ROM_QSTR(MP_QSTR_setLevel), MP_ROM_PTR(&mp_flipper_logging_set_level_obj)},
+    {MP_ROM_QSTR(MP_QSTR_trace), MP_ROM_PTR(&mp_flipper_logging_trace_obj)},
+    {MP_ROM_QSTR(MP_QSTR_debug), MP_ROM_PTR(&mp_flipper_logging_debug_obj)},
+    {MP_ROM_QSTR(MP_QSTR_info), MP_ROM_PTR(&mp_flipper_logging_info_obj)},
+    {MP_ROM_QSTR(MP_QSTR_warn), MP_ROM_PTR(&mp_flipper_logging_warn_obj)},
+    {MP_ROM_QSTR(MP_QSTR_error), MP_ROM_PTR(&mp_flipper_logging_error_obj)},
+    {MP_ROM_QSTR(MP_QSTR_log), MP_ROM_PTR(&mp_flipper_logging_log_obj)},
+    {MP_ROM_QSTR(MP_QSTR_TRACE), MP_ROM_INT(MP_FLIPPER_LOG_LEVEL_TRACE)},
+    {MP_ROM_QSTR(MP_QSTR_DEBUG), MP_ROM_INT(MP_FLIPPER_LOG_LEVEL_DEBUG)},
+    {MP_ROM_QSTR(MP_QSTR_INFO), MP_ROM_INT(MP_FLIPPER_LOG_LEVEL_INFO)},
+    {MP_ROM_QSTR(MP_QSTR_WARN), MP_ROM_INT(MP_FLIPPER_LOG_LEVEL_WARN)},
+    {MP_ROM_QSTR(MP_QSTR_ERROR), MP_ROM_INT(MP_FLIPPER_LOG_LEVEL_ERROR)},
+    {MP_ROM_QSTR(MP_QSTR_NONE), MP_ROM_INT(MP_FLIPPER_LOG_LEVEL_NONE)},
 };
 };
 
 
 static MP_DEFINE_CONST_DICT(mp_module_logging_globals, mp_module_logging_globals_table);
 static MP_DEFINE_CONST_DICT(mp_module_logging_globals, mp_module_logging_globals_table);

+ 11 - 2
mp_flipper_logging.h

@@ -1,5 +1,14 @@
 #pragma once
 #pragma once
 
 
-#include <stdio.h>
+#include <stdint.h>
 
 
-void mp_flipper_log_debug(const char* name, const char* message);
+#define MP_FLIPPER_LOG_LEVEL_TRACE (0)
+#define MP_FLIPPER_LOG_LEVEL_DEBUG (1)
+#define MP_FLIPPER_LOG_LEVEL_INFO (2)
+#define MP_FLIPPER_LOG_LEVEL_WARN (3)
+#define MP_FLIPPER_LOG_LEVEL_ERROR (4)
+#define MP_FLIPPER_LOG_LEVEL_NONE (5)
+
+uint8_t mp_flipper_log_get_level();
+void mp_flipper_log_set_level(uint8_t level);
+void mp_flipper_log(uint8_t level, const char* message);