Contiki 3.x
uart1-putchar.c
1 /**
2  * \addtogroup stm32w-cpu
3  *
4  * @{
5  */
6 
7 /*
8  * Copyright (c) 2010, STMicroelectronics.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  * notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in the
18  * documentation and/or other materials provided with the distribution.
19  * 3. Neither the name of the Institute nor the names of its contributors
20  * may be used to endorse or promote products derived from this software
21  * without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33  * SUCH DAMAGE.
34  *
35  */
36 
37 #include <stdio.h>
38 #include "dev/uart1.h"
39 
40 
41 #include PLATFORM_HEADER
42 #include "hal/micro/micro-common.h"
44  /* #include "uart.h" */
45 
46 #ifdef __GNUC__
47 # define _LLIO_STDIN ((int) stdin)
48 # define _LLIO_STDOUT ((int) stdout)
49 # define _LLIO_STDERR ((int) stderr)
50 # define _LLIO_ERROR (-1)
51 #else
52 # ifdef __ICCARM__
53 # include <yfuns.h>
54 # endif
55 #endif
56 
57 #undef putchar
58 /*--------------------------------------------------------------------------*/
59 int
60  __attribute__ ((weak)) putchar(int c)
61 {
62  uart1_writeb(c);
63  return c;
64 }
65 /*--------------------------------------------------------------------------*/
66 void
67 __io_putchar(char c)
68 {
69  putchar(c);
70 }
71 /*--------------------------------------------------------------------------*/
72 size_t
73 _write(int handle, const unsigned char *buffer, size_t size)
74 {
75  size_t nChars = 0;
76 
77  if(handle != _LLIO_STDOUT && handle != _LLIO_STDERR) {
78  return _LLIO_ERROR;
79  }
80  if(buffer == 0) {
81  /* This means that we should flush internal buffers. */
82  /* spin until TX complete (TX is idle) */
83  while((SC1_UARTSTAT & SC_UARTTXIDLE) != SC_UARTTXIDLE) {
84  }
85  return 0;
86  }
87 
88  /* ensure port is configured for UART */
89  if(SC1_MODE != SC1_MODE_UART) {
90  return _LLIO_ERROR;
91  }
92  while(size--) {
93  __io_putchar(*buffer++);
94  ++nChars;
95  }
96 
97  return nChars;
98 }
99 
100 /*--------------------------------------------------------------------------*/
101 size_t
102 _read(int handle, unsigned char *buffer, size_t size)
103 {
104  return 0;
105 }
106 /** @} */
void __attribute__((interrupt))
This ISR handles most of the business interacting with the 1-wire bus.
Definition: onewire.c:174
Utility and convenience functions for STM32W108 microcontroller, common to both the full and minimal ...
Minimal Hal functions common across all microcontroller-specific files.