mp_flipper_logging.c 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. const char* message = mp_obj_str_get_str(args[1]);
  16. mp_flipper_log_debug(logger->name, message, &args[2], n_args - 2);
  17. return mp_const_none;
  18. }
  19. static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_flipper_logger_debug_obj, 2, 4, mp_flipper_logger_debug);
  20. static mp_obj_t mp_flipper_logger_name(mp_obj_t self) {
  21. mp_flipper_logger_t* logger = MP_OBJ_TO_PTR(self);
  22. return logger->name;
  23. }
  24. static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logger_name_obj, mp_flipper_logger_name);
  25. static const mp_map_elem_t mp_flipper_logger_locals_dict_table[] = {
  26. {MP_OBJ_NEW_QSTR(MP_QSTR_name), MP_ROM_PTR(&mp_flipper_logger_name_obj)},
  27. {MP_ROM_QSTR(MP_QSTR_debug), MP_ROM_PTR(&mp_flipper_logger_debug_obj)},
  28. };
  29. static MP_DEFINE_CONST_DICT(mp_flipper_logger_locals_dict, mp_flipper_logger_locals_dict_table);
  30. MP_DEFINE_CONST_OBJ_TYPE(mp_flipper_logger_type, MP_QSTR_Logger, MP_TYPE_FLAG_NONE, locals_dict, &mp_flipper_logger_locals_dict);
  31. static mp_obj_t mp_flipper_logging_get_logger(mp_obj_t name) {
  32. mp_flipper_logger_t* logger = mp_obj_malloc(mp_flipper_logger_t, &mp_flipper_logger_type);
  33. logger->name = name;
  34. return MP_OBJ_FROM_PTR(logger);
  35. }
  36. static MP_DEFINE_CONST_FUN_OBJ_1(mp_flipper_logging_get_logger_obj, mp_flipper_logging_get_logger);
  37. static const mp_rom_map_elem_t mp_module_logging_globals_table[] = {
  38. {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_logging)},
  39. {MP_ROM_QSTR(MP_QSTR_getLogger), MP_ROM_PTR(&mp_flipper_logging_get_logger_obj)},
  40. };
  41. static MP_DEFINE_CONST_DICT(mp_module_logging_globals, mp_module_logging_globals_table);
  42. const mp_obj_module_t mp_module_logging = {
  43. .base = {&mp_type_module},
  44. .globals = (mp_obj_dict_t*)&mp_module_logging_globals,
  45. };
  46. MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_logging, mp_module_logging);