匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“GTK demo launcher”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
GTK demo launcher
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
This article provides information on the Demo Launcher application. The Demo Launcher starts by default with the Starter Package. This application is written in '''python<sup>TM</sup>3'''<ref name=python3url>https://www.python.org</ref> and uses '''GTK'''<ref name=gtkurl>https://www.gtk.org</ref> to display the user interface. A touchscreen is required to control the application. <onlyinclude> == Main menu == The main menu is composed of six demonstrations: [[File: STM32MP15_launcher_main_menu.png|thumb|upright=2|center|link=|Main menu]] {|class="st-table" | Netdata perf monitor || Gives information in how to connect to the board through Ethernet or Wi-Fi<sup>®</sup> (if available) in order to connect to netdata |- | Camera preview || Displays the preview camera |- | Video playback || Displays the video playback |- | Artificial intelligence || Handwriting character recognition (using Arm<sup>®</sup> Cortex<sup>®</sup>-M4 firmware) |- | 3D GPU || Displays a rotating 3D cube |- | Bluetooth<sup>®</sup> speaker || Allows the connection to a Bluetooth<sup>®</sup>headset |} <br> To exit from this window, tap on the cross in the top-right corner. To launch it again, tap or click on the Weston icon launcher with nine blue squares. == Netdata perf monitor == [[File: STM32MP15_launcher_netdata.png|thumb|upright=2|center|link=|Netdata perf monitor]] [[Netdata]] is a tool which starts on boot and provides all monitoring information on a web page accessible using the board IP address. This window helps with the network connection and gets the board [[netdata]] information. If an Ethernet network is available, the URL to connect to [[netdata]] is displayed.<br> If wireless network is available, a cursor button is displayed to enable hotspot Wi-Fi<sup>®</sup>.<br> If Wi-Fi<sup>®</sup> hotspot is enabled with default configuration, two QR-codes are displayed on screen: * The first one gives the Wi-Fi<sup>®</sup> hotspot connection parameters * The second one provides the URL to connect to [[netdata]] To exit from this window, double tap anywhere on the screen. == Camera preview == Display the preview from /dev/video0.<br> * On STM32MP157C-DKX boards, a USB webcam can be used <br> * On STM32MP157C-EVX boards, either a [[MB1379]] camera daughter board or a USB webcam can be used.<br> Ensure that the webcam is compatible with Linux<sup>®</sup>. The available actions to control the camera preview are: * First tap: as preview is composed by Wayland, the first tap has to be done outside the camera preview window to recover the GTK focus. * Simple tap: pause-resume the camera preview. * Double tap: double tap anywhere on the screen to exit from this window. More information on V4L2 is available in [[V4L2 camera overview]] and how is managed the display in [[Wayland_Weston_overview]]. == Video playback == [[File: STM32MP15_launcher_video_playback.png|thumb|upright=2|center|link=|Video Playback]] Here are the available actions to control the video playback: * First tap: as video is composed by Wayland, the first tap has to be done outside the video playback window to recover the GTK focus * Double tap: double tap anywhere on the screen to exit from this window. More information on Gstreamer is available in [[GStreamer_overview]] and how is managed the display in [[Wayland_Weston_overview]]. == Artificial Intelligence == [[File: STM32MP15_launcher_AI.png|thumb|upright=2|center|link=|Artificial Intelligence]] This is a handwriting character recognition application:<br/> 1) Draw a character on the screen. It is then analysed by the firmware running on Arm<sup>®</sup> Cortex<sup>®</sup>-M4 side.<br/> 2) If the character is recognized, it is displayed on the left. If it is not, a question mark is displayed.<br/> 3) When the recognized character is associated with an application, the application is launched: * A: to launch audio playback * C: to launch camera preview * P: to display a picture * V: to launch a video playback * S: to stop the launched application * Q: to exit from the Artificial Intelligence demo. {{Warning | It is possible to start several instances of the same application (for example three audio playbacks at the same time). This is not recommended}}. == 3D GPU == [[File: STM32MP15_launcher_3D_GPU.png|thumb|upright=2|center|link=|3D GPU]] A cube rotates on the screen to demonstrate streaming video. The available actions to control the video playback are: * Continuous tap : a continuous press on screen will drag the cube. * Double tap: exit from this window, double tap anywhere on the screen. More information on the GPU is available in [[Vivante_GCNANO_GPU_overview]] and how is managed the display in [[Wayland_Weston_overview]]. == Bluetooth<sup>®</sup> speaker == [[File: STM32MP15_launcher_bluetooth.png|thumb|upright=2|center|link=|Bluetooth speaker]] This application is able to discover Bluetooth<sup>®</sup> devices, and pair/connect to them. If an audio capable device is connected, the message ''The audio BT device <your device> is connected'' is displayed. First use:<br> 1) Tap on ''start scan'' button: a scan of discoverable devices is done during 15 seconds. The scroll bar progression is displayed.<br> 2) Select the device in the list, and tap on ''connect''.<br> If the device is already connected, the "disconnect'' button is displayed instead. To exit from this window, double tap anywhere on the screen.<br> More information on Bluetooth<sup>®</sup> is available in [[Bluetooth_overview]]. == Info menu == [[File: STM32MP15_launcher_info.png|thumb|upright=2|center|link=|Info menu]] Click on the "i" icon on the right of the screen. It displays the menu describing how to use the demos. To exit from this window, double tap anywhere on the screen. </onlyinclude> == How to add a new demo application == Add a new demo application is possible with {{EcosystemRelease | revision=1.2.0 | range=and after}}. The GTK demo launcher is scalable which means new application can be added. The GTK demo launcher uses specific ''yaml'' files to automatically detect which application to display.<br/> An application on GTK demo launcher: * is described by a ''yaml'' file which gives the application details e.g.: information to display, how to launch it, ... * is indexed to be displayed in specific order, * can be enabled for a specific STM32MPU device, * can be launched in the presence of specific devices. For scalability of an application is managed by: * an indexed ''yaml'' file (meaning that file is prefixed by a number which indicate the order to display the application on GTK demo launcher) * a sub-tree which contains any pictures and any mandatory script to run application. Sub-tree example for video application: <pre> /usr/local/demo/application/ ├── 02-video.yaml └── video ├── bin │ └── launch_video.sh └── pictures └── Video_playback_logo.png </pre> === '''YAML''' application format === Below is given an example of format used to describe an application. <pre style="overflow-y: visible; max-height: none;"> Application: Name: <name of application> Description: <description of application> Icon: <icon of application> Type: <script|python> Board: |<List>or <|NotList>: <all> or <list of chip> Script: Exist: <File|Command>: <file or command to verify} Msg_false: Message to display if <File> or <Command> are not present Start: <script or application to launch application> Stop: <script or application to stop application> Python: Exist: <File|Command>: <file or command to verify> Msg_false: <Message to display if <File|Command> are not true Module: <Python module name to load> Action: button_release_event: <python_start|script_management> button_press_event: highlight_eventBox </pre> Parameters description: ; Name: application name displayed on GTK demo launcher. ; Description: application description displayed on GTK demo launcher. ; Icon: application icon to be displayed on GTK demo launcher. ; Board : '''List''': list of STM32MPU devices which are compatible with the application. : '''NotList''': List of STM32MPU devices which are not compatible with the application. ; Type: Types of script which can be used to launch the application. : Available types: ::* '''script''' : shell script or application (without parameters) to use for launching application. ::* '''python''': Python script to load for launching application. : Both types have a specific declaration available: ''script", "python". ; Script : This section describes the script (shell or application) used to launch application. : This section has 3 sub-sections: ::* '''Exist''': list requirements that must be verified before launching start command ::* '''Start''': identify the command that starts the application ::* '''Stop''': identify the command that stops the application :::'''Exist''' ::::*'''File''': to verify the presence of a specific file. If files are present then the application can be launched with '''Start''' ::::*'''Command''': to check if command to execute exist. If "Ok" is returned then application can be launched with '''Start''' ::::''Example'' <pre> Exist: File: /dev/video0 Msg_false: Webcam is not connected, /dev/video0 doesn't exist </pre> ; Python : This section describes the Python<sup>TM</sup>script to load to access the application functionality. : The Python<sup>TM</sup> script must have the function '''create_subdialogwindow(<parent window>)'''. : This section sub-divided into several sub-sections ::* '''Exist''': verifies the requirements before launching the start command ::* '''Module''': Python<sup>TM</sup> module name to load, it corresponds to the path and script name. ::''Example'' for a path '''application/netdata/netdata.py''', module name must be '''application.netdata.netdata''' '''Module''': application.netdata.netdata :::'''Tips'': you need to add an empty file name "__init__.py" on each sub-directory to be able to launch the Python<sup>TM</sup> module ::::'''Exist''' ::::* '''File''': checks the presence of specific files. If the files are present the application can be launched with '''Start''' ::::* '''Command''': command to execute, if "OK" is returned the application can be launched with '''Start''' :::::Example <pre> Exist: Command: hciconfig hci0 up Msg_false: Please connect a Bluetooth<sup>®</sup> controller on the board </pre> === File Tree === Example of sub-tree used by GTK demo launcher. <pre style="overflow-y: visible; max-height: none;"> /usr/local/demo/application/ ├── 000-netdata.yaml ├── 010-camera.yaml ├── 020-video.yaml ├── 030-3d_cube.yaml ├── 040-m4_ai.yaml ├── 060-bluetooth_audio_output.yaml ├── 3d_cube │ ├── bin │ │ └── launch_cube_3D.sh │ └── pictures │ └── ST153_cube_purple.png ├── bluetooth │ ├── bluetooth_audio.py │ ├── __init__.py │ ├── pictures │ │ └── ST11012_bluetooth_speaker_light_green.png │ └── wrap_blctl.py ├── camera │ ├── bin │ │ ├── launch_camera_preview.sh │ │ └── stop_camera.sh │ ├── pictures │ │ └── ST1077_webcam_dark_blue.png │ └── shaders │ └── edge_InvertLuma.fs ├── __init__.py ├── m4_ai │ ├── bin │ │ └── launch_AI.sh │ └── pictures │ └── ST7079_AI_neural_pink.png ├── netdata │ ├── bin │ │ └── build_qrcode.sh │ ├── __init__.py │ ├── netdata.py │ └── pictures │ └── netdata-icon-192x192.png └── video ├── bin │ └── launch_video.sh └── pictures └── Video_playback_logo.png </pre> === Examples of ''yaml'' application file === ==== with Script, verification of presence of device and board support ==== <pre style="overflow-y: visible; max-height: none;"> Application: Name: 3D Pict Description: GPU with picture Icon: application/3d_cube/pictures/ST153_cube_purple.png Board: NotList: stm32mp151 Type: script Script: Exist: File: /dev/galcore Msg_false: No GPU capabilities to run 3D GPU demo Start: application/3d_cube/bin/launch_cube_3D.sh Action: button_release_event: script_management button_press_event: highlight_eventBox </pre> ==== with Script and verification of presence of device ==== <pre style="overflow-y: visible; max-height: none;"> Application: Name: Camera Description: shader Icon: application/camera/pictures/ST1077_webcam_dark_blue.png Board: List: all Type: script Script: Exist: File: /dev/video0 Msg_false: Webcam is not connected, /dev/video0 doesn't exist Start: application/camera/bin/launch_camera_shader.sh Stop: application/camera/bin/stop_camera.sh Action: button_release_event: script_management button_press_event: highlight_eventBox </pre> ==== with Python<sup>TM</sup> and verification via command ==== <pre style="overflow-y: visible; max-height: none;"> Application: Name: Bluetooth Description: speaker Icon: application/bluetooth/pictures/ST11012_bluetooth_speaker_light_green.png Type: Python Board: List: stm32mp157 stm32mp153 Python: Exist: Command: hciconfig hci0 up Msg_false: Please connect a Bluetooth<sup>®</sup> controller on the board Module: application.bluetooth.bluetooth_audio Action: button_release_event: python_start button_press_event: highlight_eventBox </pre> === Example of recipe to add an application === With {{EcosystemRelease | revision=1.2.0 | range=and after}} is delivered an example of recipe useful to add an application (demo-application-3d-cube) in the GTK demo launcher. It is available at this location: meta-st-openstlinux/recipes-samples/demo-application/demo-application-3d-cube.bb When creating the recipe, some attention points must be checked: * Put a correct index for ''yaml'' file name which determine the order to display the application (see example below) * Install all the appropriate application sub-tree in /usr/local/demo/application, * Set the correct execution permission on the script file, chmod 0755 <script name> * Sub-tree example for the ''demo-application-3d-cube'': <pre style="overflow-y: visible; max-height: none;"> /usr/local/demo/application ├── 100-3d-cube.yaml ├── 101-3d-cube-shader.yaml ├── 105-3d-cube-picture-shader.yaml ├── 110-3d-cube-video.yaml ├── 111-3d-cube-video-shader.yaml ├── 115-3d_cube_camera.yaml ├── 116-3d_cube_camera_shader.yaml ├── 120-3d-cube-pictures-shader.yaml └── 3d-cube-extra ├── bin │ ├── launch_cube_3D_1_picture_shader.sh │ ├── launch_cube_3D_3_pictures_shader.sh │ ├── launch_cube_3D_camera.sh │ ├── launch_cube_3D_camera_shader.sh │ ├── launch_cube_3D_color.sh │ ├── launch_cube_3D_color_shader.sh │ ├── launch_cube_3D_video.sh │ └── launch_cube_3D_video_shader.sh └── pictures └── ST153_cube_purple.png </pre> * Associated recipe: <pre style="overflow-y: visible; max-height: none;"> DESCRIPTION = "Adds support of 3d Cube application on Demo Launcher" HOMEPAGE = "wiki.st.com" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" DEPENDS = "weston-cube demo-launcher" SRC_URI = " \ file://100-3d-cube.yaml \ file://101-3d-cube-shader.yaml \ file://105-3d-cube-picture-shader.yaml \ file://110-3d-cube-video.yaml \ file://111-3d-cube-video-shader.yaml \ file://115-3d_cube_camera.yaml \ file://116-3d_cube_camera_shader.yaml \ file://120-3d-cube-pictures-shader.yaml \ file://launch_cube_3D_1_picture_shader.sh \ file://launch_cube_3D_3_pictures_shader.sh \ file://launch_cube_3D_camera.sh \ file://launch_cube_3D_camera_shader.sh \ file://launch_cube_3D_color.sh \ file://launch_cube_3D_color_shader.sh \ file://launch_cube_3D_video.sh \ file://launch_cube_3D_video_shader.sh \ file://ST153_cube_purple.png \ " do_configure[noexec] = "1" do_compile[noexec] = "1" do_install() { install -d ${D}${prefix}/local/demo/application/3d-cube-extra/bin install -d ${D}${prefix}/local/demo/application/3d-cube-extra/pictures # install yaml file install -m 0644 ${WORKDIR}/*.yaml ${D}${prefix}/local/demo/application/ # install bin install -m 0755 ${WORKDIR}/*.sh ${D}${prefix}/local/demo/application/3d-cube-extra/bin # install pictures install -m 0644 ${WORKDIR}/*.png ${D}${prefix}/local/demo/application/3d-cube-extra/pictures } FILES_${PN} += "${prefix}/local/demo/application/" </pre> === How to install demo application via packages === If the GTK demo launcher is not yet installed dpkg -l | grep demo-launcher ii demo-launcher 1.0-r0 armhf Python script which ls- It can be installed with the following command: apt-get update apt-get install demo-launcher To add 3D application: apt-get install demo-application-3d-cube == References == <references /> <noinclude> [[Category:OpenSTLinux_distribution]] {{PublicationRequestId | 14614 | 2020-01-15 |}} </noinclude>
该页面使用的模板:
模板:EcosystemRelease
(
查看源代码
)
模板:PublicationRequestId
(
查看源代码
)
模板:STPink
(
查看源代码
)
模板:Warning
(
查看源代码
)
返回至
GTK demo launcher
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志