Add string based constructors for UPM sensors

Signed-off-by: Mihai Stefanescu <mihai.stefanescu@rinftech.com>
Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
mihais
2018-03-29 18:03:59 +03:00
committed by Mihai Tudor Panu
parent e4f106a0c7
commit 58ee51c767
11 changed files with 273 additions and 15 deletions

View File

@ -29,6 +29,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <upm.h>
#include <mraa/pwm.h>
@ -110,6 +111,38 @@ extern "C" {
*/
float buzzer_get_volume(const buzzer_context dev);
char** upm_parse_init_str(const char* str, const char* delims, int *num_tokens)
{
char *saveptr, *tok, *s, *p_str;
char **output = NULL;
size_t output_size = 0;
p_str = strdup(str);
for (s = p_str; ; s = NULL) {
tok = strtok_r(s, delims, &saveptr);
if (tok == NULL)
break;
output = (char**)realloc(output, (++output_size) * sizeof(char*));
output[output_size - 1] = (char*)calloc(strlen(tok) + 1, sizeof(char));
strncpy(output[output_size - 1], tok, strlen(tok));
}
*num_tokens = output_size;
free(p_str);
return output;
}
void upm_delete_parsed_str(char **str, int num_tokens)
{
for (int i = 0; i < num_tokens; ++i) {
free(str[i]);
}
free(str);
}
#ifdef __cplusplus
}
#endif