xref: /btstack/3rd-party/segger-rtt/SEGGER_RTT_Syscalls_IAR.c (revision 7dc86dfd3569d69491d87d64749fd45afb46c67a)
1*7dc86dfdSMatthias Ringwald /*********************************************************************
2*7dc86dfdSMatthias Ringwald *               SEGGER MICROCONTROLLER GmbH & Co. KG                 *
3*7dc86dfdSMatthias Ringwald *       Solutions for real time microcontroller applications         *
4*7dc86dfdSMatthias Ringwald **********************************************************************
5*7dc86dfdSMatthias Ringwald *                                                                    *
6*7dc86dfdSMatthias Ringwald *       (c) 2014 - 2016  SEGGER Microcontroller GmbH & Co. KG        *
7*7dc86dfdSMatthias Ringwald *                                                                    *
8*7dc86dfdSMatthias Ringwald *       www.segger.com     Support: [email protected]               *
9*7dc86dfdSMatthias Ringwald *                                                                    *
10*7dc86dfdSMatthias Ringwald **********************************************************************
11*7dc86dfdSMatthias Ringwald *                                                                    *
12*7dc86dfdSMatthias Ringwald *       SEGGER RTT * Real Time Transfer for embedded targets         *
13*7dc86dfdSMatthias Ringwald *                                                                    *
14*7dc86dfdSMatthias Ringwald **********************************************************************
15*7dc86dfdSMatthias Ringwald *                                                                    *
16*7dc86dfdSMatthias Ringwald * All rights reserved.                                               *
17*7dc86dfdSMatthias Ringwald *                                                                    *
18*7dc86dfdSMatthias Ringwald * SEGGER strongly recommends to not make any changes                 *
19*7dc86dfdSMatthias Ringwald * to or modify the source code of this software in order to stay     *
20*7dc86dfdSMatthias Ringwald * compatible with the RTT protocol and J-Link.                       *
21*7dc86dfdSMatthias Ringwald *                                                                    *
22*7dc86dfdSMatthias Ringwald * Redistribution and use in source and binary forms, with or         *
23*7dc86dfdSMatthias Ringwald * without modification, are permitted provided that the following    *
24*7dc86dfdSMatthias Ringwald * conditions are met:                                                *
25*7dc86dfdSMatthias Ringwald *                                                                    *
26*7dc86dfdSMatthias Ringwald * o Redistributions of source code must retain the above copyright   *
27*7dc86dfdSMatthias Ringwald *   notice, this list of conditions and the following disclaimer.    *
28*7dc86dfdSMatthias Ringwald *                                                                    *
29*7dc86dfdSMatthias Ringwald * o Redistributions in binary form must reproduce the above          *
30*7dc86dfdSMatthias Ringwald *   copyright notice, this list of conditions and the following      *
31*7dc86dfdSMatthias Ringwald *   disclaimer in the documentation and/or other materials provided  *
32*7dc86dfdSMatthias Ringwald *   with the distribution.                                           *
33*7dc86dfdSMatthias Ringwald *                                                                    *
34*7dc86dfdSMatthias Ringwald * o Neither the name of SEGGER Microcontroller GmbH & Co. KG         *
35*7dc86dfdSMatthias Ringwald *   nor the names of its contributors may be used to endorse or      *
36*7dc86dfdSMatthias Ringwald *   promote products derived from this software without specific     *
37*7dc86dfdSMatthias Ringwald *   prior written permission.                                        *
38*7dc86dfdSMatthias Ringwald *                                                                    *
39*7dc86dfdSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND             *
40*7dc86dfdSMatthias Ringwald * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,        *
41*7dc86dfdSMatthias Ringwald * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF           *
42*7dc86dfdSMatthias Ringwald * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE           *
43*7dc86dfdSMatthias Ringwald * DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
44*7dc86dfdSMatthias Ringwald * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR           *
45*7dc86dfdSMatthias Ringwald * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  *
46*7dc86dfdSMatthias Ringwald * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;    *
47*7dc86dfdSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF      *
48*7dc86dfdSMatthias Ringwald * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT          *
49*7dc86dfdSMatthias Ringwald * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE  *
50*7dc86dfdSMatthias Ringwald * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH   *
51*7dc86dfdSMatthias Ringwald * DAMAGE.                                                            *
52*7dc86dfdSMatthias Ringwald *                                                                    *
53*7dc86dfdSMatthias Ringwald **********************************************************************
54*7dc86dfdSMatthias Ringwald ---------------------------END-OF-HEADER------------------------------
55*7dc86dfdSMatthias Ringwald File    : SEGGER_RTT_Syscalls_IAR.c
56*7dc86dfdSMatthias Ringwald Purpose : Low-level functions for using printf() via RTT in IAR.
57*7dc86dfdSMatthias Ringwald           To use RTT for printf output, include this file in your
58*7dc86dfdSMatthias Ringwald           application and set the Library Configuration to Normal.
59*7dc86dfdSMatthias Ringwald Revision: $Rev: 4351 $
60*7dc86dfdSMatthias Ringwald ----------------------------------------------------------------------
61*7dc86dfdSMatthias Ringwald */
62*7dc86dfdSMatthias Ringwald #ifdef __IAR_SYSTEMS_ICC__
63*7dc86dfdSMatthias Ringwald 
64*7dc86dfdSMatthias Ringwald #include <yfuns.h>
65*7dc86dfdSMatthias Ringwald #include "SEGGER_RTT.h"
66*7dc86dfdSMatthias Ringwald #pragma module_name = "?__write"
67*7dc86dfdSMatthias Ringwald 
68*7dc86dfdSMatthias Ringwald /*********************************************************************
69*7dc86dfdSMatthias Ringwald *
70*7dc86dfdSMatthias Ringwald *       Function prototypes
71*7dc86dfdSMatthias Ringwald *
72*7dc86dfdSMatthias Ringwald **********************************************************************
73*7dc86dfdSMatthias Ringwald */
74*7dc86dfdSMatthias Ringwald size_t __write(int handle, const unsigned char * buffer, size_t size);
75*7dc86dfdSMatthias Ringwald 
76*7dc86dfdSMatthias Ringwald /*********************************************************************
77*7dc86dfdSMatthias Ringwald *
78*7dc86dfdSMatthias Ringwald *       Global functions
79*7dc86dfdSMatthias Ringwald *
80*7dc86dfdSMatthias Ringwald **********************************************************************
81*7dc86dfdSMatthias Ringwald */
82*7dc86dfdSMatthias Ringwald /*********************************************************************
83*7dc86dfdSMatthias Ringwald *
84*7dc86dfdSMatthias Ringwald *       __write()
85*7dc86dfdSMatthias Ringwald *
86*7dc86dfdSMatthias Ringwald * Function description
87*7dc86dfdSMatthias Ringwald *   Low-level write function.
88*7dc86dfdSMatthias Ringwald *   Standard library subroutines will use this system routine
89*7dc86dfdSMatthias Ringwald *   for output to all files, including stdout.
90*7dc86dfdSMatthias Ringwald *   Write data via RTT.
91*7dc86dfdSMatthias Ringwald */
92*7dc86dfdSMatthias Ringwald size_t __write(int handle, const unsigned char * buffer, size_t size) {
93*7dc86dfdSMatthias Ringwald   (void) handle;  /* Not used, avoid warning */
94*7dc86dfdSMatthias Ringwald   SEGGER_RTT_Write(0, (const char*)buffer, size);
95*7dc86dfdSMatthias Ringwald   return size;
96*7dc86dfdSMatthias Ringwald }
97*7dc86dfdSMatthias Ringwald 
98*7dc86dfdSMatthias Ringwald /*********************************************************************
99*7dc86dfdSMatthias Ringwald *
100*7dc86dfdSMatthias Ringwald *       __write_buffered()
101*7dc86dfdSMatthias Ringwald *
102*7dc86dfdSMatthias Ringwald * Function description
103*7dc86dfdSMatthias Ringwald *   Low-level write function.
104*7dc86dfdSMatthias Ringwald *   Standard library subroutines will use this system routine
105*7dc86dfdSMatthias Ringwald *   for output to all files, including stdout.
106*7dc86dfdSMatthias Ringwald *   Write data via RTT.
107*7dc86dfdSMatthias Ringwald */
108*7dc86dfdSMatthias Ringwald size_t __write_buffered(int handle, const unsigned char * buffer, size_t size) {
109*7dc86dfdSMatthias Ringwald   (void) handle;  /* Not used, avoid warning */
110*7dc86dfdSMatthias Ringwald   SEGGER_RTT_Write(0, (const char*)buffer, size);
111*7dc86dfdSMatthias Ringwald   return size;
112*7dc86dfdSMatthias Ringwald }
113*7dc86dfdSMatthias Ringwald 
114*7dc86dfdSMatthias Ringwald #endif
115*7dc86dfdSMatthias Ringwald /****** End Of File *************************************************/
116