{"id":13704981,"url":"https://github.com/darconeous/libnyoci","last_synced_at":"2025-05-05T12:32:46.621Z","repository":{"id":140434153,"uuid":"85526574","full_name":"darconeous/libnyoci","owner":"darconeous","description":"A flexible CoAP stack for embedded devices and computers. RFC7252 compatible.","archived":true,"fork":false,"pushed_at":"2020-05-03T17:48:39.000Z","size":671,"stargazers_count":27,"open_issues_count":10,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-13T12:41:03.838Z","etag":null,"topics":["asynchronous","cli","coap","contiki","embedded-applications","iot","uip"],"latest_commit_sha":null,"homepage":null,"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/darconeous.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","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}},"created_at":"2017-03-20T02:23:07.000Z","updated_at":"2024-02-18T03:06:31.000Z","dependencies_parsed_at":"2024-01-07T03:51:32.567Z","dependency_job_id":"259585d2-7c70-4bcb-9122-60eaf406a689","html_url":"https://github.com/darconeous/libnyoci","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darconeous%2Flibnyoci","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darconeous%2Flibnyoci/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darconeous%2Flibnyoci/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darconeous%2Flibnyoci/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darconeous","download_url":"https://codeload.github.com/darconeous/libnyoci/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252497704,"owners_count":21757666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["asynchronous","cli","coap","contiki","embedded-applications","iot","uip"],"created_at":"2024-08-02T22:00:29.068Z","updated_at":"2025-05-05T12:32:46.288Z","avatar_url":"https://github.com/darconeous.png","language":"C","funding_links":[],"categories":["Packages, Libraries and RTOSes","Libraries"],"sub_categories":["CoAP","C/C++"],"readme":"LibNyoci — A Full-Featured Embedded CoAP Stack\n==============================================\n\nLibNyoci is a highly-configurable CoAP stack which is suitable for a wide\nrange of embedded devices, from bare-metal sensor nodes with kilobytes of RAM\nto Linux-based devices with megabytes of RAM.\n\nLibNyoci was spun off from the [SMCP][] project in late March of 2017.\n\nFeatures include:\n\n * Supports [RFC7252][1]\n * Fully asynchronous I/O\n * Supports both BSD sockets and [µIP][2]\n * Sending and receiving asynchronous CoAP responses\n * Observing resources and offering observable resources\n * Retransmission of confirmable transactions\n * [Experimental support for DTLS](https://github.com/darconeous/libnyoci/issues/35)\n\nThe package also includes `nyocictl`, a powerful command line tool for browsing\nand configuring CoAP nodes.\n\nLibNyoci is currently working toward a v1.0 API. Until v1.0 is released, all APIs\nare subject to change.\n\n[SMCP]: https://github.com/darconeous/smcp\n[1]: http://tools.ietf.org/html/7252\n[2]: http://en.wikipedia.org/wiki/UIP_%28micro_IP%29\n[3]: http://tools.ietf.org/html/rfc7390\n\n## Getting Help ##\n\nIf you are having trouble with LibNyoci, you can either [file an issue on\ngithub](https://github.com/darconeous/libnyoci/issues/new) or join the\nofficial [LibNyoci Developers mailing list][libnyoci-dev] and ask your\nquestion there.\n\n### Mailing Lists ###\n\n* [LibNyoci Announcements][libnyoci-announce] \u003clibnyoci-announce@googlegroups.com\u003e\n  Release announcements and security notices. Low traffic.\n* [LibNyoci Developers][libnyoci-dev] \u003clibnyoci-dev@googlegroups.com\u003e\n  Developer discussion about LibNyoci.\n\n[libnyoci-announce]: https://groups.google.com/group/libnyoci-announce\n[libnyoci-dev]: https://groups.google.com/group/libnyoci-dev\n\n## Getting, building, and installing via Git ##\n\nFirst:\n\n\t$ git clone git://github.com/darconeous/libnyoci.git\n\t$ cd libnyoci\n\nTo just build the latest tagged stable release:\n\n\t$ git checkout full/latest-release\n\t$ ./configure\n\t$ make\n\t$ sudo make install\n\nFor bleeding-edge:\n\n\t$ git checkout master\n\t$ git archive origin/autoconf/master | tar xvm\n\t  # Next line is a work-around for timestamp problems\n\t$ touch aclocal.m4 \u0026\u0026 touch configure \u0026\u0026 touch `find . -name '*.in'`\n\t$ ./configure\n\t$ make\n\t$ sudo make install\n\n## Getting, building, and installing from an archive ##\n\n\t$ curl https://github.com/darconeous/libnyoci/archive/full/latest-release.zip \u003e latest-release.zip\n\t$ unzip latest-release.zip\n\t$ cd nyoci-latest-release\n\t$ ./configure\n\t$ make\n\t$ sudo make install\n\n## Installing via Homebrew on OS X ##\n\nTo get the \"latest-release\":\n\n\t$ brew tap darconeous/embedded\n\t$ brew install libnyoci\n\nTo get the bleeding-edge release:\n\n\t$ brew tap darconeous/embedded\n\t$ brew install libnyoci --HEAD\n\n## Getting Started ##\n\nThe best way to get started is to have a look at some example code\nwhich uses LibNyoci. There are several included examples:\n\n* `examples/example-1.c` - Shows how to respond to a request.\n* `examples/example-2.c` - Shows how to respond to a request for a specific resource.\n* `examples/example-3.c` - Shows how to use the node router.\n* `examples/example-4.c` - Shows how to make resources observable.\n\nAdditionally, there is the plugtest server and client, which can be found\nin `src/plugtest`.\n\nThe Contiki version of the plugtest uses the last two files. You can find\nthe Contiki version at `contiki-src/examples/nyoci-plugtest/`.\n\n## Configurability ##\n\nOne of the goals of LibNyoci is to implent a full-featured CoAP library, but\nmost embedded applications don't need all of these capabilities. Because of this,\nLibNyoci is designed so that you can individually enable or disable features\ndepending on your needs (See `src/libnyoci/nyoci-config.h.in`).\n\nFor example, LibNyoci has the ability to have more than once instance, but embedded\nplatforms will never need more than one. Passing around a reference to a\nglobal variable that will never change is wasteful, so when compiled with\n`NYOCI_SINGLETON` turned on, we transparently (via some preprocessor magic) ignore\nthe reference to the LibNyoci instance from all of the functions that take it.\nThis makes it easy to use the same codebase for both embedded and non-embedded\napplications. There are other configuration options for doing things like\nlimiting `malloc()` usage, avoiding use of `printf()` (and variants),\nenabling/disabling observing, etc.\n\n## Contiki Support ##\n\nLibNyoci supports [Contiki](http://contiki-os.org/) (albeit a rather old version).\nTo build the Contiki examples, just make sure that the `CONTIKI` environment\nvariable is set point to your Contiki root, like so:\n\n\t$ cd contiki-src/examples/nyoci-simple\n\t$ make CONTIKI=~/Projects/contiki TARGET=minimal-net\n\n## API Documentation ##\n\nYou can find an online version of the API documentation here:\n\u003chttp://darconeous.github.com/libnyoci/doc/html/\u003e\n\n## `nyocictl` ##\n\n`nyocictl` is a command-line interface for browsing, observing, and\ninteracting with CoAP devices. It is, for the most part, self-documenting:\njust type in `nyocictl help`. You can run individual commands directly from\nthe command line when invoking `nyocictl` or you can invoke with no\narguments and you will enter the nyocictl shell (CLI). The shell environment\nallows you to use familiar unix commands like `ls`, `cd`, and `cat`. The\nCLI supports quoting and tab-completion of resource names, which is\nincredibly handy.\n\nHere are a few examples of how you can use it:\n\n### GET a resource ###\n\n\t$ nyocictl get coap://coap.me/large\n\n### Listing the contents of a resource ###\n\n\t$ nyocictl ls coap://coap.me/.well-known/core\n\n### PUT a resource and show parsed response headers ###\n\n\t$ nyocictl put -i coap://coap.me/test \"Testing out nyocictl's PUT command\"\n\n### Observe a resource for changes ###\n\n\t$ nyocictl observe coap://vs0.inf.ethz.ch/obs\n\n## Plugtests ##\n\n`nyoci-plugtest-server` implements some of the ESTI plugtests for CoAP.\n\n### List of Public Test Servers ###\n\nThese servers run a subset of the plugtest suite:\n\n * \u003ccoap://coap.me/\u003e\n * \u003ccoap://vs0.inf.ethz.ch/\u003e\n\nThese are other publically-accessable example/test servers:\n\n * \u003ccoap://leshan.eclipse.org\u003e/\u003ccoaps://leshan.eclipse.org\u003e\n * \u003ccoap://californium.eclipse.org\u003e/\u003ccoaps://californium.eclipse.org\u003e\n\n## Authors and Significant Contributors ##\n\n * [Robert Quattlebaum](https://github.com/darconeous)\n\n### Special Thanks ###\n\n * [Paulo Brizolara](https://github.com/paulobrizolara), for help with IPv4 multicast support.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarconeous%2Flibnyoci","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarconeous%2Flibnyoci","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarconeous%2Flibnyoci/lists"}