micropython 273 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. commit 292e48c3295583d1335d21a4f9fb55c7310a4ea4
  2. Author: Oliver Fabel <28701799+ofabel@users.noreply.github.com>
  3. Date: Sun Aug 4 07:14:04 2024 +0200
  4. library update
  5. diff --git a/genhdr/moduledefs.h b/genhdr/moduledefs.h
  6. index de8690d2e..ecb251d98 100644
  7. --- a/genhdr/moduledefs.h
  8. +++ b/genhdr/moduledefs.h
  9. @@ -1,9 +1,5 @@
  10. // Automatically generated by makemoduledefs.py.
  11. -extern const struct _mp_obj_module_t mp_module_array;
  12. -#undef MODULE_DEF_ARRAY
  13. -#define MODULE_DEF_ARRAY { MP_ROM_QSTR(MP_QSTR_array), MP_ROM_PTR(&mp_module_array) },
  14. -
  15. extern const struct _mp_obj_module_t mp_module_random;
  16. #undef MODULE_DEF_RANDOM
  17. #define MODULE_DEF_RANDOM { MP_ROM_QSTR(MP_QSTR_random), MP_ROM_PTR(&mp_module_random) },
  18. @@ -28,21 +24,15 @@ extern const struct _mp_obj_module_t mp_module_gc;
  19. #undef MODULE_DEF_GC
  20. #define MODULE_DEF_GC { MP_ROM_QSTR(MP_QSTR_gc), MP_ROM_PTR(&mp_module_gc) },
  21. -extern const struct _mp_obj_module_t mp_module_micropython;
  22. -#undef MODULE_DEF_MICROPYTHON
  23. -#define MODULE_DEF_MICROPYTHON { MP_ROM_QSTR(MP_QSTR_micropython), MP_ROM_PTR(&mp_module_micropython) },
  24. -
  25. #define MICROPY_REGISTERED_MODULES \
  26. MODULE_DEF_BUILTINS \
  27. MODULE_DEF_FLIPPERZERO \
  28. MODULE_DEF_GC \
  29. - MODULE_DEF_MICROPYTHON \
  30. MODULE_DEF___MAIN__ \
  31. // MICROPY_REGISTERED_MODULES
  32. #define MICROPY_REGISTERED_EXTENSIBLE_MODULES \
  33. - MODULE_DEF_ARRAY \
  34. MODULE_DEF_RANDOM \
  35. MODULE_DEF_TIME \
  36. // MICROPY_REGISTERED_EXTENSIBLE_MODULES
  37. diff --git a/genhdr/mpversion.h b/genhdr/mpversion.h
  38. index 65f0a26ae..b681f1ef9 100644
  39. --- a/genhdr/mpversion.h
  40. +++ b/genhdr/mpversion.h
  41. @@ -1,4 +1,4 @@
  42. // This file was generated by py/makeversionhdr.py
  43. -#define MICROPY_GIT_TAG "v1.23.0-preview.322.g5114f2c1e"
  44. +#define MICROPY_GIT_TAG "v1.23.0-preview.322.g5114f2c1e.dirty"
  45. #define MICROPY_GIT_HASH "5114f2c1e"
  46. -#define MICROPY_BUILD_DATE "2024-04-16"
  47. +#define MICROPY_BUILD_DATE "2024-08-04"
  48. diff --git a/genhdr/qstrdefs.generated.h b/genhdr/qstrdefs.generated.h
  49. index 9c7c86451..e2b0feefa 100644
  50. --- a/genhdr/qstrdefs.generated.h
  51. +++ b/genhdr/qstrdefs.generated.h
  52. @@ -166,8 +166,6 @@ QDEF0(MP_QSTR_value, 78, 5, "value")
  53. QDEF0(MP_QSTR_values, 125, 6, "values")
  54. QDEF0(MP_QSTR_write, 152, 5, "write")
  55. QDEF0(MP_QSTR_zip, 230, 3, "zip")
  56. -QDEF1(MP_QSTR__percent__hash_o, 108, 3, "%#o")
  57. -QDEF1(MP_QSTR__percent__hash_x, 123, 3, "%#x")
  58. QDEF0(MP_QSTR__lt_dictcomp_gt_, 204, 10, "<dictcomp>")
  59. QDEF0(MP_QSTR__lt_genexpr_gt_, 52, 9, "<genexpr>")
  60. QDEF0(MP_QSTR__lt_lambda_gt_, 128, 8, "<lambda>")
  61. @@ -175,13 +173,13 @@ QDEF0(MP_QSTR__lt_listcomp_gt_, 212, 10, "<listcomp>")
  62. QDEF0(MP_QSTR__lt_setcomp_gt_, 84, 9, "<setcomp>")
  63. QDEF1(MP_QSTR__lt_stdin_gt_, 227, 7, "<stdin>")
  64. QDEF1(MP_QSTR__lt_string_gt_, 82, 8, "<string>")
  65. -QDEF1(MP_QSTR_CANVAS_ALIGN_BEGIN, 167, 18, "CANVAS_ALIGN_BEGIN")
  66. -QDEF1(MP_QSTR_CANVAS_ALIGN_CENTER, 235, 19, "CANVAS_ALIGN_CENTER")
  67. -QDEF1(MP_QSTR_CANVAS_ALIGN_END, 239, 16, "CANVAS_ALIGN_END")
  68. +QDEF1(MP_QSTR_ALIGN_BEGIN, 240, 11, "ALIGN_BEGIN")
  69. +QDEF1(MP_QSTR_ALIGN_CENTER, 28, 12, "ALIGN_CENTER")
  70. +QDEF1(MP_QSTR_ALIGN_END, 248, 9, "ALIGN_END")
  71. QDEF1(MP_QSTR_CANVAS_BLACK, 213, 12, "CANVAS_BLACK")
  72. -QDEF1(MP_QSTR_CANVAS_FONT_PRIMARY, 242, 19, "CANVAS_FONT_PRIMARY")
  73. -QDEF1(MP_QSTR_CANVAS_FONT_SECONDARY, 4, 21, "CANVAS_FONT_SECONDARY")
  74. QDEF1(MP_QSTR_CANVAS_WHITE, 53, 12, "CANVAS_WHITE")
  75. +QDEF1(MP_QSTR_FONT_PRIMARY, 133, 12, "FONT_PRIMARY")
  76. +QDEF1(MP_QSTR_FONT_SECONDARY, 51, 14, "FONT_SECONDARY")
  77. QDEF1(MP_QSTR_INPUT_BUTTON_BACK, 174, 17, "INPUT_BUTTON_BACK")
  78. QDEF1(MP_QSTR_INPUT_BUTTON_DOWN, 247, 17, "INPUT_BUTTON_DOWN")
  79. QDEF1(MP_QSTR_INPUT_BUTTON_LEFT, 94, 17, "INPUT_BUTTON_LEFT")
  80. @@ -198,11 +196,9 @@ QDEF1(MP_QSTR_LIGHT_BLUE, 90, 10, "LIGHT_BLUE")
  81. QDEF1(MP_QSTR_LIGHT_GREEN, 95, 11, "LIGHT_GREEN")
  82. QDEF1(MP_QSTR_LIGHT_RED, 215, 9, "LIGHT_RED")
  83. QDEF0(MP_QSTR___add__, 196, 7, "__add__")
  84. -QDEF1(MP_QSTR___bases__, 3, 9, "__bases__")
  85. QDEF0(MP_QSTR___bool__, 43, 8, "__bool__")
  86. QDEF1(MP_QSTR___build_class__, 66, 15, "__build_class__")
  87. QDEF0(MP_QSTR___contains__, 198, 12, "__contains__")
  88. -QDEF1(MP_QSTR___dict__, 127, 8, "__dict__")
  89. QDEF0(MP_QSTR___eq__, 113, 6, "__eq__")
  90. QDEF1(MP_QSTR___file__, 3, 8, "__file__")
  91. QDEF0(MP_QSTR___float__, 53, 9, "__float__")
  92. @@ -222,7 +218,6 @@ QDEF0(MP_QSTR___sub__, 33, 7, "__sub__")
  93. QDEF1(MP_QSTR___traceback__, 79, 13, "__traceback__")
  94. QDEF1(MP_QSTR__input_trigger_handler, 108, 22, "_input_trigger_handler")
  95. QDEF1(MP_QSTR_add, 68, 3, "add")
  96. -QDEF1(MP_QSTR_array, 124, 5, "array")
  97. QDEF1(MP_QSTR_bin, 224, 3, "bin")
  98. QDEF1(MP_QSTR_bound_method, 151, 12, "bound_method")
  99. QDEF1(MP_QSTR_canvas_clear, 107, 12, "canvas_clear")
  100. @@ -241,34 +236,28 @@ QDEF1(MP_QSTR_canvas_text_height, 239, 18, "canvas_text_height")
  101. QDEF1(MP_QSTR_canvas_text_width, 86, 17, "canvas_text_width")
  102. QDEF1(MP_QSTR_canvas_update, 131, 13, "canvas_update")
  103. QDEF1(MP_QSTR_canvas_width, 180, 12, "canvas_width")
  104. -QDEF1(MP_QSTR_choice, 46, 6, "choice")
  105. QDEF1(MP_QSTR_closure, 116, 7, "closure")
  106. QDEF1(MP_QSTR_collect, 155, 7, "collect")
  107. -QDEF1(MP_QSTR_decode, 169, 6, "decode")
  108. QDEF1(MP_QSTR_default, 206, 7, "default")
  109. -QDEF1(MP_QSTR_delattr, 219, 7, "delattr")
  110. -QDEF1(MP_QSTR_deleter, 110, 7, "deleter")
  111. +QDEF1(MP_QSTR_dialog_message_clear, 95, 20, "dialog_message_clear")
  112. +QDEF1(MP_QSTR_dialog_message_set_button, 45, 25, "dialog_message_set_button")
  113. +QDEF1(MP_QSTR_dialog_message_set_header, 196, 25, "dialog_message_set_header")
  114. +QDEF1(MP_QSTR_dialog_message_set_text, 198, 23, "dialog_message_set_text")
  115. +QDEF1(MP_QSTR_dialog_message_show, 69, 19, "dialog_message_show")
  116. QDEF1(MP_QSTR_dict_view, 45, 9, "dict_view")
  117. QDEF1(MP_QSTR_difference, 114, 10, "difference")
  118. QDEF1(MP_QSTR_difference_update, 156, 17, "difference_update")
  119. QDEF1(MP_QSTR_disable, 145, 7, "disable")
  120. QDEF1(MP_QSTR_discard, 15, 7, "discard")
  121. -QDEF1(MP_QSTR_doc, 45, 3, "doc")
  122. QDEF1(MP_QSTR_enable, 4, 6, "enable")
  123. -QDEF1(MP_QSTR_encode, 67, 6, "encode")
  124. -QDEF1(MP_QSTR_enumerate, 113, 9, "enumerate")
  125. QDEF1(MP_QSTR_errno, 193, 5, "errno")
  126. QDEF1(MP_QSTR_filter, 37, 6, "filter")
  127. QDEF1(MP_QSTR_flipperzero, 179, 11, "flipperzero")
  128. QDEF1(MP_QSTR_float, 53, 5, "float")
  129. -QDEF1(MP_QSTR_fromkeys, 55, 8, "fromkeys")
  130. QDEF1(MP_QSTR_function, 39, 8, "function")
  131. QDEF1(MP_QSTR_gc, 97, 2, "gc")
  132. QDEF1(MP_QSTR_generator, 150, 9, "generator")
  133. QDEF1(MP_QSTR_getrandbits, 102, 11, "getrandbits")
  134. -QDEF1(MP_QSTR_getter, 144, 6, "getter")
  135. -QDEF1(MP_QSTR_heap_lock, 173, 9, "heap_lock")
  136. -QDEF1(MP_QSTR_heap_unlock, 86, 11, "heap_unlock")
  137. QDEF1(MP_QSTR_hex, 112, 3, "hex")
  138. QDEF1(MP_QSTR_intersection, 40, 12, "intersection")
  139. QDEF1(MP_QSTR_intersection_update, 6, 19, "intersection_update")
  140. @@ -276,7 +265,6 @@ QDEF1(MP_QSTR_isdisjoint, 247, 10, "isdisjoint")
  141. QDEF1(MP_QSTR_isenabled, 154, 9, "isenabled")
  142. QDEF1(MP_QSTR_issubset, 185, 8, "issubset")
  143. QDEF1(MP_QSTR_issuperset, 252, 10, "issuperset")
  144. -QDEF1(MP_QSTR_iterable, 37, 8, "iterable")
  145. QDEF1(MP_QSTR_iterator, 71, 8, "iterator")
  146. QDEF1(MP_QSTR_light_blink_set_color, 217, 21, "light_blink_set_color")
  147. QDEF1(MP_QSTR_light_blink_start, 121, 17, "light_blink_start")
  148. @@ -290,20 +278,13 @@ QDEF1(MP_QSTR_min, 175, 3, "min")
  149. QDEF1(MP_QSTR_module, 191, 6, "module")
  150. QDEF1(MP_QSTR_oct, 253, 3, "oct")
  151. QDEF1(MP_QSTR_on_input, 141, 8, "on_input")
  152. -QDEF1(MP_QSTR_opt_level, 135, 9, "opt_level")
  153. -QDEF1(MP_QSTR_property, 194, 8, "property")
  154. -QDEF1(MP_QSTR_randint, 175, 7, "randint")
  155. QDEF1(MP_QSTR_random, 190, 6, "random")
  156. -QDEF1(MP_QSTR_randrange, 163, 9, "randrange")
  157. QDEF1(MP_QSTR_rb, 213, 2, "rb")
  158. QDEF1(MP_QSTR_reversed, 161, 8, "reversed")
  159. -QDEF1(MP_QSTR_schedule, 224, 8, "schedule")
  160. QDEF1(MP_QSTR_seed, 146, 4, "seed")
  161. -QDEF1(MP_QSTR_setter, 4, 6, "setter")
  162. QDEF1(MP_QSTR_sleep, 234, 5, "sleep")
  163. QDEF1(MP_QSTR_sleep_ms, 11, 8, "sleep_ms")
  164. QDEF1(MP_QSTR_sleep_us, 19, 8, "sleep_us")
  165. -QDEF1(MP_QSTR_slice, 181, 5, "slice")
  166. QDEF1(MP_QSTR_speaker_set_volume, 116, 18, "speaker_set_volume")
  167. QDEF1(MP_QSTR_speaker_start, 1, 13, "speaker_start")
  168. QDEF1(MP_QSTR_speaker_stop, 153, 12, "speaker_stop")
  169. @@ -317,7 +298,8 @@ QDEF1(MP_QSTR_ticks_ms, 66, 8, "ticks_ms")
  170. QDEF1(MP_QSTR_ticks_us, 90, 8, "ticks_us")
  171. QDEF1(MP_QSTR_time, 240, 4, "time")
  172. QDEF1(MP_QSTR_time_ns, 114, 7, "time_ns")
  173. -QDEF1(MP_QSTR_uniform, 1, 7, "uniform")
  174. QDEF1(MP_QSTR_union, 246, 5, "union")
  175. QDEF1(MP_QSTR_vibro_set, 216, 9, "vibro_set")
  176. QDEF1(MP_QSTR__brace_open__colon__hash_b_brace_close_, 88, 5, "{:#b}")
  177. +QDEF1(MP_QSTR__brace_open__colon__hash_o_brace_close_, 245, 5, "{:#o}")
  178. +QDEF1(MP_QSTR__brace_open__colon__hash_x_brace_close_, 2, 5, "{:#x}")
  179. diff --git a/mp_flipper_config.h b/mp_flipper_config.h
  180. index 3beb5922d..f9d64330d 100644
  181. --- a/mp_flipper_config.h
  182. +++ b/mp_flipper_config.h
  183. @@ -83,7 +83,7 @@ typedef long mp_off_t;
  184. #define MICROPY_PY_TIME_TIME_TIME_NS (1)
  185. #define MICROPY_PY_RANDOM (1)
  186. -#define MICROPY_PY_RANDOM_EXTRA_FUNCS (1)
  187. +#define MICROPY_PY_RANDOM_EXTRA_FUNCS (0)
  188. #define MICROPY_PY_RANDOM_SEED_INIT_FUNC (mp_flipper_seed_init())
  189. @@ -113,7 +113,7 @@ typedef long mp_off_t;
  190. #define MICROPY_REPL_EVENT_DRIVEN (0)
  191. #define MICROPY_READLINE_HISTORY_SIZE (0)
  192. -#define MICROPY_CPYTHON_COMPAT (1)
  193. +#define MICROPY_CPYTHON_COMPAT (0)
  194. #define MICROPY_FULL_CHECKS (1)
  195. #define MICROPY_MODULE_FROZEN_MPY (0)
  196. @@ -126,15 +126,52 @@ typedef long mp_off_t;
  197. #define MICROPY_PY_ASYNC_AWAIT (0)
  198. #define MICROPY_PY_ASSIGN_EXPR (0)
  199. #define MICROPY_PY_GENERATOR_PEND_THROW (0)
  200. +#define MICROPY_PY_BUILTINS_BYTES_HEX (0)
  201. +#define MICROPY_PY_BUILTINS_STR_UNICODE (0)
  202. +#define MICROPY_PY_BUILTINS_STR_CENTER (0)
  203. +#define MICROPY_PY_BUILTINS_STR_COUNT (0)
  204. +#define MICROPY_PY_BUILTINS_STR_OP_MODULO (0)
  205. +#define MICROPY_PY_BUILTINS_STR_PARTITION (0)
  206. +#define MICROPY_PY_BUILTINS_STR_SPLITLINES (0)
  207. +#define MICROPY_PY_BUILTINS_BYTEARRAY (0)
  208. +#define MICROPY_PY_BUILTINS_DICT_FROMKEYS (0)
  209. +#define MICROPY_PY_BUILTINS_MEMORYVIEW (0)
  210. +#define MICROPY_PY_BUILTINS_SET (1)
  211. +#define MICROPY_PY_BUILTINS_SLICE (0)
  212. +#define MICROPY_PY_BUILTINS_SLICE_ATTRS (0)
  213. +#define MICROPY_PY_BUILTINS_SLICE_INDICES (0)
  214. +#define MICROPY_PY_BUILTINS_FROZENSET (0)
  215. +#define MICROPY_PY_BUILTINS_PROPERTY (0)
  216. +#define MICROPY_PY_BUILTINS_RANGE_ATTRS (0)
  217. +#define MICROPY_PY_BUILTINS_RANGE_BINOP (0)
  218. +#define MICROPY_PY_BUILTINS_NEXT2 (0)
  219. +#define MICROPY_PY_BUILTINS_ROUND_INT (0)
  220. +#define MICROPY_PY_ALL_SPECIAL_METHODS (0)
  221. +#define MICROPY_PY_REVERSE_SPECIAL_METHODS (0)
  222. +#define MICROPY_PY_BUILTINS_ENUMERATE (0)
  223. #define MICROPY_PY_BUILTINS_COMPILE (0)
  224. #define MICROPY_PY_BUILTINS_EVAL_EXEC (0)
  225. #define MICROPY_PY_BUILTINS_EXECFILE (0)
  226. +#define MICROPY_PY_BUILTINS_FILTER (1)
  227. +#define MICROPY_PY_BUILTINS_REVERSED (1)
  228. +#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
  229. #define MICROPY_PY_BUILTINS_INPUT (0)
  230. +#define MICROPY_PY_BUILTINS_MIN_MAX (1)
  231. +#define MICROPY_PY_BUILTINS_POW3 (0)
  232. +#define MICROPY_PY_BUILTINS_HELP (0)
  233. +#define MICROPY_PY_MICROPYTHON (0)
  234. +#define MICROPY_PY_MICROPYTHON_MEM_INFO (0)
  235. +#define MICROPY_PY_MICROPYTHON_STACK_USE (0)
  236. +#define MICROPY_PY_MICROPYTHON_HEAP_LOCKED (0)
  237. +#define MICROPY_PY_ARRAY (0)
  238. +#define MICROPY_PY_ARRAY_SLICE_ASSIGN (0)
  239. +#define MICROPY_PY_ATTRTUPLE (0)
  240. #define MICROPY_PY_COLLECTIONS (0)
  241. #define MICROPY_PY_STRUCT (0)
  242. #define MICROPY_PY_SYS (0)
  243. #define MICROPY_PY_SYS_MODULES (0)
  244. #define MICROPY_PY_SELECT_SELECT (0)
  245. +#define MICROPY_PY_SYS_EXIT (0)
  246. #define MICROPY_PY_RE (0)
  247. #define MICROPY_PY_CRYPTOLIB (0)
  248. #define MICROPY_PY_VFS (0)
  249. @@ -155,6 +192,8 @@ typedef long mp_off_t;
  250. #ifdef MP_FLIPPER_JSON
  251. #define MICROPY_PY_JSON (1)
  252. +#define MICROPY_PY_JSON_SEPARATORS (1)
  253. #else
  254. #define MICROPY_PY_JSON (0)
  255. +#define MICROPY_PY_JSON_SEPARATORS (0)
  256. #endif
  257. \ No newline at end of file
  258. diff --git a/mp_flipper_config_firmware.h b/mp_flipper_config_firmware.h
  259. index e319aa15e..483b62225 100644
  260. --- a/mp_flipper_config_firmware.h
  261. +++ b/mp_flipper_config_firmware.h
  262. @@ -2,11 +2,7 @@
  263. #define MP_FLIPPER_COMPILER
  264. #define MP_FLIPPER_RUNTIME
  265. -#define MP_FLIPPER_MPY_SUPPORT
  266. -#define MP_FLIPPER_FIRMWARE
  267. #define MP_FLIPPER_SPLIT_HEAP
  268. -#define MP_FLIPPER_MATH
  269. -#define MP_FLIPPER_JSON
  270. #define MP_FLIPPER_IO
  271. #include "mp_flipper_config.h"
  272. diff --git a/mp_flipper_modflipperzero.c b/mp_flipper_modflipperzero.c
  273. index b03b88b56..9ba8d026f 100644
  274. --- a/mp_flipper_modflipperzero.c
  275. +++ b/mp_flipper_modflipperzero.c
  276. @@ -283,6 +283,67 @@ void mp_flipper_on_input(uint16_t button, uint16_t type) {
  277. }
  278. }
  279. +static mp_obj_t flipperzero_dialog_message_set_text(size_t n_args, const mp_obj_t* args) {
  280. + if(n_args < 3) {
  281. + return mp_const_none;
  282. + }
  283. +
  284. + const char* text = mp_obj_str_get_str(args[0]);
  285. +
  286. + mp_int_t x = mp_obj_get_int(args[1]);
  287. + mp_int_t y = mp_obj_get_int(args[2]);
  288. + mp_int_t h = n_args > 3 ? mp_obj_get_int(args[3]) : MP_FLIPPER_ALIGN_BEGIN;
  289. + mp_int_t v = n_args > 4 ? mp_obj_get_int(args[4]) : MP_FLIPPER_ALIGN_BEGIN;
  290. +
  291. + mp_flipper_dialog_message_set_text(text, x, y, h, v);
  292. +
  293. + return mp_const_none;
  294. +}
  295. +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(flipperzero_dialog_message_set_text_obj, 3, 5, flipperzero_dialog_message_set_text);
  296. +
  297. +static mp_obj_t flipperzero_dialog_message_set_header(size_t n_args, const mp_obj_t* args) {
  298. + if(n_args < 3) {
  299. + return mp_const_none;
  300. + }
  301. +
  302. + const char* text = mp_obj_str_get_str(args[0]);
  303. +
  304. + mp_int_t x = mp_obj_get_int(args[1]);
  305. + mp_int_t y = mp_obj_get_int(args[2]);
  306. + mp_int_t h = n_args > 3 ? mp_obj_get_int(args[3]) : MP_FLIPPER_ALIGN_BEGIN;
  307. + mp_int_t v = n_args > 4 ? mp_obj_get_int(args[4]) : MP_FLIPPER_ALIGN_BEGIN;
  308. +
  309. + mp_flipper_dialog_message_set_header(text, x, y, h, v);
  310. +
  311. + return mp_const_none;
  312. +}
  313. +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(flipperzero_dialog_message_set_header_obj, 3, 5, flipperzero_dialog_message_set_header);
  314. +
  315. +static mp_obj_t flipperzero_dialog_message_set_button(mp_obj_t text_obj, mp_obj_t button_obj) {
  316. + const char* text = mp_obj_str_get_str(text_obj);
  317. +
  318. + mp_int_t button = mp_obj_get_int(button_obj);
  319. +
  320. + mp_flipper_dialog_message_set_button(text, button);
  321. +
  322. + return mp_const_none;
  323. +}
  324. +static MP_DEFINE_CONST_FUN_OBJ_2(flipperzero_dialog_message_set_button_obj, flipperzero_dialog_message_set_button);
  325. +
  326. +static mp_obj_t flipperzero_dialog_message_show() {
  327. + mp_int_t button = mp_flipper_dialog_message_show();
  328. +
  329. + return mp_obj_new_int(button);
  330. +}
  331. +static MP_DEFINE_CONST_FUN_OBJ_0(flipperzero_dialog_message_show_obj, flipperzero_dialog_message_show);
  332. +
  333. +static mp_obj_t flipperzero_dialog_message_clear() {
  334. + mp_flipper_dialog_message_clear();
  335. +
  336. + return mp_const_none;
  337. +}
  338. +static MP_DEFINE_CONST_FUN_OBJ_0(flipperzero_dialog_message_clear_obj, flipperzero_dialog_message_clear);
  339. +
  340. static const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
  341. {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_flipperzero)},
  342. {MP_ROM_QSTR(MP_QSTR_LIGHT_RED), MP_ROM_INT(MP_FLIPPER_LED_RED)},
  343. @@ -309,14 +370,14 @@ static const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
  344. {MP_ROM_QSTR(MP_QSTR_canvas_draw_line), MP_ROM_PTR(&flipperzero_canvas_draw_line_obj)},
  345. {MP_ROM_QSTR(MP_QSTR_canvas_draw_circle), MP_ROM_PTR(&flipperzero_canvas_draw_circle_obj)},
  346. {MP_ROM_QSTR(MP_QSTR_canvas_draw_disc), MP_ROM_PTR(&flipperzero_canvas_draw_disc_obj)},
  347. - {MP_ROM_QSTR(MP_QSTR_CANVAS_FONT_PRIMARY), MP_ROM_INT(MP_FLIPPER_CANVAS_FONT_PRIMARY)},
  348. - {MP_ROM_QSTR(MP_QSTR_CANVAS_FONT_SECONDARY), MP_ROM_INT(MP_FLIPPER_CANVAS_FONT_SECONDARY)},
  349. + {MP_ROM_QSTR(MP_QSTR_FONT_PRIMARY), MP_ROM_INT(MP_FLIPPER_FONT_PRIMARY)},
  350. + {MP_ROM_QSTR(MP_QSTR_FONT_SECONDARY), MP_ROM_INT(MP_FLIPPER_FONT_SECONDARY)},
  351. {MP_ROM_QSTR(MP_QSTR_canvas_set_font), MP_ROM_PTR(&flipperzero_canvas_set_font_obj)},
  352. {MP_ROM_QSTR(MP_QSTR_canvas_set_color), MP_ROM_PTR(&flipperzero_canvas_set_color_obj)},
  353. {MP_ROM_QSTR(MP_QSTR_canvas_set_text), MP_ROM_PTR(&flipperzero_canvas_set_text_obj)},
  354. - {MP_ROM_QSTR(MP_QSTR_CANVAS_ALIGN_BEGIN), MP_ROM_INT(MP_FLIPPER_CANVAS_ALIGN_BEGIN)},
  355. - {MP_ROM_QSTR(MP_QSTR_CANVAS_ALIGN_CENTER), MP_ROM_INT(MP_FLIPPER_CANVAS_ALIGN_CENTER)},
  356. - {MP_ROM_QSTR(MP_QSTR_CANVAS_ALIGN_END), MP_ROM_INT(MP_FLIPPER_CANVAS_ALIGN_END)},
  357. + {MP_ROM_QSTR(MP_QSTR_ALIGN_BEGIN), MP_ROM_INT(MP_FLIPPER_ALIGN_BEGIN)},
  358. + {MP_ROM_QSTR(MP_QSTR_ALIGN_CENTER), MP_ROM_INT(MP_FLIPPER_ALIGN_CENTER)},
  359. + {MP_ROM_QSTR(MP_QSTR_ALIGN_END), MP_ROM_INT(MP_FLIPPER_ALIGN_END)},
  360. {MP_ROM_QSTR(MP_QSTR_canvas_set_text_align), MP_ROM_PTR(&flipperzero_canvas_set_text_align_obj)},
  361. {MP_ROM_QSTR(MP_QSTR_canvas_update), MP_ROM_PTR(&flipperzero_canvas_update_obj)},
  362. {MP_ROM_QSTR(MP_QSTR_canvas_clear), MP_ROM_PTR(&flipperzero_canvas_clear_obj)},
  363. @@ -333,6 +394,11 @@ static const mp_rom_map_elem_t flipperzero_module_globals_table[] = {
  364. {MP_ROM_QSTR(MP_QSTR_INPUT_TYPE_SHORT), MP_ROM_INT(MP_FLIPPER_INPUT_TYPE_SHORT)},
  365. {MP_ROM_QSTR(MP_QSTR_INPUT_TYPE_LONG), MP_ROM_INT(MP_FLIPPER_INPUT_TYPE_LONG)},
  366. {MP_ROM_QSTR(MP_QSTR_INPUT_TYPE_REPEAT), MP_ROM_INT(MP_FLIPPER_INPUT_TYPE_REPEAT)},
  367. + {MP_ROM_QSTR(MP_QSTR_dialog_message_set_text), MP_ROM_PTR(&flipperzero_dialog_message_set_text_obj)},
  368. + {MP_ROM_QSTR(MP_QSTR_dialog_message_set_header), MP_ROM_PTR(&flipperzero_dialog_message_set_header_obj)},
  369. + {MP_ROM_QSTR(MP_QSTR_dialog_message_set_button), MP_ROM_PTR(&flipperzero_dialog_message_set_button_obj)},
  370. + {MP_ROM_QSTR(MP_QSTR_dialog_message_show), MP_ROM_PTR(&flipperzero_dialog_message_show_obj)},
  371. + {MP_ROM_QSTR(MP_QSTR_dialog_message_clear), MP_ROM_PTR(&flipperzero_dialog_message_clear_obj)},
  372. };
  373. static MP_DEFINE_CONST_DICT(flipperzero_module_globals, flipperzero_module_globals_table);
  374. diff --git a/mp_flipper_modflipperzero.h b/mp_flipper_modflipperzero.h
  375. index 8c305bf56..46fead016 100644
  376. --- a/mp_flipper_modflipperzero.h
  377. +++ b/mp_flipper_modflipperzero.h
  378. @@ -26,12 +26,12 @@
  379. #define MP_FLIPPER_INPUT_TYPE_REPEAT (1 << 10)
  380. #define MP_FLIPPER_INPUT_TYPE ((1 << 11) - 1 - MP_FLIPPER_INPUT_BUTTON)
  381. -#define MP_FLIPPER_CANVAS_ALIGN_BEGIN (1 << 0)
  382. -#define MP_FLIPPER_CANVAS_ALIGN_CENTER (1 << 1)
  383. -#define MP_FLIPPER_CANVAS_ALIGN_END (1 << 2)
  384. +#define MP_FLIPPER_ALIGN_BEGIN (1 << 0)
  385. +#define MP_FLIPPER_ALIGN_CENTER (1 << 1)
  386. +#define MP_FLIPPER_ALIGN_END (1 << 2)
  387. -#define MP_FLIPPER_CANVAS_FONT_PRIMARY (1 << 0)
  388. -#define MP_FLIPPER_CANVAS_FONT_SECONDARY (1 << 1)
  389. +#define MP_FLIPPER_FONT_PRIMARY (1 << 0)
  390. +#define MP_FLIPPER_FONT_SECONDARY (1 << 1)
  391. void mp_flipper_light_set(uint8_t raw_light, uint8_t brightness);
  392. void mp_flipper_light_blink_start(uint8_t raw_light, uint8_t brightness, uint16_t on_time, uint16_t period);
  393. @@ -62,3 +62,9 @@ void mp_flipper_canvas_update();
  394. void mp_flipper_canvas_clear();
  395. void mp_flipper_on_input(uint16_t button, uint16_t type);
  396. +
  397. +void mp_flipper_dialog_message_set_text(const char* text, uint8_t x, uint8_t y, uint8_t h, uint8_t v);
  398. +void mp_flipper_dialog_message_set_header(const char* text, uint8_t x, uint8_t y, uint8_t h, uint8_t v);
  399. +void mp_flipper_dialog_message_set_button(const char* text, uint8_t button);
  400. +uint8_t mp_flipper_dialog_message_show();
  401. +void mp_flipper_dialog_message_clear();