gawaskar kanagaraj / Mbed 2 deprecated Nucleo_printf

Dependencies:   mbed

Committer:
gawas
Date:
Fri Aug 23 16:43:44 2019 +0000
Revision:
0:ccdea31d8eba
init funtion;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gawas 0:ccdea31d8eba 1 #include <stm32f4xx.h>
gawas 0:ccdea31d8eba 2 #include <sys/stat.h>
gawas 0:ccdea31d8eba 3 #include <unistd.h>
gawas 0:ccdea31d8eba 4
gawas 0:ccdea31d8eba 5 #include "drivers/uart.h"
gawas 0:ccdea31d8eba 6
gawas 0:ccdea31d8eba 7 #define STACK_POINTER (__get_MSP())
gawas 0:ccdea31d8eba 8 #define UART_AUTO_ECHO
gawas 0:ccdea31d8eba 9
gawas 0:ccdea31d8eba 10
gawas 0:ccdea31d8eba 11 int _close(int file)
gawas 0:ccdea31d8eba 12 {
gawas 0:ccdea31d8eba 13 UNUSED(file);
gawas 0:ccdea31d8eba 14 return -1;
gawas 0:ccdea31d8eba 15 }
gawas 0:ccdea31d8eba 16
gawas 0:ccdea31d8eba 17
gawas 0:ccdea31d8eba 18 int _fstat(int file, struct stat *st)
gawas 0:ccdea31d8eba 19 {
gawas 0:ccdea31d8eba 20 UNUSED(file);
gawas 0:ccdea31d8eba 21 st->st_mode = S_IFCHR;
gawas 0:ccdea31d8eba 22 return 0;
gawas 0:ccdea31d8eba 23 }
gawas 0:ccdea31d8eba 24
gawas 0:ccdea31d8eba 25
gawas 0:ccdea31d8eba 26 int _isatty(int file)
gawas 0:ccdea31d8eba 27 {
gawas 0:ccdea31d8eba 28 switch(file) {
gawas 0:ccdea31d8eba 29 case 1: // stdio
gawas 0:ccdea31d8eba 30 case 2: // stderr
gawas 0:ccdea31d8eba 31 return 1;
gawas 0:ccdea31d8eba 32
gawas 0:ccdea31d8eba 33 default: return 0;
gawas 0:ccdea31d8eba 34 }
gawas 0:ccdea31d8eba 35 }
gawas 0:ccdea31d8eba 36
gawas 0:ccdea31d8eba 37
gawas 0:ccdea31d8eba 38 int _lseek(int file, int ptr, int dir)
gawas 0:ccdea31d8eba 39 {
gawas 0:ccdea31d8eba 40 UNUSED(file); UNUSED(ptr); UNUSED(dir);
gawas 0:ccdea31d8eba 41 return 0;
gawas 0:ccdea31d8eba 42 }
gawas 0:ccdea31d8eba 43
gawas 0:ccdea31d8eba 44
gawas 0:ccdea31d8eba 45 int _open(const char *name, int flags, int mode)
gawas 0:ccdea31d8eba 46 {
gawas 0:ccdea31d8eba 47 UNUSED(name); UNUSED(flags); UNUSED(mode);
gawas 0:ccdea31d8eba 48 return -1;
gawas 0:ccdea31d8eba 49 }
gawas 0:ccdea31d8eba 50
gawas 0:ccdea31d8eba 51
gawas 0:ccdea31d8eba 52 int _read(int file, char *ptr, int len)
gawas 0:ccdea31d8eba 53 {
gawas 0:ccdea31d8eba 54 UNUSED(file);
gawas 0:ccdea31d8eba 55 int i;
gawas 0:ccdea31d8eba 56 for (i = 0; i < len; i++) {
gawas 0:ccdea31d8eba 57 ptr[i] = _uart_getc();
gawas 0:ccdea31d8eba 58 #ifdef UART_AUTO_ECHO
gawas 0:ccdea31d8eba 59 _uart_putc(ptr[i]);
gawas 0:ccdea31d8eba 60 #endif
gawas 0:ccdea31d8eba 61 /* Return partial buffer if we get EOL */
gawas 0:ccdea31d8eba 62 if ('\r' == ptr[i]) {
gawas 0:ccdea31d8eba 63 ++i;
gawas 0:ccdea31d8eba 64 ptr[i] = '\n';
gawas 0:ccdea31d8eba 65 return i;
gawas 0:ccdea31d8eba 66 }
gawas 0:ccdea31d8eba 67 }
gawas 0:ccdea31d8eba 68
gawas 0:ccdea31d8eba 69 ptr[i-1] = '\r';
gawas 0:ccdea31d8eba 70 ptr[i] = '\n';
gawas 0:ccdea31d8eba 71 return i;
gawas 0:ccdea31d8eba 72 }
gawas 0:ccdea31d8eba 73
gawas 0:ccdea31d8eba 74
gawas 0:ccdea31d8eba 75 caddr_t _sbrk(int incr)
gawas 0:ccdea31d8eba 76 {
gawas 0:ccdea31d8eba 77 extern char _end; /* Defined by the linker */
gawas 0:ccdea31d8eba 78 static char *heap_end;
gawas 0:ccdea31d8eba 79 char *prev_heap_end;
gawas 0:ccdea31d8eba 80
gawas 0:ccdea31d8eba 81 if (heap_end == 0) {
gawas 0:ccdea31d8eba 82 heap_end = &_end;
gawas 0:ccdea31d8eba 83 }
gawas 0:ccdea31d8eba 84 prev_heap_end = heap_end;
gawas 0:ccdea31d8eba 85 if ((unsigned)(heap_end + incr) > STACK_POINTER) {
gawas 0:ccdea31d8eba 86 /* Heap and stack collision */
gawas 0:ccdea31d8eba 87 return (caddr_t)0;
gawas 0:ccdea31d8eba 88 }
gawas 0:ccdea31d8eba 89
gawas 0:ccdea31d8eba 90 heap_end += incr;
gawas 0:ccdea31d8eba 91 return (caddr_t) prev_heap_end;
gawas 0:ccdea31d8eba 92 }
gawas 0:ccdea31d8eba 93
gawas 0:ccdea31d8eba 94
gawas 0:ccdea31d8eba 95 int _write(int file, char *ptr, int len)
gawas 0:ccdea31d8eba 96 {
gawas 0:ccdea31d8eba 97 if (!isatty(file)) {
gawas 0:ccdea31d8eba 98 return BSP_UARTx_transmit((uint8_t*)ptr, len) == 0 ? len : 0;
gawas 0:ccdea31d8eba 99 }
gawas 0:ccdea31d8eba 100
gawas 0:ccdea31d8eba 101 int todo;
gawas 0:ccdea31d8eba 102 for (todo = 0; todo < len; todo++) {
gawas 0:ccdea31d8eba 103 const char c = *ptr++;
gawas 0:ccdea31d8eba 104 if (c == '\n') BSP_UARTx_transmit((uint8_t*)&(char){'\r'}, 1);
gawas 0:ccdea31d8eba 105 if (BSP_UARTx_transmit((uint8_t*)&c, 1) != 0) break;
gawas 0:ccdea31d8eba 106 }
gawas 0:ccdea31d8eba 107
gawas 0:ccdea31d8eba 108 return todo;
gawas 0:ccdea31d8eba 109 }
gawas 0:ccdea31d8eba 110
gawas 0:ccdea31d8eba 111
gawas 0:ccdea31d8eba 112 void _init(void) {}
gawas 0:ccdea31d8eba 113