reference.rst 14 KB

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