{ "info": { "author": "Jeff Ciesielski", "author_email": "jeffciesielski@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Topic :: Utilities" ], "description": "XBVC: eXtensible Bit Vector Communication (protocol...)\n=======================================================\n\nThe 'e' is silent.\n\nXBVC is a compact, endian independent, framed message passing protocol\nsuitable for use in embedded systems, or whatever you feel like\nthrowing it in.\n\nMessages and Enumerations are defined in YAML using the following\nsyntax:\n\n\t#This is an example Extensible Bit Vector Communication protocol message definition\n\n\t#Integer types:\n\t#u32: unsigned 32 bit integer\n\t#s32: signed 32 bit integer\n\t#u16: unsigned 16 bit integer\n\t#s16: signed 16 bit integer\n\t#u8: unsigned 8 bit integer\n\t#s8: signed 8 bit integer\n\t#y[x]: array of type 'y', 'x' members long\n\n\t#Example enumeration\n\t# enumeration values are parsed in order\n\tget_target: {\n\t\tRPM,\n\t\tTPS,\n\t\tMAP,\n\t\tIAT,\n\t}\n\n\t# Example Messages\n\t# Note that there are two special fields in each command\n\t# _targets: this specifies which target (i.e. which end of the message pipe)\n\t# will be responsible for generating this message. Since this protocol was made\n\t# with embedded targets in mind, this is important for space savings in the code\n\t# Note that it is not necessary for all language targets to adhere to this directive\n\t# _id: This specifies the unique message id and allows for somppe minor extensibility\n\tget_command:\n\t\t- _targets: {host}\n\t\t- _id: 0\n\t\t- Target: u32\n\t\t- Fluff: u8[10]\n\nThe xbvcgen.py tool then converts this yaml definition into source\ncode for any of the supported platforms (c and python for now, more to\nfollow).\n\nThis source code contains the message definitions, enumerations, and the\nframer / message arbitration mechanism. The only things the user must\nprovide are read/write/init functions, and the individual message\nhandlers. (Note: The message handling paradigm varies by language)\n\nFor example:\n\n1. In the c implementation, the user must provide: xbvc_platform_init,\n xbvc_platform_write, and xbvc_platform_read\n2. in the python implementation, the user must subclass XBVCEdgePoint\n and provide connect, _read, and _write functions (see the generated\n python code for an example that provides a loopback test)\n\n## Prerequisites\n1. Python 2.7\n2. pyyaml (via pip)\n3. jinja2 (via pip)\n\n## Installation\n1. Clone repository\n2. run 'python setup.py install' in the project root\n\n## Use\n1. Create a yaml file containing your messages and enumerations using\n the schema outlined above\n2. Call xbvcgen.py, passing in your yaml file as the input parameter,\n a destination folder as the output parameter (this will be created\n for you), and the targets and languages\n\n\t./xbvcgen.py -i msgs.yaml -o code -t device -l python\n\n3. Integrate the generated files into your build (I suggest making\n this a phony target in your makefile and copying the files into\n their final destination)\n\n4. Provide the platform specific functionality functions and implement\n your message handlers.\n\n## License\nThis software, including all language target templates is provided\nunder the GPLv2 license. HOWEVER, all generated code is the property\nof it's respective owner to be licensed however they wish. Please see\nthe LICENSE file for a copy of the GPL.\n\n## TODO\n1. Provide a python package\n2. Whip up some platform examples (pyserial, c loopback, c socket, c\n serial)\n3. Add more platforms (java, c++, go)\n4. Think about providing some baked in messages (unknown message /\n problem decoding)", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Jeff-Ciesielski/XBVC", "keywords": "usart communication microcontroller", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "XBVC", "package_url": "https://pypi.org/project/XBVC/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/XBVC/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/Jeff-Ciesielski/XBVC" }, "release_url": "https://pypi.org/project/XBVC/0.0.1/", "requires_dist": null, "requires_python": null, "summary": "eXtensible Bit Vector Communication (protocol)", "version": "0.0.1" }, "last_serial": 1345616, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "27722809502dfe3f55f15349df444db5", "sha256": "7813a0156e92088c8d8c29853145376de8d13d9ac3de59e72ed6f79c500ffa56" }, "downloads": -1, "filename": "XBVC-0.0.1.tar.gz", "has_sig": false, "md5_digest": "27722809502dfe3f55f15349df444db5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15764, "upload_time": "2014-12-16T04:53:18", "url": "https://files.pythonhosted.org/packages/5c/af/deef59db69a7e455e3fb6f8b2bcb0e1d9c4d7b00f912fd87a9a4dfa9e812/XBVC-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "27722809502dfe3f55f15349df444db5", "sha256": "7813a0156e92088c8d8c29853145376de8d13d9ac3de59e72ed6f79c500ffa56" }, "downloads": -1, "filename": "XBVC-0.0.1.tar.gz", "has_sig": false, "md5_digest": "27722809502dfe3f55f15349df444db5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15764, "upload_time": "2014-12-16T04:53:18", "url": "https://files.pythonhosted.org/packages/5c/af/deef59db69a7e455e3fb6f8b2bcb0e1d9c4d7b00f912fd87a9a4dfa9e812/XBVC-0.0.1.tar.gz" } ] }