-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update README in docs/ and remove README from root
- Loading branch information
Showing
2 changed files
with
71 additions
and
148 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,7 +22,7 @@ Both options support running the parser on a different machine than the one runn | |
|
||
### Expertise | ||
|
||
The maintainer has well over a decade of experience in the PCB Manufacting and hardware industry. Specifically he has worked on the development of ODB++ parsing and viewer applications for some of the established key players in the industry. Time spent working under the designer of the ODB++ specification has given him a unique perspective on the ODB++ format and how it is used in the industry. This experience is also leveraged to make the parser as fast and efficient as possible. | ||
The maintainer has well over a decade of experience in the PCB Manufacturing and hardware industry. Specifically he has worked on the development of ODB++ parsing and viewer applications for some of the established key players in the industry. Time spent working under the designer of the ODB++ specification has given him a unique perspective on the ODB++ format and how it is used in the industry. This experience is also leveraged to make the parser as fast and efficient as possible. | ||
|
||
## Overview | ||
|
||
|
@@ -36,9 +36,68 @@ The diagram describes the current state of parser implementation and data availa | |
|
||
## Building from Source | ||
|
||
### CMake C++ Project | ||
### Build Dependencies | ||
|
||
### Docker Image | ||
> If you are building on Windows and have a modern version of Visual Studio installed then all of the dependencies listed below are already installed on your system (except for maybe Docker). You can skip to the next section. | ||
> If you are building on a Linux system then the dependencies listed below can be installed using your package manager. For example on Ubuntu you can install them (except for vcpkg and Docker) using the following command: | ||
> | ||
> ```$ sudo apt install git cmake ninja-build build-essential``` | ||
* git ([install instructions for your platform](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)) | ||
* vcpkg ([install instructions for your platform](https://vcpkg.io/en/getting-started.html)) | ||
* CMake ([install instructions for your platform](https://cliutils.gitlab.io/modern-cmake/chapters/intro/installing.html)) | ||
* Ninja ([install instructions for your platform](https://ninja-build.org/)) | ||
* Docker ([install instructions for your platform](https://docs.docker.com/get-docker/)) (*optional*) | ||
|
||
### Source Code | ||
|
||
Get the source code by cloning the GitHub repository: | ||
|
||
```$ git clone [email protected]:nam20485/OdbDesign.git``` | ||
|
||
### Build | ||
|
||
Open your favorite terminal and change to the directory where you cloned the source code. This should be something similar to one of the below depending on your platform and where you cloned the source code: | ||
|
||
* `~/OdbDesign` | ||
* `C:\Users\YourName\OdbDesign` | ||
|
||
Then run the commands from one or more of the sections below, based on what you would like to build... | ||
|
||
#### CMake C++ Project | ||
|
||
##### Visual Studio | ||
|
||
* Open the directory in Visual Studio (this will open the directory as a CMake project) | ||
* Select a Configuration preset: | ||
* `x64 Release` | ||
* `x64 Debug` | ||
* Select a target: | ||
* `OdbDesign.dll` *(parser shared library)* | ||
* `OdbDesignServer.exe` *(REST API server executable)* | ||
* Build *(i.e. Build->Rebuild All or CTRL+SHIFT+B)* | ||
|
||
##### Command-Line CMake | ||
|
||
###### Windows | ||
|
||
```Bash | ||
$ cmake --preset x64-debug | ||
$ cmake --build --preset x64-release | ||
``` | ||
|
||
###### Linux | ||
|
||
```Bash | ||
$ cmake --preset linux-debug | ||
$ cmake --build --preset linux-release | ||
|
||
``` | ||
|
||
#### Docker Image for REST API Server | ||
|
||
```$ docker build -f Dockerfile_OdbDesignServer . -t odbdesign-server``` | ||
|
||
## Integration | ||
|
||
|
@@ -50,28 +109,33 @@ There are four interfaces that allow use of the library in other applications. | |
|
||
### Python Object Interface | ||
|
||
SWIG is used to create a Python interface to the C++ library. The interface is exposed as a Python package that can be installed using pip. Parsing is supported, but currently not all data is available to access via the Python interface. Using the Python interface for anything beyond basic parsing would require implementation of Python wrapper classes to hold the data you are interested in. A better route for Python integration is probably to use the REST API or to generate Python bindings automatically using the included Goolge Protobuf definitions. | ||
SWIG is used to create a Python interface to the C++ library. The interface is exposed as a Python package that can be installed using pip. Parsing is supported, but currently not all data is available to access via the Python interface. | ||
|
||
>Using the Python interface for anything beyond basic parsing would require implementation of Python wrapper classes to hold the data you are interested in. A better route for Python integration is probably to use the REST API or to generate Python bindings automatically using the included Google Protobuf definitions. | ||
### Google Protobuf Protocol Buffers | ||
|
||
Data objects returned from the parser library support serialization to and from [Google Protobuf protocol buffers](https://protobuf.dev/). This allows the data to be easily shared with other applications and programming languages that support protocol buffers. This is a highly optimized binary encoding so it is fast and small. The protocol buffer definitions are included in the library so they can be used to generate code for other languages. | ||
Data objects returned from the parser library support serialization to and from [Google Protobuf protocol buffers](https://protobuf.dev/). This allows the data to be easily shared with other applications and programming languages that support protocol buffers. Google Protobuf is a highly optimized binary encoding so it is fast and small. | ||
|
||
>The protocol buffer definitions are included in the library so they can be used to generate code for other languages - currently C++ bindings are built and used in the library. | ||
## License | ||
|
||
This project is free and open source under the MIT [license](https://github.com/nam20485/OdbDesign/blob/c0c8b6e4b93e1c7d4d5e65c7ad25157c883f8bfb/LICENSE). | ||
|
||
## Contact | ||
|
||
If you are interested in using the parser in your application or code, or have any questions about it please do not hesistate to contact me. If you need support for integration of the parser into your own product and/or need its feature set extended, I am available for consulting at very reasonable fees. | ||
If you are interested in using the parser in your application or code, or have any questions about it please do not hesitate to contact me. If you need support for integration of the parser into your own product and/or need its feature set extended, I am available for consulting at very reasonable fees. | ||
|
||
* [Email me (maintainer)](mailto:[email protected]?subject=OdbDesign) | ||
* [GitHub](https://github.com/nam20485/odbdesign) | ||
* [LinkedIn](https://www.linkedin.com/in/namiller/) | ||
* [OdbDesign Website](https://nam20485.github.io/OdbDesign/) | ||
|
||
## ODB++ | ||
|
||
* [ODB++ Format Home](https://odbplusplus.com/design/) | ||
* [ODB++ Format Documentation & Resources](https://odbplusplus.com/design/our-resources/) | ||
* [ODB++ Format Specification v8.1 update 3](https://odbplusplus.com//wp-content/uploads/sites/2/2021/02/odb_spec_user.pdf) | ||
|
||
_ODB++ is a registered trademark of Siemens and Mentor Graphics Corporation._ | ||
*ODB++ is a registered trademark of Siemens and is © Siemens 2021* |