xref: /btstack/3rd-party/segger-rtt/SEGGER_RTT_Syscalls_IAR.c (revision 779af47be2a26fca484358b6dbf3172ffb019f79)
17dc86dfdSMatthias Ringwald /*********************************************************************
2*779af47bSMatthias Ringwald *                    SEGGER Microcontroller GmbH                     *
3*779af47bSMatthias Ringwald *                        The Embedded Experts                        *
47dc86dfdSMatthias Ringwald **********************************************************************
57dc86dfdSMatthias Ringwald *                                                                    *
6*779af47bSMatthias Ringwald *            (c) 1995 - 2019 SEGGER Microcontroller GmbH             *
77dc86dfdSMatthias Ringwald *                                                                    *
87dc86dfdSMatthias Ringwald *       www.segger.com     Support: [email protected]               *
97dc86dfdSMatthias Ringwald *                                                                    *
107dc86dfdSMatthias Ringwald **********************************************************************
117dc86dfdSMatthias Ringwald *                                                                    *
127dc86dfdSMatthias Ringwald *       SEGGER RTT * Real Time Transfer for embedded targets         *
137dc86dfdSMatthias Ringwald *                                                                    *
147dc86dfdSMatthias Ringwald **********************************************************************
157dc86dfdSMatthias Ringwald *                                                                    *
167dc86dfdSMatthias Ringwald * All rights reserved.                                               *
177dc86dfdSMatthias Ringwald *                                                                    *
187dc86dfdSMatthias Ringwald * SEGGER strongly recommends to not make any changes                 *
197dc86dfdSMatthias Ringwald * to or modify the source code of this software in order to stay     *
207dc86dfdSMatthias Ringwald * compatible with the RTT protocol and J-Link.                       *
217dc86dfdSMatthias Ringwald *                                                                    *
227dc86dfdSMatthias Ringwald * Redistribution and use in source and binary forms, with or         *
237dc86dfdSMatthias Ringwald * without modification, are permitted provided that the following    *
247dc86dfdSMatthias Ringwald * conditions are met:                                                *
257dc86dfdSMatthias Ringwald *                                                                    *
267dc86dfdSMatthias Ringwald * o Redistributions of source code must retain the above copyright   *
277dc86dfdSMatthias Ringwald *   notice, this list of conditions and the following disclaimer.    *
287dc86dfdSMatthias Ringwald *                                                                    *
297dc86dfdSMatthias Ringwald * o Redistributions in binary form must reproduce the above          *
307dc86dfdSMatthias Ringwald *   copyright notice, this list of conditions and the following      *
317dc86dfdSMatthias Ringwald *   disclaimer in the documentation and/or other materials provided  *
327dc86dfdSMatthias Ringwald *   with the distribution.                                           *
337dc86dfdSMatthias Ringwald *                                                                    *
34*779af47bSMatthias Ringwald * o Neither the name of SEGGER Microcontroller GmbH                  *
357dc86dfdSMatthias Ringwald *   nor the names of its contributors may be used to endorse or      *
367dc86dfdSMatthias Ringwald *   promote products derived from this software without specific     *
377dc86dfdSMatthias Ringwald *   prior written permission.                                        *
387dc86dfdSMatthias Ringwald *                                                                    *
397dc86dfdSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND             *
407dc86dfdSMatthias Ringwald * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,        *
417dc86dfdSMatthias Ringwald * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF           *
427dc86dfdSMatthias Ringwald * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE           *
437dc86dfdSMatthias Ringwald * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
447dc86dfdSMatthias Ringwald * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR           *
457dc86dfdSMatthias Ringwald * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  *
467dc86dfdSMatthias Ringwald * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;    *
477dc86dfdSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF      *
487dc86dfdSMatthias Ringwald * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT          *
497dc86dfdSMatthias Ringwald * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE  *
507dc86dfdSMatthias Ringwald * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH   *
517dc86dfdSMatthias Ringwald * DAMAGE.                                                            *
527dc86dfdSMatthias Ringwald *                                                                    *
537dc86dfdSMatthias Ringwald **********************************************************************
547dc86dfdSMatthias Ringwald ---------------------------END-OF-HEADER------------------------------
557dc86dfdSMatthias Ringwald File    : SEGGER_RTT_Syscalls_IAR.c
567dc86dfdSMatthias Ringwald Purpose : Low-level functions for using printf() via RTT in IAR.
577dc86dfdSMatthias Ringwald           To use RTT for printf output, include this file in your
587dc86dfdSMatthias Ringwald           application and set the Library Configuration to Normal.
59*779af47bSMatthias Ringwald Revision: $Rev: 16282 $
607dc86dfdSMatthias Ringwald ----------------------------------------------------------------------
617dc86dfdSMatthias Ringwald */
627dc86dfdSMatthias Ringwald #ifdef __IAR_SYSTEMS_ICC__
637dc86dfdSMatthias Ringwald 
64*779af47bSMatthias Ringwald //
65*779af47bSMatthias Ringwald // Since IAR EWARM V8 and EWRX V4, yfuns.h is considered as deprecated and LowLevelIOInterface.h
66*779af47bSMatthias Ringwald // shall be used instead. To not break any compatibility with older compiler versions, we have a
67*779af47bSMatthias Ringwald // version check in here.
68*779af47bSMatthias Ringwald //
69*779af47bSMatthias Ringwald #if ((defined __ICCARM__) && (__VER__ >= 8000000)) || ((defined __ICCRX__)  && (__VER__ >= 400))
70*779af47bSMatthias Ringwald   #include <LowLevelIOInterface.h>
71*779af47bSMatthias Ringwald #else
727dc86dfdSMatthias Ringwald   #include <yfuns.h>
73*779af47bSMatthias Ringwald #endif
74*779af47bSMatthias Ringwald 
757dc86dfdSMatthias Ringwald #include "SEGGER_RTT.h"
767dc86dfdSMatthias Ringwald #pragma module_name = "?__write"
777dc86dfdSMatthias Ringwald 
787dc86dfdSMatthias Ringwald /*********************************************************************
797dc86dfdSMatthias Ringwald *
807dc86dfdSMatthias Ringwald *       Function prototypes
817dc86dfdSMatthias Ringwald *
827dc86dfdSMatthias Ringwald **********************************************************************
837dc86dfdSMatthias Ringwald */
847dc86dfdSMatthias Ringwald size_t __write(int handle, const unsigned char * buffer, size_t size);
857dc86dfdSMatthias Ringwald 
867dc86dfdSMatthias Ringwald /*********************************************************************
877dc86dfdSMatthias Ringwald *
887dc86dfdSMatthias Ringwald *       Global functions
897dc86dfdSMatthias Ringwald *
907dc86dfdSMatthias Ringwald **********************************************************************
917dc86dfdSMatthias Ringwald */
927dc86dfdSMatthias Ringwald /*********************************************************************
937dc86dfdSMatthias Ringwald *
947dc86dfdSMatthias Ringwald *       __write()
957dc86dfdSMatthias Ringwald *
967dc86dfdSMatthias Ringwald * Function description
977dc86dfdSMatthias Ringwald *   Low-level write function.
987dc86dfdSMatthias Ringwald *   Standard library subroutines will use this system routine
997dc86dfdSMatthias Ringwald *   for output to all files, including stdout.
1007dc86dfdSMatthias Ringwald *   Write data via RTT.
1017dc86dfdSMatthias Ringwald */
1027dc86dfdSMatthias Ringwald size_t __write(int handle, const unsigned char * buffer, size_t size) {
1037dc86dfdSMatthias Ringwald   (void) handle;  /* Not used, avoid warning */
1047dc86dfdSMatthias Ringwald   SEGGER_RTT_Write(0, (const char*)buffer, size);
1057dc86dfdSMatthias Ringwald   return size;
1067dc86dfdSMatthias Ringwald }
1077dc86dfdSMatthias Ringwald 
1087dc86dfdSMatthias Ringwald /*********************************************************************
1097dc86dfdSMatthias Ringwald *
1107dc86dfdSMatthias Ringwald *       __write_buffered()
1117dc86dfdSMatthias Ringwald *
1127dc86dfdSMatthias Ringwald * Function description
1137dc86dfdSMatthias Ringwald *   Low-level write function.
1147dc86dfdSMatthias Ringwald *   Standard library subroutines will use this system routine
1157dc86dfdSMatthias Ringwald *   for output to all files, including stdout.
1167dc86dfdSMatthias Ringwald *   Write data via RTT.
1177dc86dfdSMatthias Ringwald */
1187dc86dfdSMatthias Ringwald size_t __write_buffered(int handle, const unsigned char * buffer, size_t size) {
1197dc86dfdSMatthias Ringwald   (void) handle;  /* Not used, avoid warning */
1207dc86dfdSMatthias Ringwald   SEGGER_RTT_Write(0, (const char*)buffer, size);
1217dc86dfdSMatthias Ringwald   return size;
1227dc86dfdSMatthias Ringwald }
1237dc86dfdSMatthias Ringwald 
1247dc86dfdSMatthias Ringwald #endif
1257dc86dfdSMatthias Ringwald /****** End Of File *************************************************/
126