// UrssHelpers.h

#ifndef _URSSHELPERS_h
#define _URSSHELPERS_h

#include "Arduino.h"

/**
* @brief Dump data in hex format, LineWidth on each line
* @param buf pointer to data
* @param len length of data
* @param dumpDevice output device
* @param LineWidth length of line
* @retval none
*/
void hexdump(uint8_t *buf, uint32_t len, Print* dumpDevice, uint8_t LineWidth = 8);


/**
* Get string representation of float.
*
* From: http://bbs.espressif.com/viewtopic.php?t=246
*
* Warning: limited to 15 chars & non-reentrant.
*          e.g., don't use more than once per os_printf call.
*
* @param num       The float to convert to string.
* @param decimals  The number of decimal places.
*
* @return The float string representation.
*/
String ftoa(float num, uint8_t decimals);



// Splittet den String 'scr' in einzelne Bestandteile
// Liefert die Anzahl der gefundenen Strings zurück
// Rückgabewert ist negativ, wenn das Empfangsfeld zu klein ist, 'dest' ist aber so weit als möglich gefüllt
// scr:       String, der aufgeteilt werden soll
// delimiter: Trennzeichen
// dest:      Array zur Aufnahme der einzelnen Token. Nicht benutzte Elemente enthalten einen Leerstring
// destSize:  Größe des Empfangsfeldes

// Beispiel:
//  String dest[4];
//  String s1 = "test;one;two;three";
//  int count = splitString(s1, ';', dest, sizeof(dest) / sizeof(dest[0]));
//
int splitString(const String src, const char delimiter, String* dest, size_t destSize);
#endif

