A Rust crate for parsing HID Report Descriptors.

Overview

Project Mu HID Crate Repository

This repository contains a library crate that provides parsing services for HID Report Descriptors.

This repository is part of Project Mu.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct.

For more information see the Code of Conduct FAQ or contact [email protected]. with any additional questions or comments.

Contributions

Contributions are always welcome and encouraged!

Please open any issues in the Project Mu GitHub tracker and read contribution guidance.

Issues

Please open any issues in the issues section.

Builds

  1. Download and install rust/cargo from Getting Started - Rust Programming Language (rust-lang.org).

  2. Make sure the toolchain is properly installed - restart a shell after install and make sure the tools are in your path:

    >cargo --version

  3. Build and run unit tests with:

    >cargo test --all

  4. Generate and open docs:

    >cargo doc --open

  • Copyright (c) Microsoft Corporation
  • SPDX-License-Identifier: BSD-2-Clause-Patent
You might also like...
Tool to allow parsing large JSON files without laoding into memory
Tool to allow parsing large JSON files without laoding into memory

Tool to allow parsing large JSON files without laoding into memory. Developed in Rust with adapters in other programming langauges for easy adoption

Rust-battery - Rust crate providing cross-platform information about the notebook batteries.

battery Rust crate providing cross-platform information about the notebook batteries. Table of contents Overview Supported platforms Install Examples

Crate to generate files in ROFF format (Rust)

roffman A crate to generate roff man pages. Usage Add the following to the Cargo.toml: [dependencies] roffman = "0.3" Example use roffman::{Roff, Roff

A tool crate to quickly build rust command line application.

Falsework A tool crate to quickly build rust command line application.

A tui to test regexes on the rust regex crate

regex-tui Structure src/ ├── app.rs - holds the states and renders the widgets ├── event.rs - handles the terminal events (key press, mouse cl

Rust crate that allows you to display status & progress information in a terminal

status-line This crate allows you to display status & progress information in a terminal This crate handles the problem of displaying a small amount o

Rust crate `needleman_wunsch` of the `fasebare` package: reading FASTA sequences, Needleman-Wunsch alignment

fasebare Rust crate needleman_wunsch of the fasebare package: reading FASTA sequences, Needleman-Wunsch alignment. Synopsis The crate needleman_wunsch

Rust crate to enable ANSI escape code support on Windows.

enable-ansi-support: Enable ANSI escape code support on Windows 10 About This crate provides one function, enable_ansi_support, which allows ANSI esca

Show unused code from multi-crate Rust projects

Warnalyzer Remove unused code from multi-crate Rust projects. The dead_code lint family of rustc is limited to one crate only and thus can't tell whet

Comments
  • Initial creation of hidparse and hid_report_descriptor_parser crates

    Initial creation of hidparse and hid_report_descriptor_parser crates

    Description

    Initial import of hidparse and hid_report_descriptor_parser crates.

    • [X] Impacts functionality?
    • [ ] Impacts security?
    • [ ] Breaking change?
    • [X] Includes tests?
    • includes unit tests for hid_report_descriptor_parser crates and hidparse command utility.
    • [X] Includes documentation?
      • Standard rustdocs

    How This Was Tested

    Built in unit tests, functional testing with real hardware.

    Integration Instructions

    Crate may be leveraged via standard rust crate usage practice.

    type:feature-request type:documentation impact:testing impact:non-functional 
    opened by joschock 5
  • .azurepipelines/BuildAndTest.yml: Add markdownlint and spell check

    .azurepipelines/BuildAndTest.yml: Add markdownlint and spell check

    Description

    • Run spell check against .md, .py, and .rs files in the repo

    • Run markdownlint against .md files in the repo

    • [ ] Impacts functionality?

      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • [ ] Impacts security?

      • Security - Does the change have a direct security impact on an application, flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ...
    • [ ] Breaking change?

      • Breaking change - Will anyone consuming this change experience a break in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call a function in a new library class in a pre-existing module, ...
    • [ ] Includes tests?

      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • [ ] Includes documentation?

      • Documentation - Does the change contain explicit documentation additions outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation on an a separate Web page, ...

    How This Was Tested

    PR pipelines.

    Integration Instructions

    N/A

    semver:patch impact:non-functional 
    opened by makubacki 2
Releases(v0.2.0)
  • v0.2.0(Sep 25, 2023)

    What's Changed

    🚀 Features & ✨ Enhancements

    • Initial creation of hidparse and hid\_report\_descriptor\_parser crates @joschock (#3)
      Change Details
        ## Description

      Initial import of hidparse and hid_report_descriptor_parser crates.

      • [X] Impacts functionality?
      • [ ] Impacts security?
      • [ ] Breaking change?
      • [X] Includes tests?
      • includes unit tests for hid_report_descriptor_parser crates and hidparse command utility.
      • [X] Includes documentation?
        • Standard rustdocs

      How This Was Tested

      Built in unit tests, functional testing with real hardware.

      Integration Instructions

      Crate may be leveraged via standard rust crate usage practice.


    📖 Documentation Updates

    • Initial creation of hidparse and hid\_report\_descriptor\_parser crates @joschock (#3)
      Change Details
        ## Description

      Initial import of hidparse and hid_report_descriptor_parser crates.

      • [X] Impacts functionality?
      • [ ] Impacts security?
      • [ ] Breaking change?
      • [X] Includes tests?
      • includes unit tests for hid_report_descriptor_parser crates and hidparse command utility.
      • [X] Includes documentation?
        • Standard rustdocs

      How This Was Tested

      Built in unit tests, functional testing with real hardware.

      Integration Instructions

      Crate may be leveraged via standard rust crate usage practice.


    Full Changelog: https://github.com/microsoft/mu_rust_hid/compare/v0.1.0...v0.2.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Sep 22, 2023)

    What's Changed

    • .azurepipelines/BuildAndTest.yml: Add markdownlint and spell check @makubacki (#2)
      Change Details
        ## Description
      • Run spell check against .md, .py, and .rs files in the repo

      • Run markdownlint against .md files in the repo

      • [ ] Impacts functionality?

        • Functionality - Does the change ultimately impact how firmware functions?
        • Examples: Add a new library, publish a new PPI, update an algorithm, ...
      • [ ] Impacts security?

        • Security - Does the change have a direct security impact on an application, flow, or firmware?
        • Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ...
      • [ ] Breaking change?

        • Breaking change - Will anyone consuming this change experience a break in build or boot behavior?
        • Examples: Add a new library class, move a module to a different repo, call a function in a new library class in a pre-existing module, ...
      • [ ] Includes tests?

        • Tests - Does the change include any explicit test code?
        • Examples: Unit tests, integration tests, robot tests, ...
      • [ ] Includes documentation?

        • Documentation - Does the change contain explicit documentation additions outside direct code modifications (and comments)?
        • Examples: Update readme file, add feature readme file, link to documentation on an a separate Web page, ...

      How This Was Tested

      PR pipelines.

      Integration Instructions

      N/A


    • Add initial repo files [Rebase \& FF] @makubacki (#1)
      Change Details
        Adds files for:
      • Base readme
      • Contributing, license, security, etc.
      • Tool configuration
      • GitHub configuration files and workflows

Full Changelog: https://github.com/microsoft/mu_rust_hid/compare/...v0.1.0

Source code(tar.gz)
Source code(zip)
Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit

zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit, facilitating efficient communication and collaboration between hackers and project owners for a more secure DeFi ecosystem.

zkoranges 135 Apr 16, 2023
A Rust crate for parsing Windows user minidumps.

udmp-parser-rs: A Rust crate for parsing Windows user minidumps This is a cross-platform crate that parses Windows user minidump dumps that you can ge

Axel Souchet 14 Aug 16, 2023
Rust derive-based argument parsing optimized for code size

Argh Argh is an opinionated Derive-based argument parser optimized for code size Derive-based argument parsing optimized for code size and conformance

Google 1.3k Dec 28, 2022
Minecraft's command parsing library in Rust

brigadier-rs This crate is a parsing library for Minecraft commands inspired by Mojang's brigadier. It was developed for use with FalconMC but can be

FalconMC 2 Nov 13, 2022
Argument parsing for the future 🚀

argi Argument parsing for the future ?? Features Macro-based approach, providing an intuitive way to layout a cli Rich auto-help generation, styling b

Owez 132 Oct 23, 2022
Tree-sitter - An incremental parsing system for programming tools

tree-sitter Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and effic

null 10.6k Jan 9, 2023
Application microframework with command-line option parsing, configuration, error handling, logging, and shell interactions

Abscissa is a microframework for building Rust applications (either CLI tools or network/web services), aiming to provide a large number of features w

iqlusion 524 Dec 26, 2022
This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

Mufeed VH 38 Dec 30, 2022
Python PEP-440 Version Parsing

PyVer (WIP) Python PEP-440 Version Parsing This package allows for parsing Python PEP-440 version numbers and comparisons between PEP-440 Versions Usa

Allstreamer 3 Sep 18, 2022
Python PEP-440 Version Parsing

PyVer Python PEP-440 Version Parser This package allows for parsing Python PEP-440 version numbers and for comparisons between PEP-440 version numbers

null 3 Sep 18, 2022