The IoTivity-Lite development kit enables users to automatically generate code for an OCF Server. This is a great starting point for developing an OCF application. This guide describes how to generate such applications and import them into the Cascoda SDK.
In order to follow this guide, you must set up the IoTivity-Lite SDK as described in the IoTivity-Lite Device Simulation Guide. We recommend going through the entire guide so that you can gain an understanding of how OCF applications work in general. If you have the necessary hardware, we also recommend going through the IoTivity-Lite Raspberry Pi Guide before proceeding.
After running the
./gen.sh script, as described in the Device Simulation
guide, you should find the auto-generated source files inside the
device_output/code folder. The files that need to be imported into the
Cascoda SDK are
server_introspection.dat.h contains introspection data used by an OCF
server in order to advertise its capabilities. It describes the various
resources present on the server, and gives information on how to use them.
Having accurate introspection data is necessary in order to pass OCF
certification. The introspection data is generated based on the
example.json file in the top-level
iot-lite directory. It is stored as
CBOR data, and can be translated to a human-readable format using
simpleserver.c contains the actual behaviour of the server, which enables
it to respond to requests & updates. When developing an end product, the
source file needs to be modified to communicate with the hardware (such as a
relay to turn on a smart light, or various sensors within a sensing device).
The comments near the top of the file contain information on how to do this.
You can find more information about the contents of these files within OCF’s documentation of the template used to generate them. Additionally, more information on the IoTivity-Lite SDK can be found here.
Some changes to the autogenerated
simpleserver.c file are required. Within
ocf-light example, they are commented as “Cascoda additions”.
Searching for “Cascoda” within that file will locate all of these changes. You
may also want to modify the request handlers so that they access hardware,
for e.g. relaying sensor measurements.
You must also link
simpleserver.c against a file that provides a
function, as the automatically generated one is unsuitable for embedded
platforms. You may use the ones we have used for our examples
wakeful_main.c) or write your own.
By default, the IoTivity SDK generates an OCF Server intended to control a
light, with a
oic.r.switch.binary resource. If you would like to generate a
different type of device, you must change the device type inside
well as the list of resources within
example.json. The list of resources
must match the device type of the server in order to pass OCF certification.
A list of the mandatory resources for each standard OCF device type can be
found within the OCF Device