#include #include #include #include "py/obj.h" extern const mp_obj_type_t mp_flipper_logger_type; 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) { return mp_const_none; } mp_flipper_logger_t* logger = MP_OBJ_TO_PTR(args[0]); 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); mp_flipper_log_debug(mp_obj_str_get_str(logger->name), mp_obj_str_get_str(message)); 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_obj_t mp_flipper_logger_name(mp_obj_t self) { mp_flipper_logger_t* logger = MP_OBJ_TO_PTR(self); return logger->name; } static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logger_name_obj, mp_flipper_logger_name); 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); 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_get_logger(mp_obj_t name) { mp_flipper_logger_t* logger = mp_obj_malloc(mp_flipper_logger_t, &mp_flipper_logger_type); logger->name = name; return MP_OBJ_FROM_PTR(logger); } static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logging_get_logger_obj, mp_flipper_logging_get_logger); 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_getLogger), MP_ROM_PTR(&mp_flipper_logging_get_logger_obj)}, }; static MP_DEFINE_CONST_DICT(mp_module_logging_globals, mp_module_logging_globals_table); const mp_obj_module_t mp_module_logging = { .base = {&mp_type_module}, .globals = (mp_obj_dict_t*)&mp_module_logging_globals, }; MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_logging, mp_module_logging);