aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/lib/streams/chprintf.h
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2015-02-06 13:47:47 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2015-02-06 13:47:47 +0000
commita48d0863baa5288621baaefa208b5710d12414fa (patch)
treef15adca42589a7481be129a091bc360a77e9afa4 /os/hal/lib/streams/chprintf.h
parentea6abe0731888c334b721970d37d3aef0a8ab220 (diff)
downloadChibiOS-a48d0863baa5288621baaefa208b5710d12414fa.tar.gz
ChibiOS-a48d0863baa5288621baaefa208b5710d12414fa.tar.bz2
ChibiOS-a48d0863baa5288621baaefa208b5710d12414fa.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7667 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/lib/streams/chprintf.h')
-rw-r--r--os/hal/lib/streams/chprintf.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/os/hal/lib/streams/chprintf.h b/os/hal/lib/streams/chprintf.h
new file mode 100644
index 000000000..030640aa5
--- /dev/null
+++ b/os/hal/lib/streams/chprintf.h
@@ -0,0 +1,82 @@
+/*
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/**
+ * @file chprintf.h
+ * @brief Mini printf-like functionality.
+ *
+ * @addtogroup chprintf
+ * @{
+ */
+
+#ifndef _CHPRINTF_H_
+#define _CHPRINTF_H_
+
+#include <stdarg.h>
+
+/**
+ * @brief Float type support.
+ */
+#if !defined(CHPRINTF_USE_FLOAT) || defined(__DOXYGEN__)
+#define CHPRINTF_USE_FLOAT FALSE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+ int chvprintf(BaseSequentialStream *chp, const char *fmt, va_list ap);
+ int chsnprintf(char *str, size_t size, const char *fmt, ...);
+#ifdef __cplusplus
+}
+#endif
+
+/**
+ * @brief System formatted output function.
+ * @details This function implements a minimal @p printf() like functionality
+ * with output on a @p BaseSequentialStream.
+ * The general parameters format is: %[-][width|*][.precision|*][l|L]p.
+ * The following parameter types (p) are supported:
+ * - <b>x</b> hexadecimal integer.
+ * - <b>X</b> hexadecimal long.
+ * - <b>o</b> octal integer.
+ * - <b>O</b> octal long.
+ * - <b>d</b> decimal signed integer.
+ * - <b>D</b> decimal signed long.
+ * - <b>u</b> decimal unsigned integer.
+ * - <b>U</b> decimal unsigned long.
+ * - <b>c</b> character.
+ * - <b>s</b> string.
+ * .
+ *
+ * @param[in] chp pointer to a @p BaseSequentialStream implementing object
+ * @param[in] fmt formatting string
+ *
+ * @api
+ */
+static inline int chprintf(BaseSequentialStream *chp, const char *fmt, ...) {
+ va_list ap;
+ int formatted_bytes;
+
+ va_start(ap, fmt);
+ formatted_bytes = chvprintf(chp, fmt, ap);
+ va_end(ap);
+
+ return formatted_bytes;
+}
+
+#endif /* _CHPRINTF_H_ */
+
+/** @} */