Home

Awesome

Catena-mcciadk

This repository contains the MCCI® ADK, a version of the MCCI XDK adapted for use on Catena®-like Arduinos by MCCI Corporation.

GitHub release GitHub commits Build Status

Contents:

<!-- markdownlint-capture --> <!-- markdownlint-disable --> <!-- TOC depthFrom:2 updateOnSave:true --> <!-- /TOC --> <!-- markdownlint-restore -->

Introduction

MCCI uses its XDK (cross-platform development kit) for writing portable code for use across development environments, compilers and operating systems. Although we don't think it's really appropriate for Arduino work, we find some of its idioms extremely useful, along with some of the functions.

By convention, MCCI makes specific versions of development environments for different targets. We have, for example, a "MCCI WDK" library for use in with the Microsoft Windows Driver Development Kit; we have an "LDK" library for use with the Linux kernel; and we have a "PDK" library for use in portable POSIX application development. All share basic features with the XDK. So it made sense to us to create an "Arduino Development Kit" ("ADK") that makes it easy to bring in other MCCI code to Arduino environments.

Some of these macros represent ways of dealing with portability that actually are not applicable in the Arduino environment. However, we use them anyway.

There are two parts to the ADK:

We'll discuss them in turn.

mcciadk_env.h

This header file sets up a common compile-time environment.

Library versions

Compile-time text manipulation

Value Computation

Static Assert

Use this wherever a declaration is valid.

C++/C wrappers

We don't like the repeated construct:

#ifdef __cplusplus
extern "C" {
#endif

and the equivalent that's needed at the end of a C header file. We think it adds typing and is just kind of ugly. And we strive to minimize #if in code files (as opposed to header files.) So instead, we have macros:

Parameter and Variable Decoration

We like to compile with high levels of warnings, but this means we'll get errors and warnings about unreferenced parameters. Sometimes these warnings are bogus, because the parameters are part of a contract rather than being something important to the caller.

We thus have macros to tell the compiler to back off, we know what we're doing. The specific macros are:

mcciadk_guid.h

This header file defines useful macros for GUID manipulation. (GUIDs or UUIDs are 128-bit values that are often used in abstract API construction.)

mcciadk_baselib.h

This header file provides a number of portable APIs for use by ADK clients.

Targeted platforms

This library is intended for systems with 32-bit or wider architecture. It might work with AVR32 systems, but has not been tested or compiled.

MCCI uses this library regularly on ARM Cortex M0 platforms. Two of these platforms are covered by the Travis CI tests (Microchip SAMD21, and STM32L0). In addition, some users of the MCCI LoRaWAN software use ESP32, so we do CI testing with ESP32. MCCI doesn't regularly use the code on that platform, however.

Release History

Bugs or Issues

If you find a bug you can submit an issue here on GitHub:

github.com/mcci-catena/Catena-mcciadk/issues

Before posting a new issue, please check if the same problem has been already reported by someone else to avoid duplicates.

License and Credits

MIT License

Please refer to the license file accompanying this repository.

Contributors

Terry Moore and ChaeHee Won of MCCI were the principal contributors to the code in the ADK (and the XDK on which it's based).

Trademark Acknowledgements

MCCI and MCCI Catena are registered trademarks of MCCI Corporation. All other trademarks are the properties of their respective owners.

Support Open Source Hardware

MCCI invests time and resources providing this open source code, please support MCCI and open-source hardware by purchasing products from MCCI, Adafruit and other open-source hardware/software vendors!

For information about MCCI's products, please visit store.mcci.com.