Skip to content

Description: Create a library of common entitles/functionality for use across other SparkFun Libraries/Applications #5

@gigapod

Description

@gigapod

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:

  • 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:

Documentation

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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions