1 /*
2  * Copyright (c) 2022 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_SHELL_STRING_CONV_H_
8 #define ZEPHYR_INCLUDE_SHELL_STRING_CONV_H_
9 
10 #include <stdbool.h>
11 #include <stdint.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /** @brief String to long conversion with error check.
18  *
19  * @warning On success the passed err reference will not be altered
20  * to avoid err check bloating. Passed err reference should be initialized
21  * to zero.
22  *
23  * @param str Input string.
24  * @param base Conversion base.
25  * @param err Error code pointer:
26  *         -EINVAL on invalid string input.
27  *         -ERANGE if numeric string input is to large to convert.
28  *         Unchanged on success.
29  *
30  * @return Converted long value.
31  */
32 long shell_strtol(const char *str, int base, int *err);
33 
34 /** @brief String to unsigned long conversion with error check.
35  *
36  * @warning On success the passed err reference will not be altered
37  * to avoid err check bloating. Passed err reference should be initialized
38  * to zero.
39  *
40  * @param str Input string.
41  * @param base Conversion base.
42  * @param err Error code pointer:
43  *         Set to -EINVAL on invalid string input.
44  *         Set to -ERANGE if numeric string input is to large to convert.
45  *         Unchanged on success.
46  *
47  * @return Converted unsigned long value.
48  */
49 unsigned long shell_strtoul(const char *str, int base, int *err);
50 
51 /** @brief String to unsigned long long conversion with error check.
52  *
53  * @warning On success the passed err reference will not be altered
54  * to avoid err check bloating. Passed err reference should be initialized
55  * to zero.
56  *
57  * @param str Input string.
58  * @param base Conversion base.
59  * @param err Error code pointer:
60  *         Set to -EINVAL on invalid string input.
61  *         Set to -ERANGE if numeric string input is to large to convert.
62  *         Unchanged on success.
63  *
64  * @return Converted unsigned long long value.
65  */
66 unsigned long long shell_strtoull(const char *str, int base, int *err);
67 
68 /** @brief String to boolean conversion with error check.
69  *
70  * @warning On success the passed err reference will not be altered
71  * to avoid err check bloating. Passed err reference should be initialized
72  * to zero.
73  *
74  * @param str Input string.
75  * @param base Conversion base.
76  * @param err Error code pointer:
77  *         Set to -EINVAL on invalid string input.
78  *         Set to -ERANGE if numeric string input is to large to convert.
79  *         Unchanged on success.
80  *
81  * @return Converted boolean value.
82  */
83 bool shell_strtobool(const char *str, int base, int *err);
84 
85 #ifdef __cplusplus
86 }
87 #endif
88 
89 #endif /* ZEPHYR_INCLUDE_SHELL_STRING_CONV_H_ */
90