mp_flipper_logging.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #include "py/obj.h"
  5. extern const mp_obj_type_t mp_flipper_logger_type;
  6. typedef struct _mp_flipper_logger_t {
  7. mp_obj_base_t base;
  8. mp_obj_t name;
  9. } mp_flipper_logger_t;
  10. static mp_obj_t mp_flipper_logger_debug(size_t n_args, const mp_obj_t* args) {
  11. if(n_args < 2) {
  12. return mp_const_none;
  13. }
  14. mp_flipper_logger_t* logger = MP_OBJ_TO_PTR(args[0]);
  15. mp_obj_t values = mp_obj_new_tuple(n_args - 2, &args[2]);
  16. mp_obj_t message = mp_obj_str_binary_op(MP_BINARY_OP_MODULO, args[1], values);
  17. mp_flipper_log_debug(mp_obj_str_get_str(logger->name), mp_obj_str_get_str(message));
  18. return mp_const_none;
  19. }
  20. static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_flipper_logger_debug_obj, 2, 4, mp_flipper_logger_debug);
  21. static mp_obj_t mp_flipper_logger_name(mp_obj_t self) {
  22. mp_flipper_logger_t* logger = MP_OBJ_TO_PTR(self);
  23. return logger->name;
  24. }
  25. static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logger_name_obj, mp_flipper_logger_name);
  26. static const mp_map_elem_t mp_flipper_logger_locals_dict_table[] = {
  27. {MP_OBJ_NEW_QSTR(MP_QSTR_name), MP_ROM_PTR(&mp_flipper_logger_name_obj)},
  28. {MP_ROM_QSTR(MP_QSTR_debug), MP_ROM_PTR(&mp_flipper_logger_debug_obj)},
  29. };
  30. static MP_DEFINE_CONST_DICT(mp_flipper_logger_locals_dict, mp_flipper_logger_locals_dict_table);
  31. MP_DEFINE_CONST_OBJ_TYPE(mp_flipper_logger_type, MP_QSTR_Logger, MP_TYPE_FLAG_NONE, locals_dict, &mp_flipper_logger_locals_dict);
  32. static mp_obj_t mp_flipper_logging_get_logger(mp_obj_t name) {
  33. mp_flipper_logger_t* logger = mp_obj_malloc(mp_flipper_logger_t, &mp_flipper_logger_type);
  34. logger->name = name;
  35. return MP_OBJ_FROM_PTR(logger);
  36. }
  37. static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logging_get_logger_obj, mp_flipper_logging_get_logger);
  38. static const mp_rom_map_elem_t mp_module_logging_globals_table[] = {
  39. {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_logging)},
  40. {MP_ROM_QSTR(MP_QSTR_getLogger), MP_ROM_PTR(&mp_flipper_logging_get_logger_obj)},
  41. };
  42. static MP_DEFINE_CONST_DICT(mp_module_logging_globals, mp_module_logging_globals_table);
  43. const mp_obj_module_t mp_module_logging = {
  44. .base = {&mp_type_module},
  45. .globals = (mp_obj_dict_t*)&mp_module_logging_globals,
  46. };
  47. MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_logging, mp_module_logging);