/
Overview & Code Organization
Overview & Code Organization
The
SmartMesh C Library
abstracts the serial API of SmartMesh devices into a set of functions your application can call.- To issue to a command to a device over its serial API, your application calls the corresponding function. The
SmartMesh C Library
handles formatting serial frames and HDLC framing, as well as matching commands and responses. - Notifications received from the device result in a callback function being called. The
SmartMesh C Library
handles parsing the serial notification frames and sending a serial API acknowledgement to the device when necessary.
The
SmartMesh C Library
is designed with the following constraints in mind:- It is written in pure C. In particular, no hardware-specific code is present in the
SmartMesh C Library
, allowing it to be used as-is in any C-based platforms. To use theSmartMesh C Library
on your platform, you have to implement a handful of functions (see Porting). - It is not tied to any operating system. The
SmartMesh C Library
only deals with formatting and parsing serial frames. It can be used as-is in single threaded environments (see for example the Arduino Example Applications section). If you are operating in a multi-threaded environment (e.g. you are using a Real-Time Operating System), you can use locking functions (see the Porting section).
Source Code Organization
The
SmartMesh C Library
can be downloaded at https://github.com/dustcloud/sm_clib.Directory Structure
That repository contains the following directories:
- the
sm_clib/
directory contains the library itself, as a collection of headers (.h
) and source code files (.c
):- main modules:
dn_ipmg.c
implements the SmartMesh IP Manager serial API.dn_ipmt.c
implements the SmartMesh IP Mote serial API.dn_whmt.c
implements the SmartMesh WirelessHART Mote serial API.
- helper modules:
dn_serial_mg.c
implements low-level serial formatting for communicating with the SmartMesh IP Manager.dn_serial_mt.c
implements low-level serial formatting for communicating with the SmartMesh IP Mote and SmartMesh WirelessHART mote.dn_hdlc.c
implements HDLC framing over a serial connection, following RFC1662.
- header files for porting:
dn_endianness.h
contains the prototypes of the functions you need to implement to support different endianness.dn_lock.h
contains the prototypes of the functions you need to implement to support a multi-threaded environment.dn_uart.h
contains the prototypes of the functions you need to allow theSmartMesh C Library
to communicate over your (micro-)processor's serial port.For more information about porting, see the Porting section.
- main modules:
- the
examples/
directory contains sample applications which use theSmartMesh C Library
. These examples are built for the Arduino Due.- The
arduino/Libraries/
directory contains the libraries used by the sample applications. - The
arduino/MoteBlink/
directory contains the MoteBlink sample application. The
arduino/Triangle2manager/
directory contains the Triangle2manager sample application.For more information about the Arduino sample applications, see the Arduino Example Applications section.
- The
What about the SmartMesh WirelessHART manager?
Interacting with the SmartMesh WirelessHART manager is best done through its XML-RPC interface. The
SmartMesh C Library
targets serial API interfaces, and hence does not support the SmartMesh WirelessHART manager.
, multiple selections available,
Related content
Documentation
Documentation
More like this
QuickStart Library Overview
QuickStart Library Overview
More like this
Getting Started
Getting Started
More like this
CLI Module
CLI Module
More like this
Prepare the Manager
Prepare the Manager
Read with this
APIExplorer
APIExplorer
More like this