{"id":46332584,"url":"https://github.com/blues/note-espidf","last_synced_at":"2026-04-11T20:28:25.187Z","repository":{"id":317539388,"uuid":"1067853024","full_name":"blues/note-espidf","owner":"blues","description":"ESP-IDF Component for Notecard","archived":false,"fork":false,"pushed_at":"2026-03-11T13:55:41.000Z","size":36,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T07:17:57.680Z","etag":null,"topics":["espidf","notecard"],"latest_commit_sha":null,"homepage":"https://components.espressif.com/components/blues/notecard","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blues.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-01T13:37:45.000Z","updated_at":"2026-02-02T16:37:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"4a7d9f7b-097a-4dde-a56b-c9e1e6c94ab7","html_url":"https://github.com/blues/note-espidf","commit_stats":null,"previous_names":["blues/note-espidf"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/blues/note-espidf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blues%2Fnote-espidf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blues%2Fnote-espidf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blues%2Fnote-espidf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blues%2Fnote-espidf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blues","download_url":"https://codeload.github.com/blues/note-espidf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blues%2Fnote-espidf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31694839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T20:18:30.949Z","status":"ssl_error","status_checked_at":"2026-04-11T20:18:29.982Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["espidf","notecard"],"created_at":"2026-03-04T18:03:09.279Z","updated_at":"2026-04-11T20:28:25.167Z","avatar_url":"https://github.com/blues.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP-IDF Notecard Component\n\nAn ESP-IDF component for integrating Espressif devices with the Blues [Notecard](https://blues.com/products/notecard/).\nThis component provides a thread-safe interface to the Notecard using the [note-c](https://github.com/blues/note-c) library.\n\n## Installation\n\n```bash\nidf.py add-dependency \"blues/notecard\"\n```\n\n## Usage\n\nThe component can be used to communicate with the Notecard using I2C or UART.\nThe GPIO pins can either be set within application code or via `menuconfig`.\n\n### Basic Example\n\n```c\n#include \"notecard.h\"\n\nvoid app_main(void) {\n    // Initialize with default I2C configuration\n    notecard_config_t config = NOTECARD_I2C_CONFIG_DEFAULT();\n    // or with UART\n    // notecard_config_t config = NOTECARD_UART_CONFIG_DEFAULT();\n    ESP_ERROR_CHECK(notecard_init(\u0026config));\n\n    // Send a request using note-c API\n    J *req = NoteNewRequest(\"hub.set\");\n    JAddStringToObject(req, \"product\", \"com.your-company:your-product\");\n    JAddStringToObject(req, \"mode\", \"continuous\");\n    if (!NoteRequest(req)) {\n        ESP_LOGE(\"app\", \"hub.set failed\");\n    }\n}\n```\n\n## Configuration\n\nThe component can be further configured with `menuconfig`.\n\n```bash\nidf.py menuconfig\nComponent config  ---\u003e  Notecard Configuration\n```\n\n## Thread Safety\n\nThe component automatically provides thread-safe access to the Notecard in multi-threaded FreeRTOS applications.\nThis is specific to the ESP-IDF implementation of `malloc` as referenced in their [documentation](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/mem_alloc.html#thread-safety).\nThe underlying [note-c](https://github.com/blues/note-c) library protects the Notecard from concurrent access using internal mutexes, so no additional locking is required for normal use.\n\n\u003e Note: Due to the nature of the Notecard and the fact that it could be seconds (not milliseconds) to process a request/response, if your application or its sensors have sensitive timing requirements, your timing-sensitive operations should be handled in their own FreeRTOS task(s).\n\n### I2C Bus Sharing\n\nIf you have other I2C peripherals on the same bus as the Notecard, register your I2C mutex with `note-c` using `NoteSetFnI2CMutex()` to minimize the time spent under lock.\n\nFor your convenience, we have provided a default implementation of I2C mutex APIs to coordinate access (example shown below):\n\n```c\n#include \"notecard.h\"\n\n// Access your I2C peripherals\nnotecard_i2c_lock();\ni2c_master_transmit(my_peripheral_handle, data, len, timeout);\nnotecard_i2c_unlock();\n```\n\nThis ensures the `note-c` won't attempt I2C communication while you're accessing your other peripherals.\n\nIn order to enable/disable the provided I2C bus mutex (e.g. when using your own mutex), use `menuconfig`:\n\n```\nComponent config  ---\u003e  Notecard Configuration  ---\u003e  Default I2C Configuration  ---\u003e  [ ] Enable I2C mutex\n```\n\n\u003e Note: The I2C mutex is enabled by default.\n\n## Examples\n\nFor examples, see the [examples](examples) directory.\n\nExamples are designed to run on:\n\n- [Adafruit ESP32 Feather V2](https://learn.adafruit.com/adafruit-esp32-feather-v2?view=all)\n- [Notecard](https://blues.com/products/notecard/)\n- [Notecarrier F](https://blues.com/products/notecarrier/notecarrier-f/)\n\nIf you wish to use a different ESP32 board (or different ESP32 chip), you will need to adjust the GPIO pins used for the Notecard.\nSee the [Kconfig](Kconfig) file for the default I2C and UART GPIO pins.\n\n## Documentation\n\nFor more information, visit [Blues Developer Documentation](https://dev.blues.io/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblues%2Fnote-espidf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblues%2Fnote-espidf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblues%2Fnote-espidf/lists"}