From 48026bb824fd2d9cfb00ecd040db6ef3a416bae9 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Fri, 22 Jan 2021 21:43:36 -0500 Subject: upload initial port --- ChibiOS_20.3.2/os/hal/lib/streams/chprintf.c | 473 ++++++++++++++++++++++++ ChibiOS_20.3.2/os/hal/lib/streams/chprintf.h | 50 +++ ChibiOS_20.3.2/os/hal/lib/streams/memstreams.c | 114 ++++++ ChibiOS_20.3.2/os/hal/lib/streams/memstreams.h | 95 +++++ ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.c | 93 +++++ ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.h | 86 +++++ ChibiOS_20.3.2/os/hal/lib/streams/streams.mk | 10 + 7 files changed, 921 insertions(+) create mode 100644 ChibiOS_20.3.2/os/hal/lib/streams/chprintf.c create mode 100644 ChibiOS_20.3.2/os/hal/lib/streams/chprintf.h create mode 100644 ChibiOS_20.3.2/os/hal/lib/streams/memstreams.c create mode 100644 ChibiOS_20.3.2/os/hal/lib/streams/memstreams.h create mode 100644 ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.c create mode 100644 ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.h create mode 100644 ChibiOS_20.3.2/os/hal/lib/streams/streams.mk (limited to 'ChibiOS_20.3.2/os/hal/lib/streams') diff --git a/ChibiOS_20.3.2/os/hal/lib/streams/chprintf.c b/ChibiOS_20.3.2/os/hal/lib/streams/chprintf.c new file mode 100644 index 0000000..33134da --- /dev/null +++ b/ChibiOS_20.3.2/os/hal/lib/streams/chprintf.c @@ -0,0 +1,473 @@ +/* + ChibiOS - Copyright (C) 2006..2018 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. +*/ + +/* + Concepts and parts of this file have been contributed by Fabio Utzig, + chvprintf() added by Brent Roman. + */ + +/** + * @file chprintf.c + * @brief Mini printf-like functionality. + * + * @addtogroup HAL_CHPRINTF + * @details Mini printf-like functionality. + * @{ + */ + +#include "hal.h" +#include "chprintf.h" +#include "memstreams.h" + +#define MAX_FILLER 11 +#define FLOAT_PRECISION 9 + +static char *long_to_string_with_divisor(char *p, + long num, + unsigned radix, + long divisor) { + int i; + char *q; + long l, ll; + + l = num; + if (divisor == 0) { + ll = num; + } else { + ll = divisor; + } + + q = p + MAX_FILLER; + do { + i = (int)(l % radix); + i += '0'; + if (i > '9') { + i += 'A' - '0' - 10; + } + *--q = i; + l /= radix; + } while ((ll /= radix) != 0); + + i = (int)(p + MAX_FILLER - q); + do + *p++ = *q++; + while (--i); + + return p; +} + +static char *ch_ltoa(char *p, long num, unsigned radix) { + + return long_to_string_with_divisor(p, num, radix, 0); +} + +#if CHPRINTF_USE_FLOAT +static const long pow10[FLOAT_PRECISION] = { + 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 +}; + +static char *ftoa(char *p, double num, unsigned long precision) { + long l; + + if ((precision == 0) || (precision > FLOAT_PRECISION)) { + precision = FLOAT_PRECISION; + } + precision = pow10[precision - 1]; + + l = (long)num; + p = long_to_string_with_divisor(p, l, 10, 0); + *p++ = '.'; + l = (long)((num - l) * precision); + + return long_to_string_with_divisor(p, l, 10, precision / 10); +} +#endif + +/** + * @brief System formatted output function. + * @details This function implements a minimal @p vprintf()-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: + * - x hexadecimal integer. + * - X hexadecimal long. + * - o octal integer. + * - O octal long. + * - d decimal signed integer. + * - D decimal signed long. + * - u decimal unsigned integer. + * - U decimal unsigned long. + * - c character. + * - s string. + * . + * + * @param[in] chp pointer to a @p BaseSequentialStream implementing object + * @param[in] fmt formatting string + * @param[in] ap list of parameters + * @return The number of bytes that would have been + * written to @p chp if no stream error occurs + * + * @api + */ +int chvprintf(BaseSequentialStream *chp, const char *fmt, va_list ap) { + char *p, *s, c, filler; + int i, precision, width; + int n = 0; + bool is_long, left_align, do_sign; + long l; +#if CHPRINTF_USE_FLOAT + float f; + char tmpbuf[2*MAX_FILLER + 1]; +#else + char tmpbuf[MAX_FILLER + 1]; +#endif + + while (true) { + c = *fmt++; + if (c == 0) { + return n; + } + + if (c != '%') { + streamPut(chp, (uint8_t)c); + n++; + continue; + } + + p = tmpbuf; + s = tmpbuf; + + /* Alignment mode.*/ + left_align = false; + if (*fmt == '-') { + fmt++; + left_align = true; + } + + /* Sign mode.*/ + do_sign = false; + if (*fmt == '+') { + fmt++; + do_sign = true; + } + + /* Filler mode.*/ + filler = ' '; + if (*fmt == '0') { + fmt++; + filler = '0'; + } + + /* Width modifier.*/ + if ( *fmt == '*') { + width = va_arg(ap, int); + ++fmt; + c = *fmt++; + } + else { + width = 0; + while (true) { + c = *fmt++; + if (c == 0) { + return n; + } + if (c >= '0' && c <= '9') { + c -= '0'; + width = width * 10 + c; + } + else { + break; + } + } + } + + /* Precision modifier.*/ + precision = 0; + if (c == '.') { + c = *fmt++; + if (c == 0) { + return n; + } + if (c == '*') { + precision = va_arg(ap, int); + c = *fmt++; + } + else { + while (c >= '0' && c <= '9') { + c -= '0'; + precision = precision * 10 + c; + c = *fmt++; + if (c == 0) { + return n; + } + } + } + } + + /* Long modifier.*/ + if (c == 'l' || c == 'L') { + is_long = true; + c = *fmt++; + if (c == 0) { + return n; + } + } + else { + is_long = (c >= 'A') && (c <= 'Z'); + } + + /* Command decoding.*/ + switch (c) { + case 'c': + filler = ' '; + *p++ = va_arg(ap, int); + break; + case 's': + filler = ' '; + if ((s = va_arg(ap, char *)) == 0) { + s = "(null)"; + } + if (precision == 0) { + precision = 32767; + } + for (p = s; *p && (--precision >= 0); p++) + ; + break; + case 'D': + case 'd': + case 'I': + case 'i': + if (is_long) { + l = va_arg(ap, long); + } + else { + l = va_arg(ap, int); + } + if (l < 0) { + *p++ = '-'; + l = -l; + } + else + if (do_sign) { + *p++ = '+'; + } + p = ch_ltoa(p, l, 10); + break; +#if CHPRINTF_USE_FLOAT + case 'f': + f = (float) va_arg(ap, double); + if (f < 0) { + *p++ = '-'; + f = -f; + } + else { + if (do_sign) { + *p++ = '+'; + } + } + p = ftoa(p, f, precision); + break; +#endif + case 'X': + case 'x': + case 'P': + case 'p': + c = 16; + goto unsigned_common; + case 'U': + case 'u': + c = 10; + goto unsigned_common; + case 'O': + case 'o': + c = 8; +unsigned_common: + if (is_long) { + l = va_arg(ap, unsigned long); + } + else { + l = va_arg(ap, unsigned int); + } + p = ch_ltoa(p, l, c); + break; + default: + *p++ = c; + break; + } + i = (int)(p - s); + if ((width -= i) < 0) { + width = 0; + } + if (left_align == false) { + width = -width; + } + if (width < 0) { + if (*s == '-' && filler == '0') { + streamPut(chp, (uint8_t)*s++); + n++; + i--; + } + do { + streamPut(chp, (uint8_t)filler); + n++; + } while (++width != 0); + } + while (--i >= 0) { + streamPut(chp, (uint8_t)*s++); + n++; + } + + while (width) { + streamPut(chp, (uint8_t)filler); + n++; + width--; + } + } +} + +/** + * @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: + * - x hexadecimal integer. + * - X hexadecimal long. + * - o octal integer. + * - O octal long. + * - d decimal signed integer. + * - D decimal signed long. + * - u decimal unsigned integer. + * - U decimal unsigned long. + * - c character. + * - s string. + * . + * + * @param[in] chp pointer to a @p BaseSequentialStream implementing object + * @param[in] fmt formatting string + * @return The number of bytes that would have been + * written to @p chp if no stream error occurs + * + * @api + */ +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; +} + +/** + * @brief System formatted output function. + * @details This function implements a minimal @p snprintf()-like functionality. + * The general parameters format is: %[-][width|*][.precision|*][l|L]p. + * The following parameter types (p) are supported: + * - x hexadecimal integer. + * - X hexadecimal long. + * - o octal integer. + * - O octal long. + * - d decimal signed integer. + * - D decimal signed long. + * - u decimal unsigned integer. + * - U decimal unsigned long. + * - c character. + * - s string. + * . + * @post @p str is NUL-terminated, unless @p size is 0. + * + * @param[in] str pointer to a buffer + * @param[in] size maximum size of the buffer + * @param[in] fmt formatting string + * @return The number of characters (excluding the + * terminating NUL byte) that would have been + * stored in @p str if there was room. + * + * @api + */ +int chsnprintf(char *str, size_t size, const char *fmt, ...) { + va_list ap; + int retval; + + /* Performing the print operation.*/ + va_start(ap, fmt); + retval = chvsnprintf(str, size, fmt, ap); + va_end(ap); + + /* Return number of bytes that would have been written.*/ + return retval; +} + +/** + * @brief System formatted output function. + * @details This function implements a minimal @p vsnprintf()-like functionality. + * The general parameters format is: %[-][width|*][.precision|*][l|L]p. + * The following parameter types (p) are supported: + * - x hexadecimal integer. + * - X hexadecimal long. + * - o octal integer. + * - O octal long. + * - d decimal signed integer. + * - D decimal signed long. + * - u decimal unsigned integer. + * - U decimal unsigned long. + * - c character. + * - s string. + * . + * @post @p str is NUL-terminated, unless @p size is 0. + * + * @param[in] str pointer to a buffer + * @param[in] size maximum size of the buffer + * @param[in] fmt formatting string + * @param[in] ap list of parameters + * @return The number of characters (excluding the + * terminating NUL byte) that would have been + * stored in @p str if there was room. + * + * @api + */ +int chvsnprintf(char *str, size_t size, const char *fmt, va_list ap) { + MemoryStream ms; + BaseSequentialStream *chp; + size_t size_wo_nul; + int retval; + + if (size > 0) + size_wo_nul = size - 1; + else + size_wo_nul = 0; + + /* Memory stream object to be used as a string writer, reserving one + byte for the final zero.*/ + msObjectInit(&ms, (uint8_t *)str, size_wo_nul, 0); + + /* Performing the print operation using the common code.*/ + chp = (BaseSequentialStream *)(void *)&ms; + retval = chvprintf(chp, fmt, ap); + + /* Terminate with a zero, unless size==0.*/ + if (ms.eos < size) { + str[ms.eos] = 0; + } + + /* Return number of bytes that would have been written.*/ + return retval; +} + +/** @} */ diff --git a/ChibiOS_20.3.2/os/hal/lib/streams/chprintf.h b/ChibiOS_20.3.2/os/hal/lib/streams/chprintf.h new file mode 100644 index 0000000..9eb3afd --- /dev/null +++ b/ChibiOS_20.3.2/os/hal/lib/streams/chprintf.h @@ -0,0 +1,50 @@ +/* + ChibiOS - Copyright (C) 2006..2018 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 HAL_CHPRINTF + * @{ + */ + +#ifndef CHPRINTF_H +#define CHPRINTF_H + +#include + +/** + * @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 chprintf(BaseSequentialStream *chp, const char *fmt, ...); + int chsnprintf(char *str, size_t size, const char *fmt, ...); + int chvsnprintf(char *str, size_t size, const char *fmt, va_list ap); +#ifdef __cplusplus +} +#endif + +#endif /* CHPRINTF_H */ + +/** @} */ diff --git a/ChibiOS_20.3.2/os/hal/lib/streams/memstreams.c b/ChibiOS_20.3.2/os/hal/lib/streams/memstreams.c new file mode 100644 index 0000000..98b3fe6 --- /dev/null +++ b/ChibiOS_20.3.2/os/hal/lib/streams/memstreams.c @@ -0,0 +1,114 @@ +/* + ChibiOS - Copyright (C) 2006..2018 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 memstreams.c + * @brief Memory streams code. + * + * @addtogroup HAL_MEMORY_STREAMS + * @details Memory buffers handled as streams. + * @{ + */ + +#include + +#include "hal.h" +#include "memstreams.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +static size_t _writes(void *ip, const uint8_t *bp, size_t n) { + MemoryStream *msp = ip; + + if (msp->size - msp->eos < n) + n = msp->size - msp->eos; + memcpy(msp->buffer + msp->eos, bp, n); + msp->eos += n; + return n; +} + +static size_t _reads(void *ip, uint8_t *bp, size_t n) { + MemoryStream *msp = ip; + + if (msp->eos - msp->offset < n) + n = msp->eos - msp->offset; + memcpy(bp, msp->buffer + msp->offset, n); + msp->offset += n; + return n; +} + +static msg_t _put(void *ip, uint8_t b) { + MemoryStream *msp = ip; + + if (msp->size - msp->eos <= 0) + return MSG_RESET; + *(msp->buffer + msp->eos) = b; + msp->eos += 1; + return MSG_OK; +} + +static msg_t _get(void *ip) { + uint8_t b; + MemoryStream *msp = ip; + + if (msp->eos - msp->offset <= 0) + return MSG_RESET; + b = *(msp->buffer + msp->offset); + msp->offset += 1; + return b; +} + +static const struct MemStreamVMT vmt = {(size_t)0, _writes, _reads, _put, _get}; + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Memory stream object initialization. + * + * @param[out] msp pointer to the @p MemoryStream object to be initialized + * @param[in] buffer pointer to the memory buffer for the memory stream + * @param[in] size total size of the memory stream buffer + * @param[in] eos initial End Of Stream offset. Normally you need to + * put this to zero for RAM buffers or equal to @p size + * for ROM streams. + */ +void msObjectInit(MemoryStream *msp, uint8_t *buffer, + size_t size, size_t eos) { + + msp->vmt = &vmt; + msp->buffer = buffer; + msp->size = size; + msp->eos = eos; + msp->offset = 0; +} + +/** @} */ diff --git a/ChibiOS_20.3.2/os/hal/lib/streams/memstreams.h b/ChibiOS_20.3.2/os/hal/lib/streams/memstreams.h new file mode 100644 index 0000000..0c2236b --- /dev/null +++ b/ChibiOS_20.3.2/os/hal/lib/streams/memstreams.h @@ -0,0 +1,95 @@ +/* + ChibiOS - Copyright (C) 2006..2018 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 memstreams.h + * @brief Memory streams structures and macros. + + * @addtogroup HAL_MEMORY_STREAMS + * @{ + */ + +#ifndef MEMSTREAMS_H +#define MEMSTREAMS_H + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief @p MemStream specific data. + */ +#define _memory_stream_data \ + _base_sequential_stream_data \ + /* Pointer to the stream buffer.*/ \ + uint8_t *buffer; \ + /* Size of the stream.*/ \ + size_t size; \ + /* Current end of stream.*/ \ + size_t eos; \ + /* Current read offset.*/ \ + size_t offset; + +/** + * @brief @p MemStream virtual methods table. + */ +struct MemStreamVMT { + _base_sequential_stream_methods +}; + +/** + * @extends BaseSequentialStream + * + * @brief Memory stream object. + */ +typedef struct { + /** @brief Virtual Methods Table.*/ + const struct MemStreamVMT *vmt; + _memory_stream_data +} MemoryStream; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void msObjectInit(MemoryStream *msp, uint8_t *buffer, + size_t size, size_t eos); +#ifdef __cplusplus +} +#endif + +#endif /* MEMSTREAMS_H */ + +/** @} */ diff --git a/ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.c b/ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.c new file mode 100644 index 0000000..dcfd424 --- /dev/null +++ b/ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.c @@ -0,0 +1,93 @@ +/* + ChibiOS - Copyright (C) 2006..2018 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 nullstreams.c + * @brief Null streams code. + * + * @addtogroup HAL_NULL_STREAMS + * @details A null streams. + * @{ + */ + +#include "hal.h" +#include "nullstreams.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +static size_t writes(void *ip, const uint8_t *bp, size_t n) { + + (void)ip; + (void)bp; + + return n; +} + +static size_t reads(void *ip, uint8_t *bp, size_t n) { + + (void)ip; + (void)bp; + (void)n; + + return 0; +} + +static msg_t put(void *ip, uint8_t b) { + + (void)ip; + (void)b; + + return MSG_OK; +} + +static msg_t get(void *ip) { + + (void)ip; + + return 4; +} + +static const struct NullStreamVMT vmt = {(size_t)0, writes, reads, put, get}; + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Null stream object initialization. + * + * @param[out] nsp pointer to the @p NullStream object to be initialized + */ +void nullObjectInit(NullStream *nsp) { + + nsp->vmt = &vmt; +} + +/** @} */ diff --git a/ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.h b/ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.h new file mode 100644 index 0000000..c874815 --- /dev/null +++ b/ChibiOS_20.3.2/os/hal/lib/streams/nullstreams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2018 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 nullstreams.h + * @brief Null streams structures and macros. + + * @addtogroup HAL_NULL_STREAMS + * @{ + */ + +#ifndef NULLSTREAMS_H +#define NULLSTREAMS_H + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief @p NullStream specific data. + */ +#define _null_stream_data \ + _base_sequential_stream_data + +/** + * @brief @p NullStream virtual methods table. + */ +struct NullStreamVMT { + _base_sequential_stream_methods +}; + +/** + * @extends BaseSequentialStream + * + * @brief Null stream object. + */ +typedef struct { + /** @brief Virtual Methods Table.*/ + const struct NullStreamVMT *vmt; + _null_stream_data +} NullStream; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void nullObjectInit(NullStream *nsp); +#ifdef __cplusplus +} +#endif + +#endif /* NULLSTREAMS_H */ + +/** @} */ diff --git a/ChibiOS_20.3.2/os/hal/lib/streams/streams.mk b/ChibiOS_20.3.2/os/hal/lib/streams/streams.mk new file mode 100644 index 0000000..9c746e9 --- /dev/null +++ b/ChibiOS_20.3.2/os/hal/lib/streams/streams.mk @@ -0,0 +1,10 @@ +# RT Shell files. +STREAMSSRC = $(CHIBIOS)/os/hal/lib/streams/chprintf.c \ + $(CHIBIOS)/os/hal/lib/streams/memstreams.c \ + $(CHIBIOS)/os/hal/lib/streams/nullstreams.c + +STREAMSINC = $(CHIBIOS)/os/hal/lib/streams + +# Shared variables +ALLCSRC += $(STREAMSSRC) +ALLINC += $(STREAMSINC) \ No newline at end of file -- cgit v1.2.3