Design, develop and implement a foundational software library that implements support for common, embedded functionality. This library is intended to be a core foundational block for SparkFun software implementations, enabling the use of a single, well tested solution across all products. Today, for common capabilities, each new library implements its own version of the functionality – a option that is error prone and difficult to maintain. With a “toolkit” library, only one, well tested and validated implementation is used across all our solutions. Additionally, updates to the toolkit library are rapidly integrated into existing solution updates.
The key premise that makes this toolkit library possible, is the library dependency functionally supported by the development environments the library is used within. For example, when building a new SparkFun Arduino Library, the new library can mark the SparkFun Toolkit library as a dependency.
While the initial focus of this library is communication bus architectures, the capabilities of this library will expand over time to deliver a wide variety of capabilities.
Initial Focus - Communication Bus Functionality
The library is designed to deliver a common communication bus interface, that is shared across the various bus types supported. This common interface enables the implementation of capabilities, with little need to understand the underlying details of the bus architecture, or even which type of bus is being used.
This implementation should support the following communication bus types:
I2C
SPI
UART/Serial
While the setup of each bus is different (initialization and definition), the data communication interface is the same, enabling common functionality use across different bus architectures
Use Scenarios
The general use case/scenario for the communication bus implementation of the Foundation library is:
An Arduino Library developer includes the SparkFun Foundation library.
The SparkFun Foundation library is marked as dependency, ensuring Arduino will install it automatically.
The core functionality of the new library uses the common communication interface provided. Read and write operations are performed using methods on this common interface.
The design of the library decouples the use of the bus implementation, from the creation of the bus specific object. This enables rapid creation of bus type specific solutions that all use the same core functionality.
Target Personas/Users
Arduino library developers
Internal SparkFun developers/employees
Key Functionality
Presents communication bus interfaces using a single, common interface.
C++ Implementation, with platform specific components (i.e. Arduino) provided, but part of the core architecture
Initial platform is Arduino.
Design Considerations
The foundation library functionality isolated using a C++ namespace.
Focus on Arduino initially.
Once a core implementation is available, test across a variety of existing SparkFun libraries to validate the implementation.
Once launched and available to the Arduino environment, these test libraries shall be updated to use the Foundation library.
Note that the implementation should follow the pattern delivered as part of these libraries:
Delivered using GitHub Pages, the documentation should include:
Design overview and diagrams
Use examples.
API Documentation
Product Launch
Once launched and in use internally, the launch shall be marked via a SparkFun blog post. The intent is for internal use, but there's nothing to prevent external use of this library
Description
Design, develop and implement a foundational software library that implements support for common, embedded functionality. This library is intended to be a core foundational block for SparkFun software implementations, enabling the use of a single, well tested solution across all products. Today, for common capabilities, each new library implements its own version of the functionality – a option that is error prone and difficult to maintain. With a “toolkit” library, only one, well tested and validated implementation is used across all our solutions. Additionally, updates to the toolkit library are rapidly integrated into existing solution updates.
The key premise that makes this toolkit library possible, is the library dependency functionally supported by the development environments the library is used within. For example, when building a new SparkFun Arduino Library, the new library can mark the SparkFun Toolkit library as a dependency.
While the initial focus of this library is communication bus architectures, the capabilities of this library will expand over time to deliver a wide variety of capabilities.
Initial Focus - Communication Bus Functionality
The library is designed to deliver a common communication bus interface, that is shared across the various bus types supported. This common interface enables the implementation of capabilities, with little need to understand the underlying details of the bus architecture, or even which type of bus is being used.
This implementation should support the following communication bus types:
While the setup of each bus is different (initialization and definition), the data communication interface is the same, enabling common functionality use across different bus architectures
Use Scenarios
The general use case/scenario for the communication bus implementation of the Foundation library is:
Target Personas/Users
Key Functionality
Design Considerations
Note that the implementation should follow the pattern delivered as part of these libraries:
Documentation
Delivered using GitHub Pages, the documentation should include:
Product Launch
Once launched and in use internally, the launch shall be marked via a SparkFun blog post. The intent is for internal use, but there's nothing to prevent external use of this library