{"id":15069811,"url":"https://github.com/enilink/llrp4j","last_synced_at":"2025-04-10T17:00:25.119Z","repository":{"id":49964401,"uuid":"44733730","full_name":"enilink/llrp4j","owner":"enilink","description":"LLRP protocol and networking for Java","archived":false,"fork":false,"pushed_at":"2021-06-07T17:34:39.000Z","size":179,"stargazers_count":24,"open_issues_count":9,"forks_count":8,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-24T14:45:57.000Z","etag":null,"topics":["java","llrp"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enilink.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-22T08:58:02.000Z","updated_at":"2024-08-19T03:19:45.000Z","dependencies_parsed_at":"2022-08-24T05:31:46.012Z","dependency_job_id":null,"html_url":"https://github.com/enilink/llrp4j","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enilink%2Fllrp4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enilink%2Fllrp4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enilink%2Fllrp4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enilink%2Fllrp4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enilink","download_url":"https://codeload.github.com/enilink/llrp4j/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248259848,"owners_count":21074207,"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":["java","llrp"],"created_at":"2024-09-25T01:44:49.632Z","updated_at":"2025-04-10T17:00:25.089Z","avatar_url":"https://github.com/enilink.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= LLRP4J - LLRP for Java image:https://travis-ci.org/enilink/llrp4j.svg?branch=master[\"Build Status\", link=\"https://travis-ci.org/enilink/llrp4j\"]\n\nLLRP protocol and networking implementation for Java.\n\nLLRP4J implements encoders and decoders for the binary and (proprietary) XML serializations\nof the http://www.gs1.org/epcrfid/epc-rfid-llrp/1-1-0[Low Level Reader Protocol (LLRP)].\n\nLLRP4J consists of the following modules:\n\n* *llrp4j-core:* Encoders and decoders for the binary and XML serializations.\n* *llrp4j-generator:* Java source code generator for annotated POJOs based on XML definition files.\n* *llrp4j-llrp-module:* The LLRP module that provides Java classes for messages and parameters as defined by the LLRP 1.1 standard.\n* *llrp4j-impinj-module:* A placeholder for a custom Impinj module whose definition (impinjdef.xml) must be directly obtained from Impinj due to licensing restrictions.\n* *llrp4j-net:* LLRP client and server implementations using Java NIO.\n\n== Get started\n[source,java]\n----\nfinal LlrpContext ctx = LlrpContext.create(new LlrpModule());\nLlrpEndpoint endpoint = new LlrpEndpoint() {\n  @Override\n  public void messageReceived(LlrpMessage message) {\n    StringWriter writer = new StringWriter();\n    try {\n      XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);\n      ctx.createXmlEncoder(true).encodeMessage(message, xmlWriter);\n      String xml = writer.toString();\n      System.out.println(\"RECEIVED:\\n\" + xml);\n    } catch (Exception e) {\n      // handle exception\n    }\n  }\n\n  @Override\n  public void errorOccured(String message, Throwable cause) {\n  }\n};\nLlrpServer server = LlrpServer.create(ctx, \"127.0.0.1\").endpoint(endpoint);\nLlrpClient client = LlrpClient.create(ctx, \"127.0.0.1\").endpoint(endpoint);\n\nclient.transact(new SET_READER_CONFIG().resetToFactoryDefault(true));\n\nclient.close();\nserver.close();\n----\n\n== Get the sources\n\n[source,text]\n----\ngit clone https://github.com/enilink/llrp4j\n----\n\n== Build LLRP4J\n\nLLRP4J can be build with Maven. You can simply use `mvn -P generator package` to compile and package all modules or `mvn -P generator install` to install them within your local Maven repository.\n\n== Differences to LLRP Toolkit for Java\n\nA popular implementation of LLRP in Java is the http://www.sourceforge.net/projects/llrp-toolkit[LLRP Toolkit (LTK) for Java].\nIts development has been stalled since 2012 and hence we decided to create a new\nLLRP library for Java with the following benefits:\n\n* *Pluggable serializers:* LLRP4J does not generate the serialization logic into the message and parameter classes but \nuses annotations to declare the respective LLRP data types and encoding rules. This enables serializers to leverage runtime\nreflection for encoding or decoding message and parameter objects.\n* *Dynamic modules:* LLRP4J can be extended with modules at runtime to add custom messages or parameters. LTK for Java had\nto know custom messages or parameters at the generation time of the Java source code for messages and parameters.\n* *Minimal runtime dependencies:* LLRP4J has no additional runtime dependencies other than SLF4J.\n* *Better code generator:* LLRP4J uses https://github.com/phax/jcodemodel[JCodeModel] for source code generation\nthat is simpler and better extendable in comparison to the template based approach of LTK for Java.\n\n== License\n\nLLRP4J is licensed under the Eclipse Public License v1.0.\n\n== Acknowledgements\n\nThe networking module is based on the http://rox-xmlrpc.sourceforge.net/niotut/[Rox Java NIO Tutorial] and\nthe bit buffer implementation is a fork of https://github.com/magik6k/BitBuffer.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenilink%2Fllrp4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenilink%2Fllrp4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenilink%2Fllrp4j/lists"}