reference.rst 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. Reference
  2. =========
  3. This page contains the API documentation of the ``flipperzero`` module and some built-in functions.
  4. The module is also available as a Python package on `PyPI <https://pypi.org/project/flipperzero/>`_.
  5. Install it in your local development environment if you need code completion support inside your IDE.
  6. Vibration
  7. ---------
  8. Control the vibration motor of your Flipper.
  9. .. autofunction:: flipperzero.vibro_set
  10. .. _reference-light:
  11. Light
  12. -----
  13. Control the RGB LED and display backlight of your Flipper.
  14. Constants
  15. ~~~~~~~~~
  16. .. autodata:: flipperzero.LIGHT_RED
  17. .. autodata:: flipperzero.LIGHT_GREEN
  18. .. autodata:: flipperzero.LIGHT_BLUE
  19. .. autodata:: flipperzero.LIGHT_BACKLIGHT
  20. Functions
  21. ~~~~~~~~~
  22. .. autofunction:: flipperzero.light_set
  23. .. autofunction:: flipperzero.light_blink_start
  24. .. autofunction:: flipperzero.light_blink_set_color
  25. .. autofunction:: flipperzero.light_blink_stop
  26. .. _reference-speaker:
  27. Speaker
  28. -------
  29. Full control over the built-in speaker module.
  30. Musical Notes
  31. ~~~~~~~~~~~~~
  32. Constant values for all musical notes between C\ :sub:`0` and B\ :sub:`8`.
  33. .. warning::
  34. You won't be able to find these constants in the REPL using autocompletion from version 1.7.0 onwards.
  35. But the constants are still available. You just have to type the full name by hand.
  36. ..
  37. for octave in range(9):
  38. for name in ['C', 'CS', 'D', 'DS', 'E', 'F', 'FS', 'G', 'GS', 'A', 'AS', 'B']:
  39. print(f'.. autodata:: flipperzero.SPEAKER_NOTE_{name}{octave}')
  40. .. autodata:: flipperzero.SPEAKER_NOTE_C0
  41. .. autodata:: flipperzero.SPEAKER_NOTE_CS0
  42. .. autodata:: flipperzero.SPEAKER_NOTE_D0
  43. .. autodata:: flipperzero.SPEAKER_NOTE_DS0
  44. .. autodata:: flipperzero.SPEAKER_NOTE_E0
  45. .. autodata:: flipperzero.SPEAKER_NOTE_F0
  46. .. autodata:: flipperzero.SPEAKER_NOTE_FS0
  47. .. autodata:: flipperzero.SPEAKER_NOTE_G0
  48. .. autodata:: flipperzero.SPEAKER_NOTE_GS0
  49. .. autodata:: flipperzero.SPEAKER_NOTE_A0
  50. .. autodata:: flipperzero.SPEAKER_NOTE_AS0
  51. .. autodata:: flipperzero.SPEAKER_NOTE_B0
  52. .. autodata:: flipperzero.SPEAKER_NOTE_C1
  53. .. autodata:: flipperzero.SPEAKER_NOTE_CS1
  54. .. autodata:: flipperzero.SPEAKER_NOTE_D1
  55. .. autodata:: flipperzero.SPEAKER_NOTE_DS1
  56. .. autodata:: flipperzero.SPEAKER_NOTE_E1
  57. .. autodata:: flipperzero.SPEAKER_NOTE_F1
  58. .. autodata:: flipperzero.SPEAKER_NOTE_FS1
  59. .. autodata:: flipperzero.SPEAKER_NOTE_G1
  60. .. autodata:: flipperzero.SPEAKER_NOTE_GS1
  61. .. autodata:: flipperzero.SPEAKER_NOTE_A1
  62. .. autodata:: flipperzero.SPEAKER_NOTE_AS1
  63. .. autodata:: flipperzero.SPEAKER_NOTE_B1
  64. .. autodata:: flipperzero.SPEAKER_NOTE_C2
  65. .. autodata:: flipperzero.SPEAKER_NOTE_CS2
  66. .. autodata:: flipperzero.SPEAKER_NOTE_D2
  67. .. autodata:: flipperzero.SPEAKER_NOTE_DS2
  68. .. autodata:: flipperzero.SPEAKER_NOTE_E2
  69. .. autodata:: flipperzero.SPEAKER_NOTE_F2
  70. .. autodata:: flipperzero.SPEAKER_NOTE_FS2
  71. .. autodata:: flipperzero.SPEAKER_NOTE_G2
  72. .. autodata:: flipperzero.SPEAKER_NOTE_GS2
  73. .. autodata:: flipperzero.SPEAKER_NOTE_A2
  74. .. autodata:: flipperzero.SPEAKER_NOTE_AS2
  75. .. autodata:: flipperzero.SPEAKER_NOTE_B2
  76. .. autodata:: flipperzero.SPEAKER_NOTE_C3
  77. .. autodata:: flipperzero.SPEAKER_NOTE_CS3
  78. .. autodata:: flipperzero.SPEAKER_NOTE_D3
  79. .. autodata:: flipperzero.SPEAKER_NOTE_DS3
  80. .. autodata:: flipperzero.SPEAKER_NOTE_E3
  81. .. autodata:: flipperzero.SPEAKER_NOTE_F3
  82. .. autodata:: flipperzero.SPEAKER_NOTE_FS3
  83. .. autodata:: flipperzero.SPEAKER_NOTE_G3
  84. .. autodata:: flipperzero.SPEAKER_NOTE_GS3
  85. .. autodata:: flipperzero.SPEAKER_NOTE_A3
  86. .. autodata:: flipperzero.SPEAKER_NOTE_AS3
  87. .. autodata:: flipperzero.SPEAKER_NOTE_B3
  88. .. autodata:: flipperzero.SPEAKER_NOTE_C4
  89. .. autodata:: flipperzero.SPEAKER_NOTE_CS4
  90. .. autodata:: flipperzero.SPEAKER_NOTE_D4
  91. .. autodata:: flipperzero.SPEAKER_NOTE_DS4
  92. .. autodata:: flipperzero.SPEAKER_NOTE_E4
  93. .. autodata:: flipperzero.SPEAKER_NOTE_F4
  94. .. autodata:: flipperzero.SPEAKER_NOTE_FS4
  95. .. autodata:: flipperzero.SPEAKER_NOTE_G4
  96. .. autodata:: flipperzero.SPEAKER_NOTE_GS4
  97. .. autodata:: flipperzero.SPEAKER_NOTE_A4
  98. .. autodata:: flipperzero.SPEAKER_NOTE_AS4
  99. .. autodata:: flipperzero.SPEAKER_NOTE_B4
  100. .. autodata:: flipperzero.SPEAKER_NOTE_C5
  101. .. autodata:: flipperzero.SPEAKER_NOTE_CS5
  102. .. autodata:: flipperzero.SPEAKER_NOTE_D5
  103. .. autodata:: flipperzero.SPEAKER_NOTE_DS5
  104. .. autodata:: flipperzero.SPEAKER_NOTE_E5
  105. .. autodata:: flipperzero.SPEAKER_NOTE_F5
  106. .. autodata:: flipperzero.SPEAKER_NOTE_FS5
  107. .. autodata:: flipperzero.SPEAKER_NOTE_G5
  108. .. autodata:: flipperzero.SPEAKER_NOTE_GS5
  109. .. autodata:: flipperzero.SPEAKER_NOTE_A5
  110. .. autodata:: flipperzero.SPEAKER_NOTE_AS5
  111. .. autodata:: flipperzero.SPEAKER_NOTE_B5
  112. .. autodata:: flipperzero.SPEAKER_NOTE_C6
  113. .. autodata:: flipperzero.SPEAKER_NOTE_CS6
  114. .. autodata:: flipperzero.SPEAKER_NOTE_D6
  115. .. autodata:: flipperzero.SPEAKER_NOTE_DS6
  116. .. autodata:: flipperzero.SPEAKER_NOTE_E6
  117. .. autodata:: flipperzero.SPEAKER_NOTE_F6
  118. .. autodata:: flipperzero.SPEAKER_NOTE_FS6
  119. .. autodata:: flipperzero.SPEAKER_NOTE_G6
  120. .. autodata:: flipperzero.SPEAKER_NOTE_GS6
  121. .. autodata:: flipperzero.SPEAKER_NOTE_A6
  122. .. autodata:: flipperzero.SPEAKER_NOTE_AS6
  123. .. autodata:: flipperzero.SPEAKER_NOTE_B6
  124. .. autodata:: flipperzero.SPEAKER_NOTE_C7
  125. .. autodata:: flipperzero.SPEAKER_NOTE_CS7
  126. .. autodata:: flipperzero.SPEAKER_NOTE_D7
  127. .. autodata:: flipperzero.SPEAKER_NOTE_DS7
  128. .. autodata:: flipperzero.SPEAKER_NOTE_E7
  129. .. autodata:: flipperzero.SPEAKER_NOTE_F7
  130. .. autodata:: flipperzero.SPEAKER_NOTE_FS7
  131. .. autodata:: flipperzero.SPEAKER_NOTE_G7
  132. .. autodata:: flipperzero.SPEAKER_NOTE_GS7
  133. .. autodata:: flipperzero.SPEAKER_NOTE_A7
  134. .. autodata:: flipperzero.SPEAKER_NOTE_AS7
  135. .. autodata:: flipperzero.SPEAKER_NOTE_B7
  136. .. autodata:: flipperzero.SPEAKER_NOTE_C8
  137. .. autodata:: flipperzero.SPEAKER_NOTE_CS8
  138. .. autodata:: flipperzero.SPEAKER_NOTE_D8
  139. .. autodata:: flipperzero.SPEAKER_NOTE_DS8
  140. .. autodata:: flipperzero.SPEAKER_NOTE_E8
  141. .. autodata:: flipperzero.SPEAKER_NOTE_F8
  142. .. autodata:: flipperzero.SPEAKER_NOTE_FS8
  143. .. autodata:: flipperzero.SPEAKER_NOTE_G8
  144. .. autodata:: flipperzero.SPEAKER_NOTE_GS8
  145. .. autodata:: flipperzero.SPEAKER_NOTE_A8
  146. .. autodata:: flipperzero.SPEAKER_NOTE_AS8
  147. .. autodata:: flipperzero.SPEAKER_NOTE_B8
  148. Volume
  149. ~~~~~~
  150. .. autodata:: flipperzero.SPEAKER_VOLUME_MIN
  151. .. autodata:: flipperzero.SPEAKER_VOLUME_MAX
  152. Functions
  153. ~~~~~~~~~
  154. .. autofunction:: flipperzero.speaker_start
  155. .. autofunction:: flipperzero.speaker_set_volume
  156. .. autofunction:: flipperzero.speaker_stop
  157. .. _reference-input:
  158. Input
  159. -----
  160. Make your application interactive with full control over the Flipper's hardware buttons.
  161. Buttons
  162. ~~~~~~~
  163. .. autodata:: flipperzero.INPUT_BUTTON_UP
  164. .. autodata:: flipperzero.INPUT_BUTTON_DOWN
  165. .. autodata:: flipperzero.INPUT_BUTTON_RIGHT
  166. .. autodata:: flipperzero.INPUT_BUTTON_LEFT
  167. .. autodata:: flipperzero.INPUT_BUTTON_OK
  168. .. autodata:: flipperzero.INPUT_BUTTON_BACK
  169. Events
  170. ~~~~~~
  171. .. autodata:: flipperzero.INPUT_TYPE_PRESS
  172. .. autodata:: flipperzero.INPUT_TYPE_RELEASE
  173. .. autodata:: flipperzero.INPUT_TYPE_SHORT
  174. .. autodata:: flipperzero.INPUT_TYPE_LONG
  175. .. autodata:: flipperzero.INPUT_TYPE_REPEAT
  176. Functions
  177. ~~~~~~~~~
  178. .. autodecorator:: flipperzero.on_input
  179. .. _reference-canvas:
  180. Canvas
  181. ------
  182. Write text and draw dots and shapes on the the display.
  183. Basics
  184. ~~~~~~
  185. .. autofunction:: flipperzero.canvas_update
  186. .. autofunction:: flipperzero.canvas_clear
  187. .. autofunction:: flipperzero.canvas_width
  188. .. autofunction:: flipperzero.canvas_height
  189. Colors
  190. ~~~~~~
  191. .. autodata:: flipperzero.COLOR_BLACK
  192. .. autodata:: flipperzero.COLOR_WHITE
  193. .. autofunction:: flipperzero.canvas_set_color
  194. Alignment
  195. ~~~~~~~~~
  196. .. autodata:: flipperzero.ALIGN_BEGIN
  197. .. autodata:: flipperzero.ALIGN_END
  198. .. autodata:: flipperzero.ALIGN_CENTER
  199. .. autofunction:: flipperzero.canvas_set_text_align
  200. Text
  201. ~~~~
  202. .. autodata:: flipperzero.FONT_PRIMARY
  203. .. autodata:: flipperzero.FONT_SECONDARY
  204. .. autofunction:: flipperzero.canvas_set_font
  205. .. autofunction:: flipperzero.canvas_set_text
  206. Shapes
  207. ~~~~~~
  208. .. autofunction:: flipperzero.canvas_draw_dot
  209. .. autofunction:: flipperzero.canvas_draw_box
  210. .. autofunction:: flipperzero.canvas_draw_frame
  211. .. autofunction:: flipperzero.canvas_draw_line
  212. .. autofunction:: flipperzero.canvas_draw_circle
  213. .. autofunction:: flipperzero.canvas_draw_disc
  214. Dialog
  215. ------
  216. Display message dialogs on the display for user infos and confirm actions.
  217. .. autofunction:: flipperzero.dialog_message_set_header
  218. .. autofunction:: flipperzero.dialog_message_set_text
  219. .. autofunction:: flipperzero.dialog_message_set_button
  220. .. autofunction:: flipperzero.dialog_message_show
  221. .. _reference-gpio:
  222. GPIO
  223. ----
  224. Access to the GPIO pins of your Flipper.
  225. Pins
  226. ~~~~
  227. .. autodata:: flipperzero.GPIO_PIN_PC0
  228. .. autodata:: flipperzero.GPIO_PIN_PC1
  229. .. autodata:: flipperzero.GPIO_PIN_PC3
  230. .. autodata:: flipperzero.GPIO_PIN_PB2
  231. .. autodata:: flipperzero.GPIO_PIN_PB3
  232. .. autodata:: flipperzero.GPIO_PIN_PA4
  233. .. autodata:: flipperzero.GPIO_PIN_PA6
  234. .. autodata:: flipperzero.GPIO_PIN_PA7
  235. Modes
  236. ~~~~~
  237. .. autodata:: flipperzero.GPIO_MODE_INPUT
  238. .. autodata:: flipperzero.GPIO_MODE_OUTPUT_PUSH_PULL
  239. .. autodata:: flipperzero.GPIO_MODE_OUTPUT_OPEN_DRAIN
  240. .. autodata:: flipperzero.GPIO_MODE_ANALOG
  241. .. autodata:: flipperzero.GPIO_MODE_INTERRUPT_RISE
  242. .. autodata:: flipperzero.GPIO_MODE_INTERRUPT_FALL
  243. Pull
  244. ~~~~
  245. .. autodata:: flipperzero.GPIO_PULL_NO
  246. .. autodata:: flipperzero.GPIO_PULL_UP
  247. .. autodata:: flipperzero.GPIO_PULL_DOWN
  248. Speed
  249. ~~~~~
  250. .. autodata:: flipperzero.GPIO_SPEED_LOW
  251. .. autodata:: flipperzero.GPIO_SPEED_MEDIUM
  252. .. autodata:: flipperzero.GPIO_SPEED_HIGH
  253. .. autodata:: flipperzero.GPIO_SPEED_VERY_HIGH
  254. Functions
  255. ~~~~~~~~~
  256. .. autofunction:: flipperzero.gpio_init_pin
  257. .. autofunction:: flipperzero.gpio_deinit_pin
  258. .. autofunction:: flipperzero.gpio_set_pin
  259. .. autofunction:: flipperzero.gpio_get_pin
  260. .. autodecorator:: flipperzero.on_gpio
  261. .. _reference-adc:
  262. ADC
  263. ---
  264. Read analog values from selected GPIO pins:
  265. * :const:`flipperzero.GPIO_PIN_PC0`
  266. * :const:`flipperzero.GPIO_PIN_PC1`
  267. * :const:`flipperzero.GPIO_PIN_PC3`
  268. * :const:`flipperzero.GPIO_PIN_PA4`
  269. * :const:`flipperzero.GPIO_PIN_PA6`
  270. * :const:`flipperzero.GPIO_PIN_PA7`
  271. The corresponding pin must be initialized in the analog mode:
  272. .. code-block::
  273. import flipperzero as f0
  274. f0.gpio_init_pin(f0.GPIO_PIN_PC0, f0.GPIO_MODE_ANALOG)
  275. This configures the pin as ADC input with the following settings:
  276. * Reference voltage is set to 2.048 V.
  277. * Clock speed is at 64 MHz in synchronous mode.
  278. * Oversample rate is set to 64.
  279. `This default configuration is best for relatively high impedance circuits with slowly or or not changing signals.`
  280. Functions
  281. ~~~~~~~~~
  282. .. autofunction:: flipperzero.adc_read_pin_value
  283. .. autofunction:: flipperzero.adc_read_pin_voltage
  284. .. _reference-pwm:
  285. PWM
  286. ---
  287. Output a PWM signal on selected GPIO pins:
  288. * :const:`flipperzero.GPIO_PIN_PA4`
  289. * :const:`flipperzero.GPIO_PIN_PA7`
  290. Functions
  291. ~~~~~~~~~
  292. .. autofunction:: flipperzero.pwm_start
  293. .. autofunction:: flipperzero.pwm_stop
  294. .. autofunction:: flipperzero.pwm_is_running
  295. .. _reference-infrared:
  296. Infrared
  297. --------
  298. Send and receive infrared signals.
  299. Signal Format
  300. ~~~~~~~~~~~~~
  301. The format to represent infrared signals uses a simple list of integers.
  302. Each value represents the duration between two signal edges in microseconds.
  303. Since this is a digital signal, there are only two levels: `high` and `low`.
  304. The timing list always starts with a `high` level.
  305. .. literalinclude:: ./assets/pwm_signal.txt
  306. :language: text
  307. .. hint::
  308. This is equal to the raw signal format of the `IR file <https://developer.flipper.net/flipperzero/doxygen/infrared_file_format.html>`_ specification.
  309. Functions
  310. ~~~~~~~~~
  311. .. autofunction:: flipperzero.infrared_receive
  312. .. autofunction:: flipperzero.infrared_transmit
  313. .. autofunction:: flipperzero.infrared_is_busy
  314. UART
  315. ----
  316. Connect to UART enabled devices.
  317. Modes
  318. ~~~~~
  319. .. autodata:: flipperzero.UART_MODE_LPUART
  320. .. autodata:: flipperzero.UART_MODE_USART
  321. Functions
  322. ~~~~~~~~~
  323. .. autofunction:: flipperzero.uart_open
  324. Classes
  325. ~~~~~~~
  326. .. autoclass:: flipperzero.UART
  327. :members: read, readline, readlines, write, flush, close, __enter__, __exit__, __del__
  328. Logging
  329. -------
  330. Log messages to the Flipper's own logging backend.
  331. Check out the `Flipper Zero docs <https://docs.flipper.net/development/cli#_yZ2E>`_ on how to reveal them in the CLI.
  332. Be aware, that you can't change Flipper's global log level from within your script.
  333. Change the `corresponding settings <https://docs.flipper.net/basics/settings#d5TAt>`_ instead or use the **log** command in the CLI with the desired log level as the first argument.
  334. Levels
  335. ~~~~~~
  336. .. autodata:: logging.TRACE
  337. .. autodata:: logging.DEBUG
  338. .. autodata:: logging.INFO
  339. .. autodata:: logging.WARN
  340. .. autodata:: logging.ERROR
  341. .. autodata:: logging.NONE
  342. .. autodata:: logging.level
  343. Functions
  344. ~~~~~~~~~
  345. .. autofunction:: logging.setLevel
  346. .. autofunction:: logging.getEffectiveLevel
  347. .. autofunction:: logging.trace
  348. .. autofunction:: logging.debug
  349. .. autofunction:: logging.info
  350. .. autofunction:: logging.warn
  351. .. autofunction:: logging.error
  352. .. autofunction:: logging.log
  353. I/O
  354. ---
  355. Read and write SD card files.
  356. Constants
  357. ~~~~~~~~~
  358. .. autodata:: io.SEEK_SET
  359. .. autodata:: io.SEEK_CUR
  360. .. autodata:: io.SEEK_END
  361. Functions
  362. ~~~~~~~~~
  363. .. autofunction:: io.open
  364. Classes
  365. ~~~~~~~
  366. .. autoclass:: io.BinaryFileIO
  367. :members: name, read, readline, readlines, readable, writable, write, flush, seek, tell, close, __enter__, __exit__, __del__
  368. .. autoclass:: io.TextFileIO
  369. :members: name, read, readline, readlines, readable, writable, write, flush, seek, tell, close, __enter__, __exit__, __del__
  370. Random
  371. ------
  372. Generate pseudo-random number for various use cases.
  373. Functions
  374. ~~~~~~~~~
  375. .. autofunction:: random.random
  376. .. autofunction:: random.uniform
  377. .. autofunction:: random.randrange
  378. .. autofunction:: random.getrandbits
  379. .. autofunction:: random.randint
  380. .. autofunction:: random.choice
  381. .. autofunction:: random.seed
  382. Built-In
  383. --------
  384. The functions in this section are `not` part of the ``flipperzero`` module.
  385. They're members of the global namespace instead.
  386. .. py:function:: print(*objects, sep=' ', end='\n') -> None
  387. The standard Python `print <https://docs.python.org/3/library/functions.html#print>`_ function.
  388. Where the output of this function will be redirected depends on how the script is invoked:
  389. * When invoked from the UI, the output will be sent to the Flipper's log buffer.
  390. Check out the `Flipper Zero docs <https://docs.flipper.net/development/cli#_yZ2E>`_ on how to view them in the CLI interface.
  391. * In the REPL, the output will be sent to the standard output buffer.
  392. * When invoked by the **py** command, the output will be sent to the standard output buffer.
  393. :param objects: The objects to print (mostly a single string).
  394. :param sep: The separator to use between the objects.
  395. :param end: The line terminator character to use.
  396. .. versionadded:: 1.0.0
  397. .. versionchanged:: 1.5.0
  398. Output redirection, based on script invocation.