source: azure_iot_hub_f767zi/trunk/asp_baseplatform/monitor/stdio/stddev.c@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 6.3 KB
Line 
1/*
2 * TOPPERS/JSP/ASP/FMP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2008-2011 by Embedded and Real-Time Systems Laboratory
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 * Copyright (C) 2015-2017 by TOPPERS PROJECT Educational Working Group.
9 *
10 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
11 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
12 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
13 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
14 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
15 * スコード中に含まれていること.
16 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
17 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
18 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
19 * の無保証規定を掲載すること.
20 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
21 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
22 * と.
23 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
24 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
25 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
26 * 報告すること.
27 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
28 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
29 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
30 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
31 * 免責すること.
32 *
33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
37 * の責任を負わない.
38 *
39 * @(#) $Id$
40 */
41
42/*
43 * TOPPERS用タスクモニタCPU依存プログラム.
44 *
45 */
46
47#include <itron.h>
48#include <stdio.h>
49#include <string.h>
50#include "syssvc/serial.h"
51#include "monitor.h"
52
53
54#ifdef _SMALL_STDIO_
55/******************************************************************************
56 * 縮小版標準入出力の設定
57 ******************************************************************************/
58
59FILE _iob[4];
60static ID dummyid = CONSOLE_PORTID;
61static ID * stdport = &dummyid;
62
63/*
64 * モニタの1文字入力文
65 */
66static int
67local_getc(FILE *st)
68{
69 char buf[2];
70
71 serial_rea_dat(*stdport, buf, 1);
72 return (int)buf[0];
73}
74
75/*
76 * モニタの文字列入力文
77 */
78static int
79local_gets(FILE *st, unsigned int len, char *s)
80{
81 return serial_rea_dat(*stdport, s, len);
82}
83
84/*
85 * モニタの1文字出力文
86 */
87static void
88local_putc(FILE *st, int c)
89{
90 char buf[2];
91
92 buf[0] = c;
93 serial_wri_dat(*stdport, buf, 1);
94 if(c == '\n'){
95 buf[0] = '\r';
96 serial_wri_dat(*stdport, buf, 1);
97 }
98}
99
100/*
101 * モニタの文字列出力文
102 */
103static int
104local_puts(FILE *st, unsigned int len, char *s)
105{
106 return serial_wri_dat(*stdport, s, len);
107}
108
109/*
110 * モニタのデータフラッシュ文
111 */
112static int
113local_flush(FILE *st)
114{
115 return 0;
116}
117
118/*
119 * ローカルなstrlen
120 */
121static int
122local_datacount(const char *s)
123{
124 int i;
125
126 for(i = 0 ; *s != 0 ; i++)
127 s++;
128 return i;
129}
130
131/*
132 * 標準出力関数
133 */
134int fputc(int c, FILE *st)
135{
136 if(st == NULL)
137 st = stdout;
138 st->_func_out(st, c);
139 return 1;
140}
141
142/*
143 * 標準文字列出力関数
144 */
145int fputs(const char *s, FILE *st)
146{
147 int status;
148
149 if(st == NULL)
150 st = stdout;
151 status = st->_func_outs(st, local_datacount(s), (char *)s);
152 st->_func_out(st, '\n');
153 return status;
154}
155
156/*
157 * 標準入力関数
158 */
159int fgetc(FILE *st)
160{
161 if(st == NULL)
162 st = stdin;
163 return st->_func_in(st);
164}
165
166/*
167 * 標準文字列入力関数
168 */
169int fgets(char *buf, int size, FILE *st)
170{
171 if(st == NULL)
172 st = stdin;
173 return st->_func_ins(st, size, buf);
174}
175
176/*
177 * 標準データ読み出し関数
178 */
179size_t fread(void *buf, size_t size, size_t count, FILE *st)
180{
181 int result;
182 if(st == NULL)
183 st = stdin;
184 result = st->_func_ins(st, size*count, buf);
185 return result / size;
186}
187
188/*
189 * 標準データ書き込み関数
190 */
191size_t fwrite(const void *buf, size_t size, size_t count, FILE *st)
192{
193 int result;
194 if(st == NULL)
195 st = stdout;
196 result = st->_func_outs(st, size*count, (char *)buf);
197 return result / size;
198}
199
200/*
201 * 標準文字列出力関数
202 */
203int puts(const char *s)
204{
205 int status;
206
207 status = stdout->_func_outs(stdout, local_datacount(s), (char *)s);
208 stdout->_func_out(stdout, '\n');
209 return status;
210}
211
212/*
213 * 一文字出力プログラム
214 */
215int putchar(int c)
216{
217 return fputc(c,stdout);
218}
219
220/*
221 * バッファのフラッシュ関数
222 */
223int __wrap_fflush(FILE *st)
224{
225 if(st == NULL)
226 st = stdout;
227 return st->_func_flush(st);
228}
229
230/*
231 * 標準入出力用ストリーム取り出し関数
232 */
233FILE *_get_stdio(int no)
234{
235 return &_iob[no];
236}
237
238/*
239 * 標準入出力ストリーム初期化関数
240 */
241int _set_stdio(int no)
242{
243 if(no >= 0 && no < 3){
244 _iob[no]._file = -1;
245 _iob[no]._func_in = (int (*)(void*))local_getc;
246 _iob[no]._func_ins = (int (*)(void*, unsigned int, char *))local_gets;
247 _iob[no]._func_out = (void (*)(void*, int))local_putc;
248 _iob[no]._func_outs = (int (*)(void*, unsigned int, char *))local_puts;
249 _iob[no]._func_flush = local_flush;
250 _iob[no]._dev = 0;
251 return no;
252 }
253 else
254 return -1;
255}
256
257/*
258 * 標準入出力初期化関数
259 */
260void _setup_stdio(signed int *pport)
261{
262 int i;
263
264 stdport = pport;
265 for(i = 0 ; i < 3 ; i++){
266 _set_stdio(i);
267 }
268}
269
270#endif /* _SMALL_STDIO_ */
271
Note: See TracBrowser for help on using the repository browser.