├── clippy.toml ├── examples └── cec-example-cli │ ├── .gitignore │ ├── Cargo.toml │ ├── Cross.toml │ ├── bin.rs │ └── Cargo.lock ├── .gitignore ├── CODE_OF_CONDUCT.md ├── .editorconfig ├── .github ├── workflows │ ├── audit.yml │ ├── cd.yml │ └── ci.yml └── PULL_REQUEST_TEMPLATE.md ├── Cargo.toml ├── LICENSE-CI-MIT ├── Cross.toml ├── README.md ├── CONTRIBUTING.md ├── CHANGELOG.md ├── LICENSE-CI-APACHE ├── LICENSE └── src └── enums.rs /clippy.toml: -------------------------------------------------------------------------------- 1 | msrv = "1.56.1" 2 | -------------------------------------------------------------------------------- /examples/cec-example-cli/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .cargo-ok 3 | **/*.rs.bk 4 | /Cargo.lock 5 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | This project adheres to the Rust Code of Conduct, which [can be found online](https://www.rust-lang.org/conduct.html). 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | charset = utf-8 7 | trim_trailing_whitespace = false 8 | insert_final_newline = false -------------------------------------------------------------------------------- /examples/cec-example-cli/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cec-example-cli" 3 | version = "0.1.0" 4 | edition = "2021" 5 | license = "GPL-2.0" 6 | 7 | [dependencies] 8 | cec-rs = { path = "../.." } 9 | env_logger = "0.10.0" 10 | log = "0.4.8" 11 | 12 | [[bin]] 13 | name = "cec-example-cli" 14 | path = "bin.rs" 15 | -------------------------------------------------------------------------------- /.github/workflows/audit.yml: -------------------------------------------------------------------------------- 1 | name: Security audit 2 | 3 | on: 4 | schedule: 5 | # Runs at 00:00 UTC everyday 6 | - cron: '0 0 * * *' 7 | push: 8 | paths: 9 | - '**/Cargo.toml' 10 | - '**/Cargo.lock' 11 | pull_request: 12 | 13 | jobs: 14 | audit: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout repository 18 | uses: actions/checkout@v2 19 | - uses: actions-rs/audit-check@v1 20 | with: 21 | token: ${{ secrets.GITHUB_TOKEN }} 22 | 23 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | -------------------------------------------------------------------------------- /.github/workflows/cd.yml: -------------------------------------------------------------------------------- 1 | name: Continuous Deployment 2 | 3 | on: 4 | push: 5 | tags: 6 | - "v?[0-9]+.[0-9]+.[0-9]+" 7 | 8 | jobs: 9 | publish-cargo: 10 | name: Publishing to Cargo 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@master 14 | - name: Install libudev for cargo publish. Needed by libcec build 15 | run: sudo apt-get install libudev-dev 16 | - uses: actions-rs/toolchain@v1 17 | with: 18 | toolchain: stable 19 | profile: minimal 20 | override: true 21 | - uses: actions-rs/cargo@v1 22 | with: 23 | command: publish 24 | args: --token ${{ secrets.CARGO_API_KEY }} --allow-dirty 25 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = 'cec-rs' 3 | # Do note msrv setting in clippy.toml as well 4 | rust-version = "1.56.1" 5 | version = "12.0.2-alpha.0" 6 | authors = ['Sami Salonen'] 7 | edition = '2021' 8 | license = 'GPL-2.0' 9 | description = 'Thin but safe wrapper for libcec' 10 | documentation = 'https://docs.rs/cec-rs' 11 | readme = 'README.md' 12 | include = ['/README.md', '/LICENSE', '/Cargo.toml', '/src/*.rs', 'build.rs'] 13 | keywords = ['libcec', 'cec', 'hdmi'] 14 | categories = ['api-bindings'] 15 | homepage = 'https://github.com/ssalonen/cec-rs' 16 | repository = 'https://github.com/ssalonen/cec-rs' 17 | build = 'build.rs' 18 | 19 | [dependencies] 20 | arrayvec = '0.7.1' 21 | log = '0.4' 22 | derive_builder = '0.10.2' 23 | num-traits = '0.2.14' 24 | enum-repr = '0.2' 25 | 26 | [dependencies.libcec-sys] 27 | version = '9.0.2' 28 | 29 | [badges.maintenance] 30 | status = 'passively-maintained' 31 | 32 | [lints.rust] 33 | unexpected_cfgs = { level = "warn", check-cfg = ['cfg(abi4)', 'cfg(abi5)', 'cfg(abi6)', 'cfg(abi7)'] } 34 | -------------------------------------------------------------------------------- /LICENSE-CI-MIT: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 {{authors}} 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /examples/cec-example-cli/Cross.toml: -------------------------------------------------------------------------------- 1 | 2 | [target.aarch64-unknown-linux-gnu] 3 | image="ssalonen/aarch64-unknown-linux-gnu-0.2.1" 4 | 5 | [target.arm-unknown-linux-gnueabi] 6 | image="ssalonen/arm-unknown-linux-gnueabi-0.2.1" 7 | 8 | [target.armv7-unknown-linux-gnueabihf] 9 | image="ssalonen/armv7-unknown-linux-gnueabihf-0.2.1" 10 | 11 | [target.i686-unknown-linux-gnu] 12 | image="ssalonen/i686-unknown-linux-gnu-0.2.1" 13 | 14 | [target.i686-unknown-linux-musl] 15 | image="ssalonen/i686-unknown-linux-musl-0.2.1" 16 | 17 | [target.mips-unknown-linux-gnu] 18 | image="ssalonen/mips-unknown-linux-gnu-0.2.1" 19 | 20 | [target.mips64-unknown-linux-gnuabi64] 21 | image="ssalonen/mips64-unknown-linux-gnuabi64-0.2.1" 22 | 23 | [target.mips64el-unknown-linux-gnuabi64] 24 | image="ssalonen/mips64el-unknown-linux-gnuabi64-0.2.1" 25 | 26 | [target.mipsel-unknown-linux-gnu] 27 | image="ssalonen/mipsel-unknown-linux-gnu-0.2.1" 28 | 29 | [target.x86_64-unknown-linux-gnu] 30 | image="ssalonen/x86_64-unknown-linux-gnu-0.2.1" 31 | 32 | [target.x86_64-unknown-linux-musl] 33 | image="ssalonen/x86_64-unknown-linux-musl-0.2.1" 34 | 35 | [target.x86_64-pc-windows-gnu] 36 | image="ssalonen/x86_64-pc-windows-gnu-0.2.1" 37 | 38 | -------------------------------------------------------------------------------- /Cross.toml: -------------------------------------------------------------------------------- 1 | [build.env] 2 | passthrough = [ 3 | "SCCACHE_ERROR_LOG", 4 | "SCCACHE_LOG", 5 | "SCCACHE_AZURE_CONNECTION_STRING", 6 | "SCCACHE_AZURE_BLOB_CONTAINER", 7 | "SCCACHE_DIR", 8 | "MAJOR_VERSION", 9 | "SRC_PATH", 10 | "DEST_PATH", 11 | "RUST_BACKTRACE", 12 | "LIBCEC_VENDORED", 13 | "LIBCEC_NO_VENDOR", 14 | "LIBCEC_STATIC", 15 | ] 16 | 17 | [target.aarch64-unknown-linux-gnu] 18 | image="ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main" 19 | 20 | [target.arm-unknown-linux-gnueabi] 21 | image="ghcr.io/cross-rs/arm-unknown-linux-gnueabi:main" 22 | 23 | [target.armv7-unknown-linux-gnueabihf] 24 | image="ghcr.io/cross-rs/armv7-unknown-linux-gnueabihf:main" 25 | 26 | [target.i686-unknown-linux-gnu] 27 | image="ghcr.io/cross-rs/i686-unknown-linux-gnu:main" 28 | 29 | [target.i686-unknown-linux-musl] 30 | image="ghcr.io/cross-rs/i686-unknown-linux-musl:main" 31 | 32 | [target.mips-unknown-linux-gnu] 33 | image="ghcr.io/cross-rs/mips-unknown-linux-gnu:main" 34 | 35 | [target.mips64-unknown-linux-gnuabi64] 36 | image="ghcr.io/cross-rs/mips64-unknown-linux-gnuabi64:main" 37 | 38 | [target.mips64el-unknown-linux-gnuabi64] 39 | image="ghcr.io/cross-rs/mips64el-unknown-linux-gnuabi64:main" 40 | 41 | [target.mipsel-unknown-linux-gnu] 42 | image="ghcr.io/cross-rs/mipsel-unknown-linux-gnu:main" 43 | 44 | [target.x86_64-unknown-linux-gnu] 45 | image="ghcr.io/cross-rs/x86_64-unknown-linux-gnu:main" 46 | 47 | [target.x86_64-unknown-linux-musl] 48 | image="ghcr.io/cross-rs/x86_64-unknown-linux-musl:main" 49 | 50 | [target.x86_64-pc-windows-gnu] 51 | image="docker.io/ssalonen/x86_64-pc-windows-gnu-0.2.1" 52 | 53 | -------------------------------------------------------------------------------- /examples/cec-example-cli/bin.rs: -------------------------------------------------------------------------------- 1 | // LICENSE: GPL 2.0 2 | use env_logger; 3 | use log::trace; 4 | 5 | extern crate cec_rs; 6 | use cec_rs::{ 7 | CecCommand, CecConnectionCfgBuilder, CecDeviceType, CecDeviceTypeVec, CecKeypress, 8 | CecLogMessage, 9 | }; 10 | use std::{thread, time}; 11 | 12 | fn on_key_press(keypress: CecKeypress) { 13 | trace!( 14 | "onKeyPress: {:?}, keycode: {:?}, duration: {:?}", 15 | keypress, 16 | keypress.keycode, 17 | keypress.duration 18 | ); 19 | } 20 | 21 | fn on_command_received(command: CecCommand) { 22 | trace!( 23 | "onCommandReceived: opcode: {:?}, initiator: {:?}", 24 | command.opcode, 25 | command.initiator 26 | ); 27 | } 28 | 29 | fn on_log_level(log_message: CecLogMessage) { 30 | trace!( 31 | "logMessageRecieved: time: {}, level: {}, message: {}", 32 | log_message.time.as_secs(), 33 | log_message.level, 34 | log_message.message 35 | ); 36 | } 37 | 38 | pub fn main() { 39 | env_logger::init(); 40 | 41 | let cfg = CecConnectionCfgBuilder::default() 42 | .port(c"RPI".into()) 43 | .device_name("Hifiberry".into()) 44 | .key_press_callback(Box::new(on_key_press)) 45 | .command_received_callback(Box::new(on_command_received)) 46 | .log_message_callback(Box::new(on_log_level)) 47 | .device_types(CecDeviceTypeVec::new(CecDeviceType::AudioSystem)) 48 | .build() 49 | .unwrap(); 50 | let connection = cfg.open().unwrap(); 51 | trace!("Active source: {:?}", connection.get_active_source()); 52 | 53 | thread::sleep(time::Duration::from_secs(99_999_999)); 54 | } 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cec-rs 2 | 3 | [![Crates.io](https://img.shields.io/crates/v/cec-rs.svg)](https://crates.io/crates/cec-rs) 4 | [![Docs.rs](https://docs.rs/cec-rs/badge.svg)](https://docs.rs/cec-rs) 5 | [![CI](https://github.com/ssalonen/cec-rs/workflows/Continuous%20Integration/badge.svg)](https://github.com/ssalonen/cec-rs/actions) 6 | [![Coverage Status](https://coveralls.io/repos/github/ssalonen/cec-rs/badge.svg?branch=master)](https://coveralls.io/github/ssalonen/cec-rs?branch=master) 7 | 8 | Thin but safe wrappers for libcec. Supports libcec 4.x, 5.x and 6.x with an unified API. 9 | 10 | ## Installation 11 | 12 | This library uses `libcec-sys` to link against `libcec` library. For installation instructions, refer to [`libcec-sys`](https://crates.io/crates/libcec-sys) README. 13 | 14 | 15 | 16 | ## Example CLI application 17 | 18 | See `examples` directory 19 | 20 | ## License 21 | 22 | Licensed under GNU General Public License version 2, ([LICENSE](LICENSE) or [https://opensource.org/licenses/GPL-2.0](https://opensource.org/licenses/GPL-2.0)) 23 | 24 | The CI/CD setup in `.github/` is based on [rust-github/template](https://github.com/rust-github/template), and therefore licensed under either of 25 | 26 | * Apache License, Version 2.0 27 | ([LICENSE-CI-APACHE](LICENSE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)) 28 | * MIT license 29 | ([LICENSE-CI-MIT](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)) 30 | 31 | at your option. 32 | 33 | ## Contribution 34 | 35 | Unless you explicitly state otherwise, any contribution intentionally submitted 36 | for inclusion in the work by you, as defined in the Apache-2.0 license, shall be 37 | dual licensed as above, without any additional terms or conditions. 38 | 39 | See [CONTRIBUTING.md](CONTRIBUTING.md). 40 | 41 | ## Releasing 42 | 43 | ```cargo release --no-publish --dev-version --execute``` and let the github CD pipeline do the rest. 44 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution guidelines 2 | 3 | First off, thank you for considering contributing to cec-rs. 4 | 5 | If your contribution is not straightforward, please first discuss the change you 6 | wish to make by creating a new issue before making the change. 7 | 8 | ## Reporting issues 9 | 10 | Before reporting an issue on the 11 | [issue tracker](https://github.com/ssalonen/cec-rs/issues), 12 | please check that it has not already been reported by searching for some related 13 | keywords. 14 | 15 | ## Pull requests 16 | 17 | Try to do one pull request per change. 18 | 19 | ### Updating the changelog 20 | 21 | Update the changes you have made in 22 | [CHANGELOG](https://github.com/ssalonen/cec-rs/blob/master/CHANGELOG.md) 23 | file under the **Unreleased** section. 24 | 25 | Add the changes of your pull request to one of the following subsections, 26 | depending on the types of changes defined by 27 | [Keep a changelog](https://keepachangelog.com/en/1.0.0/): 28 | 29 | - `Added` for new features. 30 | - `Changed` for changes in existing functionality. 31 | - `Deprecated` for soon-to-be removed features. 32 | - `Removed` for now removed features. 33 | - `Fixed` for any bug fixes. 34 | - `Security` in case of vulnerabilities. 35 | 36 | If the required subsection does not exist yet under **Unreleased**, create it! 37 | 38 | ## Developing 39 | 40 | ### Set up 41 | 42 | This is no different than other Rust projects. 43 | 44 | ```shell 45 | git clone https://github.com/ssalonen/cec-rs 46 | cd cec-rs 47 | cargo build 48 | ``` 49 | 50 | ### Useful Commands 51 | 52 | - Build and run release version: 53 | 54 | ```shell 55 | cargo build --release && cargo run --release 56 | ``` 57 | 58 | - Run Clippy: 59 | 60 | ```shell 61 | cargo clippy --all 62 | ``` 63 | 64 | - Run all tests: 65 | 66 | ```shell 67 | cargo test --all 68 | ``` 69 | 70 | - Check to see if there are code formatting issues 71 | 72 | ```shell 73 | cargo fmt --all -- --check 74 | ``` 75 | 76 | - Format the code in the project 77 | 78 | ```shell 79 | cargo fmt --all 80 | ``` 81 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [Unreleased] 9 | 10 | ## 13.0.1 11 | 12 | - update libcec-sys to 9.0.2 (hotfixed version) 13 | 14 | ## 13.0.0 15 | 16 | - update libcec-sys to 9.0.1, bringing full libcec v7.1.1 support 17 | 18 | ## 12.0.0 19 | 20 | - update libcec-sys to 8.0.0, bringing full libcec v7 support 21 | - Convenience conversion functions for turning logical address into device type 22 | 23 | 24 | ## 11.0.2 25 | 26 | - bumping libcec patch version 27 | 28 | ## 11.0.1 29 | 30 | - bump libcec with static builds (add link hint to udev) 31 | 32 | ## 11.0.0 33 | 34 | - bump to libcec 7 with macOS support and other fixes 35 | 36 | ## 10.0.0 37 | 38 | - fixed KnownCecAudioStatus::is_muted to simply check mute bit status 39 | - added KnownCecAudioStatus::is_muted_or_min_volume for convenience 40 | - switched to EnumRepr for correct types on windows 41 | 42 | ## 9.0.0 43 | 44 | - fixed release, libcec 6.0.0. Restored support for other architectures. 45 | 46 | ## 8.0.1 47 | 48 | - fixed release, libcec 5.0.1 49 | 50 | ## 8.0.0 51 | 52 | - Fix `audio_get_status` result 53 | - Add adapter auto detection for unspecified port 54 | - Fix `is_active_source` result 55 | - Fix calling `libcec_close` twice on drop 56 | - Adapted to libcec 5.0.0 API 57 | 58 | ## 7.1.1 59 | 60 | - Require libcec >= 4.0.3 for fixed windows compatibility 61 | 62 | ## 7.1.0 63 | 64 | - Add `get_logical_addresses()` 65 | 66 | ## 7.0.0 67 | 68 | - `get_device_power_status` returns `CecPowerStatus` instead of `CecConnectionResult<()>` 69 | - MSRV defined: 1.56.1 70 | 71 | ## 6.0.0 72 | 73 | - libcec-sys updated to v4.0.0, bringing Windows support and vendored libcec updated to v6 74 | - Updated to Rust 2021 edition 75 | 76 | ## 5.0.0 77 | 78 | - Fix `transmit` to use `cec-rs` types, not the libcec-sys low-level FFI types. 79 | 80 | ## 4.0.0 81 | 82 | - Depend on libcec-sys 3.0.0, supporting libcec 4.x, 5.x, and 6.x. 83 | 84 | ## 3.0.0 85 | 86 | - Depend on libcec-sys 2.0.0 which allows linking to system installed `libcec` 87 | 88 | ## 2.2.2 89 | 90 | - Fixes build errors with libcec-sys 91 | - Added `log_message_callbacks` 92 | 93 | ## 2.2.1 94 | 95 | - CI fixes and improvements 96 | - Fix clippy errors, regenerating `enums.rs` and utilizing new `enum-repr-derive` 97 | - Avoid unsafe transmute with `c_char` 98 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - master 5 | pull_request: 6 | branches: 7 | - master 8 | name: Continuous Integration 9 | 10 | jobs: 11 | test: 12 | name: Test Suite ${{ matrix.job.target }} (${{ matrix.job.libcec }}) 13 | runs-on: ${{ matrix.job.os }} 14 | strategy: 15 | matrix: 16 | job: 17 | - os: windows-latest 18 | target: x86_64-pc-windows-msvc 19 | use-cross: false 20 | libcec: static-libcec 21 | expected_libcec_abi: 7 22 | additional_env: 23 | LIBCEC_STATIC: "1" 24 | - os: ubuntu-latest 25 | target: arm-unknown-linux-gnueabi 26 | use-cross: true 27 | libcec: vendored-libcec 28 | expected_libcec_abi: 7 29 | additional_env: 30 | LIBCEC_VENDORED: "1" 31 | - os: ubuntu-latest 32 | target: armv7-unknown-linux-gnueabihf 33 | use-cross: true 34 | libcec: vendored-libcec 35 | expected_libcec_abi: 7 36 | additional_env: 37 | LIBCEC_VENDORED: "1" 38 | - os: ubuntu-latest 39 | target: x86_64-unknown-linux-gnu 40 | use-cross: true 41 | libcec: static-libcec 42 | expected_libcec_abi: 7 43 | additional_env: 44 | LIBCEC_STATIC: "1" 45 | - os: ubuntu-latest 46 | target: x86_64-unknown-linux-gnu 47 | use-cross: true 48 | libcec: vendored-libcec 49 | expected_libcec_abi: 7 50 | additional_env: 51 | LIBCEC_VENDORED: "1" 52 | # 53 | # libcec discovery with pkg config 54 | # 55 | - os: ubuntu-latest 56 | target: x86_64-unknown-linux-gnu 57 | use-cross: false # Important that we do not run cross so package install shows up 58 | libcec: "libcec4" 59 | libcec-dev: "libcec-dev=4*" 60 | pkg-config: true 61 | expected_libcec_abi: 4 62 | # static libcec 63 | - os: ubuntu-latest 64 | target: x86_64-unknown-linux-gnu 65 | use-cross: false # Important that we do not run cross so package install shows up 66 | libcec: "libcec6" 67 | libcec-dev: "libcec-dev=6*" 68 | pkg-config: true 69 | expected_libcec_abi: 6 70 | - os: macos-latest 71 | target: aarch64-apple-darwin 72 | use-cross: false 73 | libcec: "static-libcec" 74 | pkg-config: false 75 | expected_libcec_abi: 7 76 | additional_env: 77 | LIBCEC_STATIC: "1" 78 | steps: 79 | - name: Checkout repository 80 | uses: actions/checkout@v2 81 | - if: runner.os == 'Linux' 82 | name: Apt-get update 83 | run: sudo apt-get update -yq 84 | - name: Installing Rust toolchain 85 | uses: actions-rs/toolchain@v1 86 | with: 87 | toolchain: stable 88 | profile: minimal 89 | target: ${{ matrix.job.target }} 90 | override: true 91 | - uses: Swatinem/rust-cache@v2 92 | with: 93 | # use additional cache key, 94 | # ensure cache separation 95 | key: ${{ matrix.job.target }}-${{ matrix.job.libcec }}-${{ matrix.job.pkg-config }}-${{ matrix.job.additional_env.LIBCEC_STATIC }}-${{ matrix.job.additional_env.LD_LIBRARY_PATH }}-${{ matrix.job.additional_env.C_INCLUDE_PATH }} 96 | # libcec and p8-platform from apt repo 97 | - if: ${{ startsWith(matrix.job.libcec, 'libcec') && runner.os == 'Linux' }} 98 | name: Install libcec(-dev) and build dependencies 99 | run: | 100 | set -ex 101 | # introduce Ubuntu 20.04 (Focal Fossa) repos as well for easy libcec4 installation 102 | sudo sh -c 'echo "deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list' 103 | sudo apt-get update # re-loads apt sources 104 | sudo apt-get install -yq libudev-dev libp8-platform2 libp8-platform-dev 105 | 106 | apt show '${{ matrix.job.libcec }}' 107 | sudo apt install -yq '${{ matrix.job.libcec }}' 108 | 109 | apt show '${{ matrix.job.libcec-dev }}' 110 | sudo apt install -yq '${{ matrix.job.libcec-dev }}' 111 | # additional build dependencies for non-cross builds with vendored libcec sources 112 | # Also needed by static in linking 113 | - if: ${{ (startsWith(matrix.job.libcec, 'vendored') || startsWith(matrix.job.libcec, 'static')) && !matrix.job.use-cross && runner.os == 'Linux' }} 114 | name: Install libudev-dev for non-cross vendored builds as libcec build dependency 115 | run: | 116 | set -ex 117 | sudo apt-get update -yq 118 | sudo apt-get install -yq libudev-dev 119 | # setup developer command prompt for Windows 120 | - if: ${{ startsWith(matrix.job.libcec, 'vendored') && !matrix.job.use-cross && runner.os == 'Windows' }} 121 | name: Setup developer command prompt 122 | uses: ilammy/msvc-dev-cmd@v1 123 | # pkg-config install 124 | - if: ${{ startsWith(matrix.job.libcec, 'libcec') && matrix.job.pkg-config && runner.os == 'Linux' }} 125 | name: Install pkg-config for utilizing libcec from apt build dependency 126 | run: sudo apt-get install -yq pkg-config 127 | # pkg-config remove 128 | - if: ${{ startsWith(matrix.job.libcec, 'libcec') && !matrix.job.pkg-config && runner.os == 'Linux' }} 129 | name: Remove pkg-config 130 | run: sudo apt-get remove -yq pkg-config 131 | - name: Cargo test 132 | uses: actions-rs/cargo@v1 133 | env: 134 | EXPECTED_LIBCEC_VERSION_MAJOR: ${{ matrix.job.expected_libcec_abi }} 135 | LIBCEC_STATIC: ${{ matrix.job.additional_env.LIBCEC_STATIC }} 136 | LIBCEC_VENDORED: ${{ matrix.job.additional_env.LIBCEC_VENDORED }} 137 | with: 138 | command: test 139 | use-cross: ${{ matrix.job.use-cross }} 140 | args: --target ${{ matrix.job.target }} -vv 141 | 142 | lint: 143 | name: Lint 144 | runs-on: ubuntu-latest 145 | steps: 146 | - name: Checkout repository 147 | uses: actions/checkout@v3 148 | with: 149 | submodules: recursive 150 | - name: Rustfmt check 151 | uses: actions-rs/cargo@v1 152 | with: 153 | command: fmt 154 | args: --all -- --check 155 | # need to use cross to setup dependencies 156 | - name: Clippy Check 157 | uses: actions-rs/cargo@v1 158 | with: 159 | use-cross: true 160 | command: clippy 161 | args: -- --target x86_64-unknown-linux-gnu -D warnings 162 | 163 | coverage: 164 | name: Code coverage 165 | runs-on: ubuntu-latest 166 | steps: 167 | - name: Checkout repository 168 | uses: actions/checkout@v2 169 | - name: Update apt 170 | run: sudo apt-get update -yq 171 | - name: Install dependencies for build and coverage 172 | run: sudo apt-get install libudev-dev libcec6 libcec-dev pkg-config libp8-platform-dev 173 | - name: Install stable toolchain 174 | uses: actions-rs/toolchain@v1 175 | with: 176 | toolchain: stable 177 | profile: minimal 178 | override: true 179 | # - name: Run cargo-tarpaulin 180 | # uses: actions-rs/tarpaulin@v0.1.3 181 | # with: 182 | # args: "--ignore-tests --out Lcov" 183 | # env: 184 | # EXPECTED_LIBCEC_VERSION_MAJOR: 7 185 | # - name: Upload to Coveralls 186 | # # upload only if push 187 | # if: ${{ github.event_name == 'push' }} 188 | # uses: coverallsapp/github-action@master 189 | # with: 190 | # github-token: ${{ secrets.GITHUB_TOKEN }} 191 | # path-to-lcov: "./lcov.info" 192 | -------------------------------------------------------------------------------- /LICENSE-CI-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | 294 | Copyright (C) 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | , 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. -------------------------------------------------------------------------------- /src/enums.rs: -------------------------------------------------------------------------------- 1 | use enum_repr::EnumRepr; 2 | use libcec_sys::*; 3 | 4 | // 5 | // Enums 6 | // 7 | 8 | #[EnumRepr(type = "cec_abort_reason")] 9 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 10 | pub enum CecAbortReason { 11 | #[doc = "cec_abort_reason::CEC_ABORT_REASON_UNRECOGNIZED_OPCODE"] 12 | UnrecognizedOpcode = libcec_sys::cec_abort_reason_UNRECOGNIZED_OPCODE, 13 | #[doc = "cec_abort_reason::CEC_ABORT_REASON_NOT_IN_CORRECT_MODE_TO_RESPOND"] 14 | NotInCorrectModeToRespond = libcec_sys::cec_abort_reason_NOT_IN_CORRECT_MODE_TO_RESPOND, 15 | #[doc = "cec_abort_reason::CEC_ABORT_REASON_CANNOT_PROVIDE_SOURCE"] 16 | CannotProvideSource = libcec_sys::cec_abort_reason_CANNOT_PROVIDE_SOURCE, 17 | #[doc = "cec_abort_reason::CEC_ABORT_REASON_INVALID_OPERAND"] 18 | InvalidOperand = libcec_sys::cec_abort_reason_INVALID_OPERAND, 19 | #[doc = "cec_abort_reason::CEC_ABORT_REASON_REFUSED"] 20 | Refused = libcec_sys::cec_abort_reason_REFUSED, 21 | } 22 | 23 | #[EnumRepr(type = "cec_analogue_broadcast_type")] 24 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 25 | pub enum CecAnalogueBroadcastType { 26 | Cable = libcec_sys::cec_analogue_broadcast_type_CABLE, 27 | Satellite = libcec_sys::cec_analogue_broadcast_type_SATELLITE, 28 | Terrestial = libcec_sys::cec_analogue_broadcast_type_TERRESTIAL, 29 | } 30 | 31 | #[EnumRepr(type = "cec_audio_rate")] 32 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 33 | pub enum CecAudioRate { 34 | RateControlOff = libcec_sys::cec_audio_rate_RATE_CONTROL_OFF, 35 | StandardRate100 = libcec_sys::cec_audio_rate_STANDARD_RATE_100, 36 | FastRateMax101 = libcec_sys::cec_audio_rate_FAST_RATE_MAX_101, 37 | SlowRateMin99 = libcec_sys::cec_audio_rate_SLOW_RATE_MIN_99, 38 | StandardRate1000 = libcec_sys::cec_audio_rate_STANDARD_RATE_100_0, 39 | FastRateMax1001 = libcec_sys::cec_audio_rate_FAST_RATE_MAX_100_1, 40 | SlowRateMin999 = libcec_sys::cec_audio_rate_SLOW_RATE_MIN_99_9, 41 | } 42 | 43 | #[EnumRepr(type = "cec_audio_status")] 44 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 45 | pub enum CecAudioStatus { 46 | MuteStatusMask = libcec_sys::cec_audio_status_MUTE_STATUS_MASK, 47 | VolumeStatusMask = libcec_sys::cec_audio_status_VOLUME_STATUS_MASK, 48 | VolumeMin = libcec_sys::cec_audio_status_VOLUME_MIN, 49 | VolumeMax = libcec_sys::cec_audio_status_VOLUME_MAX, 50 | } 51 | 52 | // 53 | // Due to EnumRepr, cannot use #[cfg(abi6)] inside the enum 54 | // Hence, repeating the CecVersion enum with two cfg's 55 | // 56 | 57 | #[EnumRepr(type = "cec_version")] 58 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 59 | #[cfg(abi6)] 60 | pub enum CecVersion { 61 | VersionUnknown = libcec_sys::cec_version_UNKNOWN, 62 | Version12 = libcec_sys::cec_version__1_2, 63 | Version12a = libcec_sys::cec_version__1_2A, 64 | Version13 = libcec_sys::cec_version__1_3, 65 | Version13a = libcec_sys::cec_version__1_3A, 66 | Version14 = libcec_sys::cec_version__1_4, 67 | Version20 = libcec_sys::cec_version__2_0, 68 | } 69 | 70 | #[EnumRepr(type = "cec_version")] 71 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 72 | #[cfg(not(abi6))] 73 | pub enum CecVersion { 74 | VersionUnknown = libcec_sys::cec_version_UNKNOWN, 75 | Version12 = libcec_sys::cec_version__1_2, 76 | Version12a = libcec_sys::cec_version__1_2A, 77 | Version13 = libcec_sys::cec_version__1_3, 78 | Version13a = libcec_sys::cec_version__1_3A, 79 | Version14 = libcec_sys::cec_version__1_4, 80 | } 81 | 82 | #[allow(clippy::enum_clike_unportable_variant)] 83 | #[EnumRepr(type = "cec_channel_identifier")] 84 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 85 | pub enum CecChannelIdentifier { 86 | CecChannelNumberFormatMask = libcec_sys::cec_channel_identifier_CEC_CHANNEL_NUMBER_FORMAT_MASK, 87 | Cec1PartChannelNumber = libcec_sys::cec_channel_identifier_CEC_1_PART_CHANNEL_NUMBER, 88 | Cec2PartChannelNumber = libcec_sys::cec_channel_identifier_CEC_2_PART_CHANNEL_NUMBER, 89 | CecMajorChannelNumberMask = libcec_sys::cec_channel_identifier_CEC_MAJOR_CHANNEL_NUMBER_MASK, 90 | CecMinorChannelNumberMask = libcec_sys::cec_channel_identifier_CEC_MINOR_CHANNEL_NUMBER_MASK, 91 | } 92 | 93 | #[EnumRepr(type = "cec_deck_control_mode")] 94 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 95 | pub enum CecDeckControlMode { 96 | SkipForwardWind = libcec_sys::cec_deck_control_mode_SKIP_FORWARD_WIND, 97 | SkipReverseRewind = libcec_sys::cec_deck_control_mode_SKIP_REVERSE_REWIND, 98 | Stop = libcec_sys::cec_deck_control_mode_STOP, 99 | Eject = libcec_sys::cec_deck_control_mode_EJECT, 100 | } 101 | 102 | #[EnumRepr(type = "cec_deck_info")] 103 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 104 | pub enum CecDeckInfo { 105 | Play = libcec_sys::cec_deck_info_PLAY, 106 | Record = libcec_sys::cec_deck_info_RECORD, 107 | PlayReverse = libcec_sys::cec_deck_info_PLAY_REVERSE, 108 | Still = libcec_sys::cec_deck_info_STILL, 109 | Slow = libcec_sys::cec_deck_info_SLOW, 110 | SlowReverse = libcec_sys::cec_deck_info_SLOW_REVERSE, 111 | FastForward = libcec_sys::cec_deck_info_FAST_FORWARD, 112 | FastReverse = libcec_sys::cec_deck_info_FAST_REVERSE, 113 | NoMedia = libcec_sys::cec_deck_info_NO_MEDIA, 114 | Stop = libcec_sys::cec_deck_info_STOP, 115 | SkipForwardWind = libcec_sys::cec_deck_info_SKIP_FORWARD_WIND, 116 | SkipReverseRewind = libcec_sys::cec_deck_info_SKIP_REVERSE_REWIND, 117 | IndexSearchForward = libcec_sys::cec_deck_info_INDEX_SEARCH_FORWARD, 118 | IndexSearchReverse = libcec_sys::cec_deck_info_INDEX_SEARCH_REVERSE, 119 | OtherStatus = libcec_sys::cec_deck_info_OTHER_STATUS, 120 | OtherStatusLg = libcec_sys::cec_deck_info_OTHER_STATUS_LG, 121 | } 122 | 123 | #[EnumRepr(type = "cec_device_type")] 124 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 125 | pub enum CecDeviceType { 126 | Tv = libcec_sys::cec_device_type_TV, 127 | RecordingDevice = libcec_sys::cec_device_type_RECORDING_DEVICE, 128 | Reserved = libcec_sys::cec_device_type_RESERVED, 129 | Tuner = libcec_sys::cec_device_type_TUNER, 130 | PlaybackDevice = libcec_sys::cec_device_type_PLAYBACK_DEVICE, 131 | AudioSystem = libcec_sys::cec_device_type_AUDIO_SYSTEM, 132 | } 133 | 134 | #[EnumRepr(type = "cec_display_control")] 135 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 136 | pub enum CecDisplayControl { 137 | DisplayForDefaultTime = libcec_sys::cec_display_control_DISPLAY_FOR_DEFAULT_TIME, 138 | DisplayUntilCleared = libcec_sys::cec_display_control_DISPLAY_UNTIL_CLEARED, 139 | ClearPreviousMessage = libcec_sys::cec_display_control_CLEAR_PREVIOUS_MESSAGE, 140 | ReservedForFutureUse = libcec_sys::cec_display_control_RESERVED_FOR_FUTURE_USE, 141 | } 142 | 143 | #[EnumRepr(type = "cec_external_source_specifier")] 144 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 145 | pub enum CecExternalSourceSpecifier { 146 | Plug = libcec_sys::cec_external_source_specifier_EXTERNAL_PLUG, 147 | PhysicalAddress = libcec_sys::cec_external_source_specifier_EXTERNAL_PHYSICAL_ADDRESS, 148 | } 149 | 150 | #[EnumRepr(type = "cec_menu_request_type")] 151 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 152 | pub enum CecMenuRequestType { 153 | Activate = libcec_sys::cec_menu_request_type_ACTIVATE, 154 | Deactivate = libcec_sys::cec_menu_request_type_DEACTIVATE, 155 | Query = libcec_sys::cec_menu_request_type_QUERY, 156 | } 157 | 158 | #[EnumRepr(type = "cec_menu_state")] 159 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 160 | pub enum CecMenuState { 161 | Activated = libcec_sys::cec_menu_state_ACTIVATED, 162 | Deactivated = libcec_sys::cec_menu_state_DEACTIVATED, 163 | } 164 | 165 | #[EnumRepr(type = "cec_play_mode")] 166 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 167 | pub enum CecPlayMode { 168 | PlayForward = libcec_sys::cec_play_mode_PLAY_FORWARD, 169 | PlayReverse = libcec_sys::cec_play_mode_PLAY_REVERSE, 170 | PlayStill = libcec_sys::cec_play_mode_PLAY_STILL, 171 | FastForwardMinSpeed = libcec_sys::cec_play_mode_FAST_FORWARD_MIN_SPEED, 172 | FastForwardMediumSpeed = libcec_sys::cec_play_mode_FAST_FORWARD_MEDIUM_SPEED, 173 | FastForwardMaxSpeed = libcec_sys::cec_play_mode_FAST_FORWARD_MAX_SPEED, 174 | FastReverseMinSpeed = libcec_sys::cec_play_mode_FAST_REVERSE_MIN_SPEED, 175 | FastReverseMediumSpeed = libcec_sys::cec_play_mode_FAST_REVERSE_MEDIUM_SPEED, 176 | FastReverseMaxSpeed = libcec_sys::cec_play_mode_FAST_REVERSE_MAX_SPEED, 177 | SlowForwardMinSpeed = libcec_sys::cec_play_mode_SLOW_FORWARD_MIN_SPEED, 178 | SlowForwardMediumSpeed = libcec_sys::cec_play_mode_SLOW_FORWARD_MEDIUM_SPEED, 179 | SlowForwardMaxSpeed = libcec_sys::cec_play_mode_SLOW_FORWARD_MAX_SPEED, 180 | SlowReverseMinSpeed = libcec_sys::cec_play_mode_SLOW_REVERSE_MIN_SPEED, 181 | SlowReverseMediumSpeed = libcec_sys::cec_play_mode_SLOW_REVERSE_MEDIUM_SPEED, 182 | SlowReverseMaxSpeed = libcec_sys::cec_play_mode_SLOW_REVERSE_MAX_SPEED, 183 | } 184 | 185 | #[EnumRepr(type = "cec_power_status")] 186 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 187 | pub enum CecPowerStatus { 188 | On = libcec_sys::cec_power_status_ON, 189 | Standby = libcec_sys::cec_power_status_STANDBY, 190 | InTransitionStandbyToOn = libcec_sys::cec_power_status_IN_TRANSITION_STANDBY_TO_ON, 191 | InTransitionOnToStandby = libcec_sys::cec_power_status_IN_TRANSITION_ON_TO_STANDBY, 192 | Unknown = libcec_sys::cec_power_status_UNKNOWN, 193 | } 194 | 195 | #[EnumRepr(type = "cec_record_source_type")] 196 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 197 | pub enum CecRecordSourceType { 198 | OwnSource = libcec_sys::cec_record_source_type_OWN_SOURCE, 199 | DigitalService = libcec_sys::cec_record_source_type_DIGITAL_SERVICE, 200 | AnalogueService = libcec_sys::cec_record_source_type_ANALOGUE_SERVICE, 201 | ExternalPlus = libcec_sys::cec_record_source_type_EXTERNAL_PLUS, 202 | ExternalPhysicalAddress = libcec_sys::cec_record_source_type_EXTERNAL_PHYSICAL_ADDRESS, 203 | } 204 | 205 | #[EnumRepr(type = "cec_record_status_info")] 206 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 207 | pub enum CecRecordStatusInfo { 208 | RecordingCurrentlySelectedSource = 209 | libcec_sys::cec_record_status_info_RECORDING_CURRENTLY_SELECTED_SOURCE, 210 | RecordingDigitalService = libcec_sys::cec_record_status_info_RECORDING_DIGITAL_SERVICE, 211 | RecordingAnalogueService = libcec_sys::cec_record_status_info_RECORDING_ANALOGUE_SERVICE, 212 | RecordingExternalInput = libcec_sys::cec_record_status_info_RECORDING_EXTERNAL_INPUT, 213 | NoRecordingUnableToRecordDigitalService = 214 | libcec_sys::cec_record_status_info_NO_RECORDING_UNABLE_TO_RECORD_DIGITAL_SERVICE, 215 | NoRecordingUnableToRecordAnalogueService = 216 | libcec_sys::cec_record_status_info_NO_RECORDING_UNABLE_TO_RECORD_ANALOGUE_SERVICE, 217 | NoRecordingUnableToSelectRequiredService = 218 | libcec_sys::cec_record_status_info_NO_RECORDING_UNABLE_TO_SELECT_REQUIRED_SERVICE, 219 | NoRecordingInvalidExternalPlugNumber = 220 | libcec_sys::cec_record_status_info_NO_RECORDING_INVALID_EXTERNAL_PLUG_NUMBER, 221 | NoRecordingInvalidExternalAddress = 222 | libcec_sys::cec_record_status_info_NO_RECORDING_INVALID_EXTERNAL_ADDRESS, 223 | NoRecordingCaSystemNotSupported = 224 | libcec_sys::cec_record_status_info_NO_RECORDING_CA_SYSTEM_NOT_SUPPORTED, 225 | NoRecordingNoOrInsufficientEntitlements = 226 | libcec_sys::cec_record_status_info_NO_RECORDING_NO_OR_INSUFFICIENT_ENTITLEMENTS, 227 | NoRecordingNotAllowedToCopySource = 228 | libcec_sys::cec_record_status_info_NO_RECORDING_NOT_ALLOWED_TO_COPY_SOURCE, 229 | NoRecordingNoFurtherCopiesAllowed = 230 | libcec_sys::cec_record_status_info_NO_RECORDING_NO_FURTHER_COPIES_ALLOWED, 231 | NoRecordingNoMedia = libcec_sys::cec_record_status_info_NO_RECORDING_NO_MEDIA, 232 | NoRecordingPlaying = libcec_sys::cec_record_status_info_NO_RECORDING_PLAYING, 233 | NoRecordingAlreadyRecording = libcec_sys::cec_record_status_info_NO_RECORDING_ALREADY_RECORDING, 234 | NoRecordingMediaProtected = libcec_sys::cec_record_status_info_NO_RECORDING_MEDIA_PROTECTED, 235 | NoRecordingNoSourceSignal = libcec_sys::cec_record_status_info_NO_RECORDING_NO_SOURCE_SIGNAL, 236 | NoRecordingMediaProblem = libcec_sys::cec_record_status_info_NO_RECORDING_MEDIA_PROBLEM, 237 | NoRecordingNotEnoughSpaceAvailable = 238 | libcec_sys::cec_record_status_info_NO_RECORDING_NOT_ENOUGH_SPACE_AVAILABLE, 239 | NoRecordingParentalLockOn = libcec_sys::cec_record_status_info_NO_RECORDING_PARENTAL_LOCK_ON, 240 | RecordingTerminatedNormally = libcec_sys::cec_record_status_info_RECORDING_TERMINATED_NORMALLY, 241 | RecordingHasAlreadyTerminated = 242 | libcec_sys::cec_record_status_info_RECORDING_HAS_ALREADY_TERMINATED, 243 | NoRecordingOtherReason = libcec_sys::cec_record_status_info_NO_RECORDING_OTHER_REASON, 244 | } 245 | 246 | #[EnumRepr(type = "cec_recording_sequence")] 247 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 248 | pub enum CecRecordingSequence { 249 | Sunday = libcec_sys::cec_recording_sequence_SUNDAY, 250 | Monday = libcec_sys::cec_recording_sequence_MONDAY, 251 | Tuesday = libcec_sys::cec_recording_sequence_TUESDAY, 252 | Wednesday = libcec_sys::cec_recording_sequence_WEDNESDAY, 253 | Thursday = libcec_sys::cec_recording_sequence_THURSDAY, 254 | Friday = libcec_sys::cec_recording_sequence_FRIDAY, 255 | Saturday = libcec_sys::cec_recording_sequence_SATURDAY, 256 | OnceOnly = libcec_sys::cec_recording_sequence_ONCE_ONLY, 257 | } 258 | 259 | #[EnumRepr(type = "cec_status_request")] 260 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 261 | pub enum CecStatusRequest { 262 | On = libcec_sys::cec_status_request_ON, 263 | Off = libcec_sys::cec_status_request_OFF, 264 | Once = libcec_sys::cec_status_request_ONCE, 265 | } 266 | 267 | #[EnumRepr(type = "cec_system_audio_status")] 268 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 269 | pub enum CecSystemAudioStatus { 270 | Off = libcec_sys::cec_system_audio_status_OFF, 271 | On = libcec_sys::cec_system_audio_status_ON, 272 | } 273 | 274 | #[EnumRepr(type = "cec_timer_cleared_status_data")] 275 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 276 | pub enum CecTimerClearedStatusData { 277 | NotClearedRecording = libcec_sys::cec_timer_cleared_status_data_TIMER_NOT_CLEARED_RECORDING, 278 | NotClearedNoMatching = libcec_sys::cec_timer_cleared_status_data_TIMER_NOT_CLEARED_NO_MATCHING, 279 | NotClearedNoInf0Available = 280 | libcec_sys::cec_timer_cleared_status_data_TIMER_NOT_CLEARED_NO_INF0_AVAILABLE, 281 | Cleared = libcec_sys::cec_timer_cleared_status_data_TIMER_CLEARED, 282 | } 283 | 284 | #[EnumRepr(type = "cec_timer_overlap_warning")] 285 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 286 | pub enum CecTimerOverlapWarning { 287 | NoOverlap = libcec_sys::cec_timer_overlap_warning_NO_OVERLAP, 288 | TimerBlocksOverlap = libcec_sys::cec_timer_overlap_warning_TIMER_BLOCKS_OVERLAP, 289 | } 290 | 291 | #[EnumRepr(type = "cec_media_info")] 292 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 293 | pub enum CecMediaInfo { 294 | MediaPresentAndNotProtected = libcec_sys::cec_media_info_MEDIA_PRESENT_AND_NOT_PROTECTED, 295 | MediaPresentButProtected = libcec_sys::cec_media_info_MEDIA_PRESENT_BUT_PROTECTED, 296 | MediaNotPresent = libcec_sys::cec_media_info_MEDIA_NOT_PRESENT, 297 | FutureUse = libcec_sys::cec_media_info_FUTURE_USE, 298 | } 299 | 300 | #[EnumRepr(type = "cec_programmed_indicator")] 301 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 302 | pub enum CecProgrammedIndicator { 303 | NotProgrammed = libcec_sys::cec_programmed_indicator_NOT_PROGRAMMED, 304 | Programmed = libcec_sys::cec_programmed_indicator_PROGRAMMED, 305 | } 306 | 307 | #[EnumRepr(type = "cec_programmed_info")] 308 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 309 | pub enum CecProgrammedInfo { 310 | FutureUse = libcec_sys::cec_programmed_info_FUTURE_USE, 311 | EnoughSpaceAvailableForRecording = 312 | libcec_sys::cec_programmed_info_ENOUGH_SPACE_AVAILABLE_FOR_RECORDING, 313 | NotEnoughSpaceAvailableForRecording = 314 | libcec_sys::cec_programmed_info_NOT_ENOUGH_SPACE_AVAILABLE_FOR_RECORDING, 315 | MayNotBeEnoughSpaceAvailable = 316 | libcec_sys::cec_programmed_info_MAY_NOT_BE_ENOUGH_SPACE_AVAILABLE, 317 | NoMediaInfoAvailable = libcec_sys::cec_programmed_info_NO_MEDIA_INFO_AVAILABLE, 318 | } 319 | 320 | #[EnumRepr(type = "cec_not_programmed_error_info")] 321 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 322 | pub enum CecNotProgrammedErrorInfo { 323 | FutureUse = libcec_sys::cec_not_programmed_error_info_FUTURE_USE, 324 | NoFreeTimerAvailable = libcec_sys::cec_not_programmed_error_info_NO_FREE_TIMER_AVAILABLE, 325 | DateOutOfRange = libcec_sys::cec_not_programmed_error_info_DATE_OUT_OF_RANGE, 326 | RecordingSequenceError = libcec_sys::cec_not_programmed_error_info_RECORDING_SEQUENCE_ERROR, 327 | InvalidExternalPlugNumber = 328 | libcec_sys::cec_not_programmed_error_info_INVALID_EXTERNAL_PLUG_NUMBER, 329 | InvalidExternalPhysicalAddress = 330 | libcec_sys::cec_not_programmed_error_info_INVALID_EXTERNAL_PHYSICAL_ADDRESS, 331 | CaSystemNotSupported = libcec_sys::cec_not_programmed_error_info_CA_SYSTEM_NOT_SUPPORTED, 332 | NoOrInsufficientCaEntitlements = 333 | libcec_sys::cec_not_programmed_error_info_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS, 334 | DoesNotSupportResolution = 335 | libcec_sys::cec_not_programmed_error_info_DOES_NOT_SUPPORT_RESOLUTION, 336 | ParentalLockOn = libcec_sys::cec_not_programmed_error_info_PARENTAL_LOCK_ON, 337 | ClockFailure = libcec_sys::cec_not_programmed_error_info_CLOCK_FAILURE, 338 | ReservedForFutureUseStart = 339 | libcec_sys::cec_not_programmed_error_info_RESERVED_FOR_FUTURE_USE_START, 340 | ReservedForFutureUseEnd = libcec_sys::cec_not_programmed_error_info_RESERVED_FOR_FUTURE_USE_END, 341 | DuplicateAlreadyProgrammed = 342 | libcec_sys::cec_not_programmed_error_info_DUPLICATE_ALREADY_PROGRAMMED, 343 | } 344 | 345 | #[EnumRepr(type = "cec_recording_flag")] 346 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 347 | pub enum CecRecordingFlag { 348 | NotBeingUsedForRecording = libcec_sys::cec_recording_flag_NOT_BEING_USED_FOR_RECORDING, 349 | BeingUsedForRecording = libcec_sys::cec_recording_flag_BEING_USED_FOR_RECORDING, 350 | } 351 | 352 | #[EnumRepr(type = "cec_tuner_display_info")] 353 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 354 | pub enum CecTunerDisplayInfo { 355 | DisplayingDigitalTuner = libcec_sys::cec_tuner_display_info_DISPLAYING_DIGITAL_TUNER, 356 | NotDisplayingTuner = libcec_sys::cec_tuner_display_info_NOT_DISPLAYING_TUNER, 357 | DisplayingAnalogueTuner = libcec_sys::cec_tuner_display_info_DISPLAYING_ANALOGUE_TUNER, 358 | } 359 | 360 | #[EnumRepr(type = "cec_broadcast_system")] 361 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 362 | pub enum CecBroadcastSystem { 363 | PalBG = libcec_sys::cec_broadcast_system_PAL_B_G, 364 | SecamL1 = libcec_sys::cec_broadcast_system_SECAM_L1, 365 | PalM = libcec_sys::cec_broadcast_system_PAL_M, 366 | NtscM = libcec_sys::cec_broadcast_system_NTSC_M, 367 | PalI = libcec_sys::cec_broadcast_system_PAL_I, 368 | SecamDk = libcec_sys::cec_broadcast_system_SECAM_DK, 369 | SecamBG = libcec_sys::cec_broadcast_system_SECAM_B_G, 370 | SecamL2 = libcec_sys::cec_broadcast_system_SECAM_L2, 371 | PalDk = libcec_sys::cec_broadcast_system_PAL_DK, 372 | OtherSystem = libcec_sys::cec_broadcast_system_OTHER_SYSTEM, 373 | } 374 | 375 | #[EnumRepr(type = "cec_user_control_code")] 376 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 377 | pub enum CecUserControlCode { 378 | Select = libcec_sys::cec_user_control_code_SELECT, 379 | Up = libcec_sys::cec_user_control_code_UP, 380 | Down = libcec_sys::cec_user_control_code_DOWN, 381 | Left = libcec_sys::cec_user_control_code_LEFT, 382 | Right = libcec_sys::cec_user_control_code_RIGHT, 383 | RightUp = libcec_sys::cec_user_control_code_RIGHT_UP, 384 | RightDown = libcec_sys::cec_user_control_code_RIGHT_DOWN, 385 | LeftUp = libcec_sys::cec_user_control_code_LEFT_UP, 386 | LeftDown = libcec_sys::cec_user_control_code_LEFT_DOWN, 387 | RootMenu = libcec_sys::cec_user_control_code_ROOT_MENU, 388 | SetupMenu = libcec_sys::cec_user_control_code_SETUP_MENU, 389 | ContentsMenu = libcec_sys::cec_user_control_code_CONTENTS_MENU, 390 | FavoriteMenu = libcec_sys::cec_user_control_code_FAVORITE_MENU, 391 | Exit = libcec_sys::cec_user_control_code_EXIT, 392 | TopMenu = libcec_sys::cec_user_control_code_TOP_MENU, 393 | DvdMenu = libcec_sys::cec_user_control_code_DVD_MENU, 394 | NumberEntryMode = libcec_sys::cec_user_control_code_NUMBER_ENTRY_MODE, 395 | Number11 = libcec_sys::cec_user_control_code_NUMBER11, 396 | Number12 = libcec_sys::cec_user_control_code_NUMBER12, 397 | Number0 = libcec_sys::cec_user_control_code_NUMBER0, 398 | Number1 = libcec_sys::cec_user_control_code_NUMBER1, 399 | Number2 = libcec_sys::cec_user_control_code_NUMBER2, 400 | Number3 = libcec_sys::cec_user_control_code_NUMBER3, 401 | Number4 = libcec_sys::cec_user_control_code_NUMBER4, 402 | Number5 = libcec_sys::cec_user_control_code_NUMBER5, 403 | Number6 = libcec_sys::cec_user_control_code_NUMBER6, 404 | Number7 = libcec_sys::cec_user_control_code_NUMBER7, 405 | Number8 = libcec_sys::cec_user_control_code_NUMBER8, 406 | Number9 = libcec_sys::cec_user_control_code_NUMBER9, 407 | Dot = libcec_sys::cec_user_control_code_DOT, 408 | Enter = libcec_sys::cec_user_control_code_ENTER, 409 | Clear = libcec_sys::cec_user_control_code_CLEAR, 410 | NextFavorite = libcec_sys::cec_user_control_code_NEXT_FAVORITE, 411 | ChannelUp = libcec_sys::cec_user_control_code_CHANNEL_UP, 412 | ChannelDown = libcec_sys::cec_user_control_code_CHANNEL_DOWN, 413 | PreviousChannel = libcec_sys::cec_user_control_code_PREVIOUS_CHANNEL, 414 | SoundSelect = libcec_sys::cec_user_control_code_SOUND_SELECT, 415 | InputSelect = libcec_sys::cec_user_control_code_INPUT_SELECT, 416 | DisplayInformation = libcec_sys::cec_user_control_code_DISPLAY_INFORMATION, 417 | Help = libcec_sys::cec_user_control_code_HELP, 418 | PageUp = libcec_sys::cec_user_control_code_PAGE_UP, 419 | PageDown = libcec_sys::cec_user_control_code_PAGE_DOWN, 420 | Power = libcec_sys::cec_user_control_code_POWER, 421 | VolumeUp = libcec_sys::cec_user_control_code_VOLUME_UP, 422 | VolumeDown = libcec_sys::cec_user_control_code_VOLUME_DOWN, 423 | Mute = libcec_sys::cec_user_control_code_MUTE, 424 | Play = libcec_sys::cec_user_control_code_PLAY, 425 | Stop = libcec_sys::cec_user_control_code_STOP, 426 | Pause = libcec_sys::cec_user_control_code_PAUSE, 427 | Record = libcec_sys::cec_user_control_code_RECORD, 428 | Rewind = libcec_sys::cec_user_control_code_REWIND, 429 | FastForward = libcec_sys::cec_user_control_code_FAST_FORWARD, 430 | Eject = libcec_sys::cec_user_control_code_EJECT, 431 | Forward = libcec_sys::cec_user_control_code_FORWARD, 432 | Backward = libcec_sys::cec_user_control_code_BACKWARD, 433 | StopRecord = libcec_sys::cec_user_control_code_STOP_RECORD, 434 | PauseRecord = libcec_sys::cec_user_control_code_PAUSE_RECORD, 435 | Angle = libcec_sys::cec_user_control_code_ANGLE, 436 | SubPicture = libcec_sys::cec_user_control_code_SUB_PICTURE, 437 | VideoOnDemand = libcec_sys::cec_user_control_code_VIDEO_ON_DEMAND, 438 | ElectronicProgramGuide = libcec_sys::cec_user_control_code_ELECTRONIC_PROGRAM_GUIDE, 439 | TimerProgramming = libcec_sys::cec_user_control_code_TIMER_PROGRAMMING, 440 | InitialConfiguration = libcec_sys::cec_user_control_code_INITIAL_CONFIGURATION, 441 | SelectBroadcastType = libcec_sys::cec_user_control_code_SELECT_BROADCAST_TYPE, 442 | SelectSoundPresentation = libcec_sys::cec_user_control_code_SELECT_SOUND_PRESENTATION, 443 | PlayFunction = libcec_sys::cec_user_control_code_PLAY_FUNCTION, 444 | PausePlayFunction = libcec_sys::cec_user_control_code_PAUSE_PLAY_FUNCTION, 445 | RecordFunction = libcec_sys::cec_user_control_code_RECORD_FUNCTION, 446 | PauseRecordFunction = libcec_sys::cec_user_control_code_PAUSE_RECORD_FUNCTION, 447 | StopFunction = libcec_sys::cec_user_control_code_STOP_FUNCTION, 448 | MuteFunction = libcec_sys::cec_user_control_code_MUTE_FUNCTION, 449 | RestoreVolumeFunction = libcec_sys::cec_user_control_code_RESTORE_VOLUME_FUNCTION, 450 | TuneFunction = libcec_sys::cec_user_control_code_TUNE_FUNCTION, 451 | SelectMediaFunction = libcec_sys::cec_user_control_code_SELECT_MEDIA_FUNCTION, 452 | SelectAvInputFunction = libcec_sys::cec_user_control_code_SELECT_AV_INPUT_FUNCTION, 453 | SelectAudioInputFunction = libcec_sys::cec_user_control_code_SELECT_AUDIO_INPUT_FUNCTION, 454 | PowerToggleFunction = libcec_sys::cec_user_control_code_POWER_TOGGLE_FUNCTION, 455 | PowerOffFunction = libcec_sys::cec_user_control_code_POWER_OFF_FUNCTION, 456 | PowerOnFunction = libcec_sys::cec_user_control_code_POWER_ON_FUNCTION, 457 | F1Blue = libcec_sys::cec_user_control_code_F1_BLUE, 458 | F2Red = libcec_sys::cec_user_control_code_F2_RED, 459 | F3Green = libcec_sys::cec_user_control_code_F3_GREEN, 460 | F4Yellow = libcec_sys::cec_user_control_code_F4_YELLOW, 461 | F5 = libcec_sys::cec_user_control_code_F5, 462 | Data = libcec_sys::cec_user_control_code_DATA, 463 | AnReturn = libcec_sys::cec_user_control_code_AN_RETURN, 464 | AnChannelsList = libcec_sys::cec_user_control_code_AN_CHANNELS_LIST, 465 | Unknown = libcec_sys::cec_user_control_code_UNKNOWN, 466 | } 467 | 468 | #[EnumRepr(type = "cec_logical_address")] 469 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 470 | pub enum CecLogicalAddress { 471 | Unknown = libcec_sys::cec_logical_address_UNKNOWN, 472 | Tv = libcec_sys::cec_logical_address_TV, 473 | Recordingdevice1 = libcec_sys::cec_logical_address_RECORDINGDEVICE1, 474 | Recordingdevice2 = libcec_sys::cec_logical_address_RECORDINGDEVICE2, 475 | Tuner1 = libcec_sys::cec_logical_address_TUNER1, 476 | Playbackdevice1 = libcec_sys::cec_logical_address_PLAYBACKDEVICE1, 477 | Audiosystem = libcec_sys::cec_logical_address_AUDIOSYSTEM, 478 | Tuner2 = libcec_sys::cec_logical_address_TUNER2, 479 | Tuner3 = libcec_sys::cec_logical_address_TUNER3, 480 | Playbackdevice2 = libcec_sys::cec_logical_address_PLAYBACKDEVICE2, 481 | Recordingdevice3 = libcec_sys::cec_logical_address_RECORDINGDEVICE3, 482 | Tuner4 = libcec_sys::cec_logical_address_TUNER4, 483 | Playbackdevice3 = libcec_sys::cec_logical_address_PLAYBACKDEVICE3, 484 | Reserved1 = libcec_sys::cec_logical_address_RESERVED1, 485 | Reserved2 = libcec_sys::cec_logical_address_RESERVED2, 486 | Freeuse = libcec_sys::cec_logical_address_FREEUSE, 487 | Unregistered = libcec_sys::cec_logical_address_UNREGISTERED, 488 | } 489 | #[EnumRepr(type = "cec_opcode")] 490 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 491 | pub enum CecOpcode { 492 | ActiveSource = libcec_sys::cec_opcode_ACTIVE_SOURCE, 493 | ImageViewOn = libcec_sys::cec_opcode_IMAGE_VIEW_ON, 494 | TextViewOn = libcec_sys::cec_opcode_TEXT_VIEW_ON, 495 | InactiveSource = libcec_sys::cec_opcode_INACTIVE_SOURCE, 496 | RequestActiveSource = libcec_sys::cec_opcode_REQUEST_ACTIVE_SOURCE, 497 | RoutingChange = libcec_sys::cec_opcode_ROUTING_CHANGE, 498 | RoutingInformation = libcec_sys::cec_opcode_ROUTING_INFORMATION, 499 | SetStreamPath = libcec_sys::cec_opcode_SET_STREAM_PATH, 500 | Standby = libcec_sys::cec_opcode_STANDBY, 501 | RecordOff = libcec_sys::cec_opcode_RECORD_OFF, 502 | RecordOn = libcec_sys::cec_opcode_RECORD_ON, 503 | RecordStatus = libcec_sys::cec_opcode_RECORD_STATUS, 504 | RecordTvScreen = libcec_sys::cec_opcode_RECORD_TV_SCREEN, 505 | ClearAnalogueTimer = libcec_sys::cec_opcode_CLEAR_ANALOGUE_TIMER, 506 | ClearDigitalTimer = libcec_sys::cec_opcode_CLEAR_DIGITAL_TIMER, 507 | ClearExternalTimer = libcec_sys::cec_opcode_CLEAR_EXTERNAL_TIMER, 508 | SetAnalogueTimer = libcec_sys::cec_opcode_SET_ANALOGUE_TIMER, 509 | SetDigitalTimer = libcec_sys::cec_opcode_SET_DIGITAL_TIMER, 510 | SetExternalTimer = libcec_sys::cec_opcode_SET_EXTERNAL_TIMER, 511 | SetTimerProgramTitle = libcec_sys::cec_opcode_SET_TIMER_PROGRAM_TITLE, 512 | TimerClearedStatus = libcec_sys::cec_opcode_TIMER_CLEARED_STATUS, 513 | TimerStatus = libcec_sys::cec_opcode_TIMER_STATUS, 514 | CecVersion = libcec_sys::cec_opcode_CEC_VERSION, 515 | GetCecVersion = libcec_sys::cec_opcode_GET_CEC_VERSION, 516 | GivePhysicalAddress = libcec_sys::cec_opcode_GIVE_PHYSICAL_ADDRESS, 517 | GetMenuLanguage = libcec_sys::cec_opcode_GET_MENU_LANGUAGE, 518 | ReportPhysicalAddress = libcec_sys::cec_opcode_REPORT_PHYSICAL_ADDRESS, 519 | SetMenuLanguage = libcec_sys::cec_opcode_SET_MENU_LANGUAGE, 520 | DeckControl = libcec_sys::cec_opcode_DECK_CONTROL, 521 | DeckStatus = libcec_sys::cec_opcode_DECK_STATUS, 522 | GiveDeckStatus = libcec_sys::cec_opcode_GIVE_DECK_STATUS, 523 | Play = libcec_sys::cec_opcode_PLAY, 524 | GiveTunerDeviceStatus = libcec_sys::cec_opcode_GIVE_TUNER_DEVICE_STATUS, 525 | SelectAnalogueService = libcec_sys::cec_opcode_SELECT_ANALOGUE_SERVICE, 526 | SelectDigitalService = libcec_sys::cec_opcode_SELECT_DIGITAL_SERVICE, 527 | TunerDeviceStatus = libcec_sys::cec_opcode_TUNER_DEVICE_STATUS, 528 | TunerStepDecrement = libcec_sys::cec_opcode_TUNER_STEP_DECREMENT, 529 | TunerStepIncrement = libcec_sys::cec_opcode_TUNER_STEP_INCREMENT, 530 | DeviceVendorId = libcec_sys::cec_opcode_DEVICE_VENDOR_ID, 531 | GiveDeviceVendorId = libcec_sys::cec_opcode_GIVE_DEVICE_VENDOR_ID, 532 | VendorCommand = libcec_sys::cec_opcode_VENDOR_COMMAND, 533 | VendorCommandWithId = libcec_sys::cec_opcode_VENDOR_COMMAND_WITH_ID, 534 | VendorRemoteButtonDown = libcec_sys::cec_opcode_VENDOR_REMOTE_BUTTON_DOWN, 535 | VendorRemoteButtonUp = libcec_sys::cec_opcode_VENDOR_REMOTE_BUTTON_UP, 536 | SetOsdString = libcec_sys::cec_opcode_SET_OSD_STRING, 537 | GiveOsdName = libcec_sys::cec_opcode_GIVE_OSD_NAME, 538 | SetOsdName = libcec_sys::cec_opcode_SET_OSD_NAME, 539 | MenuRequest = libcec_sys::cec_opcode_MENU_REQUEST, 540 | MenuStatus = libcec_sys::cec_opcode_MENU_STATUS, 541 | UserControlPressed = libcec_sys::cec_opcode_USER_CONTROL_PRESSED, 542 | UserControlRelease = libcec_sys::cec_opcode_USER_CONTROL_RELEASE, 543 | GiveDevicePowerStatus = libcec_sys::cec_opcode_GIVE_DEVICE_POWER_STATUS, 544 | ReportPowerStatus = libcec_sys::cec_opcode_REPORT_POWER_STATUS, 545 | FeatureAbort = libcec_sys::cec_opcode_FEATURE_ABORT, 546 | Abort = libcec_sys::cec_opcode_ABORT, 547 | GiveAudioStatus = libcec_sys::cec_opcode_GIVE_AUDIO_STATUS, 548 | GiveSystemAudioModeStatus = libcec_sys::cec_opcode_GIVE_SYSTEM_AUDIO_MODE_STATUS, 549 | ReportAudioStatus = libcec_sys::cec_opcode_REPORT_AUDIO_STATUS, 550 | SetSystemAudioMode = libcec_sys::cec_opcode_SET_SYSTEM_AUDIO_MODE, 551 | SystemAudioModeRequest = libcec_sys::cec_opcode_SYSTEM_AUDIO_MODE_REQUEST, 552 | SystemAudioModeStatus = libcec_sys::cec_opcode_SYSTEM_AUDIO_MODE_STATUS, 553 | SetAudioRate = libcec_sys::cec_opcode_SET_AUDIO_RATE, 554 | ReportShortAudioDescriptors = libcec_sys::cec_opcode_REPORT_SHORT_AUDIO_DESCRIPTORS, 555 | RequestShortAudioDescriptors = libcec_sys::cec_opcode_REQUEST_SHORT_AUDIO_DESCRIPTORS, 556 | StartArc = libcec_sys::cec_opcode_START_ARC, 557 | ReportArcStarted = libcec_sys::cec_opcode_REPORT_ARC_STARTED, 558 | ReportArcEnded = libcec_sys::cec_opcode_REPORT_ARC_ENDED, 559 | RequestArcStart = libcec_sys::cec_opcode_REQUEST_ARC_START, 560 | RequestArcEnd = libcec_sys::cec_opcode_REQUEST_ARC_END, 561 | EndArc = libcec_sys::cec_opcode_END_ARC, 562 | Cdc = libcec_sys::cec_opcode_CDC, 563 | None = libcec_sys::cec_opcode_NONE, 564 | } 565 | #[EnumRepr(type = "cec_log_level")] 566 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 567 | pub enum CecLogLevel { 568 | Error = libcec_sys::cec_log_level_CEC_LOG_ERROR, 569 | Warning = libcec_sys::cec_log_level_CEC_LOG_WARNING, 570 | Notice = libcec_sys::cec_log_level_CEC_LOG_NOTICE, 571 | Traffic = libcec_sys::cec_log_level_CEC_LOG_TRAFFIC, 572 | Debug = libcec_sys::cec_log_level_CEC_LOG_DEBUG, 573 | All = libcec_sys::cec_log_level_CEC_LOG_ALL, 574 | } 575 | #[EnumRepr(type = "cec_bus_device_status")] 576 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 577 | pub enum CecBusDeviceStatus { 578 | Unknown = libcec_sys::cec_bus_device_status_UNKNOWN, 579 | Present = libcec_sys::cec_bus_device_status_PRESENT, 580 | NotPresent = libcec_sys::cec_bus_device_status_NOT_PRESENT, 581 | HandledByLibcec = libcec_sys::cec_bus_device_status_HANDLED_BY_LIBCEC, 582 | } 583 | #[EnumRepr(type = "cec_vendor_id")] 584 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 585 | pub enum CecVendorId { 586 | Toshiba = libcec_sys::cec_vendor_id_TOSHIBA, 587 | Samsung = libcec_sys::cec_vendor_id_SAMSUNG, 588 | Denon = libcec_sys::cec_vendor_id_DENON, 589 | Marantz = libcec_sys::cec_vendor_id_MARANTZ, 590 | Loewe = libcec_sys::cec_vendor_id_LOEWE, 591 | Onkyo = libcec_sys::cec_vendor_id_ONKYO, 592 | Medion = libcec_sys::cec_vendor_id_MEDION, 593 | Toshiba2 = libcec_sys::cec_vendor_id_TOSHIBA2, 594 | Apple = libcec_sys::cec_vendor_id_APPLE, 595 | PulseEight = libcec_sys::cec_vendor_id_PULSE_EIGHT, 596 | HarmanKardon2 = libcec_sys::cec_vendor_id_HARMAN_KARDON2, 597 | Google = libcec_sys::cec_vendor_id_GOOGLE, 598 | Akai = libcec_sys::cec_vendor_id_AKAI, 599 | Aoc = libcec_sys::cec_vendor_id_AOC, 600 | Panasonic = libcec_sys::cec_vendor_id_PANASONIC, 601 | Philips = libcec_sys::cec_vendor_id_PHILIPS, 602 | Daewoo = libcec_sys::cec_vendor_id_DAEWOO, 603 | Yamaha = libcec_sys::cec_vendor_id_YAMAHA, 604 | Grundig = libcec_sys::cec_vendor_id_GRUNDIG, 605 | Pioneer = libcec_sys::cec_vendor_id_PIONEER, 606 | Lg = libcec_sys::cec_vendor_id_LG, 607 | Sharp = libcec_sys::cec_vendor_id_SHARP, 608 | Sony = libcec_sys::cec_vendor_id_SONY, 609 | Broadcom = libcec_sys::cec_vendor_id_BROADCOM, 610 | Sharp2 = libcec_sys::cec_vendor_id_SHARP2, 611 | Vizio = libcec_sys::cec_vendor_id_VIZIO, 612 | Benq = libcec_sys::cec_vendor_id_BENQ, 613 | HarmanKardon = libcec_sys::cec_vendor_id_HARMAN_KARDON, 614 | Unknown = libcec_sys::cec_vendor_id_UNKNOWN, 615 | } 616 | 617 | // 618 | // Due to EnumRepr, cannot use #[cfg(abi6)] inside the enum 619 | // Hence, repeating the CecAdapterType enum with two cfg's 620 | // 621 | 622 | #[EnumRepr(type = "cec_adapter_type")] 623 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 624 | #[cfg(not(abi7))] 625 | pub enum CecAdapterType { 626 | Unknown = libcec_sys::cec_adapter_type_UNKNOWN, 627 | P8External = libcec_sys::cec_adapter_type_P8_EXTERNAL, 628 | P8Daughterboard = libcec_sys::cec_adapter_type_P8_DAUGHTERBOARD, 629 | Rpi = libcec_sys::cec_adapter_type_RPI, 630 | Tda995x = libcec_sys::cec_adapter_type_TDA995x, 631 | Exynos = libcec_sys::cec_adapter_type_EXYNOS, 632 | Linux = libcec_sys::cec_adapter_type_LINUX, 633 | Aocec = libcec_sys::cec_adapter_type_AOCEC, 634 | Imx = libcec_sys::cec_adapter_type_IMX, 635 | } 636 | #[EnumRepr(type = "cec_adapter_type")] 637 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 638 | #[cfg(abi7)] 639 | pub enum CecAdapterType { 640 | Unknown = libcec_sys::cec_adapter_type_UNKNOWN, 641 | P8External = libcec_sys::cec_adapter_type_P8_EXTERNAL, 642 | P8Daughterboard = libcec_sys::cec_adapter_type_P8_DAUGHTERBOARD, 643 | Rpi = libcec_sys::cec_adapter_type_RPI, 644 | Tda995x = libcec_sys::cec_adapter_type_TDA995x, 645 | Exynos = libcec_sys::cec_adapter_type_EXYNOS, 646 | Linux = libcec_sys::cec_adapter_type_LINUX, 647 | Aocec = libcec_sys::cec_adapter_type_AOCEC, 648 | Imx = libcec_sys::cec_adapter_type_IMX, 649 | Tegra = libcec_sys::cec_adapter_type_TEGRA, 650 | } 651 | 652 | #[EnumRepr(type = "libcec_version")] 653 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 654 | pub enum LibcecVersion { 655 | Current = libcec_sys::libcec_version_CURRENT, 656 | } 657 | #[EnumRepr(type = "libcec_alert")] 658 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 659 | pub enum LibcecAlert { 660 | ServiceDevice = libcec_sys::libcec_alert_SERVICE_DEVICE, 661 | ConnectionLost = libcec_sys::libcec_alert_CONNECTION_LOST, 662 | PermissionError = libcec_sys::libcec_alert_PERMISSION_ERROR, 663 | PortBusy = libcec_sys::libcec_alert_PORT_BUSY, 664 | PhysicalAddressError = libcec_sys::libcec_alert_PHYSICAL_ADDRESS_ERROR, 665 | TvPollFailed = libcec_sys::libcec_alert_TV_POLL_FAILED, 666 | } 667 | #[EnumRepr(type = "libcec_parameter_type")] 668 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] 669 | pub enum LibcecParameterType { 670 | String = libcec_sys::libcec_parameter_type_STRING, 671 | Unkown = libcec_sys::libcec_parameter_type_UNKOWN, 672 | } 673 | -------------------------------------------------------------------------------- /examples/cec-example-cli/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.24.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler2" 16 | version = "2.0.0" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 19 | 20 | [[package]] 21 | name = "aes" 22 | version = "0.8.4" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" 25 | dependencies = [ 26 | "cfg-if", 27 | "cipher", 28 | "cpufeatures", 29 | ] 30 | 31 | [[package]] 32 | name = "aho-corasick" 33 | version = "1.1.3" 34 | source = "registry+https://github.com/rust-lang/crates.io-index" 35 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 36 | dependencies = [ 37 | "memchr", 38 | ] 39 | 40 | [[package]] 41 | name = "arrayvec" 42 | version = "0.7.6" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 45 | 46 | [[package]] 47 | name = "autocfg" 48 | version = "1.4.0" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 51 | 52 | [[package]] 53 | name = "backtrace" 54 | version = "0.3.74" 55 | source = "registry+https://github.com/rust-lang/crates.io-index" 56 | checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" 57 | dependencies = [ 58 | "addr2line", 59 | "cfg-if", 60 | "libc", 61 | "miniz_oxide", 62 | "object", 63 | "rustc-demangle", 64 | "windows-targets 0.52.6", 65 | ] 66 | 67 | [[package]] 68 | name = "base64" 69 | version = "0.22.1" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 72 | 73 | [[package]] 74 | name = "base64ct" 75 | version = "1.7.3" 76 | source = "registry+https://github.com/rust-lang/crates.io-index" 77 | checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" 78 | 79 | [[package]] 80 | name = "bitflags" 81 | version = "2.9.0" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" 84 | 85 | [[package]] 86 | name = "block-buffer" 87 | version = "0.10.4" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 90 | dependencies = [ 91 | "generic-array", 92 | ] 93 | 94 | [[package]] 95 | name = "bumpalo" 96 | version = "3.17.0" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" 99 | 100 | [[package]] 101 | name = "byteorder" 102 | version = "1.5.0" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 105 | 106 | [[package]] 107 | name = "bytes" 108 | version = "1.10.1" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 111 | 112 | [[package]] 113 | name = "bzip2" 114 | version = "0.4.4" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" 117 | dependencies = [ 118 | "bzip2-sys", 119 | "libc", 120 | ] 121 | 122 | [[package]] 123 | name = "bzip2-sys" 124 | version = "0.1.13+1.0.8" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" 127 | dependencies = [ 128 | "cc", 129 | "pkg-config", 130 | ] 131 | 132 | [[package]] 133 | name = "cc" 134 | version = "1.2.19" 135 | source = "registry+https://github.com/rust-lang/crates.io-index" 136 | checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" 137 | dependencies = [ 138 | "jobserver", 139 | "libc", 140 | "shlex", 141 | ] 142 | 143 | [[package]] 144 | name = "cec-example-cli" 145 | version = "0.1.0" 146 | dependencies = [ 147 | "cec-rs", 148 | "env_logger", 149 | "log", 150 | ] 151 | 152 | [[package]] 153 | name = "cec-rs" 154 | version = "12.0.0-alpha.0" 155 | dependencies = [ 156 | "arrayvec", 157 | "derive_builder", 158 | "enum-repr", 159 | "libcec-sys", 160 | "log", 161 | "num-traits", 162 | ] 163 | 164 | [[package]] 165 | name = "cfg-if" 166 | version = "1.0.0" 167 | source = "registry+https://github.com/rust-lang/crates.io-index" 168 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 169 | 170 | [[package]] 171 | name = "cfg_aliases" 172 | version = "0.2.1" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 175 | 176 | [[package]] 177 | name = "cipher" 178 | version = "0.4.4" 179 | source = "registry+https://github.com/rust-lang/crates.io-index" 180 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 181 | dependencies = [ 182 | "crypto-common", 183 | "inout", 184 | ] 185 | 186 | [[package]] 187 | name = "cmake" 188 | version = "0.1.54" 189 | source = "registry+https://github.com/rust-lang/crates.io-index" 190 | checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" 191 | dependencies = [ 192 | "cc", 193 | ] 194 | 195 | [[package]] 196 | name = "constant_time_eq" 197 | version = "0.1.5" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 200 | 201 | [[package]] 202 | name = "cpufeatures" 203 | version = "0.2.17" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 206 | dependencies = [ 207 | "libc", 208 | ] 209 | 210 | [[package]] 211 | name = "crc32fast" 212 | version = "1.4.2" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 215 | dependencies = [ 216 | "cfg-if", 217 | ] 218 | 219 | [[package]] 220 | name = "crossbeam-utils" 221 | version = "0.8.21" 222 | source = "registry+https://github.com/rust-lang/crates.io-index" 223 | checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 224 | 225 | [[package]] 226 | name = "crypto-common" 227 | version = "0.1.6" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 230 | dependencies = [ 231 | "generic-array", 232 | "typenum", 233 | ] 234 | 235 | [[package]] 236 | name = "darling" 237 | version = "0.12.4" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c" 240 | dependencies = [ 241 | "darling_core", 242 | "darling_macro", 243 | ] 244 | 245 | [[package]] 246 | name = "darling_core" 247 | version = "0.12.4" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "8e91455b86830a1c21799d94524df0845183fa55bafd9aa137b01c7d1065fa36" 250 | dependencies = [ 251 | "fnv", 252 | "ident_case", 253 | "proc-macro2", 254 | "quote", 255 | "strsim", 256 | "syn 1.0.109", 257 | ] 258 | 259 | [[package]] 260 | name = "darling_macro" 261 | version = "0.12.4" 262 | source = "registry+https://github.com/rust-lang/crates.io-index" 263 | checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a" 264 | dependencies = [ 265 | "darling_core", 266 | "quote", 267 | "syn 1.0.109", 268 | ] 269 | 270 | [[package]] 271 | name = "derive_builder" 272 | version = "0.10.2" 273 | source = "registry+https://github.com/rust-lang/crates.io-index" 274 | checksum = "d13202debe11181040ae9063d739fa32cfcaaebe2275fe387703460ae2365b30" 275 | dependencies = [ 276 | "derive_builder_macro", 277 | ] 278 | 279 | [[package]] 280 | name = "derive_builder_core" 281 | version = "0.10.2" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | checksum = "66e616858f6187ed828df7c64a6d71720d83767a7f19740b2d1b6fe6327b36e5" 284 | dependencies = [ 285 | "darling", 286 | "proc-macro2", 287 | "quote", 288 | "syn 1.0.109", 289 | ] 290 | 291 | [[package]] 292 | name = "derive_builder_macro" 293 | version = "0.10.2" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | checksum = "58a94ace95092c5acb1e97a7e846b310cfbd499652f72297da7493f618a98d73" 296 | dependencies = [ 297 | "derive_builder_core", 298 | "syn 1.0.109", 299 | ] 300 | 301 | [[package]] 302 | name = "digest" 303 | version = "0.10.7" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 306 | dependencies = [ 307 | "block-buffer", 308 | "crypto-common", 309 | "subtle", 310 | ] 311 | 312 | [[package]] 313 | name = "displaydoc" 314 | version = "0.2.5" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 317 | dependencies = [ 318 | "proc-macro2", 319 | "quote", 320 | "syn 2.0.100", 321 | ] 322 | 323 | [[package]] 324 | name = "enum-repr" 325 | version = "0.2.6" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "bad30c9c0fa1aaf1ae5010dab11f1117b15d35faf62cda4bbbc53b9987950f18" 328 | dependencies = [ 329 | "proc-macro2", 330 | "quote", 331 | "syn 1.0.109", 332 | ] 333 | 334 | [[package]] 335 | name = "env_logger" 336 | version = "0.10.2" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" 339 | dependencies = [ 340 | "humantime", 341 | "is-terminal", 342 | "log", 343 | "regex", 344 | "termcolor", 345 | ] 346 | 347 | [[package]] 348 | name = "flate2" 349 | version = "1.1.1" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" 352 | dependencies = [ 353 | "crc32fast", 354 | "miniz_oxide", 355 | ] 356 | 357 | [[package]] 358 | name = "fnv" 359 | version = "1.0.7" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 362 | 363 | [[package]] 364 | name = "form_urlencoded" 365 | version = "1.2.1" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 368 | dependencies = [ 369 | "percent-encoding", 370 | ] 371 | 372 | [[package]] 373 | name = "fs_extra" 374 | version = "1.3.0" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" 377 | 378 | [[package]] 379 | name = "futures-channel" 380 | version = "0.3.31" 381 | source = "registry+https://github.com/rust-lang/crates.io-index" 382 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 383 | dependencies = [ 384 | "futures-core", 385 | "futures-sink", 386 | ] 387 | 388 | [[package]] 389 | name = "futures-core" 390 | version = "0.3.31" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 393 | 394 | [[package]] 395 | name = "futures-io" 396 | version = "0.3.31" 397 | source = "registry+https://github.com/rust-lang/crates.io-index" 398 | checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 399 | 400 | [[package]] 401 | name = "futures-sink" 402 | version = "0.3.31" 403 | source = "registry+https://github.com/rust-lang/crates.io-index" 404 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 405 | 406 | [[package]] 407 | name = "futures-task" 408 | version = "0.3.31" 409 | source = "registry+https://github.com/rust-lang/crates.io-index" 410 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 411 | 412 | [[package]] 413 | name = "futures-util" 414 | version = "0.3.31" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 417 | dependencies = [ 418 | "futures-core", 419 | "futures-io", 420 | "futures-sink", 421 | "futures-task", 422 | "memchr", 423 | "pin-project-lite", 424 | "pin-utils", 425 | "slab", 426 | ] 427 | 428 | [[package]] 429 | name = "generic-array" 430 | version = "0.14.7" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 433 | dependencies = [ 434 | "typenum", 435 | "version_check", 436 | ] 437 | 438 | [[package]] 439 | name = "getrandom" 440 | version = "0.2.15" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 443 | dependencies = [ 444 | "cfg-if", 445 | "js-sys", 446 | "libc", 447 | "wasi 0.11.0+wasi-snapshot-preview1", 448 | "wasm-bindgen", 449 | ] 450 | 451 | [[package]] 452 | name = "getrandom" 453 | version = "0.3.2" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" 456 | dependencies = [ 457 | "cfg-if", 458 | "js-sys", 459 | "libc", 460 | "r-efi", 461 | "wasi 0.14.2+wasi-0.2.4", 462 | "wasm-bindgen", 463 | ] 464 | 465 | [[package]] 466 | name = "gimli" 467 | version = "0.31.1" 468 | source = "registry+https://github.com/rust-lang/crates.io-index" 469 | checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 470 | 471 | [[package]] 472 | name = "hermit-abi" 473 | version = "0.5.0" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" 476 | 477 | [[package]] 478 | name = "hmac" 479 | version = "0.12.1" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 482 | dependencies = [ 483 | "digest", 484 | ] 485 | 486 | [[package]] 487 | name = "http" 488 | version = "1.3.1" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 491 | dependencies = [ 492 | "bytes", 493 | "fnv", 494 | "itoa", 495 | ] 496 | 497 | [[package]] 498 | name = "http-body" 499 | version = "1.0.1" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 502 | dependencies = [ 503 | "bytes", 504 | "http", 505 | ] 506 | 507 | [[package]] 508 | name = "http-body-util" 509 | version = "0.1.3" 510 | source = "registry+https://github.com/rust-lang/crates.io-index" 511 | checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 512 | dependencies = [ 513 | "bytes", 514 | "futures-core", 515 | "http", 516 | "http-body", 517 | "pin-project-lite", 518 | ] 519 | 520 | [[package]] 521 | name = "httparse" 522 | version = "1.10.1" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 525 | 526 | [[package]] 527 | name = "humantime" 528 | version = "2.2.0" 529 | source = "registry+https://github.com/rust-lang/crates.io-index" 530 | checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" 531 | 532 | [[package]] 533 | name = "hyper" 534 | version = "1.6.0" 535 | source = "registry+https://github.com/rust-lang/crates.io-index" 536 | checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" 537 | dependencies = [ 538 | "bytes", 539 | "futures-channel", 540 | "futures-util", 541 | "http", 542 | "http-body", 543 | "httparse", 544 | "itoa", 545 | "pin-project-lite", 546 | "smallvec", 547 | "tokio", 548 | "want", 549 | ] 550 | 551 | [[package]] 552 | name = "hyper-rustls" 553 | version = "0.27.5" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" 556 | dependencies = [ 557 | "futures-util", 558 | "http", 559 | "hyper", 560 | "hyper-util", 561 | "rustls", 562 | "rustls-pki-types", 563 | "tokio", 564 | "tokio-rustls", 565 | "tower-service", 566 | "webpki-roots", 567 | ] 568 | 569 | [[package]] 570 | name = "hyper-util" 571 | version = "0.1.11" 572 | source = "registry+https://github.com/rust-lang/crates.io-index" 573 | checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" 574 | dependencies = [ 575 | "bytes", 576 | "futures-channel", 577 | "futures-util", 578 | "http", 579 | "http-body", 580 | "hyper", 581 | "libc", 582 | "pin-project-lite", 583 | "socket2", 584 | "tokio", 585 | "tower-service", 586 | "tracing", 587 | ] 588 | 589 | [[package]] 590 | name = "icu_collections" 591 | version = "1.5.0" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" 594 | dependencies = [ 595 | "displaydoc", 596 | "yoke", 597 | "zerofrom", 598 | "zerovec", 599 | ] 600 | 601 | [[package]] 602 | name = "icu_locid" 603 | version = "1.5.0" 604 | source = "registry+https://github.com/rust-lang/crates.io-index" 605 | checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" 606 | dependencies = [ 607 | "displaydoc", 608 | "litemap", 609 | "tinystr", 610 | "writeable", 611 | "zerovec", 612 | ] 613 | 614 | [[package]] 615 | name = "icu_locid_transform" 616 | version = "1.5.0" 617 | source = "registry+https://github.com/rust-lang/crates.io-index" 618 | checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" 619 | dependencies = [ 620 | "displaydoc", 621 | "icu_locid", 622 | "icu_locid_transform_data", 623 | "icu_provider", 624 | "tinystr", 625 | "zerovec", 626 | ] 627 | 628 | [[package]] 629 | name = "icu_locid_transform_data" 630 | version = "1.5.1" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" 633 | 634 | [[package]] 635 | name = "icu_normalizer" 636 | version = "1.5.0" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" 639 | dependencies = [ 640 | "displaydoc", 641 | "icu_collections", 642 | "icu_normalizer_data", 643 | "icu_properties", 644 | "icu_provider", 645 | "smallvec", 646 | "utf16_iter", 647 | "utf8_iter", 648 | "write16", 649 | "zerovec", 650 | ] 651 | 652 | [[package]] 653 | name = "icu_normalizer_data" 654 | version = "1.5.1" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" 657 | 658 | [[package]] 659 | name = "icu_properties" 660 | version = "1.5.1" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" 663 | dependencies = [ 664 | "displaydoc", 665 | "icu_collections", 666 | "icu_locid_transform", 667 | "icu_properties_data", 668 | "icu_provider", 669 | "tinystr", 670 | "zerovec", 671 | ] 672 | 673 | [[package]] 674 | name = "icu_properties_data" 675 | version = "1.5.1" 676 | source = "registry+https://github.com/rust-lang/crates.io-index" 677 | checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" 678 | 679 | [[package]] 680 | name = "icu_provider" 681 | version = "1.5.0" 682 | source = "registry+https://github.com/rust-lang/crates.io-index" 683 | checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" 684 | dependencies = [ 685 | "displaydoc", 686 | "icu_locid", 687 | "icu_provider_macros", 688 | "stable_deref_trait", 689 | "tinystr", 690 | "writeable", 691 | "yoke", 692 | "zerofrom", 693 | "zerovec", 694 | ] 695 | 696 | [[package]] 697 | name = "icu_provider_macros" 698 | version = "1.5.0" 699 | source = "registry+https://github.com/rust-lang/crates.io-index" 700 | checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" 701 | dependencies = [ 702 | "proc-macro2", 703 | "quote", 704 | "syn 2.0.100", 705 | ] 706 | 707 | [[package]] 708 | name = "ident_case" 709 | version = "1.0.1" 710 | source = "registry+https://github.com/rust-lang/crates.io-index" 711 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 712 | 713 | [[package]] 714 | name = "idna" 715 | version = "1.0.3" 716 | source = "registry+https://github.com/rust-lang/crates.io-index" 717 | checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 718 | dependencies = [ 719 | "idna_adapter", 720 | "smallvec", 721 | "utf8_iter", 722 | ] 723 | 724 | [[package]] 725 | name = "idna_adapter" 726 | version = "1.2.0" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" 729 | dependencies = [ 730 | "icu_normalizer", 731 | "icu_properties", 732 | ] 733 | 734 | [[package]] 735 | name = "inout" 736 | version = "0.1.4" 737 | source = "registry+https://github.com/rust-lang/crates.io-index" 738 | checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" 739 | dependencies = [ 740 | "generic-array", 741 | ] 742 | 743 | [[package]] 744 | name = "ipnet" 745 | version = "2.11.0" 746 | source = "registry+https://github.com/rust-lang/crates.io-index" 747 | checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 748 | 749 | [[package]] 750 | name = "is-terminal" 751 | version = "0.4.16" 752 | source = "registry+https://github.com/rust-lang/crates.io-index" 753 | checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" 754 | dependencies = [ 755 | "hermit-abi", 756 | "libc", 757 | "windows-sys 0.59.0", 758 | ] 759 | 760 | [[package]] 761 | name = "itoa" 762 | version = "1.0.15" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 765 | 766 | [[package]] 767 | name = "jobserver" 768 | version = "0.1.33" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" 771 | dependencies = [ 772 | "getrandom 0.3.2", 773 | "libc", 774 | ] 775 | 776 | [[package]] 777 | name = "js-sys" 778 | version = "0.3.77" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 781 | dependencies = [ 782 | "once_cell", 783 | "wasm-bindgen", 784 | ] 785 | 786 | [[package]] 787 | name = "libc" 788 | version = "0.2.171" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" 791 | 792 | [[package]] 793 | name = "libcec-sys" 794 | version = "8.0.0" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "9ff218b03ad6aa23d4a85cef83914ab31d0acc65ddf9e9219b72369065f01393" 797 | dependencies = [ 798 | "cc", 799 | "cfg-if", 800 | "cmake", 801 | "fs_extra", 802 | "pkg-config", 803 | "reqwest", 804 | "target-lexicon", 805 | "zip-extract", 806 | ] 807 | 808 | [[package]] 809 | name = "litemap" 810 | version = "0.7.5" 811 | source = "registry+https://github.com/rust-lang/crates.io-index" 812 | checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" 813 | 814 | [[package]] 815 | name = "log" 816 | version = "0.4.27" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 819 | 820 | [[package]] 821 | name = "memchr" 822 | version = "2.7.4" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 825 | 826 | [[package]] 827 | name = "mime" 828 | version = "0.3.17" 829 | source = "registry+https://github.com/rust-lang/crates.io-index" 830 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 831 | 832 | [[package]] 833 | name = "miniz_oxide" 834 | version = "0.8.8" 835 | source = "registry+https://github.com/rust-lang/crates.io-index" 836 | checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" 837 | dependencies = [ 838 | "adler2", 839 | ] 840 | 841 | [[package]] 842 | name = "mio" 843 | version = "1.0.3" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" 846 | dependencies = [ 847 | "libc", 848 | "wasi 0.11.0+wasi-snapshot-preview1", 849 | "windows-sys 0.52.0", 850 | ] 851 | 852 | [[package]] 853 | name = "num-traits" 854 | version = "0.2.19" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 857 | dependencies = [ 858 | "autocfg", 859 | ] 860 | 861 | [[package]] 862 | name = "object" 863 | version = "0.36.7" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 866 | dependencies = [ 867 | "memchr", 868 | ] 869 | 870 | [[package]] 871 | name = "once_cell" 872 | version = "1.21.3" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 875 | 876 | [[package]] 877 | name = "password-hash" 878 | version = "0.4.2" 879 | source = "registry+https://github.com/rust-lang/crates.io-index" 880 | checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" 881 | dependencies = [ 882 | "base64ct", 883 | "rand_core 0.6.4", 884 | "subtle", 885 | ] 886 | 887 | [[package]] 888 | name = "pbkdf2" 889 | version = "0.11.0" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 892 | dependencies = [ 893 | "digest", 894 | "hmac", 895 | "password-hash", 896 | "sha2", 897 | ] 898 | 899 | [[package]] 900 | name = "percent-encoding" 901 | version = "2.3.1" 902 | source = "registry+https://github.com/rust-lang/crates.io-index" 903 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 904 | 905 | [[package]] 906 | name = "pin-project-lite" 907 | version = "0.2.16" 908 | source = "registry+https://github.com/rust-lang/crates.io-index" 909 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 910 | 911 | [[package]] 912 | name = "pin-utils" 913 | version = "0.1.0" 914 | source = "registry+https://github.com/rust-lang/crates.io-index" 915 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 916 | 917 | [[package]] 918 | name = "pkg-config" 919 | version = "0.3.32" 920 | source = "registry+https://github.com/rust-lang/crates.io-index" 921 | checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 922 | 923 | [[package]] 924 | name = "ppv-lite86" 925 | version = "0.2.21" 926 | source = "registry+https://github.com/rust-lang/crates.io-index" 927 | checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 928 | dependencies = [ 929 | "zerocopy", 930 | ] 931 | 932 | [[package]] 933 | name = "proc-macro2" 934 | version = "1.0.94" 935 | source = "registry+https://github.com/rust-lang/crates.io-index" 936 | checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" 937 | dependencies = [ 938 | "unicode-ident", 939 | ] 940 | 941 | [[package]] 942 | name = "quinn" 943 | version = "0.11.7" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012" 946 | dependencies = [ 947 | "bytes", 948 | "cfg_aliases", 949 | "pin-project-lite", 950 | "quinn-proto", 951 | "quinn-udp", 952 | "rustc-hash", 953 | "rustls", 954 | "socket2", 955 | "thiserror 2.0.12", 956 | "tokio", 957 | "tracing", 958 | "web-time", 959 | ] 960 | 961 | [[package]] 962 | name = "quinn-proto" 963 | version = "0.11.10" 964 | source = "registry+https://github.com/rust-lang/crates.io-index" 965 | checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc" 966 | dependencies = [ 967 | "bytes", 968 | "getrandom 0.3.2", 969 | "rand", 970 | "ring", 971 | "rustc-hash", 972 | "rustls", 973 | "rustls-pki-types", 974 | "slab", 975 | "thiserror 2.0.12", 976 | "tinyvec", 977 | "tracing", 978 | "web-time", 979 | ] 980 | 981 | [[package]] 982 | name = "quinn-udp" 983 | version = "0.5.11" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | checksum = "541d0f57c6ec747a90738a52741d3221f7960e8ac2f0ff4b1a63680e033b4ab5" 986 | dependencies = [ 987 | "cfg_aliases", 988 | "libc", 989 | "once_cell", 990 | "socket2", 991 | "tracing", 992 | "windows-sys 0.59.0", 993 | ] 994 | 995 | [[package]] 996 | name = "quote" 997 | version = "1.0.40" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 1000 | dependencies = [ 1001 | "proc-macro2", 1002 | ] 1003 | 1004 | [[package]] 1005 | name = "r-efi" 1006 | version = "5.2.0" 1007 | source = "registry+https://github.com/rust-lang/crates.io-index" 1008 | checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 1009 | 1010 | [[package]] 1011 | name = "rand" 1012 | version = "0.9.0" 1013 | source = "registry+https://github.com/rust-lang/crates.io-index" 1014 | checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" 1015 | dependencies = [ 1016 | "rand_chacha", 1017 | "rand_core 0.9.3", 1018 | "zerocopy", 1019 | ] 1020 | 1021 | [[package]] 1022 | name = "rand_chacha" 1023 | version = "0.9.0" 1024 | source = "registry+https://github.com/rust-lang/crates.io-index" 1025 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 1026 | dependencies = [ 1027 | "ppv-lite86", 1028 | "rand_core 0.9.3", 1029 | ] 1030 | 1031 | [[package]] 1032 | name = "rand_core" 1033 | version = "0.6.4" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1036 | 1037 | [[package]] 1038 | name = "rand_core" 1039 | version = "0.9.3" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 1042 | dependencies = [ 1043 | "getrandom 0.3.2", 1044 | ] 1045 | 1046 | [[package]] 1047 | name = "regex" 1048 | version = "1.11.1" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 1051 | dependencies = [ 1052 | "aho-corasick", 1053 | "memchr", 1054 | "regex-automata", 1055 | "regex-syntax", 1056 | ] 1057 | 1058 | [[package]] 1059 | name = "regex-automata" 1060 | version = "0.4.9" 1061 | source = "registry+https://github.com/rust-lang/crates.io-index" 1062 | checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 1063 | dependencies = [ 1064 | "aho-corasick", 1065 | "memchr", 1066 | "regex-syntax", 1067 | ] 1068 | 1069 | [[package]] 1070 | name = "regex-syntax" 1071 | version = "0.8.5" 1072 | source = "registry+https://github.com/rust-lang/crates.io-index" 1073 | checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 1074 | 1075 | [[package]] 1076 | name = "reqwest" 1077 | version = "0.12.15" 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" 1079 | checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" 1080 | dependencies = [ 1081 | "base64", 1082 | "bytes", 1083 | "futures-channel", 1084 | "futures-core", 1085 | "futures-util", 1086 | "http", 1087 | "http-body", 1088 | "http-body-util", 1089 | "hyper", 1090 | "hyper-rustls", 1091 | "hyper-util", 1092 | "ipnet", 1093 | "js-sys", 1094 | "log", 1095 | "mime", 1096 | "once_cell", 1097 | "percent-encoding", 1098 | "pin-project-lite", 1099 | "quinn", 1100 | "rustls", 1101 | "rustls-pemfile", 1102 | "rustls-pki-types", 1103 | "serde", 1104 | "serde_json", 1105 | "serde_urlencoded", 1106 | "sync_wrapper", 1107 | "tokio", 1108 | "tokio-rustls", 1109 | "tower", 1110 | "tower-service", 1111 | "url", 1112 | "wasm-bindgen", 1113 | "wasm-bindgen-futures", 1114 | "web-sys", 1115 | "webpki-roots", 1116 | "windows-registry", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "ring" 1121 | version = "0.17.14" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 1124 | dependencies = [ 1125 | "cc", 1126 | "cfg-if", 1127 | "getrandom 0.2.15", 1128 | "libc", 1129 | "untrusted", 1130 | "windows-sys 0.52.0", 1131 | ] 1132 | 1133 | [[package]] 1134 | name = "rustc-demangle" 1135 | version = "0.1.24" 1136 | source = "registry+https://github.com/rust-lang/crates.io-index" 1137 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 1138 | 1139 | [[package]] 1140 | name = "rustc-hash" 1141 | version = "2.1.1" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 1144 | 1145 | [[package]] 1146 | name = "rustls" 1147 | version = "0.23.26" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" 1150 | dependencies = [ 1151 | "once_cell", 1152 | "ring", 1153 | "rustls-pki-types", 1154 | "rustls-webpki", 1155 | "subtle", 1156 | "zeroize", 1157 | ] 1158 | 1159 | [[package]] 1160 | name = "rustls-pemfile" 1161 | version = "2.2.0" 1162 | source = "registry+https://github.com/rust-lang/crates.io-index" 1163 | checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" 1164 | dependencies = [ 1165 | "rustls-pki-types", 1166 | ] 1167 | 1168 | [[package]] 1169 | name = "rustls-pki-types" 1170 | version = "1.11.0" 1171 | source = "registry+https://github.com/rust-lang/crates.io-index" 1172 | checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" 1173 | dependencies = [ 1174 | "web-time", 1175 | ] 1176 | 1177 | [[package]] 1178 | name = "rustls-webpki" 1179 | version = "0.103.1" 1180 | source = "registry+https://github.com/rust-lang/crates.io-index" 1181 | checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" 1182 | dependencies = [ 1183 | "ring", 1184 | "rustls-pki-types", 1185 | "untrusted", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "rustversion" 1190 | version = "1.0.20" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" 1193 | 1194 | [[package]] 1195 | name = "ryu" 1196 | version = "1.0.20" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 1199 | 1200 | [[package]] 1201 | name = "serde" 1202 | version = "1.0.219" 1203 | source = "registry+https://github.com/rust-lang/crates.io-index" 1204 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 1205 | dependencies = [ 1206 | "serde_derive", 1207 | ] 1208 | 1209 | [[package]] 1210 | name = "serde_derive" 1211 | version = "1.0.219" 1212 | source = "registry+https://github.com/rust-lang/crates.io-index" 1213 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 1214 | dependencies = [ 1215 | "proc-macro2", 1216 | "quote", 1217 | "syn 2.0.100", 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "serde_json" 1222 | version = "1.0.140" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" 1225 | dependencies = [ 1226 | "itoa", 1227 | "memchr", 1228 | "ryu", 1229 | "serde", 1230 | ] 1231 | 1232 | [[package]] 1233 | name = "serde_urlencoded" 1234 | version = "0.7.1" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1237 | dependencies = [ 1238 | "form_urlencoded", 1239 | "itoa", 1240 | "ryu", 1241 | "serde", 1242 | ] 1243 | 1244 | [[package]] 1245 | name = "sha1" 1246 | version = "0.10.6" 1247 | source = "registry+https://github.com/rust-lang/crates.io-index" 1248 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 1249 | dependencies = [ 1250 | "cfg-if", 1251 | "cpufeatures", 1252 | "digest", 1253 | ] 1254 | 1255 | [[package]] 1256 | name = "sha2" 1257 | version = "0.10.8" 1258 | source = "registry+https://github.com/rust-lang/crates.io-index" 1259 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 1260 | dependencies = [ 1261 | "cfg-if", 1262 | "cpufeatures", 1263 | "digest", 1264 | ] 1265 | 1266 | [[package]] 1267 | name = "shlex" 1268 | version = "1.3.0" 1269 | source = "registry+https://github.com/rust-lang/crates.io-index" 1270 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 1271 | 1272 | [[package]] 1273 | name = "slab" 1274 | version = "0.4.9" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 1277 | dependencies = [ 1278 | "autocfg", 1279 | ] 1280 | 1281 | [[package]] 1282 | name = "smallvec" 1283 | version = "1.15.0" 1284 | source = "registry+https://github.com/rust-lang/crates.io-index" 1285 | checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" 1286 | 1287 | [[package]] 1288 | name = "socket2" 1289 | version = "0.5.9" 1290 | source = "registry+https://github.com/rust-lang/crates.io-index" 1291 | checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" 1292 | dependencies = [ 1293 | "libc", 1294 | "windows-sys 0.52.0", 1295 | ] 1296 | 1297 | [[package]] 1298 | name = "stable_deref_trait" 1299 | version = "1.2.0" 1300 | source = "registry+https://github.com/rust-lang/crates.io-index" 1301 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1302 | 1303 | [[package]] 1304 | name = "strsim" 1305 | version = "0.10.0" 1306 | source = "registry+https://github.com/rust-lang/crates.io-index" 1307 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 1308 | 1309 | [[package]] 1310 | name = "subtle" 1311 | version = "2.6.1" 1312 | source = "registry+https://github.com/rust-lang/crates.io-index" 1313 | checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 1314 | 1315 | [[package]] 1316 | name = "syn" 1317 | version = "1.0.109" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1320 | dependencies = [ 1321 | "proc-macro2", 1322 | "quote", 1323 | "unicode-ident", 1324 | ] 1325 | 1326 | [[package]] 1327 | name = "syn" 1328 | version = "2.0.100" 1329 | source = "registry+https://github.com/rust-lang/crates.io-index" 1330 | checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" 1331 | dependencies = [ 1332 | "proc-macro2", 1333 | "quote", 1334 | "unicode-ident", 1335 | ] 1336 | 1337 | [[package]] 1338 | name = "sync_wrapper" 1339 | version = "1.0.2" 1340 | source = "registry+https://github.com/rust-lang/crates.io-index" 1341 | checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 1342 | dependencies = [ 1343 | "futures-core", 1344 | ] 1345 | 1346 | [[package]] 1347 | name = "synstructure" 1348 | version = "0.13.1" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 1351 | dependencies = [ 1352 | "proc-macro2", 1353 | "quote", 1354 | "syn 2.0.100", 1355 | ] 1356 | 1357 | [[package]] 1358 | name = "target-lexicon" 1359 | version = "0.12.16" 1360 | source = "registry+https://github.com/rust-lang/crates.io-index" 1361 | checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" 1362 | 1363 | [[package]] 1364 | name = "termcolor" 1365 | version = "1.4.1" 1366 | source = "registry+https://github.com/rust-lang/crates.io-index" 1367 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 1368 | dependencies = [ 1369 | "winapi-util", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "thiserror" 1374 | version = "1.0.69" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 1377 | dependencies = [ 1378 | "thiserror-impl 1.0.69", 1379 | ] 1380 | 1381 | [[package]] 1382 | name = "thiserror" 1383 | version = "2.0.12" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" 1386 | dependencies = [ 1387 | "thiserror-impl 2.0.12", 1388 | ] 1389 | 1390 | [[package]] 1391 | name = "thiserror-impl" 1392 | version = "1.0.69" 1393 | source = "registry+https://github.com/rust-lang/crates.io-index" 1394 | checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 1395 | dependencies = [ 1396 | "proc-macro2", 1397 | "quote", 1398 | "syn 2.0.100", 1399 | ] 1400 | 1401 | [[package]] 1402 | name = "thiserror-impl" 1403 | version = "2.0.12" 1404 | source = "registry+https://github.com/rust-lang/crates.io-index" 1405 | checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" 1406 | dependencies = [ 1407 | "proc-macro2", 1408 | "quote", 1409 | "syn 2.0.100", 1410 | ] 1411 | 1412 | [[package]] 1413 | name = "tinystr" 1414 | version = "0.7.6" 1415 | source = "registry+https://github.com/rust-lang/crates.io-index" 1416 | checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" 1417 | dependencies = [ 1418 | "displaydoc", 1419 | "zerovec", 1420 | ] 1421 | 1422 | [[package]] 1423 | name = "tinyvec" 1424 | version = "1.9.0" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" 1427 | dependencies = [ 1428 | "tinyvec_macros", 1429 | ] 1430 | 1431 | [[package]] 1432 | name = "tinyvec_macros" 1433 | version = "0.1.1" 1434 | source = "registry+https://github.com/rust-lang/crates.io-index" 1435 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1436 | 1437 | [[package]] 1438 | name = "tokio" 1439 | version = "1.44.2" 1440 | source = "registry+https://github.com/rust-lang/crates.io-index" 1441 | checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" 1442 | dependencies = [ 1443 | "backtrace", 1444 | "bytes", 1445 | "libc", 1446 | "mio", 1447 | "pin-project-lite", 1448 | "socket2", 1449 | "windows-sys 0.52.0", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "tokio-rustls" 1454 | version = "0.26.2" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" 1457 | dependencies = [ 1458 | "rustls", 1459 | "tokio", 1460 | ] 1461 | 1462 | [[package]] 1463 | name = "tower" 1464 | version = "0.5.2" 1465 | source = "registry+https://github.com/rust-lang/crates.io-index" 1466 | checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" 1467 | dependencies = [ 1468 | "futures-core", 1469 | "futures-util", 1470 | "pin-project-lite", 1471 | "sync_wrapper", 1472 | "tokio", 1473 | "tower-layer", 1474 | "tower-service", 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "tower-layer" 1479 | version = "0.3.3" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 1482 | 1483 | [[package]] 1484 | name = "tower-service" 1485 | version = "0.3.3" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 1488 | 1489 | [[package]] 1490 | name = "tracing" 1491 | version = "0.1.41" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 1494 | dependencies = [ 1495 | "pin-project-lite", 1496 | "tracing-core", 1497 | ] 1498 | 1499 | [[package]] 1500 | name = "tracing-core" 1501 | version = "0.1.33" 1502 | source = "registry+https://github.com/rust-lang/crates.io-index" 1503 | checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 1504 | dependencies = [ 1505 | "once_cell", 1506 | ] 1507 | 1508 | [[package]] 1509 | name = "try-lock" 1510 | version = "0.2.5" 1511 | source = "registry+https://github.com/rust-lang/crates.io-index" 1512 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1513 | 1514 | [[package]] 1515 | name = "typenum" 1516 | version = "1.18.0" 1517 | source = "registry+https://github.com/rust-lang/crates.io-index" 1518 | checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 1519 | 1520 | [[package]] 1521 | name = "unicode-ident" 1522 | version = "1.0.18" 1523 | source = "registry+https://github.com/rust-lang/crates.io-index" 1524 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 1525 | 1526 | [[package]] 1527 | name = "untrusted" 1528 | version = "0.9.0" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 1531 | 1532 | [[package]] 1533 | name = "url" 1534 | version = "2.5.4" 1535 | source = "registry+https://github.com/rust-lang/crates.io-index" 1536 | checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 1537 | dependencies = [ 1538 | "form_urlencoded", 1539 | "idna", 1540 | "percent-encoding", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "utf16_iter" 1545 | version = "1.0.5" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" 1548 | 1549 | [[package]] 1550 | name = "utf8_iter" 1551 | version = "1.0.4" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1554 | 1555 | [[package]] 1556 | name = "version_check" 1557 | version = "0.9.5" 1558 | source = "registry+https://github.com/rust-lang/crates.io-index" 1559 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 1560 | 1561 | [[package]] 1562 | name = "want" 1563 | version = "0.3.1" 1564 | source = "registry+https://github.com/rust-lang/crates.io-index" 1565 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1566 | dependencies = [ 1567 | "try-lock", 1568 | ] 1569 | 1570 | [[package]] 1571 | name = "wasi" 1572 | version = "0.11.0+wasi-snapshot-preview1" 1573 | source = "registry+https://github.com/rust-lang/crates.io-index" 1574 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1575 | 1576 | [[package]] 1577 | name = "wasi" 1578 | version = "0.14.2+wasi-0.2.4" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" 1581 | dependencies = [ 1582 | "wit-bindgen-rt", 1583 | ] 1584 | 1585 | [[package]] 1586 | name = "wasm-bindgen" 1587 | version = "0.2.100" 1588 | source = "registry+https://github.com/rust-lang/crates.io-index" 1589 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 1590 | dependencies = [ 1591 | "cfg-if", 1592 | "once_cell", 1593 | "rustversion", 1594 | "wasm-bindgen-macro", 1595 | ] 1596 | 1597 | [[package]] 1598 | name = "wasm-bindgen-backend" 1599 | version = "0.2.100" 1600 | source = "registry+https://github.com/rust-lang/crates.io-index" 1601 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 1602 | dependencies = [ 1603 | "bumpalo", 1604 | "log", 1605 | "proc-macro2", 1606 | "quote", 1607 | "syn 2.0.100", 1608 | "wasm-bindgen-shared", 1609 | ] 1610 | 1611 | [[package]] 1612 | name = "wasm-bindgen-futures" 1613 | version = "0.4.50" 1614 | source = "registry+https://github.com/rust-lang/crates.io-index" 1615 | checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 1616 | dependencies = [ 1617 | "cfg-if", 1618 | "js-sys", 1619 | "once_cell", 1620 | "wasm-bindgen", 1621 | "web-sys", 1622 | ] 1623 | 1624 | [[package]] 1625 | name = "wasm-bindgen-macro" 1626 | version = "0.2.100" 1627 | source = "registry+https://github.com/rust-lang/crates.io-index" 1628 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 1629 | dependencies = [ 1630 | "quote", 1631 | "wasm-bindgen-macro-support", 1632 | ] 1633 | 1634 | [[package]] 1635 | name = "wasm-bindgen-macro-support" 1636 | version = "0.2.100" 1637 | source = "registry+https://github.com/rust-lang/crates.io-index" 1638 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 1639 | dependencies = [ 1640 | "proc-macro2", 1641 | "quote", 1642 | "syn 2.0.100", 1643 | "wasm-bindgen-backend", 1644 | "wasm-bindgen-shared", 1645 | ] 1646 | 1647 | [[package]] 1648 | name = "wasm-bindgen-shared" 1649 | version = "0.2.100" 1650 | source = "registry+https://github.com/rust-lang/crates.io-index" 1651 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 1652 | dependencies = [ 1653 | "unicode-ident", 1654 | ] 1655 | 1656 | [[package]] 1657 | name = "web-sys" 1658 | version = "0.3.77" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 1661 | dependencies = [ 1662 | "js-sys", 1663 | "wasm-bindgen", 1664 | ] 1665 | 1666 | [[package]] 1667 | name = "web-time" 1668 | version = "1.1.0" 1669 | source = "registry+https://github.com/rust-lang/crates.io-index" 1670 | checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 1671 | dependencies = [ 1672 | "js-sys", 1673 | "wasm-bindgen", 1674 | ] 1675 | 1676 | [[package]] 1677 | name = "webpki-roots" 1678 | version = "0.26.8" 1679 | source = "registry+https://github.com/rust-lang/crates.io-index" 1680 | checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" 1681 | dependencies = [ 1682 | "rustls-pki-types", 1683 | ] 1684 | 1685 | [[package]] 1686 | name = "winapi-util" 1687 | version = "0.1.9" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 1690 | dependencies = [ 1691 | "windows-sys 0.59.0", 1692 | ] 1693 | 1694 | [[package]] 1695 | name = "windows-link" 1696 | version = "0.1.1" 1697 | source = "registry+https://github.com/rust-lang/crates.io-index" 1698 | checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" 1699 | 1700 | [[package]] 1701 | name = "windows-registry" 1702 | version = "0.4.0" 1703 | source = "registry+https://github.com/rust-lang/crates.io-index" 1704 | checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" 1705 | dependencies = [ 1706 | "windows-result", 1707 | "windows-strings", 1708 | "windows-targets 0.53.0", 1709 | ] 1710 | 1711 | [[package]] 1712 | name = "windows-result" 1713 | version = "0.3.2" 1714 | source = "registry+https://github.com/rust-lang/crates.io-index" 1715 | checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" 1716 | dependencies = [ 1717 | "windows-link", 1718 | ] 1719 | 1720 | [[package]] 1721 | name = "windows-strings" 1722 | version = "0.3.1" 1723 | source = "registry+https://github.com/rust-lang/crates.io-index" 1724 | checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" 1725 | dependencies = [ 1726 | "windows-link", 1727 | ] 1728 | 1729 | [[package]] 1730 | name = "windows-sys" 1731 | version = "0.52.0" 1732 | source = "registry+https://github.com/rust-lang/crates.io-index" 1733 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1734 | dependencies = [ 1735 | "windows-targets 0.52.6", 1736 | ] 1737 | 1738 | [[package]] 1739 | name = "windows-sys" 1740 | version = "0.59.0" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 1743 | dependencies = [ 1744 | "windows-targets 0.52.6", 1745 | ] 1746 | 1747 | [[package]] 1748 | name = "windows-targets" 1749 | version = "0.52.6" 1750 | source = "registry+https://github.com/rust-lang/crates.io-index" 1751 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 1752 | dependencies = [ 1753 | "windows_aarch64_gnullvm 0.52.6", 1754 | "windows_aarch64_msvc 0.52.6", 1755 | "windows_i686_gnu 0.52.6", 1756 | "windows_i686_gnullvm 0.52.6", 1757 | "windows_i686_msvc 0.52.6", 1758 | "windows_x86_64_gnu 0.52.6", 1759 | "windows_x86_64_gnullvm 0.52.6", 1760 | "windows_x86_64_msvc 0.52.6", 1761 | ] 1762 | 1763 | [[package]] 1764 | name = "windows-targets" 1765 | version = "0.53.0" 1766 | source = "registry+https://github.com/rust-lang/crates.io-index" 1767 | checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" 1768 | dependencies = [ 1769 | "windows_aarch64_gnullvm 0.53.0", 1770 | "windows_aarch64_msvc 0.53.0", 1771 | "windows_i686_gnu 0.53.0", 1772 | "windows_i686_gnullvm 0.53.0", 1773 | "windows_i686_msvc 0.53.0", 1774 | "windows_x86_64_gnu 0.53.0", 1775 | "windows_x86_64_gnullvm 0.53.0", 1776 | "windows_x86_64_msvc 0.53.0", 1777 | ] 1778 | 1779 | [[package]] 1780 | name = "windows_aarch64_gnullvm" 1781 | version = "0.52.6" 1782 | source = "registry+https://github.com/rust-lang/crates.io-index" 1783 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 1784 | 1785 | [[package]] 1786 | name = "windows_aarch64_gnullvm" 1787 | version = "0.53.0" 1788 | source = "registry+https://github.com/rust-lang/crates.io-index" 1789 | checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" 1790 | 1791 | [[package]] 1792 | name = "windows_aarch64_msvc" 1793 | version = "0.52.6" 1794 | source = "registry+https://github.com/rust-lang/crates.io-index" 1795 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 1796 | 1797 | [[package]] 1798 | name = "windows_aarch64_msvc" 1799 | version = "0.53.0" 1800 | source = "registry+https://github.com/rust-lang/crates.io-index" 1801 | checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" 1802 | 1803 | [[package]] 1804 | name = "windows_i686_gnu" 1805 | version = "0.52.6" 1806 | source = "registry+https://github.com/rust-lang/crates.io-index" 1807 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 1808 | 1809 | [[package]] 1810 | name = "windows_i686_gnu" 1811 | version = "0.53.0" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" 1814 | 1815 | [[package]] 1816 | name = "windows_i686_gnullvm" 1817 | version = "0.52.6" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 1820 | 1821 | [[package]] 1822 | name = "windows_i686_gnullvm" 1823 | version = "0.53.0" 1824 | source = "registry+https://github.com/rust-lang/crates.io-index" 1825 | checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" 1826 | 1827 | [[package]] 1828 | name = "windows_i686_msvc" 1829 | version = "0.52.6" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 1832 | 1833 | [[package]] 1834 | name = "windows_i686_msvc" 1835 | version = "0.53.0" 1836 | source = "registry+https://github.com/rust-lang/crates.io-index" 1837 | checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" 1838 | 1839 | [[package]] 1840 | name = "windows_x86_64_gnu" 1841 | version = "0.52.6" 1842 | source = "registry+https://github.com/rust-lang/crates.io-index" 1843 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 1844 | 1845 | [[package]] 1846 | name = "windows_x86_64_gnu" 1847 | version = "0.53.0" 1848 | source = "registry+https://github.com/rust-lang/crates.io-index" 1849 | checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" 1850 | 1851 | [[package]] 1852 | name = "windows_x86_64_gnullvm" 1853 | version = "0.52.6" 1854 | source = "registry+https://github.com/rust-lang/crates.io-index" 1855 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 1856 | 1857 | [[package]] 1858 | name = "windows_x86_64_gnullvm" 1859 | version = "0.53.0" 1860 | source = "registry+https://github.com/rust-lang/crates.io-index" 1861 | checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" 1862 | 1863 | [[package]] 1864 | name = "windows_x86_64_msvc" 1865 | version = "0.52.6" 1866 | source = "registry+https://github.com/rust-lang/crates.io-index" 1867 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 1868 | 1869 | [[package]] 1870 | name = "windows_x86_64_msvc" 1871 | version = "0.53.0" 1872 | source = "registry+https://github.com/rust-lang/crates.io-index" 1873 | checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" 1874 | 1875 | [[package]] 1876 | name = "wit-bindgen-rt" 1877 | version = "0.39.0" 1878 | source = "registry+https://github.com/rust-lang/crates.io-index" 1879 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 1880 | dependencies = [ 1881 | "bitflags", 1882 | ] 1883 | 1884 | [[package]] 1885 | name = "write16" 1886 | version = "1.0.0" 1887 | source = "registry+https://github.com/rust-lang/crates.io-index" 1888 | checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" 1889 | 1890 | [[package]] 1891 | name = "writeable" 1892 | version = "0.5.5" 1893 | source = "registry+https://github.com/rust-lang/crates.io-index" 1894 | checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" 1895 | 1896 | [[package]] 1897 | name = "yoke" 1898 | version = "0.7.5" 1899 | source = "registry+https://github.com/rust-lang/crates.io-index" 1900 | checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" 1901 | dependencies = [ 1902 | "serde", 1903 | "stable_deref_trait", 1904 | "yoke-derive", 1905 | "zerofrom", 1906 | ] 1907 | 1908 | [[package]] 1909 | name = "yoke-derive" 1910 | version = "0.7.5" 1911 | source = "registry+https://github.com/rust-lang/crates.io-index" 1912 | checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" 1913 | dependencies = [ 1914 | "proc-macro2", 1915 | "quote", 1916 | "syn 2.0.100", 1917 | "synstructure", 1918 | ] 1919 | 1920 | [[package]] 1921 | name = "zerocopy" 1922 | version = "0.8.24" 1923 | source = "registry+https://github.com/rust-lang/crates.io-index" 1924 | checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" 1925 | dependencies = [ 1926 | "zerocopy-derive", 1927 | ] 1928 | 1929 | [[package]] 1930 | name = "zerocopy-derive" 1931 | version = "0.8.24" 1932 | source = "registry+https://github.com/rust-lang/crates.io-index" 1933 | checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" 1934 | dependencies = [ 1935 | "proc-macro2", 1936 | "quote", 1937 | "syn 2.0.100", 1938 | ] 1939 | 1940 | [[package]] 1941 | name = "zerofrom" 1942 | version = "0.1.6" 1943 | source = "registry+https://github.com/rust-lang/crates.io-index" 1944 | checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 1945 | dependencies = [ 1946 | "zerofrom-derive", 1947 | ] 1948 | 1949 | [[package]] 1950 | name = "zerofrom-derive" 1951 | version = "0.1.6" 1952 | source = "registry+https://github.com/rust-lang/crates.io-index" 1953 | checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 1954 | dependencies = [ 1955 | "proc-macro2", 1956 | "quote", 1957 | "syn 2.0.100", 1958 | "synstructure", 1959 | ] 1960 | 1961 | [[package]] 1962 | name = "zeroize" 1963 | version = "1.8.1" 1964 | source = "registry+https://github.com/rust-lang/crates.io-index" 1965 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 1966 | 1967 | [[package]] 1968 | name = "zerovec" 1969 | version = "0.10.4" 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" 1971 | checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" 1972 | dependencies = [ 1973 | "yoke", 1974 | "zerofrom", 1975 | "zerovec-derive", 1976 | ] 1977 | 1978 | [[package]] 1979 | name = "zerovec-derive" 1980 | version = "0.10.3" 1981 | source = "registry+https://github.com/rust-lang/crates.io-index" 1982 | checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" 1983 | dependencies = [ 1984 | "proc-macro2", 1985 | "quote", 1986 | "syn 2.0.100", 1987 | ] 1988 | 1989 | [[package]] 1990 | name = "zip" 1991 | version = "0.6.6" 1992 | source = "registry+https://github.com/rust-lang/crates.io-index" 1993 | checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" 1994 | dependencies = [ 1995 | "aes", 1996 | "byteorder", 1997 | "bzip2", 1998 | "constant_time_eq", 1999 | "crc32fast", 2000 | "crossbeam-utils", 2001 | "flate2", 2002 | "hmac", 2003 | "pbkdf2", 2004 | "sha1", 2005 | "zstd", 2006 | ] 2007 | 2008 | [[package]] 2009 | name = "zip-extract" 2010 | version = "0.1.3" 2011 | source = "registry+https://github.com/rust-lang/crates.io-index" 2012 | checksum = "e109e5a291403b4c1e514d39f8a22d3f98d257e691a52bb1f16051bb1ffed63e" 2013 | dependencies = [ 2014 | "log", 2015 | "thiserror 1.0.69", 2016 | "zip", 2017 | ] 2018 | 2019 | [[package]] 2020 | name = "zstd" 2021 | version = "0.11.2+zstd.1.5.2" 2022 | source = "registry+https://github.com/rust-lang/crates.io-index" 2023 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 2024 | dependencies = [ 2025 | "zstd-safe", 2026 | ] 2027 | 2028 | [[package]] 2029 | name = "zstd-safe" 2030 | version = "5.0.2+zstd.1.5.2" 2031 | source = "registry+https://github.com/rust-lang/crates.io-index" 2032 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 2033 | dependencies = [ 2034 | "libc", 2035 | "zstd-sys", 2036 | ] 2037 | 2038 | [[package]] 2039 | name = "zstd-sys" 2040 | version = "2.0.15+zstd.1.5.7" 2041 | source = "registry+https://github.com/rust-lang/crates.io-index" 2042 | checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" 2043 | dependencies = [ 2044 | "cc", 2045 | "pkg-config", 2046 | ] 2047 | --------------------------------------------------------------------------------