GY-63_MS5611/libraries/NibbleArray
2022-11-18 15:35:51 +01:00
..
.github add funding.yml 2022-08-03 21:56:07 +02:00
examples 0.2.3 NibbleArray 2021-12-22 13:28:44 +01:00
test 0.2.3 NibbleArray 2021-12-22 13:28:44 +01:00
.arduino-ci.yml 0.2.4 NibbleArray 2022-11-18 15:35:51 +01:00
CHANGELOG.md 0.2.4 NibbleArray 2022-11-18 15:35:51 +01:00
keywords.txt 0.2.3 NibbleArray 2021-12-22 13:28:44 +01:00
library.json 0.2.4 NibbleArray 2022-11-18 15:35:51 +01:00
library.properties 0.2.4 NibbleArray 2022-11-18 15:35:51 +01:00
LICENSE 0.2.3 NibbleArray 2021-12-22 13:28:44 +01:00
nibbleArray.cpp 0.2.4 NibbleArray 2022-11-18 15:35:51 +01:00
nibbleArray.h 0.2.4 NibbleArray 2022-11-18 15:35:51 +01:00
README.md 0.2.2 NibbleArray 2021-11-10 19:53:12 +01:00

Arduino CI Arduino-lint JSON check License: MIT GitHub release

nibbleArray

Arduino library for a compact array of nibbles (4 bit units).

Description

A nibble is a 4 bit element, which can hold a value 0..15 (0..F in HEX). It can be seen as an uint4_t type.

The nibbleArray is an array that stores 2 nibbles in a byte therefore it is twice as small as a normal array.

The current implementation can hold 510 elements. This is due a limitation of the UNO which can alloc max 255 bytes in one malloc() call.

This NIBBLEARRAY_MAXSIZE can be defined compile time "-D NIBBLEARRAY_MAXSIZE" or one can adjust it in the library if other platforms can allocate more memory.

Interface

The interface of the nibbleArray is straightforward:

  • nibbleArray(uint16_t size) constructor
  • uint8_t set(uint16_t index, uint8_t value) set a value in the nibbleArray. Index must be in range otherwise 0xFF = NIBBLEARRAY_ERROR_INDEX will be returned. If value > 15 it will be truncated.
  • uint8_t get(uint16_t index) get value from the nibbleArray. Index must be in range otherwise 0xFF = NIBBLEARRAY_ERROR_INDEX will be returned.
  • uint16_t size() returns the size of the array.
  • uint16_t memory() returns the memory used in bytes.
  • void clear() set all elements to 0.
  • void SetAll(uint8_t value) set all elements to value (0..15). If value > 15 it will be truncated.

Operation

See examples

Future

must

  • align interface with boolArray and bitArray.
    • is there some base class?
    • align error codes.
  • add a begin() function that does the work now done in constructor
  • allow larger allocations for non AVR, how?
    • don't test for size, user responsibility?

could

  • implement NIBBLEARRAY_ERROR_VALUE for set and setAll ??
    • for now user responsibility.

won't

  • setAll( f() ) - fill the array by calling a function n times?