{"id":19961638,"url":"https://github.com/xevoinc/hound","last_synced_at":"2026-06-08T08:33:20.163Z","repository":{"id":153187365,"uuid":"91014971","full_name":"XevoInc/hound","owner":"XevoInc","description":"a high-performance sensor acquisition library","archived":false,"fork":false,"pushed_at":"2020-10-09T18:19:17.000Z","size":856,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-03-01T16:47:47.895Z","etag":null,"topics":["c","can","can-bus","driver","iio","library","sensor"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XevoInc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-11T19:14:56.000Z","updated_at":"2020-10-09T18:19:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"2efc69b1-21cf-4cac-be13-e1b574f4db85","html_url":"https://github.com/XevoInc/hound","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/XevoInc/hound","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XevoInc%2Fhound","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XevoInc%2Fhound/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XevoInc%2Fhound/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XevoInc%2Fhound/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XevoInc","download_url":"https://codeload.github.com/XevoInc/hound/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XevoInc%2Fhound/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34055249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","can","can-bus","driver","iio","library","sensor"],"created_at":"2024-11-13T02:08:00.786Z","updated_at":"2026-06-08T08:33:20.158Z","avatar_url":"https://github.com/XevoInc.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hound\nHound -- named after the dog with excellent sense of smell -- is a library for\nLinux intended to easily and performantly read data from sensors on embedded\ndevices.  Common sensors handled include CAN and many analog sensors (e.g.\naccelerometer, gyroscope, and anything else handled by the Linux Kernel\nIndustrial I/O subsystem). The idea is to abstract away the differences between\nsensor types by binding all the sensor to a common API. In doing so, application\ncode can write to a single API without concern for the underlying device,\ndriver. In addition, application code can worry less about a host of performance\nissues, like queueing samples, minimizing latency, etc.\n\n## Build\n\n### Prerequisites\n- meson: `pip3 install meson`\n\n- ninja: `pip3 install ninja`\n\n- libgps: `sudo apt install libgps-dev`\n\n- libYAML: `sudo apt install libyaml-dev`\n\n- libmosquitto: `sudo apt install libmosquitto-dev`. Also a mosquitto broker for\n  the unit tests: `sudo apt install mosquitto`.\n\n- libmsgpack: `sudo apt install libmsgpack-dev`.\n\n- xlib: compile from source: https://github.com/XevoInc/xlib\n\n- yobd: compile from source: https://github.com/XevoInc/yobd\n\n- (optional, for developers) `clang-tidy`. This is used for static analysis and\n  is thus a build but not runtime requirement.\n\n- (optional, for developers) `valgrind`. This is used in unit tests.\n\n- (optional, for developers) Python requirements, as documented in\n  `dev-requirements.txt`. These are some build-time tools that are not required\n  for runtime. They are used for sanity-checking schemas. You can install them\n  from your distro or via `pip install -r requirements.txt`.\n\n### Custom requirements building\n\nNote that, if any of your build prerequisites do not come from standard distro\npackaging, you will need also need to tweak the following env vars:\n\n- `PKG_CONFIG_PATH` needs to be set only when you run `meson` and doesn't matter\n  after that. It should be set to the directory containing the `.pc` files used\n  by the prerequisite you built.\n- `LD_LIBRARY_PATH` needs to be set whenever you actually load the Hound\n  library, such as when you run the unit tests with `ninja test`. It should be\n  set to the directory containing the built prerequisite libraries.\n\n### Debian unstable\n\nTo get your build requirements, you just need to run:\n\n```\nsudo apt-get -y install meson ninja-build\n```\n\n### Fedora packages\n\nTo get your build requirements, you just need to run:\n\n```\nsudo dnf -y install meson ninja-build\n```\n\nNote that on fedora you will substitute the `ninja-build` command instead of\nthe `ninja` command for the various build commands on this page.\n\n## Instructions\n\n### First time builds\n\n```\nmkdir build\ncd build\nmeson ..\nninja\n```\n\n### Rebuilding\n\nTo rebuild at any time, you just need to rerun the last `ninja` command:\n\n```\nninja\n```\n\nYou can run this command from any directory you like. For instance, to rebuild\nfrom the top level directory, use the ninja `-C` option to point ninja at the\nbuild directory:\n\n```\nninja -C build\n```\n\nAlso, there is nothing special about the directory name `build`. If you prefer a\ndifferent name than `build`, this is not a problem, and you can have different\nbuild directories with different configurations; meson and ninja don't care.\n\n### Compiling with clang instead of gcc\n\nIf you want to use clang, it's the usual meson methodology:\n\n```\nmkdir build.clang\ncd !$\nCC=clang meson ..\nninja\n```\n\n### Running tests\nTo run the unit tests, first use the `can-setup` script to setup virtual CAN\ndevices. Note that this script requires sudo:\n```\nninja can-setup\n```\nAfter that, you can use either of these commands to run the tests:\n```\nninja test\nmeson test\n```\n\nTo run the tests under valgrind, you can use:\n```\nmeson test --setup valgrind\n```\nNote that `ninja test` actually calls `meson test`.\n\nBefore checking in, you should run:\n```\nninja check\n```\n\nWhich runs unit tests, does static analysis, and anything else that is deemed\n\"good hygiene\" prior to checking in. This list may change over time, but the\n`check` target should remain valid.\n\n### Static analysis\nStatic analysis uses `clang-tidy` and can be run with:\n```\nninja clang-tidy\n```\n\nNote that you will need to install the `clang-tidy` tool, either via distro or\nsome other method.\n\n### Generating documentation\nCode documentation is handled by `doxygen` and can be built with:\n```\nninja docs\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxevoinc%2Fhound","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxevoinc%2Fhound","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxevoinc%2Fhound/lists"}