# Single variable read functions

These functions are designed to read a single variable - of a specific data type - from the flash memory. Each supported type of variable has a function specific to it - as listed below:

uint8_t `readByte`(uint32_t _addr, bool fastRead = false)

- Reads an unsigned 8 bit integer (a `byte`) from the address specified, and returns it.

int8_t `readChar`(uint32_t _addr, bool fastRead = false)

- Reads a signed 8 bit integer (a `char`) from the address specified, and returns it.

int16_t `readShort`(uint32_t _addr, bool fastRead = false)

- Reads a signed 16 bit integer (a `short`) from the address specified, and returns it.

uint16_t `readWord`(uint32_t _addr, bool fastRead = false)

- Reads an unsigned 16 bit integer (a `word`) from the address specified, and returns it.

int32_t `readLong`(uint32_t _addr, bool fastRead = false)

- Reads a signed 32 bit integer (a `long`) from the address specified, and returns it.

uint32_t `readULong`(uint32_t _addr, bool fastRead = false)

- Reads an unsigned 32 bit integer (an `unsigned long`) from the address specified, and returns it.

float `readFloat`(uint32_t _addr, bool fastRead = false)

- Reads a `float` from the address specified, and returns it.

bool `readStr`(uint32_t _addr, String &data, bool fastRead = false)

- Reads a `String` from the address specified, and returns it.

## Parameters `Mandatory & Optional`

uint32_t `_addr`

Address in memory where the data is to be read from. `Mandatory`

bool `fastRead`

Refer to Advanced use `Optional`

## What they do

Return the value (of the datatype specified) that is stored at the address provided

## Example code:

    #include <SPIMemory.h>

    SPIFlash flash;

    uint8_t dataIn;     // This data type should be changed depending on the type of data
                          // being read from the flash memory
    uint32_t _address;

    void setup() {
      flash.begin();
      _address = flash.getAddress(sizeof(dataIn));
      dataIn = flash.readByte(_address);    // This function should be changed depending on the type of data
                                            // being read from the flash memory
      Serial.print("Address = ");
      Serial.println(_address);
      Serial.print("Data read : 0x");
      Serial.println(dataIn, HEX);
    }

    void loop() {
    }