Using API¶
This provides the lowest level access to an interface marked as external. Each of the external interface is exported as a raw stream_buffer and can be written to from a C/C++ Api. In order to use it, the context has to be generated as a shared library. The resulting shared library can be loaded by an external system using [dlopen](http://man7.org/linux/man-pages/man3/dlopen.3.html)
explicitly or linked against using the api.h
file that is generated in the public folder.
Walkthrough¶
- For the purpose of demonstration in this walkthrough, we will use a simple function included in vsi_examples repository. Using git, clone the vsi_examples repository:
https://github.com/systemviewinc/vsi-examples.git
. - Create a new project and work through the wizard to the end. Select any part/board as it won’t matter since we’re only going to be using the software for the walkthrough.
- Click
menu->flow->Create Platform
. Accept the prefilled default options and Press okay. - Click
menu->flow->Create Context
. Change the dropdown toSoftware
and enter name asapi_walkthrough
. Press okay. - Open Context block properties by double clicking inside
api_walkthrough
and scroll down toSoftware Parameters->map exposed interfaces as
. Make sure thatApi
is selected. - Scroll down to
C/C++ options
and ensure that-static
flag is NOT included inC
orC++
compile options. Remove it if you see it included. - Open the
Builds
dropdown and select Shared Library. - Press okay to close the properties dialog.
- Select
menu->Flow->Compile Platform
. - Then create a system canvas by selecting
flow->create system
. Accept the prefilled defaults. - Open the newly created system canvas and select
menu->Flow->Import Platform
- Double click the
api_walkthrough
context to enter hierarchy. - Add a new
VSI Software Wizard
block by right clicking and selectingVSI Software Wizard
. - Open newly added block properties by double-clicking it.
- Click browse beside
Source Directory
and browse to select source code directory<vsi_examples>/example_1
. - The
C/C++ Function
dropdown box should be populated with multiple entries. Open and selectprocess_tcp1
. - Enable
Execution Trigger
forArg 1
in Arguments section. - Change the direction of
Arg 2
in Arguments section tooutput
. Press okay to close properties. - Right click each interface and select
Mark External
. - Select
flow->Generate System
. - Select
flow->Build Software Contexts
and then SelectBuild
. - Wait for the build to successfully complete.
- Browse to the directory
<project_dir>/vsi_auto_gen/sw/system_1
in a terminal. - VSI automatically generate an example executable to demonstrate the api usage. Run the example by using the following command
./build/api_walkthrough/bin/api_walkthrough_example
- The example will write to each input interface marked external and then read from each output marked external A statement on console is printed for each read and write.
Exercise¶
- Analyze the example code for API walkthrough in
<project_dir>/vsi_auto_gen/sw/system_1/api_walkthrough/example
. Modify it to read data from a file instead of a variable and write to the input interface.