├── .gitignore ├── .gitmodules ├── LICENSE ├── List of FAQ.md ├── README.md ├── README_en.md ├── README_zh_CN.md ├── doc └── Documents.txt ├── driver ├── CH341SER.ZIP ├── CH341SER_LINUX.ZIP └── CH341SER_MAC.ZIP ├── example ├── camera_test │ ├── .gitignore │ ├── CMakeLists.txt │ ├── components │ │ └── esp32-camera │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── Kconfig │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── component.mk │ │ │ ├── conversions │ │ │ ├── esp_jpg_decode.c │ │ │ ├── include │ │ │ │ ├── esp_jpg_decode.h │ │ │ │ └── img_converters.h │ │ │ ├── jpge.cpp │ │ │ ├── private_include │ │ │ │ ├── jpge.h │ │ │ │ └── yuv.h │ │ │ ├── to_bmp.c │ │ │ ├── to_jpg.cpp │ │ │ └── yuv.c │ │ │ ├── driver │ │ │ ├── cam_hal.c │ │ │ ├── esp_camera.c │ │ │ ├── include │ │ │ │ ├── esp_camera.h │ │ │ │ └── sensor.h │ │ │ ├── private_include │ │ │ │ ├── cam_hal.h │ │ │ │ ├── camera_common.h │ │ │ │ ├── sccb.h │ │ │ │ └── xclk.h │ │ │ ├── sccb.c │ │ │ └── sensor.c │ │ │ ├── examples │ │ │ └── take_picture.c │ │ │ ├── library.json │ │ │ ├── sensors │ │ │ ├── nt99141.c │ │ │ ├── ov2640.c │ │ │ ├── ov3660.c │ │ │ ├── ov5640.c │ │ │ ├── ov7670.c │ │ │ ├── ov7725.c │ │ │ └── private_include │ │ │ │ ├── nt99141.h │ │ │ │ ├── nt99141_regs.h │ │ │ │ ├── nt99141_settings.h │ │ │ │ ├── ov2640.h │ │ │ │ ├── ov2640_regs.h │ │ │ │ ├── ov2640_settings.h │ │ │ │ ├── ov3660.h │ │ │ │ ├── ov3660_regs.h │ │ │ │ ├── ov3660_settings.h │ │ │ │ ├── ov5640.h │ │ │ │ ├── ov5640_regs.h │ │ │ │ ├── ov5640_settings.h │ │ │ │ ├── ov7670.h │ │ │ │ ├── ov7670_regs.h │ │ │ │ ├── ov7725.h │ │ │ │ └── ov7725_regs.h │ │ │ ├── target │ │ │ ├── esp32 │ │ │ │ └── ll_cam.c │ │ │ ├── esp32s2 │ │ │ │ ├── ll_cam.c │ │ │ │ ├── private_include │ │ │ │ │ └── tjpgd.h │ │ │ │ └── tjpgd.c │ │ │ ├── esp32s3 │ │ │ │ └── ll_cam.c │ │ │ ├── private_include │ │ │ │ └── ll_cam.h │ │ │ └── xclk.c │ │ │ └── test │ │ │ ├── CMakeLists.txt │ │ │ ├── component.mk │ │ │ ├── pictures │ │ │ ├── test_inside.jpeg │ │ │ ├── test_outside.jpeg │ │ │ └── testimg.jpeg │ │ │ └── test_camera.c │ ├── main │ │ ├── CMakeLists.txt │ │ ├── camera_test.c │ │ └── component.mk │ ├── partitions_8M.csv │ ├── sdkconfig │ ├── sdkconfig.240mhz_s3 │ ├── sdkconfig.base_s3 │ ├── sdkconfig.freertos │ ├── sdkconfig.spiram_s3 │ └── sdkconfig.usb ├── cdc_msc │ ├── .gitignore │ ├── CMakeLists.txt │ ├── partitions_8M.csv │ ├── sdkconfig │ ├── sdkconfig.240mhz_s3 │ ├── sdkconfig.base_s3 │ ├── sdkconfig.freertos │ ├── sdkconfig.spiram_s3 │ ├── sdkconfig.usb │ └── src │ │ ├── CMakeLists.txt │ │ ├── main.c │ │ ├── msc_disk.c │ │ ├── tusb_config.h │ │ └── usb_descriptors.c ├── cdc_msc_freertos │ ├── .gitignore │ ├── CMakeLists.txt │ ├── partitions_8M.csv │ ├── sdkconfig │ ├── sdkconfig.240mhz_s3 │ ├── sdkconfig.base_s3 │ ├── sdkconfig.freertos │ ├── sdkconfig.spiram_s3 │ ├── sdkconfig.usb │ └── src │ │ ├── CMakeLists.txt │ │ ├── FreeRTOSConfig.h │ │ ├── freertos_hook.c │ │ ├── main.c │ │ ├── msc_disk.c │ │ ├── tusb_config.h │ │ └── usb_descriptors.c ├── lv_port_esp32 │ ├── .cproject │ ├── .github │ │ ├── ISSUE_TEMPLATE │ │ │ └── issue-template.md │ │ ├── auto-comment.yml │ │ └── stale.yml │ ├── .gitignore │ ├── .gitmodules │ ├── .settings │ │ ├── language.settings.xml │ │ └── org.eclipse.cdt.core.prefs │ ├── CMakeLists.txt │ ├── components │ │ ├── lv_examples │ │ │ ├── CMakeLists.txt │ │ │ ├── Kconfig │ │ │ ├── component.mk │ │ │ ├── lv_demo_conf.h │ │ │ └── lv_examples │ │ │ │ ├── .github │ │ │ │ ├── auto-comment.yml │ │ │ │ └── stale.yml │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── README.md │ │ │ │ ├── docs │ │ │ │ └── LICENSE.md │ │ │ │ ├── library.properties │ │ │ │ ├── lv_demo.h │ │ │ │ ├── lv_demo.mk │ │ │ │ ├── lv_demo_conf_template.h │ │ │ │ ├── scripts │ │ │ │ ├── build_all_examples.sh │ │ │ │ ├── examples.txt │ │ │ │ └── genexamplestxt.sh │ │ │ │ └── src │ │ │ │ ├── header.py │ │ │ │ ├── lv_demo.h │ │ │ │ ├── lv_demo_benchmark │ │ │ │ ├── README.md │ │ │ │ ├── lv_demo_benchmark.c │ │ │ │ ├── lv_demo_benchmark.h │ │ │ │ ├── screenshot1.png │ │ │ │ └── screenshot2.png │ │ │ │ ├── lv_demo_keypad_encoder │ │ │ │ ├── README.md │ │ │ │ ├── lv_demo_keypad_encoder.c │ │ │ │ ├── lv_demo_keypad_encoder.h │ │ │ │ ├── screenshot1.gif │ │ │ │ └── screenshot1.png │ │ │ │ ├── lv_demo_music │ │ │ │ ├── README.md │ │ │ │ ├── assets │ │ │ │ │ ├── __pycache__ │ │ │ │ │ │ └── spectrum.cpython-36.pyc │ │ │ │ │ ├── img_lv_demo_music_btn_corner_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_list_pause.c │ │ │ │ │ ├── img_lv_demo_music_btn_list_pause_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_list_play.c │ │ │ │ │ ├── img_lv_demo_music_btn_list_play_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_loop.c │ │ │ │ │ ├── img_lv_demo_music_btn_loop_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_next.c │ │ │ │ │ ├── img_lv_demo_music_btn_next_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_pause.c │ │ │ │ │ ├── img_lv_demo_music_btn_pause_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_play.c │ │ │ │ │ ├── img_lv_demo_music_btn_play_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_prev.c │ │ │ │ │ ├── img_lv_demo_music_btn_prev_large.c │ │ │ │ │ ├── img_lv_demo_music_btn_rnd.c │ │ │ │ │ ├── img_lv_demo_music_btn_rnd_large.c │ │ │ │ │ ├── img_lv_demo_music_corner_left.c │ │ │ │ │ ├── img_lv_demo_music_corner_left_large.c │ │ │ │ │ ├── img_lv_demo_music_corner_right.c │ │ │ │ │ ├── img_lv_demo_music_corner_right_large.c │ │ │ │ │ ├── img_lv_demo_music_cover_1.c │ │ │ │ │ ├── img_lv_demo_music_cover_1_large.c │ │ │ │ │ ├── img_lv_demo_music_cover_2.c │ │ │ │ │ ├── img_lv_demo_music_cover_2_large.c │ │ │ │ │ ├── img_lv_demo_music_cover_3.c │ │ │ │ │ ├── img_lv_demo_music_cover_3_large.c │ │ │ │ │ ├── img_lv_demo_music_icon_1.c │ │ │ │ │ ├── img_lv_demo_music_icon_1_large.c │ │ │ │ │ ├── img_lv_demo_music_icon_2.c │ │ │ │ │ ├── img_lv_demo_music_icon_2_large.c │ │ │ │ │ ├── img_lv_demo_music_icon_3.c │ │ │ │ │ ├── img_lv_demo_music_icon_3_large.c │ │ │ │ │ ├── img_lv_demo_music_icon_4.c │ │ │ │ │ ├── img_lv_demo_music_icon_4_large.c │ │ │ │ │ ├── img_lv_demo_music_list_border.c │ │ │ │ │ ├── img_lv_demo_music_list_border_large.c │ │ │ │ │ ├── img_lv_demo_music_logo.c │ │ │ │ │ ├── img_lv_demo_music_slider_knob.c │ │ │ │ │ ├── img_lv_demo_music_slider_knob_large.c │ │ │ │ │ ├── img_lv_demo_music_wave_bottom.c │ │ │ │ │ ├── img_lv_demo_music_wave_bottom_large.c │ │ │ │ │ ├── img_lv_demo_music_wave_top.c │ │ │ │ │ ├── img_lv_demo_music_wave_top_large.c │ │ │ │ │ ├── spectrum.py │ │ │ │ │ ├── spectrum_1.h │ │ │ │ │ ├── spectrum_2.h │ │ │ │ │ └── spectrum_3.h │ │ │ │ ├── lv_demo_music.c │ │ │ │ ├── lv_demo_music.h │ │ │ │ ├── lv_demo_music_list.c │ │ │ │ ├── lv_demo_music_list.h │ │ │ │ ├── lv_demo_music_main.c │ │ │ │ ├── lv_demo_music_main.h │ │ │ │ └── screenshot1.gif │ │ │ │ ├── lv_demo_stress │ │ │ │ ├── README.md │ │ │ │ ├── assets │ │ │ │ │ ├── lv_font_montserrat_12_compr_az.c │ │ │ │ │ ├── lv_font_montserrat_16_compr_az.c │ │ │ │ │ └── lv_font_montserrat_28_compr_az.c │ │ │ │ ├── lv_demo_stress.c │ │ │ │ ├── lv_demo_stress.h │ │ │ │ ├── screenshot1.gif │ │ │ │ └── screenshot1.png │ │ │ │ └── lv_demo_widgets │ │ │ │ ├── assets │ │ │ │ ├── avatar.png │ │ │ │ ├── clothes.png │ │ │ │ ├── img_clothes.c │ │ │ │ ├── img_demo_widgets_avatar.c │ │ │ │ ├── img_lvgl_logo.c │ │ │ │ └── lvgl_logo.png │ │ │ │ ├── lv_demo_widgets.c │ │ │ │ ├── lv_demo_widgets.h │ │ │ │ ├── lv_demo_widgets.py │ │ │ │ ├── screenshot1.gif │ │ │ │ └── screenshot1.png │ │ ├── lvgl │ │ │ ├── .editorconfig │ │ │ ├── .github │ │ │ │ ├── FUNDING.yml │ │ │ │ ├── ISSUE_TEMPLATE │ │ │ │ │ ├── bug-report.md │ │ │ │ │ ├── config.yml │ │ │ │ │ └── dev-discussion.md │ │ │ │ ├── auto-comment.yml │ │ │ │ ├── pull_request_template.md │ │ │ │ └── workflows │ │ │ │ │ ├── build_micropython.yml │ │ │ │ │ ├── ccpp.yml │ │ │ │ │ ├── close_old_issues.yml │ │ │ │ │ ├── compile_docs.yml │ │ │ │ │ ├── main.yml │ │ │ │ │ └── release.yml │ │ │ ├── .gitignore │ │ │ ├── .gitmodules │ │ │ ├── CMakeLists.txt │ │ │ ├── Kconfig │ │ │ ├── LICENCE.txt │ │ │ ├── README.md │ │ │ ├── component.mk │ │ │ ├── docs │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── CODE_OF_CONDUCT.md │ │ │ │ ├── CODING_STYLE.md │ │ │ │ ├── CONTRIBUTING.md │ │ │ │ ├── ROADMAP.md │ │ │ │ ├── _ext │ │ │ │ │ └── lv_example.py │ │ │ │ ├── _static │ │ │ │ │ ├── css │ │ │ │ │ │ ├── custom.css │ │ │ │ │ │ └── fontawesome.min.css │ │ │ │ │ └── img │ │ │ │ │ │ ├── home_1.png │ │ │ │ │ │ ├── home_2.png │ │ │ │ │ │ ├── home_3.png │ │ │ │ │ │ ├── home_4.png │ │ │ │ │ │ ├── home_5.png │ │ │ │ │ │ ├── home_6.png │ │ │ │ │ │ └── home_banner.jpg │ │ │ │ ├── _templates │ │ │ │ │ ├── layout.html │ │ │ │ │ └── page.html │ │ │ │ ├── build.py │ │ │ │ ├── conf.py │ │ │ │ ├── example_list.py │ │ │ │ ├── examples.md │ │ │ │ ├── favicon.png │ │ │ │ ├── get-started │ │ │ │ │ ├── arduino.md │ │ │ │ │ ├── espressif.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── micropython.md │ │ │ │ │ ├── nuttx.md │ │ │ │ │ ├── nxp.md │ │ │ │ │ ├── pc-simulator.md │ │ │ │ │ ├── quick-overview.md │ │ │ │ │ └── stm32.md │ │ │ │ ├── header.rst │ │ │ │ ├── index.md │ │ │ │ ├── intro │ │ │ │ │ └── index.md │ │ │ │ ├── layouts │ │ │ │ │ ├── flex.md │ │ │ │ │ ├── grid.md │ │ │ │ │ └── index.md │ │ │ │ ├── logo_lvgl.png │ │ │ │ ├── misc │ │ │ │ │ ├── align.png │ │ │ │ │ ├── bidi.png │ │ │ │ │ ├── boxmodel.png │ │ │ │ │ ├── btn_example.png │ │ │ │ │ ├── button_style_example.gif │ │ │ │ │ ├── button_style_example.png │ │ │ │ │ ├── codeblocks.jpg │ │ │ │ │ ├── eclipse.jpg │ │ │ │ │ ├── layers.png │ │ │ │ │ ├── par_child1.png │ │ │ │ │ ├── par_child2.png │ │ │ │ │ ├── par_child3.png │ │ │ │ │ ├── platformio.jpg │ │ │ │ │ ├── qtcreator.jpg │ │ │ │ │ ├── simple_button_example.gif │ │ │ │ │ ├── simple_button_example.png │ │ │ │ │ ├── symbols.png │ │ │ │ │ ├── sys.png │ │ │ │ │ └── visualstudio.jpg │ │ │ │ ├── overview │ │ │ │ │ ├── animation.md │ │ │ │ │ ├── color.md │ │ │ │ │ ├── coords.md │ │ │ │ │ ├── display.md │ │ │ │ │ ├── drawing.md │ │ │ │ │ ├── event.md │ │ │ │ │ ├── file-system.md │ │ │ │ │ ├── font.md │ │ │ │ │ ├── image.md │ │ │ │ │ ├── indev.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── layer.md │ │ │ │ │ ├── new_widget.md │ │ │ │ │ ├── object.md │ │ │ │ │ ├── scroll.md │ │ │ │ │ ├── style-props.md │ │ │ │ │ ├── style.md │ │ │ │ │ └── timer.md │ │ │ │ ├── porting │ │ │ │ │ ├── display.md │ │ │ │ │ ├── indev.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── log.md │ │ │ │ │ ├── os.md │ │ │ │ │ ├── project.md │ │ │ │ │ ├── sleep.md │ │ │ │ │ ├── task-handler.md │ │ │ │ │ └── tick.md │ │ │ │ ├── requirements.txt │ │ │ │ └── widgets │ │ │ │ │ ├── core │ │ │ │ │ ├── arc.md │ │ │ │ │ ├── bar.md │ │ │ │ │ ├── btn.md │ │ │ │ │ ├── btnmatrix.md │ │ │ │ │ ├── canvas.md │ │ │ │ │ ├── checkbox.md │ │ │ │ │ ├── dropdown.md │ │ │ │ │ ├── img.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── label.md │ │ │ │ │ ├── line.md │ │ │ │ │ ├── roller.md │ │ │ │ │ ├── slider.md │ │ │ │ │ ├── switch.md │ │ │ │ │ ├── table.md │ │ │ │ │ └── textarea.md │ │ │ │ │ ├── extra │ │ │ │ │ ├── calendar.md │ │ │ │ │ ├── chart.md │ │ │ │ │ ├── colorwheel.md │ │ │ │ │ ├── imgbtn.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── keyboard.md │ │ │ │ │ ├── led.md │ │ │ │ │ ├── list.md │ │ │ │ │ ├── meter.md │ │ │ │ │ ├── msgbox.md │ │ │ │ │ ├── span.md │ │ │ │ │ ├── spinbox.md │ │ │ │ │ ├── spinner.md │ │ │ │ │ ├── tabview.md │ │ │ │ │ ├── tileview.md │ │ │ │ │ └── win.md │ │ │ │ │ ├── index.md │ │ │ │ │ └── obj.md │ │ │ ├── examples │ │ │ │ ├── anim │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_anim.h │ │ │ │ │ ├── lv_example_anim_1.c │ │ │ │ │ ├── lv_example_anim_1.py │ │ │ │ │ ├── lv_example_anim_2.c │ │ │ │ │ └── lv_example_anim_2.py │ │ │ │ ├── arduino │ │ │ │ │ └── LVGL_Arduino │ │ │ │ │ │ └── LVGL_Arduino.ino │ │ │ │ ├── assets │ │ │ │ │ ├── animimg001.c │ │ │ │ │ ├── animimg001.png │ │ │ │ │ ├── animimg002.c │ │ │ │ │ ├── animimg002.png │ │ │ │ │ ├── animimg003.c │ │ │ │ │ ├── animimg003.png │ │ │ │ │ ├── caret_down.png │ │ │ │ │ ├── img_caret_down.c │ │ │ │ │ ├── img_cogwheel_alpha16.c │ │ │ │ │ ├── img_cogwheel_argb.c │ │ │ │ │ ├── img_cogwheel_argb.png │ │ │ │ │ ├── img_cogwheel_chroma_keyed.c │ │ │ │ │ ├── img_cogwheel_chroma_keyed.png │ │ │ │ │ ├── img_cogwheel_indexed16.c │ │ │ │ │ ├── img_cogwheel_indexed16.png │ │ │ │ │ ├── img_cogwheel_rgb.c │ │ │ │ │ ├── img_cogwheel_rgb.png │ │ │ │ │ ├── img_hand.c │ │ │ │ │ ├── img_hand_min.png │ │ │ │ │ ├── img_skew_strip.c │ │ │ │ │ ├── img_star.c │ │ │ │ │ ├── img_star.png │ │ │ │ │ ├── img_strip.png │ │ │ │ │ ├── imgbtn_left.c │ │ │ │ │ ├── imgbtn_left.png │ │ │ │ │ ├── imgbtn_mid.c │ │ │ │ │ ├── imgbtn_mid.png │ │ │ │ │ ├── imgbtn_right.c │ │ │ │ │ ├── imgbtn_right.png │ │ │ │ │ ├── skew_strip.png │ │ │ │ │ └── star.png │ │ │ │ ├── event │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_event.h │ │ │ │ │ ├── lv_example_event_1.c │ │ │ │ │ ├── lv_example_event_1.py │ │ │ │ │ ├── lv_example_event_2.c │ │ │ │ │ ├── lv_example_event_2.py │ │ │ │ │ ├── lv_example_event_3.c │ │ │ │ │ └── lv_example_event_3.py │ │ │ │ ├── examples.mk │ │ │ │ ├── get_started │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_get_started.h │ │ │ │ │ ├── lv_example_get_started_1.c │ │ │ │ │ ├── lv_example_get_started_1.py │ │ │ │ │ ├── lv_example_get_started_2.c │ │ │ │ │ ├── lv_example_get_started_2.py │ │ │ │ │ ├── lv_example_get_started_3.c │ │ │ │ │ └── lv_example_get_started_3.py │ │ │ │ ├── header.py │ │ │ │ ├── layouts │ │ │ │ │ ├── flex │ │ │ │ │ │ ├── index.rst │ │ │ │ │ │ ├── lv_example_flex.h │ │ │ │ │ │ ├── lv_example_flex_1.c │ │ │ │ │ │ ├── lv_example_flex_1.py │ │ │ │ │ │ ├── lv_example_flex_2.c │ │ │ │ │ │ ├── lv_example_flex_2.py │ │ │ │ │ │ ├── lv_example_flex_3.c │ │ │ │ │ │ ├── lv_example_flex_3.py │ │ │ │ │ │ ├── lv_example_flex_4.c │ │ │ │ │ │ ├── lv_example_flex_4.py │ │ │ │ │ │ ├── lv_example_flex_5.c │ │ │ │ │ │ ├── lv_example_flex_5.py │ │ │ │ │ │ ├── lv_example_flex_6.c │ │ │ │ │ │ └── lv_example_flex_6.py │ │ │ │ │ ├── grid │ │ │ │ │ │ ├── index.rst │ │ │ │ │ │ ├── lv_example_grid.h │ │ │ │ │ │ ├── lv_example_grid_1.c │ │ │ │ │ │ ├── lv_example_grid_1.py │ │ │ │ │ │ ├── lv_example_grid_2.c │ │ │ │ │ │ ├── lv_example_grid_2.py │ │ │ │ │ │ ├── lv_example_grid_3.c │ │ │ │ │ │ ├── lv_example_grid_3.py │ │ │ │ │ │ ├── lv_example_grid_4.c │ │ │ │ │ │ ├── lv_example_grid_4.py │ │ │ │ │ │ ├── lv_example_grid_5.c │ │ │ │ │ │ ├── lv_example_grid_5.py │ │ │ │ │ │ ├── lv_example_grid_6.c │ │ │ │ │ │ └── lv_example_grid_6.py │ │ │ │ │ └── lv_example_layout.h │ │ │ │ ├── lv_examples.h │ │ │ │ ├── porting │ │ │ │ │ ├── lv_port_disp_template.c │ │ │ │ │ ├── lv_port_disp_template.h │ │ │ │ │ ├── lv_port_fs_template.c │ │ │ │ │ ├── lv_port_fs_template.h │ │ │ │ │ ├── lv_port_indev_template.c │ │ │ │ │ └── lv_port_indev_template.h │ │ │ │ ├── scroll │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_scroll.h │ │ │ │ │ ├── lv_example_scroll_1.c │ │ │ │ │ ├── lv_example_scroll_1.py │ │ │ │ │ ├── lv_example_scroll_2.c │ │ │ │ │ ├── lv_example_scroll_2.py │ │ │ │ │ ├── lv_example_scroll_3.c │ │ │ │ │ ├── lv_example_scroll_3.py │ │ │ │ │ ├── lv_example_scroll_4.c │ │ │ │ │ ├── lv_example_scroll_4.py │ │ │ │ │ ├── lv_example_scroll_5.c │ │ │ │ │ ├── lv_example_scroll_5.py │ │ │ │ │ ├── lv_example_scroll_6.c │ │ │ │ │ └── lv_example_scroll_6.py │ │ │ │ ├── styles │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_style.h │ │ │ │ │ ├── lv_example_style_1.c │ │ │ │ │ ├── lv_example_style_1.py │ │ │ │ │ ├── lv_example_style_10.c │ │ │ │ │ ├── lv_example_style_10.py │ │ │ │ │ ├── lv_example_style_11.c │ │ │ │ │ ├── lv_example_style_11.py │ │ │ │ │ ├── lv_example_style_12.c │ │ │ │ │ ├── lv_example_style_12.py │ │ │ │ │ ├── lv_example_style_13.c │ │ │ │ │ ├── lv_example_style_13.py │ │ │ │ │ ├── lv_example_style_14.c │ │ │ │ │ ├── lv_example_style_14.py │ │ │ │ │ ├── lv_example_style_2.c │ │ │ │ │ ├── lv_example_style_2.py │ │ │ │ │ ├── lv_example_style_3.c │ │ │ │ │ ├── lv_example_style_3.py │ │ │ │ │ ├── lv_example_style_4.c │ │ │ │ │ ├── lv_example_style_4.py │ │ │ │ │ ├── lv_example_style_5.c │ │ │ │ │ ├── lv_example_style_5.py │ │ │ │ │ ├── lv_example_style_6.c │ │ │ │ │ ├── lv_example_style_6.py │ │ │ │ │ ├── lv_example_style_7.c │ │ │ │ │ ├── lv_example_style_7.py │ │ │ │ │ ├── lv_example_style_8.c │ │ │ │ │ ├── lv_example_style_8.py │ │ │ │ │ ├── lv_example_style_9.c │ │ │ │ │ └── lv_example_style_9.py │ │ │ │ ├── test_ex.sh │ │ │ │ └── widgets │ │ │ │ │ ├── animimg │ │ │ │ │ ├── lv_example_animimg_1.c │ │ │ │ │ └── lv_example_animimg_1.py │ │ │ │ │ ├── arc │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_arc_1.c │ │ │ │ │ ├── lv_example_arc_1.py │ │ │ │ │ ├── lv_example_arc_2.c │ │ │ │ │ └── lv_example_arc_2.py │ │ │ │ │ ├── bar │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_bar_1.c │ │ │ │ │ ├── lv_example_bar_1.py │ │ │ │ │ ├── lv_example_bar_2.c │ │ │ │ │ ├── lv_example_bar_2.py │ │ │ │ │ ├── lv_example_bar_3.c │ │ │ │ │ ├── lv_example_bar_3.py │ │ │ │ │ ├── lv_example_bar_4.c │ │ │ │ │ ├── lv_example_bar_4.py │ │ │ │ │ ├── lv_example_bar_5.c │ │ │ │ │ ├── lv_example_bar_5.py │ │ │ │ │ ├── lv_example_bar_6.c │ │ │ │ │ ├── lv_example_bar_6.py │ │ │ │ │ └── test.py │ │ │ │ │ ├── btn │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_btn_1.c │ │ │ │ │ ├── lv_example_btn_1.py │ │ │ │ │ ├── lv_example_btn_2.c │ │ │ │ │ ├── lv_example_btn_2.py │ │ │ │ │ ├── lv_example_btn_3.c │ │ │ │ │ └── lv_example_btn_3.py │ │ │ │ │ ├── btnmatrix │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_btnmatrix_1.c │ │ │ │ │ ├── lv_example_btnmatrix_1.py │ │ │ │ │ ├── lv_example_btnmatrix_2.c │ │ │ │ │ ├── lv_example_btnmatrix_2.py │ │ │ │ │ ├── lv_example_btnmatrix_3.c │ │ │ │ │ └── lv_example_btnmatrix_3.py │ │ │ │ │ ├── calendar │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_calendar_1.c │ │ │ │ │ └── lv_example_calendar_1.py │ │ │ │ │ ├── canvas │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_canvas_1.c │ │ │ │ │ ├── lv_example_canvas_1.py │ │ │ │ │ ├── lv_example_canvas_2.c │ │ │ │ │ └── lv_example_canvas_2.py │ │ │ │ │ ├── chart │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_chart_1.c │ │ │ │ │ ├── lv_example_chart_1.py │ │ │ │ │ ├── lv_example_chart_2.c │ │ │ │ │ ├── lv_example_chart_2.py │ │ │ │ │ ├── lv_example_chart_3.c │ │ │ │ │ ├── lv_example_chart_3.py │ │ │ │ │ ├── lv_example_chart_4.c │ │ │ │ │ ├── lv_example_chart_4.py │ │ │ │ │ ├── lv_example_chart_5.c │ │ │ │ │ ├── lv_example_chart_5.py │ │ │ │ │ ├── lv_example_chart_6.c │ │ │ │ │ ├── lv_example_chart_6.py │ │ │ │ │ ├── lv_example_chart_7.c │ │ │ │ │ └── lv_example_chart_7.py │ │ │ │ │ ├── checkbox │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_checkbox_1.c │ │ │ │ │ └── lv_example_checkbox_1.py │ │ │ │ │ ├── colorwheel │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_colorwheel_1.c │ │ │ │ │ └── lv_example_colorwheel_1.py │ │ │ │ │ ├── dropdown │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_dropdown_1.c │ │ │ │ │ ├── lv_example_dropdown_1.py │ │ │ │ │ ├── lv_example_dropdown_2.c │ │ │ │ │ ├── lv_example_dropdown_2.py │ │ │ │ │ ├── lv_example_dropdown_3.c │ │ │ │ │ └── lv_example_dropdown_3.py │ │ │ │ │ ├── img │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_img_1.c │ │ │ │ │ ├── lv_example_img_1.py │ │ │ │ │ ├── lv_example_img_2.c │ │ │ │ │ ├── lv_example_img_2.py │ │ │ │ │ ├── lv_example_img_3.c │ │ │ │ │ ├── lv_example_img_3.py │ │ │ │ │ ├── lv_example_img_4.c │ │ │ │ │ └── lv_example_img_4.py │ │ │ │ │ ├── imgbtn │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_imgbtn_1.c │ │ │ │ │ └── lv_example_imgbtn_1.py │ │ │ │ │ ├── keyboard │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_keyboard_1.c │ │ │ │ │ └── lv_example_keyboard_1.py │ │ │ │ │ ├── label │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_label_1.c │ │ │ │ │ ├── lv_example_label_1.py │ │ │ │ │ ├── lv_example_label_2.c │ │ │ │ │ ├── lv_example_label_2.py │ │ │ │ │ ├── lv_example_label_3.c │ │ │ │ │ └── lv_example_label_3.py │ │ │ │ │ ├── led │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_led_1.c │ │ │ │ │ └── lv_example_led_1.py │ │ │ │ │ ├── line │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_line_1.c │ │ │ │ │ └── lv_example_line_1.py │ │ │ │ │ ├── list │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_list_1.c │ │ │ │ │ ├── lv_example_list_1.py │ │ │ │ │ └── test.py │ │ │ │ │ ├── lv_example_widgets.h │ │ │ │ │ ├── meter │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_meter_1.c │ │ │ │ │ ├── lv_example_meter_1.py │ │ │ │ │ ├── lv_example_meter_2.c │ │ │ │ │ ├── lv_example_meter_2.py │ │ │ │ │ ├── lv_example_meter_3.c │ │ │ │ │ ├── lv_example_meter_3.py │ │ │ │ │ ├── lv_example_meter_4.c │ │ │ │ │ └── lv_example_meter_4.py │ │ │ │ │ ├── msgbox │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_msgbox_1.c │ │ │ │ │ └── lv_example_msgbox_1.py │ │ │ │ │ ├── obj │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_obj_1.c │ │ │ │ │ ├── lv_example_obj_1.py │ │ │ │ │ ├── lv_example_obj_2.c │ │ │ │ │ └── lv_example_obj_2.py │ │ │ │ │ ├── roller │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_roller_1.c │ │ │ │ │ ├── lv_example_roller_1.py │ │ │ │ │ ├── lv_example_roller_2.c │ │ │ │ │ ├── lv_example_roller_2.py │ │ │ │ │ ├── lv_example_roller_3.c │ │ │ │ │ └── lv_example_roller_3.py │ │ │ │ │ ├── slider │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_slider_1.c │ │ │ │ │ ├── lv_example_slider_1.py │ │ │ │ │ ├── lv_example_slider_2.c │ │ │ │ │ ├── lv_example_slider_2.py │ │ │ │ │ ├── lv_example_slider_3.c │ │ │ │ │ └── lv_example_slider_3.py │ │ │ │ │ ├── span │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_span_1.c │ │ │ │ │ └── lv_example_span_1.py │ │ │ │ │ ├── spinbox │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_spinbox_1.c │ │ │ │ │ └── lv_example_spinbox_1.py │ │ │ │ │ ├── spinner │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_spinner_1.c │ │ │ │ │ └── lv_example_spinner_1.py │ │ │ │ │ ├── switch │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_switch_1.c │ │ │ │ │ └── lv_example_switch_1.py │ │ │ │ │ ├── table │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_table_1.c │ │ │ │ │ ├── lv_example_table_1.py │ │ │ │ │ ├── lv_example_table_2.c │ │ │ │ │ └── lv_example_table_2.py │ │ │ │ │ ├── tabview │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_tabview_1.c │ │ │ │ │ ├── lv_example_tabview_1.py │ │ │ │ │ └── lv_example_tabview_2.c │ │ │ │ │ ├── textarea │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_textarea_1.c │ │ │ │ │ ├── lv_example_textarea_1.py │ │ │ │ │ ├── lv_example_textarea_2.c │ │ │ │ │ ├── lv_example_textarea_2.py │ │ │ │ │ ├── lv_example_textarea_3.c │ │ │ │ │ └── lv_example_textarea_3.py │ │ │ │ │ ├── tileview │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_tileview_1.c │ │ │ │ │ └── lv_example_tileview_1.py │ │ │ │ │ └── win │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── lv_example_win_1.c │ │ │ │ │ └── lv_example_win_1.py │ │ │ ├── library.json │ │ │ ├── library.properties │ │ │ ├── lv_conf_template.h │ │ │ ├── lvgl.h │ │ │ ├── lvgl.mk │ │ │ ├── scripts │ │ │ │ ├── Doxyfile │ │ │ │ ├── build_html_examples.sh │ │ │ │ ├── built_in_font │ │ │ │ │ ├── DejaVuSans.ttf │ │ │ │ │ ├── FontAwesome5-Solid+Brands+Regular.woff │ │ │ │ │ ├── Montserrat-Medium.ttf │ │ │ │ │ ├── SimSun.woff │ │ │ │ │ ├── built_in_font_gen.py │ │ │ │ │ ├── generate_all.py │ │ │ │ │ └── unscii-8.ttf │ │ │ │ ├── code-format.cfg │ │ │ │ ├── code-format.sh │ │ │ │ ├── cppcheck_run.sh │ │ │ │ ├── find_version.sh │ │ │ │ ├── genexamplelist.sh │ │ │ │ ├── infer_run.sh │ │ │ │ ├── lv_conf_internal_gen.py │ │ │ │ ├── release │ │ │ │ │ ├── patch.py │ │ │ │ │ └── release.py │ │ │ │ └── style_api_gen.py │ │ │ ├── src │ │ │ │ ├── core │ │ │ │ │ ├── lv_core.mk │ │ │ │ │ ├── lv_disp.c │ │ │ │ │ ├── lv_disp.h │ │ │ │ │ ├── lv_event.c │ │ │ │ │ ├── lv_event.h │ │ │ │ │ ├── lv_group.c │ │ │ │ │ ├── lv_group.h │ │ │ │ │ ├── lv_indev.c │ │ │ │ │ ├── lv_indev.h │ │ │ │ │ ├── lv_indev_scroll.c │ │ │ │ │ ├── lv_indev_scroll.h │ │ │ │ │ ├── lv_obj.c │ │ │ │ │ ├── lv_obj.h │ │ │ │ │ ├── lv_obj_class.c │ │ │ │ │ ├── lv_obj_class.h │ │ │ │ │ ├── lv_obj_draw.c │ │ │ │ │ ├── lv_obj_draw.h │ │ │ │ │ ├── lv_obj_pos.c │ │ │ │ │ ├── lv_obj_pos.h │ │ │ │ │ ├── lv_obj_scroll.c │ │ │ │ │ ├── lv_obj_scroll.h │ │ │ │ │ ├── lv_obj_style.c │ │ │ │ │ ├── lv_obj_style.h │ │ │ │ │ ├── lv_obj_style_gen.c │ │ │ │ │ ├── lv_obj_style_gen.h │ │ │ │ │ ├── lv_obj_tree.c │ │ │ │ │ ├── lv_obj_tree.h │ │ │ │ │ ├── lv_refr.c │ │ │ │ │ ├── lv_refr.h │ │ │ │ │ ├── lv_theme.c │ │ │ │ │ └── lv_theme.h │ │ │ │ ├── draw │ │ │ │ │ ├── lv_draw.h │ │ │ │ │ ├── lv_draw.mk │ │ │ │ │ ├── lv_draw_arc.c │ │ │ │ │ ├── lv_draw_arc.h │ │ │ │ │ ├── lv_draw_blend.c │ │ │ │ │ ├── lv_draw_blend.h │ │ │ │ │ ├── lv_draw_img.c │ │ │ │ │ ├── lv_draw_img.h │ │ │ │ │ ├── lv_draw_label.c │ │ │ │ │ ├── lv_draw_label.h │ │ │ │ │ ├── lv_draw_line.c │ │ │ │ │ ├── lv_draw_line.h │ │ │ │ │ ├── lv_draw_mask.c │ │ │ │ │ ├── lv_draw_mask.h │ │ │ │ │ ├── lv_draw_rect.c │ │ │ │ │ ├── lv_draw_rect.h │ │ │ │ │ ├── lv_draw_triangle.c │ │ │ │ │ ├── lv_draw_triangle.h │ │ │ │ │ ├── lv_img_buf.c │ │ │ │ │ ├── lv_img_buf.h │ │ │ │ │ ├── lv_img_cache.c │ │ │ │ │ ├── lv_img_cache.h │ │ │ │ │ ├── lv_img_decoder.c │ │ │ │ │ └── lv_img_decoder.h │ │ │ │ ├── extra │ │ │ │ │ ├── README.md │ │ │ │ │ ├── extra.mk │ │ │ │ │ ├── layouts │ │ │ │ │ │ ├── flex │ │ │ │ │ │ │ ├── lv_flex.c │ │ │ │ │ │ │ └── lv_flex.h │ │ │ │ │ │ ├── grid │ │ │ │ │ │ │ ├── lv_grid.c │ │ │ │ │ │ │ └── lv_grid.h │ │ │ │ │ │ └── lv_layouts.h │ │ │ │ │ ├── lv_extra.c │ │ │ │ │ ├── lv_extra.h │ │ │ │ │ ├── themes │ │ │ │ │ │ ├── basic │ │ │ │ │ │ │ ├── lv_theme_basic.c │ │ │ │ │ │ │ └── lv_theme_basic.h │ │ │ │ │ │ ├── default │ │ │ │ │ │ │ ├── lv_theme_default.c │ │ │ │ │ │ │ └── lv_theme_default.h │ │ │ │ │ │ ├── lv_themes.h │ │ │ │ │ │ └── mono │ │ │ │ │ │ │ ├── lv_theme_mono.c │ │ │ │ │ │ │ └── lv_theme_mono.h │ │ │ │ │ └── widgets │ │ │ │ │ │ ├── animimg │ │ │ │ │ │ ├── lv_animimg.c │ │ │ │ │ │ └── lv_animimg.h │ │ │ │ │ │ ├── calendar │ │ │ │ │ │ ├── lv_calendar.c │ │ │ │ │ │ ├── lv_calendar.h │ │ │ │ │ │ ├── lv_calendar_header_arrow.c │ │ │ │ │ │ ├── lv_calendar_header_arrow.h │ │ │ │ │ │ ├── lv_calendar_header_dropdown.c │ │ │ │ │ │ └── lv_calendar_header_dropdown.h │ │ │ │ │ │ ├── chart │ │ │ │ │ │ ├── lv_chart.c │ │ │ │ │ │ └── lv_chart.h │ │ │ │ │ │ ├── colorwheel │ │ │ │ │ │ ├── lv_colorwheel.c │ │ │ │ │ │ └── lv_colorwheel.h │ │ │ │ │ │ ├── imgbtn │ │ │ │ │ │ ├── lv_imgbtn.c │ │ │ │ │ │ └── lv_imgbtn.h │ │ │ │ │ │ ├── keyboard │ │ │ │ │ │ ├── lv_keyboard.c │ │ │ │ │ │ └── lv_keyboard.h │ │ │ │ │ │ ├── led │ │ │ │ │ │ ├── lv_led.c │ │ │ │ │ │ └── lv_led.h │ │ │ │ │ │ ├── list │ │ │ │ │ │ ├── lv_list.c │ │ │ │ │ │ └── lv_list.h │ │ │ │ │ │ ├── lv_widgets.h │ │ │ │ │ │ ├── meter │ │ │ │ │ │ ├── lv_meter.c │ │ │ │ │ │ └── lv_meter.h │ │ │ │ │ │ ├── msgbox │ │ │ │ │ │ ├── lv_msgbox.c │ │ │ │ │ │ └── lv_msgbox.h │ │ │ │ │ │ ├── span │ │ │ │ │ │ ├── lv_span.c │ │ │ │ │ │ └── lv_span.h │ │ │ │ │ │ ├── spinbox │ │ │ │ │ │ ├── lv_spinbox.c │ │ │ │ │ │ └── lv_spinbox.h │ │ │ │ │ │ ├── spinner │ │ │ │ │ │ ├── lv_spinner.c │ │ │ │ │ │ └── lv_spinner.h │ │ │ │ │ │ ├── tabview │ │ │ │ │ │ ├── lv_tabview.c │ │ │ │ │ │ └── lv_tabview.h │ │ │ │ │ │ ├── tileview │ │ │ │ │ │ ├── lv_tileview.c │ │ │ │ │ │ └── lv_tileview.h │ │ │ │ │ │ └── win │ │ │ │ │ │ ├── lv_win.c │ │ │ │ │ │ └── lv_win.h │ │ │ │ ├── font │ │ │ │ │ ├── korean.ttf │ │ │ │ │ ├── lv_font.c │ │ │ │ │ ├── lv_font.h │ │ │ │ │ ├── lv_font.mk │ │ │ │ │ ├── lv_font_dejavu_16_persian_hebrew.c │ │ │ │ │ ├── lv_font_fmt_txt.c │ │ │ │ │ ├── lv_font_fmt_txt.h │ │ │ │ │ ├── lv_font_loader.c │ │ │ │ │ ├── lv_font_loader.h │ │ │ │ │ ├── lv_font_montserrat_10.c │ │ │ │ │ ├── lv_font_montserrat_12.c │ │ │ │ │ ├── lv_font_montserrat_12_subpx.c │ │ │ │ │ ├── lv_font_montserrat_14.c │ │ │ │ │ ├── lv_font_montserrat_16.c │ │ │ │ │ ├── lv_font_montserrat_18.c │ │ │ │ │ ├── lv_font_montserrat_20.c │ │ │ │ │ ├── lv_font_montserrat_22.c │ │ │ │ │ ├── lv_font_montserrat_24.c │ │ │ │ │ ├── lv_font_montserrat_26.c │ │ │ │ │ ├── lv_font_montserrat_28.c │ │ │ │ │ ├── lv_font_montserrat_28_compressed.c │ │ │ │ │ ├── lv_font_montserrat_30.c │ │ │ │ │ ├── lv_font_montserrat_32.c │ │ │ │ │ ├── lv_font_montserrat_34.c │ │ │ │ │ ├── lv_font_montserrat_36.c │ │ │ │ │ ├── lv_font_montserrat_38.c │ │ │ │ │ ├── lv_font_montserrat_40.c │ │ │ │ │ ├── lv_font_montserrat_42.c │ │ │ │ │ ├── lv_font_montserrat_44.c │ │ │ │ │ ├── lv_font_montserrat_46.c │ │ │ │ │ ├── lv_font_montserrat_48.c │ │ │ │ │ ├── lv_font_montserrat_8.c │ │ │ │ │ ├── lv_font_simsun_16_cjk.c │ │ │ │ │ ├── lv_font_unscii_16.c │ │ │ │ │ ├── lv_font_unscii_8.c │ │ │ │ │ └── lv_symbol_def.h │ │ │ │ ├── gpu │ │ │ │ │ ├── lv_gpu.mk │ │ │ │ │ ├── lv_gpu_nxp_pxp.c │ │ │ │ │ ├── lv_gpu_nxp_pxp.h │ │ │ │ │ ├── lv_gpu_nxp_pxp_osa.c │ │ │ │ │ ├── lv_gpu_nxp_pxp_osa.h │ │ │ │ │ ├── lv_gpu_nxp_vglite.c │ │ │ │ │ ├── lv_gpu_nxp_vglite.h │ │ │ │ │ ├── lv_gpu_stm32_dma2d.c │ │ │ │ │ └── lv_gpu_stm32_dma2d.h │ │ │ │ ├── hal │ │ │ │ │ ├── lv_hal.h │ │ │ │ │ ├── lv_hal.mk │ │ │ │ │ ├── lv_hal_disp.c │ │ │ │ │ ├── lv_hal_disp.h │ │ │ │ │ ├── lv_hal_indev.c │ │ │ │ │ ├── lv_hal_indev.h │ │ │ │ │ ├── lv_hal_tick.c │ │ │ │ │ └── lv_hal_tick.h │ │ │ │ ├── lv_api_map.h │ │ │ │ ├── lv_conf_internal.h │ │ │ │ ├── lv_conf_kconfig.h │ │ │ │ ├── lvgl.h │ │ │ │ ├── misc │ │ │ │ │ ├── lv_anim.c │ │ │ │ │ ├── lv_anim.h │ │ │ │ │ ├── lv_area.c │ │ │ │ │ ├── lv_area.h │ │ │ │ │ ├── lv_assert.h │ │ │ │ │ ├── lv_async.c │ │ │ │ │ ├── lv_async.h │ │ │ │ │ ├── lv_bidi.c │ │ │ │ │ ├── lv_bidi.h │ │ │ │ │ ├── lv_color.c │ │ │ │ │ ├── lv_color.h │ │ │ │ │ ├── lv_fs.c │ │ │ │ │ ├── lv_fs.h │ │ │ │ │ ├── lv_gc.c │ │ │ │ │ ├── lv_gc.h │ │ │ │ │ ├── lv_ll.c │ │ │ │ │ ├── lv_ll.h │ │ │ │ │ ├── lv_log.c │ │ │ │ │ ├── lv_log.h │ │ │ │ │ ├── lv_math.c │ │ │ │ │ ├── lv_math.h │ │ │ │ │ ├── lv_mem.c │ │ │ │ │ ├── lv_mem.h │ │ │ │ │ ├── lv_misc.mk │ │ │ │ │ ├── lv_printf.c │ │ │ │ │ ├── lv_printf.h │ │ │ │ │ ├── lv_style.c │ │ │ │ │ ├── lv_style.h │ │ │ │ │ ├── lv_style_gen.c │ │ │ │ │ ├── lv_style_gen.h │ │ │ │ │ ├── lv_templ.c │ │ │ │ │ ├── lv_templ.h │ │ │ │ │ ├── lv_timer.c │ │ │ │ │ ├── lv_timer.h │ │ │ │ │ ├── lv_tlsf.c │ │ │ │ │ ├── lv_tlsf.h │ │ │ │ │ ├── lv_txt.c │ │ │ │ │ ├── lv_txt.h │ │ │ │ │ ├── lv_txt_ap.c │ │ │ │ │ ├── lv_txt_ap.h │ │ │ │ │ ├── lv_types.h │ │ │ │ │ ├── lv_utils.c │ │ │ │ │ └── lv_utils.h │ │ │ │ └── widgets │ │ │ │ │ ├── lv_arc.c │ │ │ │ │ ├── lv_arc.h │ │ │ │ │ ├── lv_bar.c │ │ │ │ │ ├── lv_bar.h │ │ │ │ │ ├── lv_btn.c │ │ │ │ │ ├── lv_btn.h │ │ │ │ │ ├── lv_btnmatrix.c │ │ │ │ │ ├── lv_btnmatrix.h │ │ │ │ │ ├── lv_canvas.c │ │ │ │ │ ├── lv_canvas.h │ │ │ │ │ ├── lv_checkbox.c │ │ │ │ │ ├── lv_checkbox.h │ │ │ │ │ ├── lv_dropdown.c │ │ │ │ │ ├── lv_dropdown.h │ │ │ │ │ ├── lv_img.c │ │ │ │ │ ├── lv_img.h │ │ │ │ │ ├── lv_label.c │ │ │ │ │ ├── lv_label.h │ │ │ │ │ ├── lv_line.c │ │ │ │ │ ├── lv_line.h │ │ │ │ │ ├── lv_objx_templ.c │ │ │ │ │ ├── lv_objx_templ.h │ │ │ │ │ ├── lv_roller.c │ │ │ │ │ ├── lv_roller.h │ │ │ │ │ ├── lv_slider.c │ │ │ │ │ ├── lv_slider.h │ │ │ │ │ ├── lv_switch.c │ │ │ │ │ ├── lv_switch.h │ │ │ │ │ ├── lv_table.c │ │ │ │ │ ├── lv_table.h │ │ │ │ │ ├── lv_textarea.c │ │ │ │ │ ├── lv_textarea.h │ │ │ │ │ └── lv_widgets.mk │ │ │ ├── tests │ │ │ │ ├── Makefile │ │ │ │ ├── build.py │ │ │ │ ├── font_1.fnt │ │ │ │ ├── font_2.fnt │ │ │ │ ├── font_3.fnt │ │ │ │ ├── icon.png │ │ │ │ ├── icon2.png │ │ │ │ ├── lv_test_assert.c │ │ │ │ ├── lv_test_assert.h │ │ │ │ ├── lv_test_conf.h │ │ │ │ ├── lv_test_core │ │ │ │ │ ├── lv_test_core.c │ │ │ │ │ ├── lv_test_core.h │ │ │ │ │ ├── lv_test_font_loader.c │ │ │ │ │ ├── lv_test_font_loader.h │ │ │ │ │ ├── lv_test_obj.c │ │ │ │ │ ├── lv_test_obj.h │ │ │ │ │ ├── lv_test_style.c │ │ │ │ │ └── lv_test_style.h │ │ │ │ ├── lv_test_fonts │ │ │ │ │ ├── font_1.c │ │ │ │ │ ├── font_2.c │ │ │ │ │ └── font_3.c │ │ │ │ ├── lv_test_main.c │ │ │ │ ├── lv_test_ref_imgs │ │ │ │ │ └── lv_test_img32_label_1.png │ │ │ │ └── lv_test_widgets │ │ │ │ │ ├── lv_test_label.c │ │ │ │ │ └── lv_test_label.h │ │ │ └── zephyr │ │ │ │ └── module.yml │ │ └── lvgl_esp32_drivers │ │ │ ├── .editorconfig │ │ │ ├── .github │ │ │ └── auto-comment.yml │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── CONTRIBUTE_CONTROLLER_SUPPORT.md │ │ │ ├── Kconfig │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── component.mk │ │ │ ├── lvgl_helpers.c │ │ │ ├── lvgl_helpers.h │ │ │ ├── lvgl_i2c_conf.h │ │ │ ├── lvgl_spi_conf.h │ │ │ ├── lvgl_tft │ │ │ ├── EVE.h │ │ │ ├── EVE_commands.c │ │ │ ├── EVE_commands.h │ │ │ ├── EVE_config.h │ │ │ ├── FT81x.c │ │ │ ├── FT81x.h │ │ │ ├── GC9A01.c │ │ │ ├── GC9A01.h │ │ │ ├── Kconfig │ │ │ ├── disp_driver.c │ │ │ ├── disp_driver.h │ │ │ ├── disp_spi.c │ │ │ ├── disp_spi.h │ │ │ ├── hx8357.c │ │ │ ├── hx8357.h │ │ │ ├── il3820.c │ │ │ ├── il3820.h │ │ │ ├── ili9163c.c │ │ │ ├── ili9163c.h │ │ │ ├── ili9341.c │ │ │ ├── ili9341.h │ │ │ ├── ili9481.c │ │ │ ├── ili9481.h │ │ │ ├── ili9486.c │ │ │ ├── ili9486.h │ │ │ ├── ili9488.c │ │ │ ├── ili9488.h │ │ │ ├── jd79653a.c │ │ │ ├── jd79653a.h │ │ │ ├── ra8875.c │ │ │ ├── ra8875.h │ │ │ ├── sh1107.c │ │ │ ├── sh1107.h │ │ │ ├── ssd1306.c │ │ │ ├── ssd1306.h │ │ │ ├── st7735s.c │ │ │ ├── st7735s.h │ │ │ ├── st7789.c │ │ │ ├── st7789.h │ │ │ ├── st7796s.c │ │ │ ├── st7796s.h │ │ │ ├── uc8151d.c │ │ │ └── uc8151d.h │ │ │ └── lvgl_touch │ │ │ ├── FT81x.c │ │ │ ├── FT81x.h │ │ │ ├── Kconfig │ │ │ ├── adcraw.c │ │ │ ├── adcraw.h │ │ │ ├── ft6x36.c │ │ │ ├── ft6x36.h │ │ │ ├── gt615.c │ │ │ ├── gt615.h │ │ │ ├── ns2016.c │ │ │ ├── ns2016.h │ │ │ ├── ra8875_touch.c │ │ │ ├── ra8875_touch.h │ │ │ ├── stmpe610.c │ │ │ ├── stmpe610.h │ │ │ ├── touch_driver.c │ │ │ ├── touch_driver.h │ │ │ ├── tp_i2c.c │ │ │ ├── tp_i2c.h │ │ │ ├── tp_spi.c │ │ │ ├── tp_spi.h │ │ │ ├── xpt2046.c │ │ │ └── xpt2046.h │ ├── main │ │ ├── CMakeLists.txt │ │ ├── component.mk │ │ └── main.c │ ├── partitions_8M.csv │ ├── scripts │ │ ├── code-format.cfg │ │ └── run-code-format.sh │ ├── sdkconfig │ ├── sdkconfig.240mhz_s3 │ ├── sdkconfig.base_s3 │ ├── sdkconfig.freertos │ ├── sdkconfig.lvgl │ ├── sdkconfig.spiram_s3 │ └── sdkconfig.usb └── msc_test │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── partitions_8M.csv │ ├── sdkconfig │ ├── sdkconfig.240mhz_s3 │ ├── sdkconfig.base_s3 │ ├── sdkconfig.freertos │ ├── sdkconfig.spiram_s3 │ ├── sdkconfig.usb │ └── src │ ├── CMakeLists.txt │ ├── Kconfig.projbuild │ ├── main.c │ ├── msc_disk.c │ ├── tinyusb.h │ ├── tinyusb_types.h │ ├── tusb_cdc_acm.h │ └── tusb_config.h ├── hardware ├── PCB layout │ └── sp1 │ │ ├── AICAR_DCMOTORBOARD_V1_0_SP2_PCB.pdf │ │ └── AICAR_INTERFACEBOARD_V1_0_SP1_PCB.pdf ├── SCH diagram │ └── sp1 │ │ ├── aicar_interfaceboard_v1.0_sp1_sch.pdf │ │ └── aicar_motorboard_v1.0_sp1_sch.pdf └── datasheet │ ├── CH340.PDF │ ├── ESP32-S3_Datasheet__CN_V0.4_0330.pdf │ ├── ESP32_S3_Datasheet__EN_0814update.pdf │ ├── ESP32_S3_MP_Pin_Definition_update.pdf │ └── sp1 │ ├── GT615 Datasheet_20160126_Rev.08(伟承).pdf │ ├── GT615编程指南文件(适用于1010以上版本软件)_20151104_Rev 2.1.pdf │ ├── LCD-J-Q028YSX010-A1组立图 20190923 Model.pdf │ └── TPA-C02816B013-1 20191230-10pin.pdf └── project └── aitest ├── .gitignore ├── CMakeLists.txt ├── Makefile ├── README.md ├── README.ulp.md ├── boards ├── GENERIC │ ├── mpconfigboard.cmake │ └── mpconfigboard.h ├── GENERIC_D2WD │ ├── mpconfigboard.cmake │ ├── mpconfigboard.h │ └── sdkconfig.board ├── GENERIC_OTA │ ├── mpconfigboard.cmake │ ├── mpconfigboard.h │ └── sdkconfig.board ├── GENERIC_S2 │ ├── mpconfigboard.cmake │ └── mpconfigboard.h ├── GENERIC_S3 │ ├── mpconfigboard.cmake │ └── mpconfigboard.h ├── GENERIC_SPIRAM │ ├── mpconfigboard.cmake │ └── mpconfigboard.h ├── UM_FEATHERS2 │ ├── manifest.py │ ├── modules │ │ └── feathers2.py │ ├── mpconfigboard.cmake │ ├── mpconfigboard.h │ └── sdkconfig.board ├── UM_TINYPICO │ ├── manifest.py │ ├── modules │ │ ├── dotstar.py │ │ └── tinypico.py │ ├── mpconfigboard.cmake │ ├── mpconfigboard.h │ └── sdkconfig.board ├── UM_TINYS2 │ ├── manifest.py │ ├── modules │ │ └── tinys2.py │ ├── mpconfigboard.cmake │ ├── mpconfigboard.h │ └── sdkconfig.board ├── manifest.py ├── manifest_release.py ├── sdkconfig.240mhz ├── sdkconfig.240mhz_s3 ├── sdkconfig.base ├── sdkconfig.base_s3 ├── sdkconfig.ble ├── sdkconfig.freertos ├── sdkconfig.spiram ├── sdkconfig.spiram_s2 ├── sdkconfig.spiram_s3 └── sdkconfig.usb ├── main └── CMakeLists.txt ├── makeimg.py ├── modules ├── _boot.py ├── apa106.py ├── flashbdev.py ├── inisetup.py ├── main.py ├── neopixel.py └── system.py ├── mpconfigport.h ├── omv ├── Makefile ├── alloc │ ├── dma_alloc.c │ ├── dma_alloc.h │ ├── fb_alloc.c │ ├── fb_alloc.h │ ├── umm_malloc.c │ ├── umm_malloc.h │ ├── unaligned_memcpy.c │ ├── unaligned_memcpy.h │ ├── xalloc.c │ └── xalloc.h ├── arm_math.h ├── boards │ ├── BORMIO │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── NANO33 │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── OPENMV1 │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── OPENMV2 │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── OPENMV3 │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── OPENMV4 │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── OPENMV4P │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── OPENMVPT │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ ├── PORTENTA │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk │ └── esp32s │ │ ├── arm_compat.h │ │ ├── imlib_config.h │ │ ├── manifest.py │ │ ├── omv_boardconfig.h │ │ └── omv_boardconfig.mk ├── common │ ├── array.c │ ├── array.h │ ├── cambus.h │ ├── common.h │ ├── ff_wrapper.c │ ├── ff_wrapper.h │ ├── ini.c │ ├── ini.h │ ├── mutex.c │ ├── mutex.h │ ├── omv_sensor.h │ ├── ringbuf.c │ ├── ringbuf.h │ ├── trace.c │ ├── trace.h │ ├── ulab_config.h │ ├── usbdbg.c │ └── usbdbg.h ├── imlib │ ├── agast.c │ ├── apriltag.c │ ├── bayer.c │ ├── binary.c │ ├── blob.c │ ├── bmp.c │ ├── cascade.h │ ├── clahe.c │ ├── collections.c │ ├── collections.h │ ├── dmtx.c │ ├── draw.c │ ├── edge.c │ ├── eye.c │ ├── fast.c │ ├── fft.c │ ├── fft.h │ ├── filter.c │ ├── fmath.c │ ├── fmath.h │ ├── font.c │ ├── font.h │ ├── framebuffer.c │ ├── framebuffer.h │ ├── fsort.c │ ├── fsort.h │ ├── gif.c │ ├── haar.c │ ├── hog.c │ ├── hough.c │ ├── imlib.c │ ├── imlib.h │ ├── integral.c │ ├── integral_mw.c │ ├── jpeg.c │ ├── kmeans.c │ ├── lab_tab.c │ ├── lbp.c │ ├── line.c │ ├── lsd.c │ ├── mathop.c │ ├── mjpeg.c │ ├── orb.c │ ├── phasecorrelation.c │ ├── point.c │ ├── pool.c │ ├── ppm.c │ ├── qrcode.c │ ├── qsort.c │ ├── rainbow_tab.c │ ├── rectangle.c │ ├── selective_search.c │ ├── sincos_tab.c │ ├── stats.c │ ├── template.c │ ├── xyz_tab.c │ └── zbar.c ├── modules │ ├── py_assert.h │ ├── py_clock.c │ ├── py_clock.h │ ├── py_fir.c │ ├── py_fir.h │ ├── py_gif.c │ ├── py_helper.c │ ├── py_helper.h │ ├── py_image.c │ ├── py_image.h │ ├── py_imageio.c │ ├── py_imageio.h │ ├── py_mjpeg.c │ ├── py_omv.c │ ├── py_sensor.c │ ├── py_tf.c │ ├── py_tf.h │ └── py_tof.h ├── omv.cmake └── ports │ ├── esp32s │ ├── arm_dsp_compat.c │ ├── cambus.c │ ├── esp32_sensors.c │ ├── esp32_wifidbg.c │ ├── sensor.c │ ├── wifidbg.c │ └── wifidbg.h │ ├── nrf │ ├── cambus.c │ ├── main.c │ ├── modules │ │ ├── py_audio.c │ │ └── py_audio.h │ ├── nrf52xxx.ld.S │ ├── omv_portconfig.h │ ├── omv_portconfig.mk │ └── sensor.c │ └── stm32 │ ├── axiqos.h │ ├── cambus.c │ ├── hash.c │ ├── hash.h │ ├── main.c │ ├── modules │ ├── py_audio.c │ ├── py_audio.h │ ├── py_buzzer.c │ ├── py_buzzer.h │ ├── py_cpufreq.c │ ├── py_cpufreq.h │ ├── py_fir_lepton.c │ ├── py_fir_lepton.h │ ├── py_imu.c │ ├── py_imu.h │ ├── py_lcd.c │ ├── py_lcd.h │ ├── py_lcd_cec.c │ ├── py_lcd_cec.h │ ├── py_lcd_touch.c │ ├── py_lcd_touch.h │ ├── py_micro_speech.c │ ├── py_tv.c │ ├── py_tv.h │ └── py_winc.c │ ├── omv_portconfig.h │ ├── omv_portconfig.mk │ ├── sensor.c │ ├── soft_i2c.c │ ├── soft_i2c.h │ ├── stm32fxxx.ld.S │ ├── stm32fxxx_hal_msp.c │ ├── ulpi.c │ ├── ulpi.h │ ├── wifidbg.c │ └── wifidbg.h ├── partitions-16MiB.csv ├── partitions-2MiB.csv ├── partitions-ota.csv ├── partitions.csv ├── partitions_8M.csv └── src ├── adapter ├── esp32_nvs.c ├── esp32_partition.c ├── esp32_rmt.c ├── esp32_ulp.c ├── espneopixel.c ├── fatfs_port.c ├── gccollect.c ├── gccollect.h ├── help.c ├── machine_adc.c ├── machine_dac.c ├── machine_hw_spi.c ├── machine_i2c.c ├── machine_pin.c ├── machine_pwm.c ├── machine_rtc.c ├── machine_rtc.h ├── machine_sdcard.c ├── machine_timer.c ├── machine_touchpad.c ├── machine_uart.c ├── machine_wdt.c ├── memory.h ├── modesp.c ├── modesp.h ├── modesp32.c ├── modesp32.h ├── modmachine.c ├── modmachine.h ├── modnetwork.c ├── modnetwork.h ├── modsocket.c ├── moduos.c ├── modutime.c ├── mphalport.c ├── mphalport.h ├── mpnimbleport.c ├── mpthreadport.c ├── mpthreadport.h ├── network_lan.c ├── network_ppp.c ├── qstrdefsport.h ├── uart.c ├── uart.h ├── usb.c └── usb.h ├── ef_sqrt.c ├── fdlibm.h ├── main.c ├── mpy_modules ├── modmatatalab.c └── module_config.h └── usb ├── usb_cdc.c └── usb_cdc.h /.gitignore: -------------------------------------------------------------------------------- 1 | # project directory 2 | ###################### 3 | sourceinsight/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "submodule/micropython"] 2 | path = submodule/micropython 3 | url = ../../YanMinge/micropython 4 | branch = master 5 | [submodule "submodule/esp-idf"] 6 | path = submodule/esp-idf 7 | url = ../../espressif/esp-idf 8 | branch = master 9 | [submodule "project/aitest/components/esp32-camera"] 10 | path = project/aitest/components/esp32-camera 11 | url = ../../espressif/esp32-camera 12 | [submodule "project/aitest/components/lvgl_esp32_drivers"] 13 | path = project/aitest/components/lvgl_esp32_drivers 14 | url = ../../YanMinge/lvgl_esp32_drivers 15 | [submodule "project/aitest/components/lvgl"] 16 | path = project/aitest/components/lvgl 17 | url = ../../lvgl/lvgl 18 | -------------------------------------------------------------------------------- /List of FAQ.md: -------------------------------------------------------------------------------- 1 | TO DO 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 1. [中文指导文档](https://github.com/1847123212/esp32_mpy/blob/master/README_zh_CN.md) 2 | 2. [Guidance document](https://github.com/1847123212/esp32_mpy/blob/master/README_en.md) 3 | -------------------------------------------------------------------------------- /doc/Documents.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/doc/Documents.txt -------------------------------------------------------------------------------- /driver/CH341SER.ZIP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/driver/CH341SER.ZIP -------------------------------------------------------------------------------- /driver/CH341SER_LINUX.ZIP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/driver/CH341SER_LINUX.ZIP -------------------------------------------------------------------------------- /driver/CH341SER_MAC.ZIP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/driver/CH341SER_MAC.ZIP -------------------------------------------------------------------------------- /example/camera_test/.gitignore: -------------------------------------------------------------------------------- 1 | # project build directory 2 | ###################### 3 | build/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /example/camera_test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(IDF_TARGET esp32s3) 5 | 6 | set(SDKCONFIG_DEFAULTS 7 | sdkconfig.base_s3 8 | sdkconfig.240mhz_s3 9 | sdkconfig.spiram_s3 10 | ) 11 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 12 | project(camera_test) 13 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/component.mk: -------------------------------------------------------------------------------- 1 | COMPONENT_ADD_INCLUDEDIRS := driver/include conversions/include 2 | COMPONENT_PRIV_INCLUDEDIRS := driver/private_include conversions/private_include sensors/private_include 3 | COMPONENT_SRCDIRS := driver conversions sensors 4 | CXXFLAGS += -fno-rtti 5 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/driver/private_include/camera_common.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "esp_err.h" 7 | #include "esp_intr_alloc.h" 8 | #include "freertos/FreeRTOS.h" 9 | #include "freertos/semphr.h" 10 | #include "freertos/task.h" 11 | #include "esp_camera.h" 12 | #include "sensor.h" 13 | 14 | #include "esp_system.h" 15 | #if ESP_IDF_VERSION_MAJOR >= 4 // IDF 4+ 16 | #if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4 17 | #include "esp32/rom/lldesc.h" 18 | #elif CONFIG_IDF_TARGET_ESP32S2 // ESP32-S2 19 | #include "esp32s2/rom/lldesc.h" 20 | #elif CONFIG_IDF_TARGET_ESP32S3 // ESP32-S3 21 | #include "esp32s3/rom/lldesc.h" 22 | #else 23 | #error Target CONFIG_IDF_TARGET is not supported 24 | #endif 25 | #else // ESP32 Before IDF 4.0 26 | #include "rom/lldesc.h" 27 | #endif 28 | 29 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/driver/private_include/sccb.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * Copyright (c) 2013/2014 Ibrahim Abdelkader 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * SCCB (I2C like) driver. 7 | * 8 | */ 9 | #ifndef __SCCB_H__ 10 | #define __SCCB_H__ 11 | #include 12 | int SCCB_Init(int pin_sda, int pin_scl); 13 | int SCCB_Deinit(void); 14 | uint8_t SCCB_Probe(); 15 | uint8_t SCCB_Read(uint8_t slv_addr, uint8_t reg); 16 | uint8_t SCCB_Write(uint8_t slv_addr, uint8_t reg, uint8_t data); 17 | uint8_t SCCB_Read16(uint8_t slv_addr, uint16_t reg); 18 | uint8_t SCCB_Write16(uint8_t slv_addr, uint16_t reg, uint8_t data); 19 | #endif // __SCCB_H__ 20 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/driver/private_include/xclk.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "camera_common.h" 4 | 5 | esp_err_t camera_enable_out_clock(); 6 | 7 | void camera_disable_out_clock(); 8 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/library.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "esp32-camera", 3 | "version": "1.0.0", 4 | "keywords": "esp32, camera, espressif, esp32-cam", 5 | "description": "ESP32 compatible driver for OV2640, OV3660, OV5640, OV7670 and OV7725 image sensors.", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/espressif/esp32-camera" 9 | }, 10 | "frameworks": "espidf", 11 | "platforms": "*", 12 | "build": { 13 | "flags": [ 14 | "-Idriver/include", 15 | "-Iconversions/include", 16 | "-Idriver/private_include", 17 | "-Iconversions/private_include", 18 | "-Isensors/private_include", 19 | "-fno-rtti" 20 | ], 21 | "includeDir": ".", 22 | "srcDir": ".", 23 | "srcFilter": ["-<*>", "+", "+", "+"] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/sensors/private_include/nt99141.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * Copyright (c) 2013/2014 Ibrahim Abdelkader 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * NT99141 driver. 7 | * 8 | */ 9 | #ifndef __NT99141_H__ 10 | #define __NT99141_H__ 11 | 12 | #include "sensor.h" 13 | 14 | int NT99141_init(sensor_t *sensor); 15 | 16 | #endif // __NT99141_H__ 17 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/sensors/private_include/ov2640.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * Copyright (c) 2013/2014 Ibrahim Abdelkader 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * OV2640 driver. 7 | * 8 | */ 9 | #ifndef __OV2640_H__ 10 | #define __OV2640_H__ 11 | #include "sensor.h" 12 | int ov2640_init(sensor_t *sensor); 13 | #endif // __OV2640_H__ 14 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/sensors/private_include/ov3660.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * Copyright (c) 2013/2014 Ibrahim Abdelkader 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * OV3660 driver. 7 | * 8 | */ 9 | #ifndef __OV3660_H__ 10 | #define __OV3660_H__ 11 | 12 | #include "sensor.h" 13 | 14 | int ov3660_init(sensor_t *sensor); 15 | 16 | #endif // __OV3660_H__ 17 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/sensors/private_include/ov5640.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __OV5640_H__ 3 | #define __OV5640_H__ 4 | 5 | #include "sensor.h" 6 | 7 | int ov5640_init(sensor_t *sensor); 8 | 9 | #endif // __OV5640_H__ 10 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/sensors/private_include/ov7670.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * author: Juan Schiavoni 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * OV7670 driver. 7 | * 8 | */ 9 | #ifndef __OV7670_H__ 10 | #define __OV7670_H__ 11 | #include "sensor.h" 12 | 13 | int ov7670_init(sensor_t *sensor); 14 | #endif // __OV7670_H__ 15 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/sensors/private_include/ov7725.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * Copyright (c) 2013/2014 Ibrahim Abdelkader 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * OV7725 driver. 7 | * 8 | */ 9 | #ifndef __OV7725_H__ 10 | #define __OV7725_H__ 11 | #include "sensor.h" 12 | 13 | int ov7725_init(sensor_t *sensor); 14 | #endif // __OV7725_H__ 15 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRC_DIRS . 2 | PRIV_INCLUDE_DIRS . 3 | PRIV_REQUIRES test_utils esp32-camera nvs_flash 4 | EMBED_TXTFILES pictures/testimg.jpeg pictures/test_outside.jpeg pictures/test_inside.jpeg) 5 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/test/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | #Component Makefile 3 | # 4 | 5 | COMPONENT_SRCDIRS += ./ 6 | COMPONENT_PRIV_INCLUDEDIRS += ./ 7 | 8 | COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive 9 | -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/test/pictures/test_inside.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/camera_test/components/esp32-camera/test/pictures/test_inside.jpeg -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/test/pictures/test_outside.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/camera_test/components/esp32-camera/test/pictures/test_outside.jpeg -------------------------------------------------------------------------------- /example/camera_test/components/esp32-camera/test/pictures/testimg.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/camera_test/components/esp32-camera/test/pictures/testimg.jpeg -------------------------------------------------------------------------------- /example/camera_test/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS "camera_test.c" 2 | INCLUDE_DIRS ".") 3 | -------------------------------------------------------------------------------- /example/camera_test/main/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Main Makefile. This is basically the same as a component makefile. 3 | # 4 | # This Makefile should, at the very least, just include $(SDK_PATH)/make/component_common.mk. By default, 5 | # this will take the sources in the src/ directory, compile them and link them into 6 | # lib(subdirectory_name).a in the build directory. This behaviour is entirely configurable, 7 | # please read the ESP-IDF documents if you need to do this. 8 | # 9 | 10 | -------------------------------------------------------------------------------- /example/camera_test/partitions_8M.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x250000, 8 | vfs, data, fat, 0x260000, 0x300000, 9 | -------------------------------------------------------------------------------- /example/camera_test/sdkconfig.240mhz_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with 240MHz CPU 2 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 3 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_160= 4 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y 5 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 6 | -------------------------------------------------------------------------------- /example/camera_test/sdkconfig.freertos: -------------------------------------------------------------------------------- 1 | # FreeRTOS 2 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 3 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -------------------------------------------------------------------------------- /example/camera_test/sdkconfig.spiram_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32-S2 and ESP32-PAD1_subscript_3, ESP IDF configuration with SPIRAM support 2 | CONFIG_ESP32S3_SPIRAM_SUPPORT=y 3 | CONFIG_SPIRAM_TYPE_AUTO=y 4 | CONFIG_DEFAULT_PSRAM_CLK_IO=30 5 | CONFIG_DEFAULT_PSRAM_CS_IO=26 6 | CONFIG_SPIRAM_SPEED_40M=y 7 | CONFIG_SPIRAM=y 8 | CONFIG_SPIRAM_BOOT_INIT=y 9 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 10 | CONFIG_SPIRAM_USE_MEMMAP=y 11 | CONFIG_SPIRAM_MEMTEST=y 12 | -------------------------------------------------------------------------------- /example/camera_test/sdkconfig.usb: -------------------------------------------------------------------------------- 1 | # 2 | # TinyUSB 3 | # 4 | CONFIG_USB_ENABLED=y 5 | 6 | # 7 | # USB task configuration 8 | # 9 | # CONFIG_USB_DO_NOT_CREATE_TASK is not set 10 | CONFIG_USB_TASK_PRIORITY=5 11 | # end of USB task configuration 12 | 13 | # 14 | # Descriptor configuration 15 | # 16 | CONFIG_USB_DESC_USE_ESPRESSIF_VID=y 17 | CONFIG_USB_DESC_USE_DEFAULT_PID=y 18 | CONFIG_USB_DESC_BCDDEVICE=0x0100 19 | CONFIG_USB_DESC_MANUFACTURER_STRING="Espressif Systems" 20 | CONFIG_USB_DESC_PRODUCT_STRING="Espressif Device" 21 | CONFIG_USB_DESC_SERIAL_STRING="123456" 22 | CONFIG_USB_DESC_CDC_STRING="Espressif CDC Device" 23 | CONFIG_USB_DESC_MSC_STRING="Espressif MSC Device" 24 | # end of Descriptor configuration 25 | 26 | CONFIG_USB_MSC_ENABLED=y 27 | CONFIG_USB_MSC_BUFSIZE=512 28 | CONFIG_USB_CDC_ENABLED=y 29 | CONFIG_USB_CDC_RX_BUFSIZE=64 30 | CONFIG_USB_CDC_TX_BUFSIZE=64 31 | CONFIG_USB_DEBUG_LEVEL=0 32 | # end of TinyUSB -------------------------------------------------------------------------------- /example/cdc_msc/.gitignore: -------------------------------------------------------------------------------- 1 | # project build directory 2 | ###################### 3 | build/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /example/cdc_msc/partitions_8M.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x250000, 8 | vfs, data, fat, 0x260000, 0x300000, 9 | -------------------------------------------------------------------------------- /example/cdc_msc/sdkconfig.240mhz_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with 240MHz CPU 2 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 3 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_160= 4 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y 5 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 6 | -------------------------------------------------------------------------------- /example/cdc_msc/sdkconfig.freertos: -------------------------------------------------------------------------------- 1 | # FreeRTOS 2 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 3 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -------------------------------------------------------------------------------- /example/cdc_msc/sdkconfig.spiram_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32-S2 and ESP32-PAD1_subscript_3, ESP IDF configuration with SPIRAM support 2 | CONFIG_ESP32S3_SPIRAM_SUPPORT=y 3 | CONFIG_SPIRAM_TYPE_AUTO=y 4 | CONFIG_DEFAULT_PSRAM_CLK_IO=30 5 | CONFIG_DEFAULT_PSRAM_CS_IO=26 6 | CONFIG_SPIRAM_SPEED_40M=y 7 | CONFIG_SPIRAM=y 8 | CONFIG_SPIRAM_BOOT_INIT=y 9 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 10 | CONFIG_SPIRAM_USE_MEMMAP=y 11 | CONFIG_SPIRAM_MEMTEST=y 12 | -------------------------------------------------------------------------------- /example/cdc_msc/sdkconfig.usb: -------------------------------------------------------------------------------- 1 | # 2 | # TinyUSB 3 | # 4 | CONFIG_USB_ENABLED=y 5 | 6 | # 7 | # USB task configuration 8 | # 9 | # CONFIG_USB_DO_NOT_CREATE_TASK is not set 10 | CONFIG_USB_TASK_PRIORITY=5 11 | # end of USB task configuration 12 | 13 | # 14 | # Descriptor configuration 15 | # 16 | CONFIG_USB_DESC_USE_ESPRESSIF_VID=y 17 | CONFIG_USB_DESC_USE_DEFAULT_PID=y 18 | CONFIG_USB_DESC_BCDDEVICE=0x0100 19 | CONFIG_USB_DESC_MANUFACTURER_STRING="Espressif Systems" 20 | CONFIG_USB_DESC_PRODUCT_STRING="Espressif Device" 21 | CONFIG_USB_DESC_SERIAL_STRING="123456" 22 | CONFIG_USB_DESC_CDC_STRING="Espressif CDC Device" 23 | CONFIG_USB_DESC_MSC_STRING="Espressif MSC Device" 24 | # end of Descriptor configuration 25 | 26 | CONFIG_USB_MSC_ENABLED=y 27 | CONFIG_USB_MSC_BUFSIZE=512 28 | CONFIG_USB_CDC_ENABLED=y 29 | CONFIG_USB_CDC_RX_BUFSIZE=64 30 | CONFIG_USB_CDC_TX_BUFSIZE=64 31 | CONFIG_USB_DEBUG_LEVEL=0 32 | # end of TinyUSB -------------------------------------------------------------------------------- /example/cdc_msc_freertos/.gitignore: -------------------------------------------------------------------------------- 1 | # project build directory 2 | ###################### 3 | build/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /example/cdc_msc_freertos/partitions_8M.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x250000, 8 | vfs, data, fat, 0x260000, 0x300000, 9 | -------------------------------------------------------------------------------- /example/cdc_msc_freertos/sdkconfig.240mhz_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with 240MHz CPU 2 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 3 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_160= 4 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y 5 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 6 | -------------------------------------------------------------------------------- /example/cdc_msc_freertos/sdkconfig.freertos: -------------------------------------------------------------------------------- 1 | # FreeRTOS 2 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 3 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -------------------------------------------------------------------------------- /example/cdc_msc_freertos/sdkconfig.spiram_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32-S2 and ESP32-PAD1_subscript_3, ESP IDF configuration with SPIRAM support 2 | CONFIG_ESP32S3_SPIRAM_SUPPORT=y 3 | CONFIG_SPIRAM_TYPE_AUTO=y 4 | CONFIG_DEFAULT_PSRAM_CLK_IO=30 5 | CONFIG_DEFAULT_PSRAM_CS_IO=26 6 | CONFIG_SPIRAM_SPEED_40M=y 7 | CONFIG_SPIRAM=y 8 | CONFIG_SPIRAM_BOOT_INIT=y 9 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 10 | CONFIG_SPIRAM_USE_MEMMAP=y 11 | CONFIG_SPIRAM_MEMTEST=y 12 | -------------------------------------------------------------------------------- /example/lv_port_esp32/.github/ISSUE_TEMPLATE/issue-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug reports 3 | about: Questions and enhancement requests should go to the forum. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | We use GitHub issues for development related discussions. 11 | Please use the [forum](https://forum.littlevgl.com/) to ask questions. 12 | 13 | **Describe the issue** 14 | 15 | **Code to reproduce the issue** 16 | 17 | **Expected Results** 18 | 19 | **Actual Results** 20 | 21 | **ESP32 Chip version** 22 | 23 | **ESP-IDF version** 24 | 25 | **Development kit used** 26 | 27 | **Development machine OS** 28 | 29 | **Compilation warnings/errors (if available)** 30 | 31 | **If possible, copy the compilation log into a file and attach it here** 32 | 33 | -------------------------------------------------------------------------------- /example/lv_port_esp32/.github/auto-comment.yml: -------------------------------------------------------------------------------- 1 | # Comment to a new issue. 2 | pullRequestOpened: | 3 | Thank you for raising your pull request. 4 | 5 | To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin). 6 | 7 | The text of DCO can be read here: https://developercertificate.org/ 8 | For a more detailed description see the [Documentation](https://docs.lvgl.io/latest/en/html/contributing/index.html#developer-certification-of-origin-dco) site. 9 | 10 | By contributing to any repositories of the LVGL project you state that your contribution corresponds with the DCO. 11 | 12 | No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment. 13 | -------------------------------------------------------------------------------- /example/lv_port_esp32/.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 21 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - architecture 8 | - pinned 9 | # Label to use when marking an issue as stale 10 | staleLabel: stale 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue or pull request has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to `false` to disable 17 | closeComment: false 18 | -------------------------------------------------------------------------------- /example/lv_port_esp32/.gitignore: -------------------------------------------------------------------------------- 1 | # project build directory 2 | ###################### 3 | build/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /example/lv_port_esp32/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lv_examples"] 2 | path = components/lv_examples/lv_examples 3 | url = https://github.com/littlevgl/lv_examples.git 4 | [submodule "components/lvgl_esp32_drivers"] 5 | path = components/lvgl_esp32_drivers 6 | url = https://github.com/lvgl/lvgl_esp32_drivers.git 7 | [submodule "components/lvgl"] 8 | path = components/lvgl 9 | url = https://github.com/lvgl/lvgl.git 10 | -------------------------------------------------------------------------------- /example/lv_port_esp32/.settings/org.eclipse.cdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1013439379/append=true 3 | environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1013439379/appendContributed=true 4 | environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1257239843/V/delimiter=\: 5 | environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1257239843/V/operation=append 6 | environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1257239843/V/value=1 7 | environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1257239843/append=true 8 | environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1257239843/appendContributed=true 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(IDF_TARGET esp32s3) 5 | 6 | set(SDKCONFIG_DEFAULTS 7 | sdkconfig.base_s3 8 | sdkconfig.240mhz_s3 9 | sdkconfig.spiram_s3 10 | sdkconfig.lvgl 11 | ) 12 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 13 | project(lv_port_esp32) 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(ESP_PLATFORM) 2 | 3 | file(GLOB_RECURSE SOURCES lv_examples/*.c) 4 | file(GLOB_RECURSE ASSETS ../lvgl/examples/assets/*.c) 5 | 6 | idf_component_register(SRCS ${SOURCES} 7 | ${ASSETS} 8 | INCLUDE_DIRS . 9 | REQUIRES lvgl) 10 | 11 | else() 12 | message(FATAL_ERROR "LVGL LV examples: ESP_PLATFORM is not defined. Try reinstalling ESP-IDF.") 13 | endif() 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Component Makefile 3 | # 4 | 5 | CFLAGS += -DLV_LVGL_H_INCLUDE_SIMPLE 6 | 7 | COMPONENT_SRCDIRS := lv_examples \ 8 | lv_examples/src/lv_demo_benchmark \ 9 | lv_examples/src/lv_demo_keypad_encoder \ 10 | lv_examples/src/demo_stress \ 11 | lv_examples/src/lv_demo_widgets \ 12 | lv_examples/src/lv_ex_style \ 13 | lv_examples/src/lv_ex_widgets \ 14 | lv_examples/assets 15 | 16 | COMPONENT_ADD_INCLUDEDIRS := $(COMPONENT_SRCDIRS) . 17 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/.github/auto-comment.yml: -------------------------------------------------------------------------------- 1 | # Comment to a new issue. 2 | pullRequestOpened: | 3 | Thank you for raising your pull request. 4 | 5 | To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin). 6 | 7 | The text of DCO can be read here: https://developercertificate.org/ 8 | For a more detailed description see the [Documentation](https://docs.lvgl.io/latest/en/html/contributing/index.html#developer-certification-of-origin-dco) site. 9 | 10 | By contributing to any repositories of the LVGL project you state that your contribution corresponds with the DCO. 11 | 12 | No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment. 13 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 21 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - architecture 8 | - pinned 9 | # Label to use when marking an issue as stale 10 | staleLabel: stale 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue or pull request has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to `false` to disable 17 | closeComment: false 18 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/.gitignore: -------------------------------------------------------------------------------- 1 | **/*.o 2 | objs 3 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB_RECURSE SOURCES src/*.c) 2 | add_library(lv_examples STATIC ${SOURCES}) 3 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/library.properties: -------------------------------------------------------------------------------- 1 | name=lv_examples 2 | version=8.1.0-dev 3 | author=kisvegabor 4 | maintainer=kisvegabor,embeddedt 5 | sentence=Examples for LVGL grapics library 6 | paragraph=Demos and examples to see and try the features of LVGL embedded GUI library. 7 | category=Display 8 | url=https://lvgl.io 9 | architectures=* 10 | includes=lv_examples.h 11 | depends=lvgl 12 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/lv_demo.mk: -------------------------------------------------------------------------------- 1 | CSRCS += $(shell find -L lv_demos -name "*.c") 2 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/scripts/examples.txt: -------------------------------------------------------------------------------- 1 | lv_demo_music 2 | lv_demo_stress 3 | lv_demo_benchmark 4 | lv_demo_printer 5 | lv_demo_keypad_encoder 6 | lv_demo_widgets 7 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/scripts/genexamplestxt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | find src -name \*.h | xargs grep -h "void lv" | sed 's/(/ /g' | awk '{print $2}' 3 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/header.py: -------------------------------------------------------------------------------- 1 | #!/opt/bin/lv_micropython -i 2 | try: 3 | import sys 4 | except ImportError: 5 | import usys as sys 6 | # JS requires a special import 7 | if sys.platform == 'javascript': 8 | import utime as time 9 | import imp 10 | sys.path.append('https://raw.githubusercontent.com/littlevgl/lv_binding_micropython/master/lib') 11 | import display_driver 12 | else: 13 | import display_driver 14 | import time 15 | 16 | import lvgl as lv 17 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_examples.h 3 | * This file exists only to be compatible with Arduino's library structure 4 | */ 5 | 6 | #ifndef LV_DEMO_SRC_H 7 | #define LV_DEMO_SRC_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | #include "../lv_demo.h" 18 | 19 | /********************* 20 | * DEFINES 21 | *********************/ 22 | 23 | /********************** 24 | * TYPEDEFS 25 | **********************/ 26 | 27 | /********************** 28 | * GLOBAL PROTOTYPES 29 | **********************/ 30 | 31 | /********************** 32 | * MACROS 33 | **********************/ 34 | 35 | 36 | #ifdef __cplusplus 37 | } /* extern "C" */ 38 | #endif 39 | 40 | #endif /*LV_DEMO_SRC_H*/ 41 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_benchmark/lv_demo_benchmark.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_demo_benchmark.h 3 | * 4 | */ 5 | 6 | #ifndef LV_DEMO_BENCHMARK_H 7 | #define LV_DEMO_BENCHMARK_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_demo_benchmark(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /* extern "C" */ 36 | #endif 37 | 38 | #endif /*LV_DEMO_BENCHMARK_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_benchmark/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_benchmark/screenshot1.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_benchmark/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_benchmark/screenshot2.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_keypad_encoder/README.md: -------------------------------------------------------------------------------- 1 | # Keypad and Encoder demo 2 | 3 | ## Overview 4 | 5 | LVGL allows you to control the widgets with keypad and/or encoder without touchpad. 6 | This demo shows how to handle buttons, drop-down lists, rollers, sliders, switches and text inputs without touchpad. 7 | Learn more about the touchpad-less usage of LVGL [here](https://docs.lvgl.io/v7/en/html/overview/indev.html#keypad-and-encoder). 8 | 9 | ![Keypad and encoder navigation in LVGL embedded GUI library](https://github.com/lvgl/lv_examples/blob/master/src/lv_demo_keypad_encoder/screenshot1.gif?raw=true) 10 | 11 | ## Run the demo 12 | - In `lv_ex_conf.h` set `LV_USE_DEMO_KEYPAD_AND_ENCODER 1` 13 | - After `lv_init()` and initializing the drivers call `lv_demo_keypad_encoder()` 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_keypad_encoder/lv_demo_keypad_encoder.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_demo_keypad_encoder.h 3 | * 4 | */ 5 | 6 | #ifndef LV_DEMO_KEYPAD_ENCODER_H 7 | #define LV_DEMO_KEYPAD_ENCODER_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_demo_keypad_encoder(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /* extern "C" */ 36 | #endif 37 | 38 | #endif /*LV_DEMO_KEYPAD_ENCODER_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_keypad_encoder/screenshot1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_keypad_encoder/screenshot1.gif -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_keypad_encoder/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_keypad_encoder/screenshot1.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_music/assets/__pycache__/spectrum.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_music/assets/__pycache__/spectrum.cpython-36.pyc -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_music/screenshot1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_music/screenshot1.gif -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_stress/README.md: -------------------------------------------------------------------------------- 1 | # Stress demo 2 | 3 | ## Overview 4 | 5 | A stress test for LVGL. 6 | It contains a lot of object creation, deletion, animations, styles usage, and so on. It can be used if there is any memory corruption during heavy usage or any memory leaks. 7 | 8 | ![Printer demo with LVGL embedded GUI library](https://github.com/lvgl/lv_examples/blob/master/src/lv_demo_stress/screenshot1.gif?raw=true) 9 | 10 | ## Run the demo 11 | - In `lv_ex_conf.h` set `LV_USE_DEMO_STRESS 1` 12 | - In `lv_conf.h` enable all the widgets (`LV_USE_BTN 1`) and the animations (`LV_USE_ANIMATION 1`) 13 | - After `lv_init()` and initializing the drivers call `lv_demo_stress()` 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_stress/lv_demo_stress.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_demo_stress.h 3 | * 4 | */ 5 | 6 | #ifndef LV_DEMO_STRESS_H 7 | #define LV_DEMO_STRESS_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_demo_stress(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /* extern "C" */ 36 | #endif 37 | 38 | #endif /*LV_DEMO_STRESS_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_stress/screenshot1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_stress/screenshot1.gif -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_stress/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_stress/screenshot1.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/assets/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/assets/avatar.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/assets/clothes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/assets/clothes.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/assets/lvgl_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/assets/lvgl_logo.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/lv_demo_widgets.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_demo_widgets.h 3 | * 4 | */ 5 | 6 | #ifndef LV_DEMO_WIDGETS_H 7 | #define LV_DEMO_WIDGETS_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_demo_widgets(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /* extern "C" */ 36 | #endif 37 | 38 | #endif /*LV_DEMO_WIDGETS_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/screenshot1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/screenshot1.gif -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lv_examples/lv_examples/src/lv_demo_widgets/screenshot1.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{c,h,ino}] 2 | indent_style = space 3 | indent_size = 4 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: lvgl 2 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Documentation 4 | url: https://docs.lvgl.io 5 | about: Be sure to read to documentation first 6 | - name: Forum 7 | url: https://forum.lvgl.io 8 | about: For topics like How-to, Getting started, Feature request 9 | - name: CONTIBUTING.md 10 | url: https://github.com/lvgl/lvgl/blob/master/docs/CONTRIBUTING.md#faq-about-contributing 11 | about: The basic rules of contributing 12 | - name: CODING_STYLE.md 13 | url: https://github.com/lvgl/lvgl/blob/master/docs/CODING_STYLE.md 14 | about: Quick summary of LVGL's code style 15 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.github/ISSUE_TEMPLATE/dev-discussion.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Development discussion 3 | about: Discussion strictly related to the development of the LVGL. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 15 | 16 | ### Introduce the problem 17 | 20 | 21 | ### Examples and cases 22 | 25 | 26 | ### Suggested solution 27 | 30 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.github/auto-comment.yml: -------------------------------------------------------------------------------- 1 | # Comment to a new issue. 2 | pullRequestOpened: | 3 | Thank you for raising your pull request. 4 | 5 | To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin). 6 | 7 | The text of DCO can be read here: https://developercertificate.org/ 8 | For a more detailed description see the [Documentation](https://docs.lvgl.io/latest/en/html/contributing/index.html#developer-certification-of-origin-dco) site. 9 | 10 | By contributing to any repositories of the LVGL project you state that your contribution corresponds with the DCO. 11 | 12 | No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment. 13 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ### Description of the feature or fix 2 | 3 | A clear and concise description of what the bug or new feature is. 4 | 5 | ### Checkpoints 6 | - [ ] Follow the [styling guide](https://github.com/lvgl/lvgl/blob/master/docs/CODING_STYLE.md) 7 | - [ ] Update [CHANGELOG.md](https://github.com/lvgl/lvgl/blob/master/docs/CHANGELOG.md) 8 | - [ ] Update the documentation 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.github/workflows/ccpp.yml: -------------------------------------------------------------------------------- 1 | name: C/C++ CI 2 | 3 | on: 4 | push: 5 | branches: [ master, dev ] 6 | pull_request: 7 | branches: [master, dev ] 8 | 9 | jobs: 10 | build: 11 | 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | - uses: ammaraskar/gcc-problem-matcher@master 17 | - name: Run tests 18 | run: sudo apt-get install libpng-dev; cd tests; python ./build.py 19 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | on: 2 | issues: 3 | types: [opened, edited] 4 | 5 | jobs: 6 | auto_close_issues: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Checkout 10 | uses: actions/checkout@v1 11 | - name: Automatically close issues that don't follow the issue template 12 | uses: lucasbento/auto-close-issues@v1.0.2 13 | with: 14 | github-token: ${{ secrets.GITHUB_TOKEN }} 15 | issue-close-message: "@${issue.user.login}: hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template." # optional property 16 | closed-issues-label: "not-template" 17 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.gitignore: -------------------------------------------------------------------------------- 1 | **/*.o 2 | **/*bin 3 | **/*.swp 4 | **/*.swo 5 | tags 6 | docs/api_doc 7 | scripts/cppcheck_res.txt 8 | scripts/built_in_font/lv_font_* 9 | docs/doxygen_html 10 | docs/xml 11 | docs/out_latex 12 | docs/_static/built_lv_examples 13 | docs/LVGL.pdf 14 | docs/env 15 | out_html 16 | __pycache__ 17 | /emscripten_builder 18 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/.gitmodules -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/_static/img/home_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/_static/img/home_1.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/_static/img/home_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/_static/img/home_2.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/_static/img/home_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/_static/img/home_3.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/_static/img/home_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/_static/img/home_4.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/_static/img/home_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/_static/img/home_5.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/_static/img/home_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/_static/img/home_6.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/_static/img/home_banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/_static/img/home_banner.jpg -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/favicon.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/get-started/stm32.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/get-started/stm32.md 4 | ``` 5 | 6 | # STM32 7 | 8 | TODO 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/header.rst: -------------------------------------------------------------------------------- 1 | .. |github_link_base| replace:: https://github.com/lvgl/lvgl/blob/c6f99ad200c7862c2f3cca3811bc2bdc2c95e971/docs -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/layouts/index.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/layouts/index.md 4 | ``` 5 | 6 | # Layouts 7 | 8 | 9 | ```eval_rst 10 | .. toctree:: 11 | :maxdepth: 2 12 | 13 | flex 14 | grid 15 | ``` 16 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/logo_lvgl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/logo_lvgl.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/align.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/bidi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/bidi.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/boxmodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/boxmodel.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/btn_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/btn_example.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/button_style_example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/button_style_example.gif -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/button_style_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/button_style_example.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/codeblocks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/codeblocks.jpg -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/eclipse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/eclipse.jpg -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/layers.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/par_child1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/par_child1.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/par_child2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/par_child2.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/par_child3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/par_child3.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/platformio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/platformio.jpg -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/qtcreator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/qtcreator.jpg -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/simple_button_example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/simple_button_example.gif -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/simple_button_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/simple_button_example.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/symbols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/symbols.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/sys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/sys.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/misc/visualstudio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/docs/misc/visualstudio.jpg -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/overview/index.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/overview/index.md 4 | ``` 5 | 6 | # Overview 7 | 8 | 9 | ```eval_rst 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | object 15 | coords 16 | style 17 | style-props 18 | scroll 19 | layer 20 | event 21 | indev 22 | display 23 | color 24 | font 25 | image 26 | file-system 27 | animation 28 | timer 29 | drawing 30 | new_widget 31 | ``` 32 | 33 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/overview/new_widget.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/overview/new_widget.md 4 | ``` 5 | 6 | # New widget 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/porting/index.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/porting/index.md 4 | ``` 5 | 6 | # Porting 7 | 8 | ```eval_rst 9 | 10 | .. toctree:: 11 | :maxdepth: 2 12 | 13 | project 14 | display 15 | indev 16 | tick 17 | task-handler 18 | sleep 19 | os 20 | log 21 | 22 | ``` 23 | 24 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/porting/task-handler.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/porting/task-handler.md 4 | ``` 5 | # Task Handler 6 | 7 | To handle the tasks of LVGL you need to call `lv_timer_handler()` periodically in one of the following: 8 | - *while(1)* of *main()* function 9 | - timer interrupt periodically (lower priority than `lv_tick_inc()`) 10 | - an OS task periodically 11 | 12 | The timing is not critical but it should be about 5 milliseconds to keep the system responsive. 13 | 14 | Example: 15 | ```c 16 | while(1) { 17 | lv_timer_handler(); 18 | my_delay_ms(5); 19 | } 20 | ``` 21 | 22 | To learn more about timers visit the [Timer](/overview/timer) section. 23 | 24 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/requirements.txt: -------------------------------------------------------------------------------- 1 | alabaster==0.7.12 2 | Babel==2.9.1 3 | breathe==4.30.0 4 | certifi==2020.12.5 5 | chardet==4.0.0 6 | commonmark==0.9.1 7 | docutils==0.16 8 | idna==2.10 9 | imagesize==1.2.0 10 | importlib-metadata==4.0.1 11 | Jinja2==2.11.3 12 | Markdown==3.3.4 13 | MarkupSafe==1.1.1 14 | packaging==20.9 15 | Pygments==2.9.0 16 | pyparsing==2.4.7 17 | pytz==2021.1 18 | recommonmark==0.6.0 19 | requests==2.25.1 20 | six==1.16.0 21 | snowballstemmer==2.1.0 22 | Sphinx==4.0.1 23 | sphinx-markdown-tables==0.0.15 24 | sphinx-rtd-theme==0.5.2 25 | sphinx-sitemap==2.2.0 26 | sphinxcontrib-applehelp==1.0.2 27 | sphinxcontrib-devhelp==1.0.2 28 | sphinxcontrib-htmlhelp==1.0.3 29 | sphinxcontrib-jsmath==1.0.1 30 | sphinxcontrib-qthelp==1.0.3 31 | sphinxcontrib-serializinghtml==1.1.4 32 | typing-extensions==3.10.0.0 33 | urllib3==1.26.5 34 | zipp==3.4.1 35 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/widgets/core/index.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/object-types/index.md 4 | ``` 5 | # Core widgets 6 | 7 | ```eval_rst 8 | 9 | .. toctree:: 10 | :maxdepth: 1 11 | 12 | arc 13 | bar 14 | btn 15 | btnmatrix 16 | canvas 17 | checkbox 18 | dropdown 19 | img 20 | label 21 | line 22 | roller 23 | slider 24 | switch 25 | table 26 | textarea 27 | 28 | ``` 29 | 30 | 31 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/widgets/extra/index.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/object-types/index.md 4 | ``` 5 | # Extra widgets 6 | 7 | ```eval_rst 8 | 9 | .. toctree:: 10 | :maxdepth: 1 11 | 12 | calendar 13 | chart 14 | colorwheel 15 | imgbtn 16 | keyboard 17 | led 18 | list 19 | meter 20 | msgbox 21 | span 22 | spinbox 23 | spinner 24 | tabview 25 | tileview 26 | win 27 | ``` 28 | 29 | 30 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/docs/widgets/index.md: -------------------------------------------------------------------------------- 1 | ```eval_rst 2 | .. include:: /header.rst 3 | :github_url: |github_link_base|/object-types/index.md 4 | ``` 5 | # Widgets 6 | 7 | ```eval_rst 8 | 9 | .. toctree:: 10 | :maxdepth: 1 11 | 12 | obj 13 | core/index 14 | extra/index 15 | ``` 16 | 17 | 18 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/anim/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Start animation on an event 3 | """""""""""""""""""""""""""" 4 | 5 | .. lv_example:: anim/lv_example_anim_1 6 | :language: c 7 | 8 | Playback animation 9 | """"""""""""""""""" 10 | .. lv_example:: anim/lv_example_anim_2 11 | :language: c 12 | 13 | 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/anim/lv_example_anim.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_example_anim.h 3 | * 4 | */ 5 | 6 | #ifndef LV_EXAMPLE_ANIM_H 7 | #define LV_EXAMPLE_ANIM_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_example_anim_1(void); 29 | void lv_example_anim_2(void); 30 | 31 | /********************** 32 | * MACROS 33 | **********************/ 34 | 35 | #ifdef __cplusplus 36 | } /*extern "C"*/ 37 | #endif 38 | 39 | #endif /*LV_EXAMPLE_ANIM_H*/ 40 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/animimg001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/animimg001.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/animimg002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/animimg002.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/animimg003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/animimg003.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/caret_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/caret_down.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_argb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_argb.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_chroma_keyed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_chroma_keyed.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_indexed16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_indexed16.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_rgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/img_cogwheel_rgb.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/img_hand_min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/img_hand_min.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/img_star.png: -------------------------------------------------------------------------------- 1 | star.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/img_strip.png: -------------------------------------------------------------------------------- 1 | skew_strip.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/imgbtn_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/imgbtn_left.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/imgbtn_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/imgbtn_mid.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/imgbtn_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/imgbtn_right.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/skew_strip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/skew_strip.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/assets/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/examples/assets/star.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/event/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Button click event 3 | """"""""""""""""""" 4 | 5 | .. lv_example:: event/lv_example_event_1 6 | :language: c 7 | 8 | Handle multiple events 9 | """""""""""""""""""""""" 10 | .. lv_example:: event/lv_example_event_2 11 | :language: c 12 | 13 | 14 | Event bubbling 15 | """""""""""""""""""""""" 16 | .. lv_example:: event/lv_example_event_3 17 | :language: c 18 | 19 | 20 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/event/lv_example_event.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_example_event.h 3 | * 4 | */ 5 | 6 | #ifndef LV_EXAMPLE_EVENT_H 7 | #define LV_EXAMPLE_EVENT_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_example_event_1(void); 29 | void lv_example_event_2(void); 30 | void lv_example_event_3(void); 31 | 32 | /********************** 33 | * MACROS 34 | **********************/ 35 | 36 | #ifdef __cplusplus 37 | } /*extern "C"*/ 38 | #endif 39 | 40 | #endif /*LV_EXAMPLE_EVENT_H*/ 41 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/event/lv_example_event_1.c: -------------------------------------------------------------------------------- 1 | #include "../lv_examples.h" 2 | #if LV_BUILD_EXAMPLES && LV_USE_SWITCH 3 | 4 | static void event_cb(lv_event_t * e) 5 | { 6 | LV_LOG_USER("Clicked"); 7 | 8 | static uint32_t cnt = 1; 9 | lv_obj_t * btn = lv_event_get_target(e); 10 | lv_obj_t * label = lv_obj_get_child(btn, 0); 11 | lv_label_set_text_fmt(label, "%d", cnt); 12 | cnt++; 13 | } 14 | 15 | /** 16 | * Add click event to a button 17 | */ 18 | void lv_example_event_1(void) 19 | { 20 | lv_obj_t * btn = lv_btn_create(lv_scr_act()); 21 | lv_obj_set_size(btn, 100, 50); 22 | lv_obj_center(btn); 23 | lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); 24 | 25 | lv_obj_t * label = lv_label_create(btn); 26 | lv_label_set_text(label, "Click me!"); 27 | lv_obj_center(label); 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/event/lv_example_event_1.py: -------------------------------------------------------------------------------- 1 | class Event_1(): 2 | def __init__(self): 3 | self.cnt = 1 4 | # 5 | # Add click event to a button 6 | # 7 | 8 | btn = lv.btn(lv.scr_act()) 9 | btn.set_size(100, 50) 10 | btn.center() 11 | btn.add_event_cb(self.event_cb, lv.EVENT.CLICKED, None) 12 | 13 | label = lv.label(btn) 14 | label.set_text("Click me!"); 15 | label.center() 16 | 17 | def event_cb(self,e): 18 | print("Clicked"); 19 | 20 | btn = lv.btn.__cast__(e.get_target()) 21 | label = btn.get_child(0) 22 | label.set_text(str(self.cnt)) 23 | self.cnt += 1 24 | 25 | evt1 = Event_1() 26 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/examples.mk: -------------------------------------------------------------------------------- 1 | CSRCS += $(shell find -L $(LVGL_DIR)/$(LVGL_DIR_NAME)/examples -name \*.c) 2 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/get_started/index.rst: -------------------------------------------------------------------------------- 1 | 2 | A button with a label and react on click event 3 | """"""""""""""""""""""""""""""""""""""""""""""""" 4 | 5 | .. lv_example:: get_started/lv_example_get_started_1 6 | :language: c 7 | 8 | Create styles from scratch for buttons 9 | """"""""""""""""""""""""""""""""""""""" 10 | .. lv_example:: get_started/lv_example_get_started_2 11 | :language: c 12 | 13 | Create a slider and write its value on a label 14 | """"""""""""""""""""""""""""""""""""""""""""""" 15 | .. lv_example:: get_started/lv_example_get_started_3 16 | :language: c 17 | 18 | 19 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/get_started/lv_example_get_started_3.py: -------------------------------------------------------------------------------- 1 | def slider_event_cb(evt): 2 | slider = evt.get_target() 3 | 4 | # Refresh the text 5 | label.set_text(str(slider.get_value())) 6 | 7 | # 8 | # Create a slider and write its value on a label. 9 | # 10 | 11 | # Create a slider in the center of the display 12 | slider = lv.slider(lv.scr_act()) 13 | slider.set_width(200) # Set the width 14 | slider.center() # Align to the center of the parent (screen) 15 | slider.add_event_cb(slider_event_cb, lv.EVENT.VALUE_CHANGED, None) # Assign an event function 16 | 17 | # Create a label below the slider 18 | label = lv.label(lv.scr_act()); 19 | label.set_text("0") 20 | label.align_to(slider, lv.ALIGN.OUT_TOP_MID, 0, -15) # Align below the slider 21 | 22 | 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/header.py: -------------------------------------------------------------------------------- 1 | #!/opt/bin/lv_micropython -i 2 | 3 | import lvgl as lv 4 | try: 5 | import sys 6 | except ImportError: 7 | import usys as sys 8 | 9 | # JS requires a special import 10 | if sys.platform == 'javascript': 11 | import imp 12 | sys.path.append('https://raw.githubusercontent.com/lvgl/lv_binding_micropython/4c04dba836a5affcf86cef107b538e45278117ae/lib') 13 | 14 | import display_driver 15 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/flex/lv_example_flex_2.py: -------------------------------------------------------------------------------- 1 | # 2 | # Arrange items in rows with wrap and place the items to get even space around them. 3 | # 4 | style = lv.style_t() 5 | style.init() 6 | style.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP) 7 | style.set_flex_main_place(lv.FLEX_ALIGN.SPACE_EVENLY) 8 | style.set_layout(lv.LAYOUT_FLEX.value) 9 | 10 | cont = lv.obj(lv.scr_act()) 11 | cont.set_size(300, 220) 12 | cont.center() 13 | cont.add_style(style, 0) 14 | 15 | for i in range(8): 16 | obj = lv.obj(cont) 17 | obj.set_size(70, lv.SIZE.CONTENT) 18 | 19 | label = lv.label(obj) 20 | label.set_text("{:d}".format(i)) 21 | label.center() 22 | 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/flex/lv_example_flex_3.py: -------------------------------------------------------------------------------- 1 | # 2 | # Demonstrate flex grow. 3 | # 4 | 5 | cont = lv.obj(lv.scr_act()) 6 | cont.set_size(300, 220) 7 | cont.center() 8 | cont.set_flex_flow(lv.FLEX_FLOW.ROW) 9 | 10 | obj = lv.obj(cont) 11 | obj.set_size(40, 40) # Fix size 12 | 13 | obj = lv.obj(cont) 14 | obj.set_height(40) 15 | obj.set_flex_grow(1) # 1 portion from the free space 16 | 17 | obj = lv.obj(cont) 18 | obj.set_height(40) 19 | obj.set_flex_grow(2) # 2 portion from the free space 20 | 21 | obj = lv.obj(cont) 22 | obj.set_size(40, 40) # Fix size. It is flushed to the right by the "grow" items 23 | 24 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/flex/lv_example_flex_4.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_FLEX && LV_BUILD_EXAMPLES 3 | 4 | /** 5 | * Reverse the order of flex items 6 | */ 7 | void lv_example_flex_4(void) 8 | { 9 | 10 | lv_obj_t * cont = lv_obj_create(lv_scr_act()); 11 | lv_obj_set_size(cont, 300, 220); 12 | lv_obj_center(cont); 13 | lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_COLUMN_REVERSE); 14 | 15 | uint32_t i; 16 | for(i = 0; i < 6; i++) { 17 | lv_obj_t * obj = lv_obj_create(cont); 18 | lv_obj_set_size(obj, 100, 50); 19 | 20 | lv_obj_t * label = lv_label_create(obj); 21 | lv_label_set_text_fmt(label, "Item: %d", i); 22 | lv_obj_center(label); 23 | } 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/flex/lv_example_flex_4.py: -------------------------------------------------------------------------------- 1 | # 2 | # Reverse the order of flex items 3 | # 4 | cont = lv.obj(lv.scr_act()) 5 | cont.set_size(300, 220) 6 | cont.center() 7 | cont.set_flex_flow(lv.FLEX_FLOW.COLUMN_REVERSE) 8 | 9 | for i in range(6): 10 | obj = lv.obj(cont) 11 | obj.set_size(100, 50) 12 | 13 | label = lv.label(obj) 14 | label.set_text("Item: " + str(i)) 15 | label.center() 16 | 17 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/flex/lv_example_flex_6.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_FLEX && LV_BUILD_EXAMPLES 3 | 4 | /** 5 | * RTL base direction changes order of the items. 6 | * Also demonstrate how horizontal scrolling works with RTL. 7 | */ 8 | void lv_example_flex_6(void) 9 | { 10 | lv_obj_t * cont = lv_obj_create(lv_scr_act()); 11 | lv_obj_set_style_base_dir(cont, LV_BASE_DIR_RTL, 0); 12 | lv_obj_set_size(cont, 300, 220); 13 | lv_obj_center(cont); 14 | lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP); 15 | 16 | uint32_t i; 17 | for(i = 0; i < 20; i++) { 18 | lv_obj_t * obj = lv_obj_create(cont); 19 | lv_obj_set_size(obj, 70, LV_SIZE_CONTENT); 20 | 21 | lv_obj_t * label = lv_label_create(obj); 22 | lv_label_set_text_fmt(label, "%d", i); 23 | lv_obj_center(label); 24 | } 25 | } 26 | #endif 27 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/flex/lv_example_flex_6.py: -------------------------------------------------------------------------------- 1 | # 2 | # RTL base direction changes order of the items. 3 | # Also demonstrate how horizontal scrolling works with RTL. 4 | # 5 | 6 | cont = lv.obj(lv.scr_act()) 7 | cont.set_style_base_dir(lv.BASE_DIR.RTL,0) 8 | cont.set_size(300, 220) 9 | cont.center() 10 | cont.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP) 11 | 12 | for i in range(20): 13 | obj = lv.obj(cont) 14 | obj.set_size(70, lv.SIZE.CONTENT) 15 | 16 | label = lv.label(obj) 17 | label.set_text(str(i)) 18 | label.center() 19 | 20 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/grid/lv_example_grid_6.py: -------------------------------------------------------------------------------- 1 | # 2 | # Demonstrate RTL direction on grid 3 | # 4 | col_dsc = [60, 60, 60, lv.GRID_TEMPLATE.LAST] 5 | row_dsc = [40, 40, 40, lv.GRID_TEMPLATE.LAST] 6 | 7 | # Create a container with grid 8 | cont = lv.obj(lv.scr_act()) 9 | cont.set_size(300, 220) 10 | cont.center() 11 | cont.set_style_base_dir(lv.BASE_DIR.RTL,0) 12 | cont.set_grid_dsc_array(col_dsc, row_dsc) 13 | 14 | for i in range(9): 15 | col = i % 3 16 | row = i // 3 17 | 18 | obj = lv.obj(cont) 19 | # Stretch the cell horizontally and vertically too 20 | # Set span to 1 to make the cell 1 column/row sized 21 | obj.set_grid_cell(lv.GRID_ALIGN.STRETCH, col, 1, 22 | lv.GRID_ALIGN.STRETCH, row, 1); 23 | 24 | label = lv.label(obj) 25 | label.set_text("{:d},{:d}".format(col, row)) 26 | label.center() 27 | 28 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/layouts/lv_example_layout.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_example_layout.h 3 | * 4 | */ 5 | 6 | #ifndef LV_EXAMPLE_LAYOUT_H 7 | #define LV_EXAMPLE_LAYOUT_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | #include "flex/lv_example_flex.h" 17 | #include "grid/lv_example_grid.h" 18 | 19 | /********************* 20 | * DEFINES 21 | *********************/ 22 | 23 | /********************** 24 | * TYPEDEFS 25 | **********************/ 26 | 27 | /********************** 28 | * GLOBAL PROTOTYPES 29 | **********************/ 30 | 31 | /********************** 32 | * MACROS 33 | **********************/ 34 | 35 | #ifdef __cplusplus 36 | } /*extern "C"*/ 37 | #endif 38 | 39 | #endif /*LV_EXAMPLE_LAYOUT_H*/ 40 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/scroll/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Nested scrolling 3 | """""""""""""""" 4 | 5 | .. lv_example:: scroll/lv_example_scroll_1 6 | :language: c 7 | 8 | Snapping 9 | """""""""""""""" 10 | .. lv_example:: scroll/lv_example_scroll_2 11 | :language: c 12 | 13 | Floating button 14 | """""""""""""""" 15 | .. lv_example:: scroll/lv_example_scroll_3 16 | :language: c 17 | 18 | Styling the scrollbars 19 | """""""""""""""""""""""" 20 | .. lv_example:: scroll/lv_example_scroll_4 21 | :language: c 22 | 23 | Right to left scrolling 24 | """""""""""""""""""""""" 25 | .. lv_example:: scroll/lv_example_scroll_5 26 | :language: c 27 | 28 | Translate on scroll 29 | """""""""""""""""""""""" 30 | .. lv_example:: scroll/lv_example_scroll_6 31 | :language: c 32 | 33 | 34 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/scroll/lv_example_scroll_5.py: -------------------------------------------------------------------------------- 1 | # 2 | # Scrolling with Right To Left base direction 3 | # 4 | obj = lv.obj(lv.scr_act()) 5 | obj.set_style_base_dir(lv.BASE_DIR.RTL, 0) 6 | obj.set_size(200, 100) 7 | obj.center() 8 | 9 | label = lv.label(obj) 10 | label.set_text("میکروکُنترولر (به انگلیسی: Microcontroller) گونه‌ای ریزپردازنده است که دارای حافظهٔ دسترسی تصادفی (RAM) و حافظهٔ فقط‌خواندنی (ROM)، تایمر، پورت‌های ورودی و خروجی (I/O) و درگاه ترتیبی (Serial Port پورت سریال)، درون خود تراشه است، و می‌تواند به تنهایی ابزارهای دیگر را کنترل کند. به عبارت دیگر یک میکروکنترلر، مدار مجتمع کوچکی است که از یک CPU کوچک و اجزای دیگری مانند تایمر، درگاه‌های ورودی و خروجی آنالوگ و دیجیتال و حافظه تشکیل شده‌است.") 11 | label.set_width(400) 12 | label.set_style_text_font(lv.font_dejavu_16_persian_hebrew, 0) 13 | 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_1.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the Size, Position and Padding style properties 3 | # 4 | style = lv.style_t() 5 | style.init() 6 | style.set_radius(5) 7 | 8 | # Make a gradient 9 | style.set_width(150) 10 | style.set_height(lv.SIZE.CONTENT) 11 | 12 | style.set_pad_ver(20) 13 | style.set_pad_left(5) 14 | 15 | style.set_x(lv.pct(50)) 16 | style.set_y(80) 17 | 18 | # Create an object with the new style 19 | obj = lv.obj(lv.scr_act()) 20 | obj.add_style(style, 0) 21 | 22 | label = lv.label(obj) 23 | label.set_text("Hello"); 24 | 25 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_12.c: -------------------------------------------------------------------------------- 1 | #include "../lv_examples.h" 2 | #if LV_BUILD_EXAMPLES && LV_USE_IMG 3 | 4 | /** 5 | * Local styles 6 | */ 7 | void lv_example_style_12(void) 8 | { 9 | static lv_style_t style; 10 | lv_style_init(&style); 11 | lv_style_set_bg_color(&style, lv_palette_main(LV_PALETTE_GREEN)); 12 | lv_style_set_border_color(&style, lv_palette_lighten(LV_PALETTE_GREEN, 3)); 13 | lv_style_set_border_width(&style, 3); 14 | 15 | lv_obj_t * obj = lv_obj_create(lv_scr_act()); 16 | lv_obj_add_style(obj, &style, 0); 17 | 18 | /*Overwrite the background color locally*/ 19 | lv_obj_set_style_bg_color(obj,lv_palette_main(LV_PALETTE_ORANGE), LV_PART_MAIN); 20 | 21 | lv_obj_center(obj); 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_12.py: -------------------------------------------------------------------------------- 1 | # 2 | # Local styles 3 | # 4 | 5 | style = lv.style_t() 6 | style.init() 7 | style.set_bg_color(lv.palette_main(lv.PALETTE.GREEN)) 8 | style.set_border_color(lv.palette_lighten(lv.PALETTE.GREEN, 3)) 9 | style.set_border_width(3) 10 | 11 | obj = lv.obj(lv.scr_act()) 12 | obj.add_style(style, 0) 13 | 14 | # Overwrite the background color locally 15 | obj.set_style_bg_color(lv.palette_main(lv.PALETTE.ORANGE), lv.PART.MAIN) 16 | 17 | obj.center() 18 | 19 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_13.py: -------------------------------------------------------------------------------- 1 | # 2 | # Add styles to parts and states 3 | # 4 | 5 | style_indic = lv.style_t() 6 | style_indic.init() 7 | style_indic.set_bg_color(lv.palette_lighten(lv.PALETTE.RED, 3)) 8 | style_indic.set_bg_grad_color(lv.palette_main(lv.PALETTE.RED)) 9 | style_indic.set_bg_grad_dir(lv.GRAD_DIR.HOR) 10 | 11 | style_indic_pr = lv.style_t() 12 | style_indic_pr.init() 13 | style_indic_pr.set_shadow_color(lv.palette_main(lv.PALETTE.RED)) 14 | style_indic_pr.set_shadow_width(10) 15 | style_indic_pr.set_shadow_spread(3) 16 | 17 | # Create an object with the new style_pr 18 | obj = lv.slider(lv.scr_act()) 19 | obj.add_style(style_indic, lv.PART.INDICATOR) 20 | obj.add_style(style_indic_pr, lv.PART.INDICATOR | lv.STATE.PRESSED) 21 | obj.set_value(70, lv.ANIM.OFF) 22 | obj.center() 23 | 24 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_2.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the background style properties 3 | # 4 | style = lv.style_t() 5 | style.init() 6 | style.set_radius(5) 7 | 8 | # Make a gradient 9 | style.set_bg_opa(lv.OPA.COVER) 10 | style.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 1)) 11 | style.set_bg_grad_color(lv.palette_main(lv.PALETTE.BLUE)) 12 | style.set_bg_grad_dir(lv.GRAD_DIR.VER) 13 | 14 | # Shift the gradient to the bottom 15 | style.set_bg_main_stop(128) 16 | style.set_bg_grad_stop(192) 17 | 18 | # Create an object with the new style 19 | obj = lv.obj(lv.scr_act()) 20 | obj.add_style(style, 0) 21 | obj.center() 22 | 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_3.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the border style properties 3 | # 4 | style = lv.style_t() 5 | style.init() 6 | 7 | # Set a background color and a radius 8 | style.set_radius(10) 9 | style.set_bg_opa(lv.OPA.COVER) 10 | style.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 1)) 11 | 12 | # Add border to the bottom+right 13 | style.set_border_color(lv.palette_main(lv.PALETTE.BLUE)) 14 | style.set_border_width(5) 15 | style.set_border_opa(lv.OPA._50) 16 | style.set_border_side(lv.BORDER_SIDE.BOTTOM | lv.BORDER_SIDE.RIGHT) 17 | 18 | # Create an object with the new style 19 | obj = lv.obj(lv.scr_act()) 20 | obj.add_style(style, 0) 21 | obj.center() 22 | 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_4.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the outline style properties 3 | # 4 | 5 | style = lv.style_t() 6 | style.init() 7 | 8 | # Set a background color and a radius 9 | style.set_radius(5) 10 | style.set_bg_opa(lv.OPA.COVER) 11 | style.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 1)) 12 | 13 | # Add outline 14 | style.set_outline_width(2) 15 | style.set_outline_color(lv.palette_main(lv.PALETTE.BLUE)) 16 | style.set_outline_pad(8) 17 | 18 | # Create an object with the new style 19 | obj = lv.obj(lv.scr_act()) 20 | obj.add_style(style, 0) 21 | obj.center() 22 | 23 | 24 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_5.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the Shadow style properties 3 | # 4 | 5 | style = lv.style_t() 6 | style.init() 7 | 8 | # Set a background color and a radius 9 | style.set_radius(5) 10 | style.set_bg_opa(lv.OPA.COVER) 11 | style.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 1)) 12 | 13 | # Add a shadow 14 | style.set_shadow_width(8) 15 | style.set_shadow_color(lv.palette_main(lv.PALETTE.BLUE)) 16 | style.set_shadow_ofs_x(10) 17 | style.set_shadow_ofs_y(20) 18 | 19 | # Create an object with the new style 20 | obj = lv.obj(lv.scr_act()) 21 | obj.add_style(style, 0) 22 | obj.center() 23 | 24 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_7.c: -------------------------------------------------------------------------------- 1 | #include "../lv_examples.h" 2 | #if LV_BUILD_EXAMPLES && LV_USE_ARC 3 | 4 | /** 5 | * Using the Arc style properties 6 | */ 7 | void lv_example_style_7(void) 8 | { 9 | static lv_style_t style; 10 | lv_style_init(&style); 11 | 12 | lv_style_set_arc_color(&style, lv_palette_main(LV_PALETTE_RED)); 13 | lv_style_set_arc_width(&style, 4); 14 | 15 | /*Create an object with the new style*/ 16 | lv_obj_t * obj = lv_arc_create(lv_scr_act()); 17 | lv_obj_add_style(obj, &style, 0); 18 | lv_obj_center(obj); 19 | } 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_7.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the Arc style properties 3 | # 4 | style = lv.style_t() 5 | style.init() 6 | 7 | style.set_arc_color(lv.palette_main(lv.PALETTE.RED)) 8 | style.set_arc_width(4) 9 | 10 | # Create an object with the new style 11 | obj = lv.arc(lv.scr_act()) 12 | obj.add_style(style, 0) 13 | obj.center() 14 | 15 | 16 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_8.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the text style properties 3 | # 4 | 5 | style = lv.style_t() 6 | style.init() 7 | 8 | style.set_radius(5) 9 | style.set_bg_opa(lv.OPA.COVER) 10 | style.set_bg_color(lv.palette_lighten(lv.PALETTE.GREY, 3)) 11 | style.set_border_width(2) 12 | style.set_border_color(lv.palette_main(lv.PALETTE.BLUE)) 13 | style.set_pad_all(10) 14 | 15 | style.set_text_color(lv.palette_main(lv.PALETTE.BLUE)) 16 | style.set_text_letter_space(5) 17 | style.set_text_line_space(20) 18 | style.set_text_decor(lv.TEXT_DECOR.UNDERLINE) 19 | 20 | # Create an object with the new style 21 | obj = lv.label(lv.scr_act()) 22 | obj.add_style(style, 0) 23 | obj.set_text("Text of\n" 24 | "a label"); 25 | 26 | obj.center() 27 | 28 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_9.c: -------------------------------------------------------------------------------- 1 | #include "../lv_examples.h" 2 | #if LV_BUILD_EXAMPLES && LV_USE_LINE 3 | 4 | /** 5 | * Using the line style properties 6 | */ 7 | void lv_example_style_9(void) 8 | { 9 | static lv_style_t style; 10 | lv_style_init(&style); 11 | 12 | lv_style_set_line_color(&style, lv_palette_main(LV_PALETTE_GREY)); 13 | lv_style_set_line_width(&style, 6); 14 | lv_style_set_line_rounded(&style, true); 15 | 16 | /*Create an object with the new style*/ 17 | lv_obj_t * obj = lv_line_create(lv_scr_act()); 18 | lv_obj_add_style(obj, &style, 0); 19 | 20 | static lv_point_t p[] = {{10, 30}, {30, 50}, {100, 0}}; 21 | lv_line_set_points(obj, p, 3); 22 | 23 | lv_obj_center(obj); 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/styles/lv_example_style_9.py: -------------------------------------------------------------------------------- 1 | # 2 | # Using the line style properties 3 | # 4 | 5 | style = lv.style_t() 6 | style.init() 7 | 8 | style.set_line_color(lv.palette_main(lv.PALETTE.GREY)) 9 | style.set_line_width(6) 10 | style.set_line_rounded(True) 11 | 12 | # Create an object with the new style 13 | obj = lv.line(lv.scr_act()) 14 | obj.add_style(style, 0) 15 | p = [ {"x":10, "y":30}, 16 | {"x":30, "y":50}, 17 | {"x":100, "y":0}] 18 | 19 | obj.set_points(p, 3) 20 | 21 | obj.center() 22 | 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/test_ex.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cat ../../header.py $1 > test.py 3 | chmod +x test.py 4 | ./test.py 5 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/animimg/lv_example_animimg_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_ANIMIMG && LV_BUILD_EXAMPLES 3 | LV_IMG_DECLARE(animimg001) 4 | LV_IMG_DECLARE(animimg002) 5 | LV_IMG_DECLARE(animimg003) 6 | 7 | static const lv_img_dsc_t* anim_imgs[3] = { 8 | &animimg001, 9 | &animimg002, 10 | &animimg003, 11 | }; 12 | 13 | void lv_example_animimg_1(void) 14 | { 15 | lv_obj_t * animimg0 = lv_animimg_create(lv_scr_act()); 16 | lv_obj_center(animimg0); 17 | lv_animimg_set_src(animimg0, (lv_img_dsc_t**) anim_imgs, 3); 18 | lv_animimg_set_duration(animimg0, 1000); 19 | lv_animimg_set_repeat_count(animimg0, LV_ANIM_REPEAT_INFINITE); 20 | lv_animimg_start(animimg0); 21 | } 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/arc/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Arc 3 | """""""""""""""" 4 | 5 | .. lv_example:: widgets/arc/lv_example_arc_1 6 | :language: c 7 | 8 | Loader with Arc 9 | """""""""""""""" 10 | 11 | .. lv_example:: widgets/arc/lv_example_arc_2 12 | :language: c 13 | 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/arc/lv_example_arc_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | 3 | #if LV_USE_ARC && LV_BUILD_EXAMPLES 4 | 5 | void lv_example_arc_1(void) 6 | { 7 | /*Create an Arc*/ 8 | lv_obj_t * arc = lv_arc_create(lv_scr_act()); 9 | lv_obj_set_size(arc, 150, 150); 10 | lv_arc_set_rotation(arc, 135); 11 | lv_arc_set_bg_angles(arc, 0, 270); 12 | lv_arc_set_value(arc, 40); 13 | lv_obj_center(arc); 14 | } 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/arc/lv_example_arc_1.py: -------------------------------------------------------------------------------- 1 | # Create an Arc 2 | arc = lv.arc(lv.scr_act()) 3 | arc.set_end_angle(200) 4 | arc.set_size(150, 150) 5 | arc.center() 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/arc/lv_example_arc_2.py: -------------------------------------------------------------------------------- 1 | # 2 | # An `lv_timer` to call periodically to set the angles of the arc 3 | # 4 | class ArcLoader(): 5 | def __init__(self): 6 | self.a = 270 7 | 8 | def arc_loader_cb(self,tim,arc): 9 | # print(tim,arc) 10 | self.a += 5 11 | 12 | arc.set_end_angle(self.a) 13 | 14 | if self.a >= 270 + 360: 15 | tim._del() 16 | 17 | 18 | # 19 | # Create an arc which acts as a loader. 20 | # 21 | 22 | # Create an Arc 23 | arc = lv.arc(lv.scr_act()) 24 | arc.set_bg_angles(0, 360) 25 | arc.set_angles(270, 270) 26 | arc.center() 27 | 28 | # create the loader 29 | arc_loader = ArcLoader() 30 | 31 | # Create an `lv_timer` to update the arc. 32 | 33 | timer = lv.timer_create_basic() 34 | timer.set_period(20) 35 | timer.set_cb(lambda src: arc_loader.arc_loader_cb(timer,arc)) 36 | 37 | 38 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/bar/lv_example_bar_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_BAR && LV_BUILD_EXAMPLES 3 | 4 | void lv_example_bar_1(void) 5 | { 6 | lv_obj_t * bar1 = lv_bar_create(lv_scr_act()); 7 | lv_obj_set_size(bar1, 200, 20); 8 | lv_obj_center(bar1); 9 | lv_bar_set_value(bar1, 70, LV_ANIM_OFF); 10 | } 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/bar/lv_example_bar_1.py: -------------------------------------------------------------------------------- 1 | bar1 = lv.bar(lv.scr_act()) 2 | bar1.set_size(200, 20) 3 | bar1.center() 4 | bar1.set_value(70, lv.ANIM.OFF) 5 | 6 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/bar/lv_example_bar_2.py: -------------------------------------------------------------------------------- 1 | # 2 | # Example of styling the bar 3 | # 4 | style_bg = lv.style_t() 5 | style_indic = lv.style_t() 6 | 7 | style_bg.init() 8 | style_bg.set_border_color(lv.palette_main(lv.PALETTE.BLUE)) 9 | style_bg.set_border_width(2) 10 | style_bg.set_pad_all(6) # To make the indicator smaller 11 | style_bg.set_radius(6) 12 | style_bg.set_anim_time(1000) 13 | 14 | style_indic.init() 15 | style_indic.set_bg_opa(lv.OPA.COVER) 16 | style_indic.set_bg_color(lv.palette_main(lv.PALETTE.BLUE)) 17 | style_indic.set_radius(3) 18 | 19 | bar = lv.bar(lv.scr_act()) 20 | bar.remove_style_all() # To have a clean start 21 | bar.add_style(style_bg, 0) 22 | bar.add_style(style_indic, lv.PART.INDICATOR) 23 | 24 | bar.set_size(200, 20) 25 | bar.center() 26 | bar.set_value(100, lv.ANIM.ON) 27 | 28 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/bar/lv_example_bar_5.py: -------------------------------------------------------------------------------- 1 | # 2 | # Bar with LTR and RTL base direction 3 | # 4 | 5 | bar_ltr = lv.bar(lv.scr_act()) 6 | bar_ltr.set_size(200, 20) 7 | bar_ltr.set_value(70, lv.ANIM.OFF) 8 | bar_ltr.align(lv.ALIGN.CENTER, 0, -30) 9 | 10 | label = lv.label(lv.scr_act()) 11 | label.set_text("Left to Right base direction") 12 | label.align_to(bar_ltr, lv.ALIGN.OUT_TOP_MID, 0, -5) 13 | 14 | bar_rtl = lv.bar(lv.scr_act()) 15 | bar_rtl.set_style_base_dir(lv.BASE_DIR.RTL,0) 16 | bar_rtl.set_size(200, 20) 17 | bar_rtl.set_value(70, lv.ANIM.OFF) 18 | bar_rtl.align(lv.ALIGN.CENTER, 0, 30) 19 | 20 | label = lv.label(lv.scr_act()) 21 | label.set_text("Right to Left base direction") 22 | label.align_to(bar_rtl, lv.ALIGN.OUT_TOP_MID, 0, -5) 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/btn/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Buttons 3 | """""""""""""""" 4 | 5 | .. lv_example:: widgets/btn/lv_example_btn_1 6 | :language: c 7 | 8 | 9 | Styling buttons 10 | """""""""""""""" 11 | 12 | .. lv_example:: widgets/btn/lv_example_btn_2 13 | :language: c 14 | 15 | Gummy button 16 | """""""""""""""" 17 | 18 | .. lv_example:: widgets/btn/lv_example_btn_3 19 | :language: c 20 | 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/btnmatrix/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Button matrix 3 | """""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/btnmatrix/lv_example_btnmatrix_1 6 | :language: c 7 | 8 | 9 | Custom buttons 10 | """""""""""""""""""""" 11 | 12 | .. lv_example:: widgets/btnmatrix/lv_example_btnmatrix_2 13 | :language: c 14 | 15 | 16 | Pagination 17 | """""""""""""""""""""" 18 | 19 | .. lv_example:: widgets/btnmatrix/lv_example_btnmatrix_3 20 | :language: c 21 | 22 | 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/btnmatrix/lv_example_btnmatrix_1.py: -------------------------------------------------------------------------------- 1 | def event_handler(evt): 2 | code = evt.get_code() 3 | obj = evt.get_target() 4 | 5 | if code == lv.EVENT.VALUE_CHANGED : 6 | id = obj.get_selected_btn() 7 | txt = obj.get_btn_text(id) 8 | 9 | print("%s was pressed"%txt) 10 | 11 | btnm_map = ["1", "2", "3", "4", "5", "\n", 12 | "6", "7", "8", "9", "0", "\n", 13 | "Action1", "Action2", ""] 14 | 15 | btnm1 = lv.btnmatrix(lv.scr_act()) 16 | btnm1.set_map(btnm_map) 17 | btnm1.set_btn_width(10, 2) # Make "Action1" twice as wide as "Action2" 18 | btnm1.set_btn_ctrl(10, lv.btnmatrix.CTRL.CHECKABLE) 19 | btnm1.set_btn_ctrl(11, lv.btnmatrix.CTRL.CHECKED) 20 | btnm1.align(lv.ALIGN.CENTER, 0, 0) 21 | btnm1.add_event_cb(event_handler, lv.EVENT.ALL, None) 22 | 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/calendar/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Calendar with header 3 | """""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/calendar/lv_example_calendar_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/canvas/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Drawing on the Canvas and rotate 3 | """""""""""""""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/canvas/lv_example_canvas_1 6 | :language: c 7 | 8 | Transparent Canvas with chroma keying 9 | """""""""""""""""""""""""""""""""""""" 10 | 11 | .. lv_example:: widgets/canvas/lv_example_canvas_2 12 | :language: c 13 | 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/checkbox/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Checkboxes 3 | """"""""""""""""" 4 | 5 | .. lv_example:: widgets/checkbox/lv_example_checkbox_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/colorwheel/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Colorwheel 3 | """"""""""""""""" 4 | 5 | .. lv_example:: widgets/colorwheel/lv_example_colorwheel_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/colorwheel/lv_example_colorwheel_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_COLORWHEEL && LV_BUILD_EXAMPLES 3 | 4 | void lv_example_colorwheel_1(void) 5 | { 6 | lv_obj_t * cw; 7 | 8 | cw = lv_colorwheel_create(lv_scr_act(), true); 9 | lv_obj_set_size(cw, 200, 200); 10 | lv_obj_center(cw); 11 | } 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/colorwheel/lv_example_colorwheel_1.py: -------------------------------------------------------------------------------- 1 | cw = lv.colorwheel(lv.scr_act(), True) 2 | cw.set_size(200, 200) 3 | cw.center() 4 | 5 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/dropdown/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Drop down list 3 | """""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/dropdown/lv_example_dropdown_1 6 | :language: c 7 | 8 | Drop down in four directions 9 | """""""""""""""""""""""""""" 10 | 11 | .. lv_example:: widgets/dropdown/lv_example_dropdown_2 12 | :language: c 13 | 14 | 15 | Menu 16 | """""""""""" 17 | 18 | .. lv_example:: widgets/dropdown/lv_example_dropdown_3 19 | :language: c 20 | 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/dropdown/lv_example_dropdown_1.py: -------------------------------------------------------------------------------- 1 | def event_handler(e): 2 | code = e.get_code() 3 | obj = lv.dropdown.__cast__(e.get_target()) 4 | if code == lv.EVENT.VALUE_CHANGED: 5 | option = " "*10 # should be large enough to store the option 6 | obj.get_selected_str(option, len(option)) 7 | # .strip() removes trailing spaces 8 | print("Option: \"%s\"" % option.strip()) 9 | 10 | # Create a normal drop down list 11 | dd = lv.dropdown(lv.scr_act()) 12 | dd.set_options("\n".join([ 13 | "Apple\n" 14 | "Banana\n" 15 | "Orange\n" 16 | "Cherry\n" 17 | "Grape\n" 18 | "Raspberry\n" 19 | "Melon\n" 20 | "Orange\n" 21 | "Lemon\n" 22 | "Nuts\n"])) 23 | 24 | dd.align(lv.ALIGN.TOP_MID, 0, 20) 25 | dd.add_event_cb(event_handler, lv.EVENT.ALL, None) 26 | 27 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/img/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Image from variable and symbol 3 | """"""""""""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/img/lv_example_img_1 6 | :language: c 7 | 8 | 9 | Image recoloring 10 | """""""""""""""" 11 | 12 | .. lv_example:: widgets/img/lv_example_img_2 13 | :language: c 14 | 15 | 16 | Rotate and zoom 17 | """""""""""""""" 18 | 19 | .. lv_example:: widgets/img/lv_example_img_3 20 | :language: c 21 | 22 | Image offset and styling 23 | """""""""""""""""""""""" 24 | 25 | .. lv_example:: widgets/img/lv_example_img_4 26 | :language: c 27 | 28 | 29 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/img/lv_example_img_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_IMG && LV_BUILD_EXAMPLES 3 | 4 | 5 | void lv_example_img_1(void) 6 | { 7 | LV_IMG_DECLARE(img_cogwheel_argb); 8 | lv_obj_t * img1 = lv_img_create(lv_scr_act()); 9 | lv_img_set_src(img1, &img_cogwheel_argb); 10 | lv_obj_align(img1, LV_ALIGN_CENTER, 0, -20); 11 | lv_obj_set_size(img1, 200, 200); 12 | 13 | lv_obj_t * img2 = lv_img_create(lv_scr_act()); 14 | lv_img_set_src(img2, LV_SYMBOL_OK "Accept"); 15 | lv_obj_align_to(img2, img1, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); 16 | } 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/imgbtn/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Image button 3 | """"""""""""""""""" 4 | 5 | .. lv_example:: widgets/imgbtn/lv_example_imgbtn_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/keyboard/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Keyboard with text area 3 | """"""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/keyboard/lv_example_keyboard_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/label/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Line wrap, recoloring and scrolling 3 | """"""""""""""""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/label/lv_example_label_1 6 | :language: c 7 | 8 | Text shadow 9 | """""""""""" 10 | 11 | .. lv_example:: widgets/label/lv_example_label_2 12 | :language: c 13 | 14 | Show LTR, RTL and Chinese texts 15 | """""""""""""""""""""""""""""""""""" 16 | 17 | .. lv_example:: widgets/label/lv_example_label_3 18 | :language: c 19 | 20 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/led/index.rst: -------------------------------------------------------------------------------- 1 | 2 | LED with custom style 3 | """"""""""""""""""""" 4 | 5 | .. lv_example:: widgets/led/lv_example_led_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/led/lv_example_led_1.py: -------------------------------------------------------------------------------- 1 | # 2 | # Create LED's with different brightness and color 3 | # 4 | 5 | # Create a LED and switch it OFF 6 | led1 = lv.led(lv.scr_act()) 7 | led1.align(lv.ALIGN.CENTER, -80, 0) 8 | led1.off() 9 | 10 | # Copy the previous LED and set a brightness 11 | led2 = lv.led(lv.scr_act()) 12 | led2.align(lv.ALIGN.CENTER, 0, 0) 13 | led2.set_brightness(150) 14 | led2.set_color(lv.palette_main(lv.PALETTE.RED)) 15 | 16 | # Copy the previous LED and switch it ON 17 | led3 = lv.led(lv.scr_act()) 18 | led3.align(lv.ALIGN.CENTER, 80, 0) 19 | led3.on() 20 | 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/line/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Line 3 | """""""""""""""" 4 | 5 | .. lv_example:: widgets/line/lv_example_line_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/line/lv_example_line_1.py: -------------------------------------------------------------------------------- 1 | # Create an array for the points of the line 2 | line_points = [ {"x":5, "y":5}, 3 | {"x":70, "y":70}, 4 | {"x":120, "y":10}, 5 | {"x":180, "y":60}, 6 | {"x":240, "y":10}] 7 | 8 | # Create style 9 | style_line = lv.style_t() 10 | style_line.init() 11 | style_line.set_line_width(8) 12 | style_line.set_line_color(lv.palette_main(lv.PALETTE.BLUE)) 13 | style_line.set_line_rounded(True) 14 | 15 | # Create a line and apply the new style 16 | line1 = lv.line(lv.scr_act()) 17 | line1.set_points(line_points, 5) # Set the points 18 | line1.add_style(style_line, 0) 19 | line1.center() 20 | 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/list/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple List 3 | """""""""""""""" 4 | 5 | .. lv_example:: widgets/list/lv_example_list_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/meter/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple meter 3 | """"""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/meter/lv_example_meter_1 6 | :language: c 7 | 8 | 9 | A meter with multiple arcs 10 | """"""""""""""""""""""""""" 11 | 12 | .. lv_example:: widgets/meter/lv_example_meter_2 13 | :language: c 14 | 15 | 16 | A clock from a meter 17 | """"""""""""""""""""""" 18 | 19 | .. lv_example:: widgets/meter/lv_example_meter_3 20 | :language: c 21 | 22 | 23 | Pie chart 24 | """"""""""""""""""""""" 25 | 26 | .. lv_example:: widgets/meter/lv_example_meter_4 27 | :language: c 28 | 29 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/msgbox/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Message box 3 | """"""""""""""""""" 4 | 5 | .. lv_example:: widgets/msgbox/lv_example_msgbox_1 6 | :language: c 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/msgbox/lv_example_msgbox_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_MSGBOX && LV_BUILD_EXAMPLES 3 | 4 | static void event_cb(lv_event_t * e) 5 | { 6 | lv_obj_t * obj = lv_event_get_current_target(e); 7 | LV_LOG_USER("Button %s clicked", lv_msgbox_get_active_btn_text(obj)); 8 | } 9 | 10 | void lv_example_msgbox_1(void) 11 | { 12 | static const char * btns[] ={"Apply", "Close", ""}; 13 | 14 | lv_obj_t * mbox1 = lv_msgbox_create(NULL, "Hello", "This is a message box with two buttons.", btns, true); 15 | lv_obj_add_event_cb(mbox1, event_cb, LV_EVENT_VALUE_CHANGED, NULL); 16 | lv_obj_center(mbox1); 17 | } 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/msgbox/lv_example_msgbox_1.py: -------------------------------------------------------------------------------- 1 | def event_cb(e): 2 | mbox = lv.msgbox.__cast__(e.get_current_target()) 3 | print("Button " + mbox.get_active_btn_text() + " clicked") 4 | 5 | btns = ["Apply", "Close", ""] 6 | 7 | mbox1 = lv.msgbox(lv.scr_act(), "Hello", "This is a message box with two buttons.", btns, True) 8 | mbox1.add_event_cb(event_cb, lv.EVENT.VALUE_CHANGED, None) 9 | mbox1.center() 10 | 11 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/obj/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Base objects with custom styles 3 | """""""""""""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/obj/lv_example_obj_1 6 | :language: c 7 | 8 | Make an object draggable 9 | """""""""""""""""""""""""""" 10 | 11 | .. lv_example:: widgets/obj/lv_example_obj_2 12 | :language: c 13 | 14 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/obj/lv_example_obj_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_BUILD_EXAMPLES 3 | 4 | void lv_example_obj_1(void) 5 | { 6 | lv_obj_t * obj1; 7 | obj1 = lv_obj_create(lv_scr_act()); 8 | lv_obj_set_size(obj1, 100, 50); 9 | lv_obj_align(obj1, LV_ALIGN_CENTER, -60, -30); 10 | 11 | static lv_style_t style_shadow; 12 | lv_style_init(&style_shadow); 13 | lv_style_set_shadow_width(&style_shadow, 10); 14 | lv_style_set_shadow_spread(&style_shadow, 5); 15 | lv_style_set_shadow_color(&style_shadow, lv_palette_main(LV_PALETTE_BLUE)); 16 | 17 | lv_obj_t * obj2; 18 | obj2 = lv_obj_create(lv_scr_act()); 19 | lv_obj_add_style(obj2, &style_shadow, 0); 20 | lv_obj_align(obj2, LV_ALIGN_CENTER, 60, 30); 21 | } 22 | #endif 23 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/obj/lv_example_obj_1.py: -------------------------------------------------------------------------------- 1 | obj1 = lv.obj(lv.scr_act()) 2 | obj1.set_size(100, 50) 3 | obj1.align(lv.ALIGN.CENTER, -60, -30) 4 | 5 | style_shadow = lv.style_t() 6 | style_shadow.init() 7 | style_shadow.set_shadow_width(10) 8 | style_shadow.set_shadow_spread(5) 9 | style_shadow.set_shadow_color(lv.palette_main(lv.PALETTE.BLUE)) 10 | 11 | obj2 = lv.obj(lv.scr_act()) 12 | obj2.add_style(style_shadow, 0) 13 | obj2.align(lv.ALIGN.CENTER, 60, 30) 14 | 15 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/obj/lv_example_obj_2.py: -------------------------------------------------------------------------------- 1 | def drag_event_handler(e): 2 | 3 | obj = e.get_target() 4 | 5 | indev = lv.indev_get_act() 6 | 7 | vect = lv.point_t() 8 | indev.get_vect(vect) 9 | x = obj.get_x() + vect.x 10 | y = obj.get_y() + vect.y 11 | obj.set_pos(x, y) 12 | 13 | 14 | # 15 | # Make an object dragable. 16 | # 17 | 18 | obj = lv.obj(lv.scr_act()) 19 | obj.set_size(150, 100) 20 | obj.add_event_cb(drag_event_handler, lv.EVENT.PRESSING, None) 21 | 22 | label = lv.label(obj) 23 | label.set_text("Drag me") 24 | label.center() 25 | 26 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/roller/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Roller 3 | """""""""""""""" 4 | 5 | .. lv_example:: widgets/roller/lv_example_roller_1 6 | :language: c 7 | 8 | Styling the roller 9 | """""""""""""""""" 10 | 11 | .. lv_example:: widgets/roller/lv_example_roller_2 12 | :language: c 13 | 14 | add fade mask to roller 15 | """"""""""""""""""""""" 16 | 17 | .. lv_example:: widgets/roller/lv_example_roller_3 18 | :language: c 19 | 20 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/roller/lv_example_roller_1.py: -------------------------------------------------------------------------------- 1 | def event_handler(e): 2 | code = e.get_code() 3 | obj = lv.roller.__cast__(e.get_target()) 4 | if code == lv.EVENT.VALUE_CHANGED: 5 | option = " "*10 6 | obj.get_selected_str(option, len(option)) 7 | print("Selected month: " + option.strip()) 8 | 9 | # 10 | # An infinite roller with the name of the months 11 | # 12 | 13 | roller1 = lv.roller(lv.scr_act()) 14 | roller1.set_options("\n".join([ 15 | "January", 16 | "February", 17 | "March", 18 | "April", 19 | "May", 20 | "June", 21 | "July", 22 | "August", 23 | "September", 24 | "October", 25 | "November", 26 | "December"]),lv.roller.MODE.INFINITE) 27 | 28 | roller1.set_visible_row_count(4) 29 | roller1.center() 30 | roller1.add_event_cb(event_handler, lv.EVENT.ALL, None) 31 | 32 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/slider/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Slider 3 | """"""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/slider/lv_example_slider_1 6 | :language: c 7 | 8 | Slider with custom style 9 | """"""""""""""""""""""""" 10 | 11 | .. lv_example:: widgets/slider/lv_example_slider_2 12 | :language: c 13 | 14 | Slider with extended drawer 15 | """""""""""""""""""""""""""" 16 | 17 | .. lv_example:: widgets/slider/lv_example_slider_3 18 | :language: c 19 | 20 | 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/slider/lv_example_slider_1.py: -------------------------------------------------------------------------------- 1 | # 2 | # A default slider with a label displaying the current value 3 | # 4 | def slider_event_cb(e): 5 | 6 | slider = lv.slider.__cast__(e.get_target()) 7 | slider_label.set_text("{:d}%".format(slider.get_value())) 8 | slider_label.align_to(slider, lv.ALIGN.OUT_BOTTOM_MID, 0, 10) 9 | 10 | # Create a slider in the center of the display 11 | slider = lv.slider(lv.scr_act()) 12 | slider.center() 13 | slider.add_event_cb(slider_event_cb, lv.EVENT.VALUE_CHANGED, None) 14 | 15 | # Create a label below the slider 16 | slider_label = lv.label(lv.scr_act()) 17 | slider_label.set_text("0%") 18 | 19 | slider_label.align_to(slider, lv.ALIGN.OUT_BOTTOM_MID, 0, 10) 20 | 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/span/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Span with custom styles 3 | """""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/span/lv_example_span_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/spinbox/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Spinbox 3 | """"""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/spinbox/lv_example_spinbox_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/spinner/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple spinner 3 | """""""""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/spinner/lv_example_spinner_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/spinner/lv_example_spinner_1.c: -------------------------------------------------------------------------------- 1 | #include "../../lv_examples.h" 2 | #if LV_USE_SPINNER && LV_BUILD_EXAMPLES 3 | 4 | void lv_example_spinner_1(void) 5 | { 6 | /*Create a spinner*/ 7 | lv_obj_t * spinner = lv_spinner_create(lv_scr_act(), 1000, 60); 8 | lv_obj_set_size(spinner, 100, 100); 9 | lv_obj_center(spinner); 10 | } 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/spinner/lv_example_spinner_1.py: -------------------------------------------------------------------------------- 1 | # Create a spinner 2 | spinner = lv.spinner(lv.scr_act(), 1000, 60) 3 | spinner.set_size(100, 100) 4 | spinner.center() 5 | 6 | 7 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/switch/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Switch 3 | """"""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/switch/lv_example_switch_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/table/index.rst: -------------------------------------------------------------------------------- 1 | 2 | 3 | Simple table 4 | """"""""""""""""""""""" 5 | 6 | .. lv_example:: widgets/table/lv_example_table_1 7 | :language: c 8 | 9 | Lightweighted list from table 10 | """""""""""""""""""""""""""""" 11 | 12 | .. lv_example:: widgets/table/lv_example_table_2 13 | :language: c 14 | 15 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/tabview/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Tabview 3 | """"""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/tabview/lv_example_tabview_1 6 | :language: c 7 | 8 | Tabs on the left, styling and no scrolling 9 | """"""""""""""""""""""""""""""""""""""""""""" 10 | 11 | .. lv_example:: widgets/tabview/lv_example_tabview_2 12 | :language: c 13 | 14 | 15 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/tabview/lv_example_tabview_1.py: -------------------------------------------------------------------------------- 1 | # Create a Tab view object 2 | tabview = lv.tabview(lv.scr_act(), lv.DIR.TOP, 50) 3 | 4 | # Add 3 tabs (the tabs are page (lv_page) and can be scrolled 5 | tab1 = tabview.add_tab("Tab 1") 6 | tab2 = tabview.add_tab("Tab 2") 7 | tab3 = tabview.add_tab("Tab 3") 8 | 9 | # Add content to the tabs 10 | label = lv.label(tab1) 11 | label.set_text("""This the first tab 12 | 13 | If the content 14 | of a tab 15 | becomes too 16 | longer 17 | than the 18 | container 19 | then it 20 | automatically 21 | becomes 22 | scrollable. 23 | 24 | 25 | 26 | Can you see it?""") 27 | 28 | label = lv.label(tab2) 29 | label.set_text("Second tab") 30 | 31 | label = lv.label(tab3) 32 | label.set_text("Third tab"); 33 | 34 | label.scroll_to_view_recursive(lv.ANIM.ON) 35 | 36 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/textarea/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple Text area 3 | """"""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/textarea/lv_example_textarea_1 6 | :language: c 7 | 8 | 9 | Text area with password field 10 | """"""""""""""""""""""""""""" 11 | 12 | .. lv_example:: widgets/textarea/lv_example_textarea_2 13 | :language: c 14 | 15 | Text auto-formatting 16 | """"""""""""""""""""""""""""" 17 | 18 | .. lv_example:: widgets/textarea/lv_example_textarea_3 19 | :language: c 20 | 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/tileview/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Tileview with content 3 | """"""""""""""""""""""""""" 4 | 5 | .. lv_example:: widgets/tileview/lv_example_tileview_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/examples/widgets/win/index.rst: -------------------------------------------------------------------------------- 1 | 2 | Simple window 3 | """"""""""""""" 4 | 5 | .. lv_example:: widgets/win/lv_example_win_1 6 | :language: c 7 | 8 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/library.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lvgl", 3 | "version": "8.1.0-dev", 4 | "keywords": "graphics, gui, embedded, tft, lvgl", 5 | "description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/lvgl/lvgl.git" 9 | }, 10 | "build": { 11 | "includeDir": "." 12 | }, 13 | "license": "MIT", 14 | "homepage": "https://lvgl.io", 15 | "frameworks": "*", 16 | "platforms": "*" 17 | } 18 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/library.properties: -------------------------------------------------------------------------------- 1 | name=lvgl 2 | version=8.1.0-dev 3 | author=kisvegabor 4 | maintainer=kisvegabor,embeddedt,pete-pjb 5 | sentence=Full-featured Graphics Library for Embedded Systems 6 | paragraph=Powerful and easy-to-use embedded GUI with many widgets, advanced visual effects (opacity, antialiasing, animations) and low memory requirements (16K RAM, 64K Flash). 7 | category=Display 8 | url=https://lvgl.io 9 | architectures=* 10 | includes=lvgl.h 11 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/lvgl.mk: -------------------------------------------------------------------------------- 1 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/examples/examples.mk 2 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/extra/extra.mk 3 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/core/lv_core.mk 4 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/draw/lv_draw.mk 5 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/font/lv_font.mk 6 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/gpu/lv_gpu.mk 7 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/hal/lv_hal.mk 8 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/misc/lv_misc.mk 9 | include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/widgets/lv_widgets.mk 10 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/build_html_examples.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" 4 | CURRENT_REF="$(git rev-parse HEAD)" 5 | rm -rf emscripten_builder 6 | git clone https://github.com/lvgl/lv_sim_emscripten.git emscripten_builder 7 | scripts/genexamplelist.sh > emscripten_builder/examplelist.c 8 | cd emscripten_builder 9 | git submodule update --init -- lvgl 10 | cd lvgl 11 | git checkout $CURRENT_REF 12 | cd .. 13 | git submodule update --init -- lv_drivers 14 | mkdir cmbuild 15 | cd cmbuild 16 | emcmake cmake .. -DLVGL_CHOSEN_DEMO=lv_example_noop -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache 17 | emmake make -j$(nproc) 18 | rm -rf CMakeFiles 19 | cd ../.. 20 | cp -a emscripten_builder/cmbuild docs/_static/built_lv_examples 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/built_in_font/DejaVuSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/scripts/built_in_font/DejaVuSans.ttf -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/built_in_font/Montserrat-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/scripts/built_in_font/Montserrat-Medium.ttf -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/built_in_font/SimSun.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/scripts/built_in_font/SimSun.woff -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/built_in_font/unscii-8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/scripts/built_in_font/unscii-8.ttf -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/code-format.sh: -------------------------------------------------------------------------------- 1 | astyle --options=code-format.cfg "../src/*.c,*.h" 2 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/cppcheck_run.sh: -------------------------------------------------------------------------------- 1 | cppcheck -j8 --template="{severity}\t{file}:{line}\t{id}: {message}" --enable=all ../src/ --output-file=cppcheck_res.txt --suppress=unusedFunction --suppress=preprocessorErrorDirective --force 2 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/find_version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Credit: https://stackoverflow.com/a/4774063 3 | SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" 4 | TMPENVFILE=$(mktemp /tmp/lvgl.script.XXXXXX) 5 | cat $SCRIPTPATH/../lvgl.h | grep "#define LVGL_VERSION_" | sed 's/#define //g' | sed -r 's/\s+/=/' > $TMPENVFILE 6 | . $TMPENVFILE 7 | rm $TMPENVFILE 8 | echo $LVGL_VERSION_MAJOR.$LVGL_VERSION_MINOR 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/genexamplelist.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "/* Autogenerated */" 3 | echo '#include ' 4 | echo '#include "examplelist.h"' 5 | TMPFILE=$(mktemp) 6 | find examples -name \*.h | xargs grep -h "^void lv_example" | sed 's/(/ /g' | awk '{print $2}' > $TMPFILE 7 | cat $TMPFILE | while read -r line; do 8 | echo "extern void ${line}(void);" 9 | done 10 | echo "const struct lv_ci_example lv_ci_example_list[] = {" 11 | cat $TMPFILE | while read -r line; do 12 | echo " { \"$line\", $line },"; 13 | done 14 | echo " { NULL, NULL }" 15 | echo "};" 16 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/infer_run.sh: -------------------------------------------------------------------------------- 1 | # https://github.com/facebook/infer 2 | # 3 | # Install: 4 | # VERSION=0.17.0; \ 5 | # curl -sSL "https://github.com/facebook/infer/releases/download/v$VERSION/infer-linux64-v$VERSION.tar.xz" \ 6 | # | sudo tar -C /opt -xJ && \ 7 | # sudoln -s "/opt/infer-linux64-v$VERSION/bin/infer" /usr/local/bin/infer 8 | 9 | infer run -- make -j8 10 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/release/patch.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Applies a commit or commits on baranch or branches 4 | # USAGE: 5 | # patch.py -c -b [-p] [-t] 6 | # - : list of commit SHAs to apply. 7 | # - : branches where the commit should be applied. * can be used as wildchar 8 | # - p: push the changes to 9 | # - t: increment version number and create a tag 10 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/scripts/release/release.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Create a new release from master. Execute the followings: 4 | # - On lvgl, lv_demos, and lv_drivers: 5 | # - Detect the current version of master. E.g. 8.1-dev 6 | # - Create a new branch from the master for the release. E.g. release/v8.1 7 | # - Remove the "-dev" postfix from the version numbers 8 | # - Create a tag for the new version. E.g. v8.1 9 | # - Push the new branch and tag 10 | # - Get the relevant changes from docs/CHANGELOG.md and create a blog post from it 11 | # - Increment the version number in master. E.g.g 8.1-dev to 8.2-dev 12 | # - Add a new section to the CHANGELOG with the new version 13 | # - Update the simulator and lv_port projects 14 | # 15 | # USAGE: 16 | # release.py 17 | # - : -minor or -major 18 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/core/lv_core.mk: -------------------------------------------------------------------------------- 1 | CSRCS += lv_disp.c 2 | CSRCS += lv_group.c 3 | CSRCS += lv_indev.c 4 | CSRCS += lv_indev_scroll.c 5 | CSRCS += lv_obj.c 6 | CSRCS += lv_obj_class.c 7 | CSRCS += lv_obj_draw.c 8 | CSRCS += lv_obj_pos.c 9 | CSRCS += lv_obj_scroll.c 10 | CSRCS += lv_obj_style.c 11 | CSRCS += lv_obj_style_gen.c 12 | CSRCS += lv_obj_tree.c 13 | CSRCS += lv_event.c 14 | CSRCS += lv_refr.c 15 | CSRCS += lv_theme.c 16 | 17 | DEPPATH += --dep-path $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/core 18 | VPATH += :$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/core 19 | 20 | CFLAGS += "-I$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/core" 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/draw/lv_draw.mk: -------------------------------------------------------------------------------- 1 | CSRCS += lv_draw_arc.c 2 | CSRCS += lv_draw_blend.c 3 | CSRCS += lv_draw_img.c 4 | CSRCS += lv_draw_label.c 5 | CSRCS += lv_draw_line.c 6 | CSRCS += lv_draw_mask.c 7 | CSRCS += lv_draw_rect.c 8 | CSRCS += lv_draw_triangle.c 9 | CSRCS += lv_img_buf.c 10 | CSRCS += lv_img_cache.c 11 | CSRCS += lv_img_decoder.c 12 | 13 | DEPPATH += --dep-path $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/draw 14 | VPATH += :$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/draw 15 | 16 | CFLAGS += "-I$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/draw" 17 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/extra/extra.mk: -------------------------------------------------------------------------------- 1 | CSRCS += $(shell find -L $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/extra -name \*.c) 2 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/extra/lv_extra.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_extra.h 3 | * 4 | */ 5 | 6 | #ifndef LV_EXTRA_H 7 | #define LV_EXTRA_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | 29 | /** 30 | * Initialize the extra components 31 | */ 32 | void lv_extra_init(void); 33 | 34 | /********************** 35 | * MACROS 36 | **********************/ 37 | 38 | #ifdef __cplusplus 39 | } /*extern "C"*/ 40 | #endif 41 | 42 | #endif /*LV_EXTRA_H*/ 43 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/extra/themes/lv_themes.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_themes.h 3 | * 4 | */ 5 | 6 | #ifndef LV_THEMES_H 7 | #define LV_THEMES_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | #include "default/lv_theme_default.h" 17 | #include "mono/lv_theme_mono.h" 18 | #include "basic/lv_theme_basic.h" 19 | 20 | /********************* 21 | * DEFINES 22 | *********************/ 23 | 24 | /********************** 25 | * TYPEDEFS 26 | **********************/ 27 | 28 | /********************** 29 | * GLOBAL PROTOTYPES 30 | **********************/ 31 | 32 | /********************** 33 | * MACROS 34 | **********************/ 35 | 36 | #ifdef __cplusplus 37 | } /*extern "C"*/ 38 | #endif 39 | 40 | #endif /*LV_THEMES_H*/ 41 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/font/korean.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/src/font/korean.ttf -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/font/lv_font_loader.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_font_loader.h 3 | * 4 | */ 5 | 6 | #ifndef LV_FONT_LOADER_H 7 | #define LV_FONT_LOADER_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | 29 | lv_font_t * lv_font_load(const char * fontName); 30 | void lv_font_free(lv_font_t * font); 31 | 32 | /********************** 33 | * MACROS 34 | **********************/ 35 | 36 | #ifdef __cplusplus 37 | } /*extern "C"*/ 38 | #endif 39 | 40 | #endif /*LV_FONT_LOADER_H*/ 41 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/gpu/lv_gpu.mk: -------------------------------------------------------------------------------- 1 | CSRCS += lv_gpu_nxp_pxp.c 2 | CSRCS += lv_gpu_nxp_pxp_osa.c 3 | CSRCS += lv_gpu_nxp_vglite.c 4 | CSRCS += lv_gpu_stm32_dma2d.c 5 | 6 | DEPPATH += --dep-path $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/gpu 7 | VPATH += :$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/gpu 8 | 9 | CFLAGS += "-I$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/gpu" 10 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/hal/lv_hal.mk: -------------------------------------------------------------------------------- 1 | CSRCS += lv_hal_disp.c 2 | CSRCS += lv_hal_indev.c 3 | CSRCS += lv_hal_tick.c 4 | 5 | DEPPATH += --dep-path $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/hal 6 | VPATH += :$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/hal 7 | 8 | CFLAGS += "-I$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/hal" 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/lvgl.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lvgl.h 3 | * This file exists only to be compatible with Arduino's library structure 4 | */ 5 | 6 | #ifndef LVGL_SRC_H 7 | #define LVGL_SRC_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | #include "../lvgl.h" 18 | 19 | /********************* 20 | * DEFINES 21 | *********************/ 22 | 23 | /********************** 24 | * TYPEDEFS 25 | **********************/ 26 | 27 | /********************** 28 | * GLOBAL PROTOTYPES 29 | **********************/ 30 | 31 | /********************** 32 | * MACROS 33 | **********************/ 34 | 35 | #ifdef __cplusplus 36 | } /*extern "C"*/ 37 | #endif 38 | 39 | #endif /*LVGL_SRC_H*/ 40 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/misc/lv_misc.mk: -------------------------------------------------------------------------------- 1 | CSRCS += lv_anim.c 2 | CSRCS += lv_area.c 3 | CSRCS += lv_async.c 4 | CSRCS += lv_bidi.c 5 | CSRCS += lv_color.c 6 | CSRCS += lv_fs.c 7 | CSRCS += lv_gc.c 8 | CSRCS += lv_ll.c 9 | CSRCS += lv_log.c 10 | CSRCS += lv_math.c 11 | CSRCS += lv_mem.c 12 | CSRCS += lv_printf.c 13 | CSRCS += lv_style.c 14 | CSRCS += lv_style_gen.c 15 | CSRCS += lv_timer.c 16 | CSRCS += lv_tlsf.c 17 | CSRCS += lv_txt.c 18 | CSRCS += lv_txt_ap.c 19 | CSRCS += lv_utils.c 20 | 21 | DEPPATH += --dep-path $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/misc 22 | VPATH += :$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/misc 23 | 24 | CFLAGS += "-I$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/misc" 25 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/misc/lv_templ.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_templ.h 3 | * 4 | */ 5 | 6 | #ifndef LV_TEMPL_H 7 | #define LV_TEMPL_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | 29 | /********************** 30 | * MACROS 31 | **********************/ 32 | 33 | #ifdef __cplusplus 34 | } /*extern "C"*/ 35 | #endif 36 | 37 | #endif /*LV_TEMPL_H*/ 38 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/src/widgets/lv_widgets.mk: -------------------------------------------------------------------------------- 1 | CSRCS += lv_arc.c 2 | CSRCS += lv_bar.c 3 | CSRCS += lv_btn.c 4 | CSRCS += lv_btnmatrix.c 5 | CSRCS += lv_canvas.c 6 | CSRCS += lv_checkbox.c 7 | CSRCS += lv_dropdown.c 8 | CSRCS += lv_img.c 9 | CSRCS += lv_label.c 10 | CSRCS += lv_line.c 11 | CSRCS += lv_roller.c 12 | CSRCS += lv_slider.c 13 | CSRCS += lv_switch.c 14 | CSRCS += lv_table.c 15 | CSRCS += lv_textarea.c 16 | 17 | DEPPATH += --dep-path $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/widgets 18 | VPATH += :$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/widgets 19 | 20 | CFLAGS += "-I$(LVGL_DIR)/$(LVGL_DIR_NAME)/src/widgets" 21 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/font_1.fnt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/tests/font_1.fnt -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/font_2.fnt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/tests/font_2.fnt -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/font_3.fnt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/tests/font_3.fnt -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/tests/icon.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/icon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/tests/icon2.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/lv_test_conf.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_test_conf.h 3 | * 4 | */ 5 | 6 | #ifndef LV_TEST_CONF_H 7 | #define LV_TEST_CONF_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | uint32_t custom_tick_get(void); 26 | #define LV_TICK_CUSTOM_SYS_TIME_EXPR custom_tick_get() 27 | 28 | typedef void * lv_user_data_t; 29 | 30 | /********************** 31 | * GLOBAL PROTOTYPES 32 | **********************/ 33 | 34 | /********************** 35 | * MACROS 36 | **********************/ 37 | 38 | #ifdef __cplusplus 39 | } /*extern "C"*/ 40 | #endif 41 | 42 | #endif /*LV_TEST_CONF_H*/ 43 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/lv_test_core/lv_test_core.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_test_core.h 3 | * 4 | */ 5 | 6 | #ifndef LV_TEST_CORE_H 7 | #define LV_TEST_CORE_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_test_core(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C"*/ 36 | #endif 37 | 38 | #endif /*LV_TEST_CORE_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/lv_test_core/lv_test_font_loader.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_test_font_loader.h 3 | * 4 | */ 5 | 6 | #ifndef LV_TEST_FONT_LOADER_H 7 | #define LV_TEST_FONT_LOADER_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_test_font_loader(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C"*/ 36 | #endif 37 | 38 | #endif /*LV_TEST_FONT_LOADER_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/lv_test_core/lv_test_obj.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_test_obj.h 3 | * 4 | */ 5 | 6 | #ifndef LV_TEST_OBJ_H 7 | #define LV_TEST_OBJ_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_test_obj(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C"*/ 36 | #endif 37 | 38 | #endif /*LV_TEST_OBJ_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/lv_test_core/lv_test_style.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_test_style.h 3 | * 4 | */ 5 | 6 | #ifndef LV_TEST_STYLE_H 7 | #define LV_TEST_STYLE_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_test_style(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C"*/ 36 | #endif 37 | 38 | #endif /*LV_TEST_STYLE_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/lv_test_ref_imgs/lv_test_img32_label_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/example/lv_port_esp32/components/lvgl/tests/lv_test_ref_imgs/lv_test_img32_label_1.png -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/tests/lv_test_widgets/lv_test_label.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file lv_test_label.h 3 | * 4 | */ 5 | 6 | #ifndef LV_TEST_LABEL_H 7 | #define LV_TEST_LABEL_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | 17 | /********************* 18 | * DEFINES 19 | *********************/ 20 | 21 | /********************** 22 | * TYPEDEFS 23 | **********************/ 24 | 25 | /********************** 26 | * GLOBAL PROTOTYPES 27 | **********************/ 28 | void lv_test_label(void); 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C"*/ 36 | #endif 37 | 38 | #endif /*LV_TEST_CONT_H*/ 39 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl/zephyr/module.yml: -------------------------------------------------------------------------------- 1 | build: 2 | cmake: . 3 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl_esp32_drivers/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # http://editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | indent_style = space 9 | indent_size = 4 10 | end_of_line = lf 11 | charset = utf-8 12 | trim_trailing_whitespace = true 13 | insert_final_newline = true 14 | 15 | [{*.md,*.rst}] 16 | trim_trailing_whitespace = false 17 | 18 | [{Makefile,*.mk,*.bat}] 19 | indent_style = tab 20 | indent_size = 2 21 | 22 | [{*.cmake,CMakeLists.txt}] 23 | indent_style = space 24 | indent_size = 4 25 | max_line_length = 120 26 | 27 | [{*.sh,*.yml}] 28 | indent_style = space 29 | indent_size = 2 30 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl_esp32_drivers/.github/auto-comment.yml: -------------------------------------------------------------------------------- 1 | # Comment to a new issue. 2 | pullRequestOpened: | 3 | Thank you for raising your pull request. 4 | 5 | To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin). 6 | 7 | The text of DCO can be read here: https://developercertificate.org/ 8 | For a more detailed description see the [Documentation](https://docs.lvgl.io/latest/en/html/contributing/index.html#developer-certification-of-origin-dco) site. 9 | 10 | By contributing to any repositories of the LVGL project you state that your contribution corresponds with the DCO. 11 | 12 | No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment. 13 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl_esp32_drivers/.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Object files 5 | *.o 6 | *.ko 7 | *.obj 8 | *.elf 9 | 10 | # Linker output 11 | *.ilk 12 | *.map 13 | *.exp 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Libraries 20 | *.lib 21 | *.a 22 | *.la 23 | *.lo 24 | 25 | # Shared objects (inc. Windows DLLs) 26 | *.dll 27 | *.so 28 | *.so.* 29 | *.dylib 30 | 31 | # Executables 32 | *.exe 33 | *.out 34 | *.app 35 | *.i*86 36 | *.x86_64 37 | *.hex 38 | 39 | # Debug files 40 | *.dSYM/ 41 | *.su 42 | *.idb 43 | *.pdb 44 | 45 | # Kernel Module Compile Results 46 | *.mod* 47 | *.cmd 48 | .tmp_versions/ 49 | modules.order 50 | Module.symvers 51 | Mkfile.old 52 | dkms.conf 53 | 54 | # MacOS 55 | .DS_Store 56 | 57 | # ESP-IDF build dir 58 | build 59 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl_esp32_drivers/Kconfig: -------------------------------------------------------------------------------- 1 | rsource "lvgl_tft/Kconfig" 2 | rsource "lvgl_touch/Kconfig" 3 | -------------------------------------------------------------------------------- /example/lv_port_esp32/components/lvgl_esp32_drivers/lvgl_tft/FT81x.h: -------------------------------------------------------------------------------- 1 | #ifndef FT81X_H_ 2 | #define FT81X_H_ 3 | 4 | #include 5 | 6 | #ifdef LV_LVGL_H_INCLUDE_SIMPLE 7 | #include "lvgl.h" 8 | #else 9 | #include "lvgl/lvgl.h" 10 | #endif 11 | #include "../lvgl_helpers.h" 12 | 13 | void FT81x_init(void); 14 | 15 | void FT81x_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map); 16 | 17 | #endif /* FT81X_H_ */ 18 | -------------------------------------------------------------------------------- /example/lv_port_esp32/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS main.c) 2 | -------------------------------------------------------------------------------- /example/lv_port_esp32/main/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # "main" pseudo-component makefile. 3 | # 4 | # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) 5 | 6 | CFLAGS+= -DLV_LVGL_H_INCLUDE_SIMPLE 7 | -------------------------------------------------------------------------------- /example/lv_port_esp32/partitions_8M.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x250000, 8 | vfs, data, fat, 0x260000, 0x300000, 9 | -------------------------------------------------------------------------------- /example/lv_port_esp32/scripts/code-format.cfg: -------------------------------------------------------------------------------- 1 | --style=kr 2 | --indent=spaces=4 3 | --indent-classes 4 | --indent-switches 5 | --indent-cases 6 | --indent-preproc-block 7 | --indent-preproc-define 8 | --indent-col1-comments 9 | --pad-oper 10 | --unpad-paren 11 | --align-pointer=middle 12 | --align-reference=middle 13 | --convert-tabs 14 | --max-code-length=120 15 | --break-after-logical 16 | --break-closing-braces 17 | --attach-closing-while 18 | --min-conditional-indent=0 19 | --max-continuation-indent=120 20 | --mode=c 21 | --lineend=linux 22 | --recursive 23 | --suffix=none 24 | --preserve-date 25 | --formatted 26 | -------------------------------------------------------------------------------- /example/lv_port_esp32/scripts/run-code-format.sh: -------------------------------------------------------------------------------- 1 | astyle --options=code-format.cfg "../main/*.c" 2 | astyle --options=code-format.cfg "../components/lvgl_esp32_drivers/*.c,*.h" 3 | astyle --options=code-format.cfg "../components/lvgl_esp32_drivers/lvgl_tft/*.c,*.h" 4 | astyle --options=code-format.cfg "../components/lvgl_esp32_drivers/lvgl_touch/*c,*.h" 5 | -------------------------------------------------------------------------------- /example/lv_port_esp32/sdkconfig.240mhz_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with 240MHz CPU 2 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 3 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_160= 4 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y 5 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 6 | -------------------------------------------------------------------------------- /example/lv_port_esp32/sdkconfig.freertos: -------------------------------------------------------------------------------- 1 | # FreeRTOS 2 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 3 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -------------------------------------------------------------------------------- /example/lv_port_esp32/sdkconfig.spiram_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32-S2 and ESP32-PAD1_subscript_3, ESP IDF configuration with SPIRAM support 2 | CONFIG_ESP32S3_SPIRAM_SUPPORT=y 3 | CONFIG_SPIRAM_TYPE_AUTO=y 4 | CONFIG_DEFAULT_PSRAM_CLK_IO=30 5 | CONFIG_DEFAULT_PSRAM_CS_IO=26 6 | CONFIG_SPIRAM_SPEED_40M=y 7 | CONFIG_SPIRAM=y 8 | CONFIG_SPIRAM_BOOT_INIT=y 9 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 10 | CONFIG_SPIRAM_USE_CAPS_ALLOC=y 11 | CONFIG_SPIRAM_MEMTEST=y 12 | -------------------------------------------------------------------------------- /example/msc_test/.gitignore: -------------------------------------------------------------------------------- 1 | # project build directory 2 | ###################### 3 | build/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /example/msc_test/partitions_8M.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x250000, 8 | vfs, data, fat, 0x260000,0x300000, 9 | -------------------------------------------------------------------------------- /example/msc_test/sdkconfig.240mhz_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with 240MHz CPU 2 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 3 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_160= 4 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y 5 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 6 | -------------------------------------------------------------------------------- /example/msc_test/sdkconfig.freertos: -------------------------------------------------------------------------------- 1 | # FreeRTOS 2 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 3 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -------------------------------------------------------------------------------- /example/msc_test/sdkconfig.spiram_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32-S2 and ESP32-PAD1_subscript_3, ESP IDF configuration with SPIRAM support 2 | CONFIG_ESP32S3_SPIRAM_SUPPORT=y 3 | CONFIG_SPIRAM_TYPE_AUTO=y 4 | CONFIG_DEFAULT_PSRAM_CLK_IO=30 5 | CONFIG_DEFAULT_PSRAM_CS_IO=26 6 | CONFIG_SPIRAM_SPEED_40M=y 7 | CONFIG_SPIRAM=y 8 | CONFIG_SPIRAM_BOOT_INIT=y 9 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 10 | CONFIG_SPIRAM_USE_MEMMAP=y 11 | CONFIG_SPIRAM_MEMTEST=y 12 | -------------------------------------------------------------------------------- /hardware/PCB layout/sp1/AICAR_DCMOTORBOARD_V1_0_SP2_PCB.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/PCB layout/sp1/AICAR_DCMOTORBOARD_V1_0_SP2_PCB.pdf -------------------------------------------------------------------------------- /hardware/PCB layout/sp1/AICAR_INTERFACEBOARD_V1_0_SP1_PCB.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/PCB layout/sp1/AICAR_INTERFACEBOARD_V1_0_SP1_PCB.pdf -------------------------------------------------------------------------------- /hardware/SCH diagram/sp1/aicar_interfaceboard_v1.0_sp1_sch.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/SCH diagram/sp1/aicar_interfaceboard_v1.0_sp1_sch.pdf -------------------------------------------------------------------------------- /hardware/SCH diagram/sp1/aicar_motorboard_v1.0_sp1_sch.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/SCH diagram/sp1/aicar_motorboard_v1.0_sp1_sch.pdf -------------------------------------------------------------------------------- /hardware/datasheet/CH340.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/CH340.PDF -------------------------------------------------------------------------------- /hardware/datasheet/ESP32-S3_Datasheet__CN_V0.4_0330.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/ESP32-S3_Datasheet__CN_V0.4_0330.pdf -------------------------------------------------------------------------------- /hardware/datasheet/ESP32_S3_Datasheet__EN_0814update.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/ESP32_S3_Datasheet__EN_0814update.pdf -------------------------------------------------------------------------------- /hardware/datasheet/ESP32_S3_MP_Pin_Definition_update.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/ESP32_S3_MP_Pin_Definition_update.pdf -------------------------------------------------------------------------------- /hardware/datasheet/sp1/GT615 Datasheet_20160126_Rev.08(伟承).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/sp1/GT615 Datasheet_20160126_Rev.08(伟承).pdf -------------------------------------------------------------------------------- /hardware/datasheet/sp1/GT615编程指南文件(适用于1010以上版本软件)_20151104_Rev 2.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/sp1/GT615编程指南文件(适用于1010以上版本软件)_20151104_Rev 2.1.pdf -------------------------------------------------------------------------------- /hardware/datasheet/sp1/LCD-J-Q028YSX010-A1组立图 20190923 Model.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/sp1/LCD-J-Q028YSX010-A1组立图 20190923 Model.pdf -------------------------------------------------------------------------------- /hardware/datasheet/sp1/TPA-C02816B013-1 20191230-10pin.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/hardware/datasheet/sp1/TPA-C02816B013-1 20191230-10pin.pdf -------------------------------------------------------------------------------- /project/aitest/.gitignore: -------------------------------------------------------------------------------- 1 | # Build directory 2 | ###################### 3 | build-GENERIC/ 4 | build-GENERIC_D2WD/ 5 | build-GENERIC_OTA/ 6 | build-GENERIC_S2/ 7 | build-GENERIC_S3/ 8 | build-GENERIC_SPIRAM/ 9 | build-UM_FEATHERS2/ 10 | build-UM_TINYPICO/ 11 | build-UM_TINYS2/ 12 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(SDKCONFIG_DEFAULTS 2 | boards/sdkconfig.base 3 | boards/sdkconfig.ble 4 | ) 5 | if(NOT MICROPY_FROZEN_MANIFEST) 6 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) 7 | endif() 8 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "ESP32 module" 2 | #define MICROPY_HW_MCU_NAME "ESP32" 3 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_D2WD/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(SDKCONFIG_DEFAULTS 2 | boards/sdkconfig.base 3 | boards/sdkconfig.ble 4 | boards/GENERIC_D2WD/sdkconfig.board 5 | ) 6 | 7 | if(NOT MICROPY_FROZEN_MANIFEST) 8 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) 9 | endif() 10 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_D2WD/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "Generic ESP32-D2WD module" 2 | #define MICROPY_HW_MCU_NAME "ESP32-D2WD" 3 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_D2WD/sdkconfig.board: -------------------------------------------------------------------------------- 1 | CONFIG_ESPTOOLPY_FLASHMODE_DIO=y 2 | CONFIG_ESPTOOLPY_FLASHFREQ_40M=y 3 | CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y 4 | CONFIG_PARTITION_TABLE_CUSTOM=y 5 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-2MiB.csv" 6 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_OTA/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(SDKCONFIG_DEFAULTS 2 | boards/sdkconfig.base 3 | boards/sdkconfig.ble 4 | boards/GENERIC_OTA/sdkconfig.board 5 | ) 6 | 7 | if(NOT MICROPY_FROZEN_MANIFEST) 8 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) 9 | endif() 10 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_OTA/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "4MB/OTA module" 2 | #define MICROPY_HW_MCU_NAME "ESP32" 3 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_OTA/sdkconfig.board: -------------------------------------------------------------------------------- 1 | CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y 2 | CONFIG_PARTITION_TABLE_CUSTOM=y 3 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-ota.csv" 4 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_S2/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(IDF_TARGET esp32s2) 2 | 3 | set(SDKCONFIG_DEFAULTS 4 | boards/sdkconfig.base 5 | boards/sdkconfig.usb 6 | ) 7 | 8 | if(NOT MICROPY_FROZEN_MANIFEST) 9 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) 10 | endif() 11 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_S2/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "ESP32S2 module" 2 | #define MICROPY_HW_MCU_NAME "ESP32S2" 3 | 4 | #define MICROPY_PY_BLUETOOTH (0) 5 | #define MICROPY_HW_ENABLE_SDCARD (0) 6 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_S3/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(IDF_TARGET esp32s3) 2 | 3 | set(SDKCONFIG_DEFAULTS 4 | boards/sdkconfig.base_s3 5 | boards/sdkconfig.240mhz_s3 6 | boards/sdkconfig.spiram_s3 7 | boards/sdkconfig.usb 8 | boards/sdkconfig.freertos 9 | ) 10 | 11 | if(NOT MICROPY_FROZEN_MANIFEST) 12 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) 13 | endif() 14 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_S3/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "ESP32S3 module" 2 | #define MICROPY_HW_MCU_NAME "ESP32S3" 3 | 4 | #define MICROPY_PY_BLUETOOTH (0) 5 | #define MICROPY_HW_ENABLE_SDCARD (0) 6 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_SPIRAM/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(SDKCONFIG_DEFAULTS 2 | boards/sdkconfig.base 3 | boards/sdkconfig.ble 4 | boards/sdkconfig.spiram 5 | ) 6 | 7 | if(NOT MICROPY_FROZEN_MANIFEST) 8 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) 9 | endif() 10 | -------------------------------------------------------------------------------- /project/aitest/boards/GENERIC_SPIRAM/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "ESP32 module (spiram)" 2 | #define MICROPY_HW_MCU_NAME "ESP32" 3 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_FEATHERS2/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(PORT_DIR)/boards/manifest.py") 2 | freeze("$(PORT_DIR)/boards/UM_TINYPICO/modules", "dotstar.py") 3 | freeze("modules") 4 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_FEATHERS2/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(IDF_TARGET esp32s2) 2 | set(SDKCONFIG_DEFAULTS 3 | boards/sdkconfig.base 4 | boards/sdkconfig.spiram_sx 5 | boards/sdkconfig.usb 6 | boards/UM_FEATHERS2/sdkconfig.board 7 | ) 8 | 9 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) -------------------------------------------------------------------------------- /project/aitest/boards/UM_FEATHERS2/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "FeatherS2" 2 | #define MICROPY_HW_MCU_NAME "ESP32-S2" 3 | 4 | #define MICROPY_PY_BLUETOOTH (0) 5 | #define MICROPY_HW_ENABLE_SDCARD (0) 6 | 7 | #define MICROPY_HW_I2C0_SCL (9) 8 | #define MICROPY_HW_I2C0_SDA (8) 9 | 10 | #define MICROPY_HW_SPI1_MOSI (35) // SDO 11 | #define MICROPY_HW_SPI1_MISO (37) // SDI 12 | #define MICROPY_HW_SPI1_SCK (36) 13 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_FEATHERS2/sdkconfig.board: -------------------------------------------------------------------------------- 1 | CONFIG_FLASHMODE_QIO=y 2 | CONFIG_ESPTOOLPY_FLASHFREQ_80M=y 3 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 4 | CONFIG_ESPTOOLPY_AFTER_NORESET=y 5 | 6 | CONFIG_SPIRAM_MEMTEST= 7 | 8 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB= 9 | CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y 10 | CONFIG_PARTITION_TABLE_CUSTOM=y 11 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-16MiB.csv" 12 | #CONFIG_USB_AND_UART=y 13 | 14 | # LWIP 15 | CONFIG_LWIP_LOCAL_HOSTNAME="UMFeatherS2" 16 | # end of LWIP 17 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYPICO/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(PORT_DIR)/boards/manifest.py") 2 | freeze("modules") 3 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYPICO/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(SDKCONFIG_DEFAULTS 2 | boards/sdkconfig.base 3 | boards/sdkconfig.ble 4 | boards/sdkconfig.240mhz 5 | boards/sdkconfig.spiram 6 | boards/UM_TINYPICO/sdkconfig.board 7 | ) 8 | 9 | if(NOT MICROPY_FROZEN_MANIFEST) 10 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py) 11 | endif() 12 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYPICO/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "TinyPICO" 2 | #define MICROPY_HW_MCU_NAME "ESP32-PICO-D4" 3 | 4 | #define MICROPY_HW_I2C0_SCL (22) 5 | #define MICROPY_HW_I2C0_SDA (21) 6 | 7 | #define MICROPY_HW_SPI1_SCK (18) 8 | #define MICROPY_HW_SPI1_MOSI (23) 9 | #define MICROPY_HW_SPI1_MISO (19) 10 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYPICO/sdkconfig.board: -------------------------------------------------------------------------------- 1 | CONFIG_FLASHMODE_QIO=y 2 | CONFIG_ESPTOOLPY_FLASHFREQ_80M=y 3 | CONFIG_SPIRAM_SPEED_80M=y 4 | CONFIG_ESP32_REV_MIN_1=y 5 | CONFIG_LWIP_LOCAL_HOSTNAME="UMTinyPICO" 6 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYS2/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(PORT_DIR)/boards/manifest.py") 2 | freeze("modules") 3 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYS2/mpconfigboard.cmake: -------------------------------------------------------------------------------- 1 | set(IDF_TARGET esp32s2) 2 | set(SDKCONFIG_DEFAULTS 3 | boards/sdkconfig.base 4 | boards/sdkconfig.spiram_sx 5 | boards/sdkconfig.usb 6 | ) 7 | 8 | set(MICROPY_FROZEN_MANIFEST ${MICROPY_PORT_DIR}/boards/manifest.py) 9 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYS2/mpconfigboard.h: -------------------------------------------------------------------------------- 1 | #define MICROPY_HW_BOARD_NAME "TinyS2" 2 | #define MICROPY_HW_MCU_NAME "ESP32-S2FN4R2" 3 | 4 | #define MICROPY_PY_BLUETOOTH (0) 5 | #define MICROPY_HW_ENABLE_SDCARD (0) 6 | 7 | #define MICROPY_HW_I2C0_SCL (9) 8 | #define MICROPY_HW_I2C0_SDA (8) 9 | 10 | #define MICROPY_HW_SPI1_MOSI (35) 11 | #define MICROPY_HW_SPI1_MISO (36) 12 | #define MICROPY_HW_SPI1_SCK (37) 13 | -------------------------------------------------------------------------------- /project/aitest/boards/UM_TINYS2/sdkconfig.board: -------------------------------------------------------------------------------- 1 | CONFIG_FLASHMODE_QIO=y 2 | CONFIG_ESPTOOLPY_FLASHFREQ_80M=y 3 | CONFIG_USB_AND_UART=y 4 | # LWIP 5 | CONFIG_LWIP_LOCAL_HOSTNAME="UMTinyS2" 6 | # end of LWIP 7 | -------------------------------------------------------------------------------- /project/aitest/boards/manifest.py: -------------------------------------------------------------------------------- 1 | freeze("$(PORT_DIR)/modules") 2 | freeze("$(MPY_DIR)/tools", ("upip.py", "upip_utarfile.py")) 3 | freeze("$(MPY_DIR)/ports/esp8266/modules", "ntptime.py") 4 | freeze("$(MPY_DIR)/drivers/dht", "dht.py") 5 | freeze("$(MPY_DIR)/drivers/onewire") 6 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 7 | include("$(MPY_DIR)/extmod/webrepl/manifest.py") 8 | -------------------------------------------------------------------------------- /project/aitest/boards/manifest_release.py: -------------------------------------------------------------------------------- 1 | include("manifest.py") 2 | 3 | freeze("$(MPY_LIB_DIR)/upysh", "upysh.py") 4 | freeze("$(MPY_LIB_DIR)/urequests", "urequests.py") 5 | freeze("$(MPY_LIB_DIR)/umqtt.simple", "umqtt/simple.py") 6 | freeze("$(MPY_LIB_DIR)/umqtt.robust", "umqtt/robust.py") 7 | -------------------------------------------------------------------------------- /project/aitest/boards/sdkconfig.240mhz: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with 240MHz CPU 2 | CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 3 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160= 4 | CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y 5 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 6 | -------------------------------------------------------------------------------- /project/aitest/boards/sdkconfig.240mhz_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with 240MHz CPU 2 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 3 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_160= 4 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y 5 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 6 | -------------------------------------------------------------------------------- /project/aitest/boards/sdkconfig.ble: -------------------------------------------------------------------------------- 1 | # Note this requires building with IDF 4.x 2 | CONFIG_BT_ENABLED=y 3 | CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y 4 | CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= 5 | CONFIG_BTDM_CTRL_MODE_BTDM= 6 | 7 | CONFIG_BT_NIMBLE_ENABLED=y 8 | 9 | CONFIG_BT_NIMBLE_MAX_CONNECTIONS=4 10 | 11 | # Pin to the same core as MP. 12 | # Until we move to IDF 4.2+, we need NimBLE on core 0, and for synchronisation 13 | # with the ringbuffer and scheduler MP needs to be on the same core. 14 | # See https://github.com/micropython/micropython/issues/5489 15 | CONFIG_BT_NIMBLE_PINNED_TO_CORE_0=y 16 | CONFIG_BT_NIMBLE_PINNED_TO_CORE_1=n 17 | CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 18 | -------------------------------------------------------------------------------- /project/aitest/boards/sdkconfig.freertos: -------------------------------------------------------------------------------- 1 | # FreeRTOS 2 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 3 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y 4 | CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP=y -------------------------------------------------------------------------------- /project/aitest/boards/sdkconfig.spiram: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32, ESP IDF configuration with SPIRAM support 2 | 3 | CONFIG_ESP32_SPIRAM_SUPPORT=y 4 | CONFIG_SPIRAM_CACHE_WORKAROUND=y 5 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 6 | CONFIG_SPIRAM_USE_MEMMAP=y 7 | -------------------------------------------------------------------------------- /project/aitest/boards/sdkconfig.spiram_s2: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32-S2 and ESP32-PAD1_subscript_3, ESP IDF configuration with SPIRAM support 2 | CONFIG_ESP32S2_SPIRAM_SUPPORT=y 3 | CONFIG_SPIRAM_TYPE_AUTO=y 4 | CONFIG_DEFAULT_PSRAM_CLK_IO=30 5 | CONFIG_DEFAULT_PSRAM_CS_IO=26 6 | CONFIG_SPIRAM_SPEED_80M=y 7 | CONFIG_SPIRAM=y 8 | CONFIG_SPIRAM_BOOT_INIT=y 9 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 10 | CONFIG_SPIRAM_USE_MEMMAP=y 11 | CONFIG_SPIRAM_MEMTEST=y 12 | -------------------------------------------------------------------------------- /project/aitest/boards/sdkconfig.spiram_s3: -------------------------------------------------------------------------------- 1 | # MicroPython on ESP32-S2 and ESP32-PAD1_subscript_3, ESP IDF configuration with SPIRAM support 2 | CONFIG_ESP32S3_SPIRAM_SUPPORT=y 3 | CONFIG_SPIRAM_TYPE_AUTO=y 4 | CONFIG_DEFAULT_PSRAM_CLK_IO=30 5 | CONFIG_DEFAULT_PSRAM_CS_IO=26 6 | CONFIG_SPIRAM_SPEED_40M=y 7 | CONFIG_SPIRAM=y 8 | CONFIG_SPIRAM_BOOT_INIT=y 9 | CONFIG_SPIRAM_IGNORE_NOTFOUND=y 10 | CONFIG_SPIRAM_USE_CAPS_ALLOC=y 11 | CONFIG_SPIRAM_MEMTEST=y 12 | -------------------------------------------------------------------------------- /project/aitest/makeimg.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | OFFSET_BOOTLOADER = 0x1000 4 | OFFSET_PARTITIONS = 0x8000 5 | OFFSET_APPLICATION = 0x10000 6 | 7 | files_in = [ 8 | ("bootloader", OFFSET_BOOTLOADER, sys.argv[1]), 9 | ("partitions", OFFSET_PARTITIONS, sys.argv[2]), 10 | ("application", OFFSET_APPLICATION, sys.argv[3]), 11 | ] 12 | file_out = sys.argv[4] 13 | 14 | cur_offset = OFFSET_BOOTLOADER 15 | with open(file_out, "wb") as fout: 16 | for name, offset, file_in in files_in: 17 | assert offset >= cur_offset 18 | fout.write(b"\xff" * (offset - cur_offset)) 19 | cur_offset = offset 20 | with open(file_in, "rb") as fin: 21 | data = fin.read() 22 | fout.write(data) 23 | cur_offset += len(data) 24 | print("%-12s% 8d" % (name, len(data))) 25 | print("%-12s% 8d" % ("total", cur_offset)) 26 | -------------------------------------------------------------------------------- /project/aitest/modules/_boot.py: -------------------------------------------------------------------------------- 1 | import gc 2 | import uos 3 | from flashbdev import bdev 4 | 5 | try: 6 | if bdev: 7 | uos.mount(bdev, "/") 8 | except OSError: 9 | import inisetup 10 | 11 | vfs = inisetup.setup() 12 | 13 | gc.collect() 14 | -------------------------------------------------------------------------------- /project/aitest/modules/apa106.py: -------------------------------------------------------------------------------- 1 | # APA106driver for MicroPython on ESP32 2 | # MIT license; Copyright (c) 2016 Damien P. George 3 | 4 | from neopixel import NeoPixel 5 | 6 | 7 | class APA106(NeoPixel): 8 | ORDER = (0, 1, 2, 3) 9 | -------------------------------------------------------------------------------- /project/aitest/modules/flashbdev.py: -------------------------------------------------------------------------------- 1 | from esp32 import Partition 2 | 3 | bdev = Partition.find(Partition.TYPE_DATA, label="vfs") 4 | bdev = bdev[0] if bdev else None 5 | -------------------------------------------------------------------------------- /project/aitest/modules/main.py: -------------------------------------------------------------------------------- 1 | # Hello World Example 2 | # 3 | # Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script! 4 | import sensor, image, time 5 | # sensor.reset() # Reset and initialize the sensor. 6 | sensor.set_pixformat(sensor.JPEG) # Set pixel format to RGB565 (or GRAYSCALE) 7 | sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) 8 | sensor.skip_frames(time = 2000) # Wait for settings take effect. 9 | clock = time.clock() # Create a clock object to track the FPS. 10 | while(True): 11 | clock.tick() # Update the FPS clock. 12 | img = sensor.snapshot() # Take a picture and return the image. 13 | print(clock.fps()) # Note: OpenMV Cam runs about half as fast when connected 14 | # to the IDE. The FPS should increase once disconnected. -------------------------------------------------------------------------------- /project/aitest/modules/system.py: -------------------------------------------------------------------------------- 1 | # system code 2 | import sensor, image, time 3 | import matatalab 4 | import _thread 5 | 6 | SYSTEM_THREAD_STACK_SIZE = 8 * 1024 7 | 8 | def cdc_loop(): 9 | print("cdc loop task start!\r\n") 10 | while True: 11 | if matatalab.is_dbg_mode(): 12 | matatalab.cdc_debug_task() 13 | else: 14 | matatalab.cdc_task() 15 | 16 | _thread.stack_size(SYSTEM_THREAD_STACK_SIZE) 17 | _thread.start_new_thread(cdc_loop,()) 18 | -------------------------------------------------------------------------------- /project/aitest/omv/alloc/dma_alloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * DMA buffer allocator. 10 | */ 11 | #ifndef __DMA_ALLOC_H__ 12 | #define __DMA_ALLOC_H__ 13 | #include 14 | void dma_alloc_init0(); 15 | void *dma_alloc(uint32_t size, void *periph); 16 | void dma_alloc_free(void *ptr); 17 | #endif // __DMA_ALLOC_H__ 18 | -------------------------------------------------------------------------------- /project/aitest/omv/alloc/unaligned_memcpy.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Fast unaligned memcpy functions. 10 | */ 11 | #ifndef __UNALIGNED_MEMCPY_H__ 12 | #define __UNALIGNED_MEMCPY_H__ 13 | void *unaligned_memcpy(void *dest, void *src, size_t n); 14 | void *unaligned_memcpy_rev16(void *dest, void *src, size_t n); 15 | void *unaligned_2_to_1_memcpy(void *dest, void *src, size_t n); 16 | #endif //__UNALIGNED_MEMCPY_H__ 17 | -------------------------------------------------------------------------------- /project/aitest/omv/alloc/xalloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Memory allocation functions. 10 | */ 11 | #ifndef __XALLOC_H__ 12 | #define __XALLOC_H__ 13 | #include 14 | void *xalloc(uint32_t size); 15 | void *xalloc_try_alloc(uint32_t size); 16 | void *xalloc0(uint32_t size); 17 | void xfree(void *mem); 18 | void *xrealloc(void *mem, uint32_t size); 19 | #endif // __XALLOC_H__ 20 | -------------------------------------------------------------------------------- /project/aitest/omv/arm_math.h: -------------------------------------------------------------------------------- 1 | #ifndef _ARM_MATH_H 2 | #define _ARM_MATH_H 3 | 4 | #endif 5 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/BORMIO/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 2 | freeze ("$(MPY_LIB_DIR)/", "modbus.py") 3 | freeze ("$(MPY_LIB_DIR)/", "mqtt.py") 4 | freeze ("$(MPY_LIB_DIR)/", "mutex.py") 5 | freeze ("$(MPY_LIB_DIR)/", "pid.py") 6 | freeze ("$(MPY_LIB_DIR)/", "rpc.py") 7 | freeze ("$(MPY_LIB_DIR)/", "rtsp.py") 8 | freeze ("$(MPY_LIB_DIR)/", "vl53l1x.py") 9 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/BORMIO/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32H747xx 2 | CPU=cortex-m7 3 | FPU=fpv5-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/h7 6 | ARM_MATH=ARM_MATH_CM7 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_H7 9 | VECT_TAB_OFFSET=0x40000 10 | MAIN_APP_ADDR=0x08040000 11 | OMV_HSE_VALUE=64000000 12 | DFU_DEVICE=0x2341:0x035b 13 | OMV_BOARD_EXTRA_CFLAGS = -DCORE_CM7 14 | OMV_ENABLE_BL=0 15 | OMV_ENABLE_UVC=1 16 | MICROPY_PY_SENSOR = 1 17 | MICROPY_PY_ULAB = 1 18 | MICROPY_PY_WINC1500 = 0 19 | MICROPY_PY_IMU = 1 20 | MICROPY_PY_LWIP = 1 21 | MICROPY_PY_NETWORK_CYW43 = 1 22 | MICROPY_PY_AUDIO = 0 23 | MICROPY_PY_MICRO_SPEECH = 0 24 | MICROPY_PY_LCD = 1 25 | MICROPY_PY_TV = 1 26 | MICROPY_PY_BUZZER = 0 27 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/NANO33/manifest.py: -------------------------------------------------------------------------------- 1 | freeze ("$(MPY_LIB_DIR)/", "hts221.py") 2 | freeze ("$(MPY_LIB_DIR)/", "lps22h.py") 3 | freeze ("$(MPY_LIB_DIR)/", "lsm9ds1.py") 4 | freeze ("$(MPY_LIB_DIR)/apds9960/", "apds9960") 5 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/NANO33/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=NRF52840 2 | CPU=cortex-m4 3 | FPU=fpv4-sp-d16 4 | PORT=nrf 5 | SD=s140 6 | HAL_DIR=hal/nrfx 7 | NRF_SOFTDEV=s140_nrf52_6.1.1 8 | ARM_MATH=ARM_MATH_CM4 9 | CFLAGS_MCU=NRF52_SERIES 10 | OMV_BOARD_EXTRA_CFLAGS = -DCONFIG_GPIO_AS_PINRESET -DNRF52840_XXAA -DSOFTDEVICE_PRESENT -DBLUETOOTH_SD_DEBUG=1 -DBLUETOOTH_SD=140 11 | VECT_TAB_OFFSET=0x26000 12 | MAIN_APP_ADDR=0x00026000 13 | OMV_HSE_VALUE=12000000 14 | DFU_DEVICE=0x0483:0xdf11 15 | MICROPY_PY_ULAB=1 16 | MICROPY_PY_AUDIO=1 17 | MICROPY_PY_LCD = 0 18 | MICROPY_PY_TV = 0 19 | MICROPY_PY_BUZZER = 0 20 | MICROPY_PY_SENSOR = 1 21 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV1/manifest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/project/aitest/omv/boards/OPENMV1/manifest.py -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV1/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32F407xx 2 | CPU=cortex-m4 3 | FPU=fpv4-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/f4 6 | ARM_MATH=ARM_MATH_CM4 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_F4 9 | VECT_TAB_OFFSET=0x10000 10 | MAIN_APP_ADDR=0x08010000 11 | OMV_HSE_VALUE=12000000 12 | DFU_DEVICE=0x0483:0xdf11 13 | OMV_ENABLE_BL=1 14 | OMV_ENABLE_UVC=1 15 | MICROPY_PY_SENSOR = 1 16 | MICROPY_PY_WINC1500 = 1 17 | $(error "This camera is no longer supported :O Have fun hacking the code $(BRACKET)") 18 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV2/manifest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/project/aitest/omv/boards/OPENMV2/manifest.py -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV2/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32F427xx 2 | CPU=cortex-m4 3 | FPU=fpv4-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/f4 6 | ARM_MATH=ARM_MATH_CM4 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_F4 9 | VECT_TAB_OFFSET=0x10000 10 | MAIN_APP_ADDR=0x08010000 11 | OMV_HSE_VALUE=12000000 12 | DFU_DEVICE=0x0483:0xdf11 13 | OMV_ENABLE_BL=1 14 | OMV_ENABLE_UVC=1 15 | MICROPY_PY_SENSOR = 1 16 | MICROPY_PY_WINC1500 = 1 17 | MICROPY_PY_LCD = 1 18 | MICROPY_PY_TV = 1 19 | MICROPY_PY_BUZZER = 0 20 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV3/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 2 | freeze ("$(MPY_LIB_DIR)/", "bno055.py") 3 | freeze ("$(MPY_LIB_DIR)/", "modbus.py") 4 | freeze ("$(MPY_LIB_DIR)/", "mqtt.py") 5 | freeze ("$(MPY_LIB_DIR)/", "mutex.py") 6 | freeze ("$(MPY_LIB_DIR)/", "pid.py") 7 | freeze ("$(MPY_LIB_DIR)/", "rpc.py") 8 | freeze ("$(MPY_LIB_DIR)/", "rtsp.py") 9 | freeze ("$(MPY_LIB_DIR)/", "ssd1306.py") 10 | freeze ("$(MPY_LIB_DIR)/", "tb6612.py") 11 | freeze ("$(MPY_LIB_DIR)/", "vl53l1x.py") 12 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV3/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32F765xx 2 | CPU=cortex-m7 3 | FPU=fpv5-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/f7 6 | ARM_MATH=ARM_MATH_CM7 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_F7 9 | VECT_TAB_OFFSET=0x20000 10 | MAIN_APP_ADDR=0x08020000 11 | OMV_HSE_VALUE=12000000 12 | DFU_DEVICE=0x0483:0xdf11 13 | OMV_ENABLE_BL=1 14 | OMV_ENABLE_UVC=1 15 | MICROPY_PY_SENSOR = 1 16 | MICROPY_PY_ULAB = 1 17 | MICROPY_PY_WINC1500 = 1 18 | MICROPY_PY_LCD = 1 19 | MICROPY_PY_TV = 1 20 | MICROPY_PY_BUZZER = 0 21 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV4/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 2 | freeze ("$(MPY_LIB_DIR)/", "bno055.py") 3 | freeze ("$(MPY_LIB_DIR)/", "modbus.py") 4 | freeze ("$(MPY_LIB_DIR)/", "mqtt.py") 5 | freeze ("$(MPY_LIB_DIR)/", "mutex.py") 6 | freeze ("$(MPY_LIB_DIR)/", "pid.py") 7 | freeze ("$(MPY_LIB_DIR)/", "rpc.py") 8 | freeze ("$(MPY_LIB_DIR)/", "rtsp.py") 9 | freeze ("$(MPY_LIB_DIR)/", "ssd1306.py") 10 | freeze ("$(MPY_LIB_DIR)/", "tb6612.py") 11 | freeze ("$(MPY_LIB_DIR)/", "vl53l1x.py") 12 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV4/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32H743xx 2 | CPU=cortex-m7 3 | FPU=fpv5-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/h7 6 | ARM_MATH=ARM_MATH_CM7 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_H7 9 | VECT_TAB_OFFSET=0x40000 10 | MAIN_APP_ADDR=0x08040000 11 | OMV_HSE_VALUE=12000000 12 | DFU_DEVICE=0x0483:0xdf11 13 | OMV_ENABLE_BL=1 14 | OMV_ENABLE_UVC=1 15 | MICROPY_PY_SENSOR = 1 16 | MICROPY_PY_ULAB = 1 17 | MICROPY_PY_WINC1500 = 1 18 | MICROPY_PY_IMU = 1 19 | MICROPY_PY_LCD = 1 20 | MICROPY_PY_TV = 1 21 | MICROPY_PY_BUZZER = 0 22 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV4P/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 2 | freeze ("$(MPY_LIB_DIR)/", "bno055.py") 3 | freeze ("$(MPY_LIB_DIR)/", "modbus.py") 4 | freeze ("$(MPY_LIB_DIR)/", "mqtt.py") 5 | freeze ("$(MPY_LIB_DIR)/", "mutex.py") 6 | freeze ("$(MPY_LIB_DIR)/", "pid.py") 7 | freeze ("$(MPY_LIB_DIR)/", "rpc.py") 8 | freeze ("$(MPY_LIB_DIR)/", "rtsp.py") 9 | freeze ("$(MPY_LIB_DIR)/", "ssd1306.py") 10 | freeze ("$(MPY_LIB_DIR)/", "tb6612.py") 11 | freeze ("$(MPY_LIB_DIR)/", "vl53l1x.py") 12 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMV4P/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32H743xx 2 | CPU=cortex-m7 3 | FPU=fpv5-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/h7 6 | ARM_MATH=ARM_MATH_CM7 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_H7 9 | VECT_TAB_OFFSET=0x40000 10 | MAIN_APP_ADDR=0x08040000 11 | OMV_HSE_VALUE=12000000 12 | DFU_DEVICE=0x0483:0xdf11 13 | OMV_ENABLE_BL=1 14 | OMV_ENABLE_UVC=1 15 | MICROPY_PY_SENSOR = 1 16 | MICROPY_PY_ULAB = 1 17 | MICROPY_PY_WINC1500 = 1 18 | MICROPY_PY_LCD = 1 19 | MICROPY_PY_TV = 1 20 | MICROPY_PY_BUZZER = 0 21 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMVPT/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 2 | freeze ("$(MPY_LIB_DIR)/", "bno055.py") 3 | freeze ("$(MPY_LIB_DIR)/", "modbus.py") 4 | freeze ("$(MPY_LIB_DIR)/", "mqtt.py") 5 | freeze ("$(MPY_LIB_DIR)/", "mutex.py") 6 | freeze ("$(MPY_LIB_DIR)/", "pid.py") 7 | freeze ("$(MPY_LIB_DIR)/", "rpc.py") 8 | freeze ("$(MPY_LIB_DIR)/", "rtsp.py") 9 | freeze ("$(MPY_LIB_DIR)/", "ssd1306.py") 10 | freeze ("$(MPY_LIB_DIR)/", "tb6612.py") 11 | freeze ("$(MPY_LIB_DIR)/", "vl53l1x.py") 12 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/OPENMVPT/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32H743xx 2 | CPU=cortex-m7 3 | FPU=fpv5-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/h7 6 | ARM_MATH=ARM_MATH_CM7 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_H7 9 | VECT_TAB_OFFSET=0x40000 10 | MAIN_APP_ADDR=0x08040000 11 | OMV_HSE_VALUE=12000000 12 | DFU_DEVICE=0x0483:0xdf11 13 | OMV_ENABLE_BL=1 14 | OMV_ENABLE_UVC=1 15 | MICROPY_PY_SENSOR = 1 16 | MICROPY_PY_ULAB = 1 17 | MICROPY_PY_WINC1500 = 1 18 | MICROPY_PY_LCD = 1 19 | MICROPY_PY_TV = 1 20 | MICROPY_PY_BUZZER = 1 21 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/PORTENTA/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 2 | freeze ("$(MPY_LIB_DIR)/", "bno055.py") 3 | freeze ("$(MPY_LIB_DIR)/", "modbus.py") 4 | freeze ("$(MPY_LIB_DIR)/", "mqtt.py") 5 | freeze ("$(MPY_LIB_DIR)/", "mutex.py") 6 | freeze ("$(MPY_LIB_DIR)/", "pid.py") 7 | freeze ("$(MPY_LIB_DIR)/", "rpc.py") 8 | freeze ("$(MPY_LIB_DIR)/", "rtsp.py") 9 | freeze ("$(MPY_LIB_DIR)/", "ssd1306.py") 10 | freeze ("$(MPY_LIB_DIR)/", "tb6612.py") 11 | freeze ("$(MPY_LIB_DIR)/", "vl53l1x.py") 12 | freeze ("$(MPY_LIB_DIR)/", "lora.py") 13 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/PORTENTA/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32H747xx 2 | CPU=cortex-m7 3 | FPU=fpv5-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/h7 6 | ARM_MATH=ARM_MATH_CM7 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_H7 9 | VECT_TAB_OFFSET=0x40000 10 | MAIN_APP_ADDR=0x08040000 11 | M4_VECT_TAB_OFFSET=0x20000 12 | M4_APP_ADDR=0x08020000 13 | OMV_HSE_VALUE=25000000 14 | DFU_DEVICE=0x2341:0x035b 15 | OMV_BOARD_EXTRA_CFLAGS = -DCORE_CM7 16 | OMV_ENABLE_BL=0 17 | OMV_ENABLE_UVC=1 18 | OMV_ENABLE_CM4=0 19 | MICROPY_PY_SENSOR = 1 20 | MICROPY_PY_ULAB = 1 21 | MICROPY_PY_WINC1500 = 0 22 | MICROPY_PY_LWIP = 1 23 | MICROPY_PY_NETWORK_CYW43 = 1 24 | MICROPY_PY_AUDIO = 1 25 | MICROPY_PY_MICRO_SPEECH = 1 26 | MICROPY_PY_LCD = 1 27 | MICROPY_PY_TV = 1 28 | MICROPY_PY_BUZZER = 0 29 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/esp32s/manifest.py: -------------------------------------------------------------------------------- 1 | include("$(MPY_DIR)/extmod/uasyncio/manifest.py") 2 | freeze ("$(MPY_LIB_DIR)/", "bno055.py") 3 | freeze ("$(MPY_LIB_DIR)/", "modbus.py") 4 | freeze ("$(MPY_LIB_DIR)/", "mqtt.py") 5 | freeze ("$(MPY_LIB_DIR)/", "mutex.py") 6 | freeze ("$(MPY_LIB_DIR)/", "pid.py") 7 | freeze ("$(MPY_LIB_DIR)/", "rpc.py") 8 | freeze ("$(MPY_LIB_DIR)/", "rtsp.py") 9 | freeze ("$(MPY_LIB_DIR)/", "ssd1306.py") 10 | freeze ("$(MPY_LIB_DIR)/", "tb6612.py") 11 | freeze ("$(MPY_LIB_DIR)/", "vl53l1x.py") 12 | -------------------------------------------------------------------------------- /project/aitest/omv/boards/esp32s/omv_boardconfig.mk: -------------------------------------------------------------------------------- 1 | MCU=STM32H743xx 2 | CPU=cortex-m7 3 | FPU=fpv5-sp-d16 4 | PORT=stm32 5 | HAL_DIR=hal/stm32/h7 6 | ARM_MATH=ARM_MATH_CM7 7 | HAL_INC='' 8 | CFLAGS_MCU=MCU_SERIES_H7 9 | VECT_TAB_OFFSET=0x40000 10 | MAIN_APP_ADDR=0x08040000 11 | OMV_HSE_VALUE=12000000 12 | DFU_DEVICE=0x0483:0xdf11 13 | OMV_ENABLE_BL=1 14 | OMV_ENABLE_UVC=1 15 | MICROPY_PY_SENSOR = 1 16 | MICROPY_PY_ULAB = 1 17 | MICROPY_PY_WINC1500 = 1 18 | MICROPY_PY_IMU = 1 19 | MICROPY_PY_LCD = 1 20 | MICROPY_PY_TV = 1 21 | MICROPY_PY_BUZZER = 0 22 | -------------------------------------------------------------------------------- /project/aitest/omv/common/mutex.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Mutex implementation. 10 | */ 11 | #ifndef __MUTEX_H__ 12 | #define __MUTEX_H__ 13 | #include 14 | #include "freertos/FreeRTOS.h" 15 | #include "freertos/task.h" 16 | 17 | #define MUTEX_TID_IDE (1<<0) 18 | #define MUTEX_TID_OMV (1<<1) 19 | 20 | typedef volatile struct { 21 | uint32_t tid; 22 | uint32_t lock; 23 | } mutex_t; 24 | void mutex_init(mutex_t *mutex); 25 | void mutex_lock(mutex_t *mutex, uint32_t tid); 26 | int mutex_try_lock(mutex_t *mutex, uint32_t tid); 27 | void mutex_unlock(mutex_t *mutex, uint32_t tid); 28 | #endif /* __MUTEX_H__ */ 29 | -------------------------------------------------------------------------------- /project/aitest/omv/common/ringbuf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Simple Ring Buffer implementation. 10 | */ 11 | #ifndef __RING_BUFFER_H__ 12 | #define __RING_BUFFER_H__ 13 | #include 14 | #define BUFFER_SIZE (1024) 15 | 16 | typedef struct ring_buffer { 17 | volatile uint32_t head; 18 | volatile uint32_t tail; 19 | uint8_t data[BUFFER_SIZE]; 20 | } ring_buf_t; 21 | 22 | void ring_buf_init(ring_buf_t *buf); 23 | int ring_buf_empty(ring_buf_t *buf); 24 | void ring_buf_put(ring_buf_t *buf, uint8_t c); 25 | uint8_t ring_buf_get(ring_buf_t *buf); 26 | #endif /* __RING_BUFFER_H__ */ 27 | -------------------------------------------------------------------------------- /project/aitest/omv/common/trace.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Trace buffer. 10 | */ 11 | #ifndef __TRACE_H__ 12 | #define __TRACE_H__ 13 | #include 14 | void trace_init(); 15 | void trace_insert(uint32_t x); 16 | #endif /* __TRACE_H__ */ 17 | -------------------------------------------------------------------------------- /project/aitest/omv/common/ulab_config.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * Copyright (c) 2013-2016 Kwabena W. Agyeman 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * Ulab config file. 7 | * 8 | */ 9 | #ifndef __ULAB_CONFIG_H__ 10 | #define __ULAB_CONFIG_H__ 11 | // Override ulab defaults here. 12 | #endif //__ULAB_CONFIG_H__ 13 | -------------------------------------------------------------------------------- /project/aitest/omv/imlib/apriltag.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1847123212/esp32_mpy/9c555eda075d5a0f4e18abb134f0d6240bd4e510/project/aitest/omv/imlib/apriltag.c -------------------------------------------------------------------------------- /project/aitest/omv/imlib/font.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Font data. 10 | */ 11 | #ifndef __FONT_H__ 12 | #define __FONT_H__ 13 | #include 14 | typedef struct { 15 | int w; 16 | int h; 17 | uint8_t data[10]; 18 | } glyph_t; 19 | extern const glyph_t font[95]; 20 | #endif // __FONT_H__ 21 | -------------------------------------------------------------------------------- /project/aitest/omv/imlib/fsort.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * Copyright (c) 2013-2016 Kwabena W. Agyeman 4 | * This work is licensed under the MIT license, see the file LICENSE for details. 5 | * 6 | * Fast 9 and 25 bin sort. 7 | * 8 | */ 9 | #ifndef __FSORT_H__ 10 | #define __FSORT_H__ 11 | #include 12 | void fsort(int *data, int n); 13 | #endif /* __FSORT_H__ */ 14 | -------------------------------------------------------------------------------- /project/aitest/omv/modules/py_clock.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Clock Python module. 10 | */ 11 | #ifndef __PY_CLOCK_H__ 12 | #define __PY_CLOCK_H__ 13 | const mp_obj_type_t py_clock_type; 14 | #endif // __PY_CLOCK_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/modules/py_fir.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * FIR Python module. 10 | */ 11 | #ifndef __PY_FIR_H__ 12 | #define __PY_FIR_H__ 13 | void py_fir_init0(); 14 | #endif // __PY_FIR_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/modules/py_image.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Image Python module. 10 | */ 11 | #ifndef __PY_IMAGE_H__ 12 | #define __PY_IMAGE_H__ 13 | #include "imlib.h" 14 | mp_obj_t py_image(int width, int height, int bpp, void *pixels); 15 | mp_obj_t py_image_from_struct(image_t *img); 16 | void *py_image_cobj(mp_obj_t img_obj); 17 | int py_image_descriptor_from_roi(image_t *img, const char *path, rectangle_t *roi); 18 | #endif // __PY_IMAGE_H__ 19 | -------------------------------------------------------------------------------- /project/aitest/omv/modules/py_imageio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * ImageIO module. 10 | */ 11 | #ifndef __PY_IMAGE_IO_H__ 12 | #define __PY_IMAGE_IO_H__ 13 | extern const mp_obj_type_t py_imageio_type; 14 | #endif // __PY_IMAGE_IO_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/modules/py_tof.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * ToF Python module. 10 | */ 11 | #ifndef __PY_TOF_H__ 12 | #define __PY_TOF_H__ 13 | void py_tof_init0(); 14 | #endif // __PY_TOF_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/esp32s/wifidbg.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * WiFi debugger. 10 | */ 11 | #ifndef __WIFI_DBG_H__ 12 | #define __WIFI_DBG_H__ 13 | 14 | #define WIFI_MAX_BOARD_NAME_LEN (33) 15 | 16 | typedef struct wifidbg_config { 17 | wifi_mode_t mode; 18 | char board_name[WIFI_MAX_BOARD_NAME_LEN + 1]; 19 | } wifidbg_config_t; 20 | 21 | int wifidbg_init(wifidbg_config_t *config); 22 | void wifidbg_dispatch(); 23 | 24 | #endif /* __WIFIDBG_H__ */ 25 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/nrf/modules/py_audio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Audio Python module. 10 | */ 11 | #ifndef __PY_AUDIO_H__ 12 | #define __PY_AUDIO_H__ 13 | void py_audio_deinit(); 14 | #endif // __PY_AUDIO_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/nrf/omv_portconfig.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * OpenMV nRF port abstraction layer. 10 | */ 11 | #ifndef __OMV_PORTCONFIG_H__ 12 | #define __OMV_PORTCONFIG_H__ 13 | 14 | #include "nrfx_twi.h" 15 | 16 | // omv_gpio_t definition 17 | typedef uint32_t omv_gpio_t; 18 | 19 | // cambus/i2c definition 20 | typedef nrfx_twi_t omv_cambus_t; 21 | #endif // __OMV_PORTCONFIG_H__ 22 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/hash.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Hash functions. 10 | */ 11 | #ifndef __HASH_H__ 12 | #define __HASH_H__ 13 | int hash_start(); 14 | int hash_update(uint8_t *buffer, uint32_t size); 15 | int hash_digest(uint8_t *buffer, uint32_t size, uint8_t *digest); 16 | int hash_from_file(const char *path, uint8_t *digest); 17 | #endif /* __HASH_H__ */ 18 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/modules/py_audio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Audio Python module. 10 | */ 11 | #ifndef __PY_AUDIO_H__ 12 | #define __PY_AUDIO_H__ 13 | void py_audio_deinit(); 14 | #endif // __PY_AUDIO_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/modules/py_buzzer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Buzzer Python module. 10 | */ 11 | #ifndef __PY_BUZZER_H__ 12 | #define __PY_BUZZER_H__ 13 | void py_buzzer_init0(); 14 | #endif // __PY_BUZZER_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/modules/py_cpufreq.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * CPU Frequency module. 10 | */ 11 | #ifndef __PY_CPUFREQ_H__ 12 | #define __PY_CPUFREQ_H__ 13 | void py_cpufreq_init0(); 14 | #endif // __PY_CPUFREQ_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/modules/py_imu.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2020 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2020 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * IMU Python module. 10 | */ 11 | #ifndef __PY_IMU_H__ 12 | #define __PY_IMU_H__ 13 | void py_imu_init(); 14 | float py_imu_roll_rotation(); // in degrees 15 | float py_imu_pitch_rotation(); // in degrees 16 | #endif // __PY_IMU_H__ 17 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/modules/py_lcd.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * LCD Python module. 10 | */ 11 | #ifndef __PY_LCD_H__ 12 | #define __PY_LCD_H__ 13 | void py_lcd_init0(); 14 | #endif // __PY_LCD_H__ 15 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/modules/py_lcd_cec.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2020 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2020 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * LCD Python module. 10 | */ 11 | #ifndef __PY_LCD_CEC_H__ 12 | #define __PY_LCD_CEC_H__ 13 | void lcd_cec_init(); 14 | void lcd_cec_deinit(); 15 | void lcd_cec_send_frame(mp_obj_t dst_addr, mp_obj_t src_addr, mp_obj_t bytes); 16 | mp_obj_t lcd_cec_receive_frame(uint n_args, const mp_obj_t *args, mp_map_t *kw_args); 17 | void lcd_cec_register_cec_receive_cb(mp_obj_t cb, mp_obj_t dst_addr); 18 | mp_obj_t lcd_cec_received_frame_src_addr(); 19 | mp_obj_t lcd_cec_received_frame_bytes(); 20 | #endif // __PY_LCD_CEC_H__ 21 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/modules/py_tv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2020 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2020 Kwabena W. Agyeman 6 | * Copyright (c) 2013-2020 Kaizhi Wong 7 | * 8 | * This work is licensed under the MIT license, see the file LICENSE for details. 9 | * 10 | * TV Python module. 11 | */ 12 | #ifndef __PY_TV_H__ 13 | #define __PY_TV_H__ 14 | void py_tv_init0(); 15 | #endif // __PY_TV_H__ 16 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/soft_i2c.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the OpenMV project. 3 | * 4 | * Copyright (c) 2013-2021 Ibrahim Abdelkader 5 | * Copyright (c) 2013-2021 Kwabena W. Agyeman 6 | * 7 | * This work is licensed under the MIT license, see the file LICENSE for details. 8 | * 9 | * Software I2C implementation. 10 | */ 11 | #ifndef __SOFT_I2C_H__ 12 | #define __SOFT_I2C_H__ 13 | #include 14 | int soft_i2c_read_bytes(uint8_t slv_addr, uint8_t *buf, int len, bool stop); 15 | int soft_i2c_write_bytes(uint8_t slv_addr, uint8_t *buf, int len, bool stop); 16 | void soft_i2c_init(); 17 | void soft_i2c_deinit(); 18 | #endif // __SOFT_I2C_H__ 19 | -------------------------------------------------------------------------------- /project/aitest/omv/ports/stm32/ulpi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 STMicroelectronics. All rights reserved. 3 | * 4 | * This software component is licensed by ST under BSD 3-Clause license, 5 | * the "License"; You may not use this file except in compliance with the 6 | * License. You may obtain a copy of the License at: 7 | * opensource.org/licenses/BSD-3-Clause 8 | * 9 | * USB3320 ULPI functions ported from stm32f7xx_lp_modes.c 10 | */ 11 | #ifndef __ULPI_H__ 12 | #define __ULPI_H__ 13 | void ulpi_enter_low_power(void); 14 | void ulpi_leave_low_power(void); 15 | #endif // __ULPI_H__ 16 | -------------------------------------------------------------------------------- /project/aitest/partitions-16MiB.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x180000, 8 | vfs, data, fat, 0x200000, 0xD59F80, 9 | -------------------------------------------------------------------------------- /project/aitest/partitions-2MiB.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x110000, 8 | vfs, data, fat, 0x120000, 0xA0000, 9 | -------------------------------------------------------------------------------- /project/aitest/partitions-ota.csv: -------------------------------------------------------------------------------- 1 | # Partition table for MicroPython with OTA support using 4MB flash 2 | # Notes: the offset of the partition table itself is set in 3 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 4 | # offset of the factory/ota_0 partition is set in makeimg.py 5 | # Name, Type, SubType, Offset, Size, Flags 6 | nvs, data, nvs, 0x9000, 0x4000, 7 | otadata, data, ota, 0xd000, 0x2000, 8 | phy_init, data, phy, 0xf000, 0x1000, 9 | ota_0, app, ota_0, 0x10000, 0x180000, 10 | ota_1, app, ota_1, 0x190000, 0x180000, 11 | vfs, data, fat, 0x310000, 0x0f0000, 12 | -------------------------------------------------------------------------------- /project/aitest/partitions.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x180000, 8 | vfs, data, fat, 0x200000, 0x200000, 9 | -------------------------------------------------------------------------------- /project/aitest/partitions_8M.csv: -------------------------------------------------------------------------------- 1 | # Notes: the offset of the partition table itself is set in 2 | # $ESPIDF/components/partition_table/Kconfig.projbuild and the 3 | # offset of the factory/ota_0 partition is set in makeimg.py 4 | # Name, Type, SubType, Offset, Size, Flags 5 | nvs, data, nvs, 0x9000, 0x6000, 6 | phy_init, data, phy, 0xf000, 0x1000, 7 | factory, app, factory, 0x10000, 0x250000, 8 | vfs, data, fat, 0x260000, 0x300000, 9 | -------------------------------------------------------------------------------- /project/aitest/src/adapter/memory.h: -------------------------------------------------------------------------------- 1 | // this is needed for extmod/crypto-algorithms/sha256.c 2 | #include 3 | -------------------------------------------------------------------------------- /project/aitest/src/adapter/modesp.h: -------------------------------------------------------------------------------- 1 | void esp_neopixel_write(uint8_t pin, uint8_t *pixels, uint32_t numBytes, uint8_t timing); 2 | -------------------------------------------------------------------------------- /project/aitest/src/mpy_modules/module_config.h: -------------------------------------------------------------------------------- 1 | #ifndef _MODULE_CONFIG_H_ 2 | #define _MODULE_CONFIG_H_ 3 | 4 | /* common items */ 5 | #define MODULE_NOT_INITIALIZE (0x00) 6 | #define MODULE_INITIALIZED (0x01) 7 | #define MODULE_DEINITIALIZED (0x02) 8 | #define MODULE_FATAL_ERROR (0xff) 9 | 10 | typedef int32_t mb_module_status_t; 11 | 12 | /* module slect */ 13 | /* 14 | * driver 15 | */ 16 | //#define MODULE_LEDS_ENABLE 1 17 | //#define MODULE_MOTION_ENABLE 1 18 | 19 | #endif --------------------------------------------------------------------------------