GY-63_MS5611/libraries/NibbleArray/README.md

91 lines
3.0 KiB
Markdown
Raw Normal View History

2021-01-29 06:31:58 -05:00
[![Arduino CI](https://github.com/RobTillaart/nibbleArray/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
2021-11-10 13:53:12 -05:00
[![Arduino-lint](https://github.com/RobTillaart/nibbleArray/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/nibbleArray/actions/workflows/arduino-lint.yml)
[![JSON check](https://github.com/RobTillaart/nibbleArray/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/nibbleArray/actions/workflows/jsoncheck.yml)
2021-01-29 06:31:58 -05:00
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/nibbleArray/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/release/RobTillaart/nibbleArray.svg?maxAge=3600)](https://github.com/RobTillaart/nibbleArray/releases)
2020-11-27 05:28:57 -05:00
# nibbleArray
2021-11-10 13:53:12 -05:00
Arduino library for a compact array of nibbles (4 bit units).
2020-11-27 05:28:57 -05:00
2021-01-29 06:31:58 -05:00
2020-11-27 05:28:57 -05:00
## Description
2021-11-10 13:53:12 -05:00
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.
2020-11-27 05:28:57 -05:00
2021-11-10 13:53:12 -05:00
The nibbleArray is an array that stores 2 nibbles in a byte therefore it is
2020-11-27 05:28:57 -05:00
twice as small as a normal array.
The current implementation can hold 510 elements. This is due a limitation of
2023-02-09 05:31:57 -05:00
the UNO which can **allocate** max 255 bytes in one **malloc()** call.
2020-11-27 05:28:57 -05:00
2021-11-10 13:53:12 -05:00
This **NIBBLEARRAY_MAXSIZE** can be defined compile time "-D NIBBLEARRAY_MAXSIZE"
2020-11-27 05:28:57 -05:00
or one can adjust it in the library if other platforms can allocate more memory.
2021-01-29 06:31:58 -05:00
2023-02-09 05:31:57 -05:00
#### Related
The BitArray library is one from a set of three:
- https://github.com/RobTillaart/BitArray for elements of user defined size in bits (values 0 .. 2^n-1).
- https://github.com/RobTillaart/BoolArray for elements of 1 bit (values 0 .. 1).
- https://github.com/RobTillaart/nibbleArray for elements of 4 bits or smaller (values 0 .. 15).
2020-11-27 05:28:57 -05:00
## Interface
2023-02-09 05:31:57 -05:00
```cpp
#include "nibbleArray.h"
```
#### Constructor
2020-11-27 05:28:57 -05:00
2021-01-29 06:31:58 -05:00
- **nibbleArray(uint16_t size)** constructor
2023-02-09 05:31:57 -05:00
- **uint16_t size()** returns the size of the array.
- **uint16_t memory()** returns the memory used in bytes.
#### Base
2021-11-10 13:53:12 -05:00
- **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.
- **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.
2021-01-29 06:31:58 -05:00
2020-11-27 05:28:57 -05:00
2023-02-09 05:31:57 -05:00
## Future
2020-11-27 05:28:57 -05:00
2023-02-09 05:31:57 -05:00
#### Must
2021-01-29 06:31:58 -05:00
2023-02-09 05:31:57 -05:00
- add a begin() function that does the work now done in constructor (0.3.0)
- similar to bitArray and BoolArray classes.
2021-01-29 06:31:58 -05:00
2023-02-09 05:31:57 -05:00
#### Should
2021-11-10 13:53:12 -05:00
2023-02-09 05:31:57 -05:00
- align interface with BoolArray and bitArray.
2021-11-10 13:53:12 -05:00
- is there some base class?
- align error codes.
2021-01-29 06:31:58 -05:00
- allow larger allocations for non AVR, how?
2021-11-10 13:53:12 -05:00
- don't test for size, user responsibility?
2023-02-09 05:31:57 -05:00
#### Could
2021-11-10 13:53:12 -05:00
- implement NIBBLEARRAY_ERROR_VALUE for set and setAll ??
- for now user responsibility.
2023-02-09 05:31:57 -05:00
#### Won't
2021-11-10 13:53:12 -05:00
2021-01-29 06:31:58 -05:00
- setAll( f() ) - fill the array by calling a function n times?
2020-11-27 05:28:57 -05:00