source: azure_iot_hub/trunk/asp3_dcre/syssvc/test_svc.h@ 388

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

Azure IoT Hub Device C SDK を使ったサンプルの追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 6.3 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2005-2016 by Embedded and Real-Time Systems Laboratory
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 *
9 * 上記著作権者
10は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
11 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
12 * 変・再é…
13å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16 * スコード中に含まれていること.
17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18 * 用できる形で再é…
19å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
20å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
21 * 者
22マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * の無保証規定を掲載すること.
24 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
25 * 用できない形で再é…
26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
27 * と.
28 * (a) 再é…
29å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
30マニュアルなど)に,上記の著
31 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
32 * (b) 再é…
33å¸ƒã®å½¢æ…
34‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
35 * 報告すること.
36 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
37 * 害からも,上記著作権者
38およびTOPPERSプロジェクトをå…
39è²¬ã™ã‚‹ã“と.
40 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
41 * 由に基づく請求からも,上記著作権者
42およびTOPPERSプロジェクトを
43 * å…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
49 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
50 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
51 * の責任を負わない.
52 *
53 * $Id: test_svc.h 388 2019-05-22 11:25:18Z coas-nagasima $
54 */
55
56/*
57 * テストプログラム用サービス
58 */
59
60#ifndef TOPPERS_TEST_SVC_H
61#define TOPPERS_TEST_SVC_H
62
63#ifdef __cplusplus
64extern "C" {
65#endif
66
67#include <kernel.h>
68#include "target_test.h"
69
70/*
71 * TECSで記述されたテストプログラム用のサービスを直接呼び出すための定義
72 *
73 * C言語で記述されたアプリケーションから,TECSで記述されたテストプログ
74 * ラム用のサービスを呼び出すためには,アダプタを用いるのが正当な方法
75 * であるが,テストプログラム用のサービスがシングルトンであることを利
76 * 用して直接呼び出す.
77 */
78extern void tTestService_eTestService_start(const char *progname);
79extern void tTestService_eTestService_setBuiltInTest(void *desc);
80extern void tTestService_eTestService_checkPoint(uint_t count);
81extern void tTestService_eTestService_finishPoint(uint_t count);
82extern void tTestService_eTestService_assertError(const char *expr,
83 const char *file, int_t line);
84extern void tTestService_eTestService_serviceError(ER ercd,
85 const char *file, int_t line);
86extern ER tTestService_eTestService_getInterruptPriorityMask(PRI *p_ipm);
87
88/*
89 * テストプログラムの開始
90 */
91Inline void
92test_start(const char *progname)
93{
94 tTestService_eTestService_start(progname);
95}
96
97/*
98 * 自己診断関数の設定
99 */
100Inline void
101set_bit_service(void *bit_service)
102{
103 tTestService_eTestService_setBuiltInTest(bit_service);
104}
105
106/*
107 * チェックポイント
108 */
109Inline void
110check_point(uint_t count)
111{
112 tTestService_eTestService_checkPoint(count);
113}
114
115/*
116 * 完了チェックポイント
117 */
118Inline void
119check_finish(uint_t count)
120{
121 tTestService_eTestService_finishPoint(count);
122}
123
124/*
125 * 条件チェック
126 */
127Inline void
128check_assert_error(const char *expr, const char *file, int_t line)
129{
130 tTestService_eTestService_assertError(expr, file, line);
131}
132
133#define check_assert(exp) \
134 ((void)(!(exp) ? (check_assert_error(#exp, __FILE__, __LINE__), 0) : 0))
135
136/*
137 * エラーコードチェック
138 */
139Inline void
140check_ercd_error(ER ercd, const char *file, int_t line)
141{
142 tTestService_eTestService_serviceError(ercd, file, line);
143}
144
145#define check_ercd(ercd, expected_ercd) \
146 ((void)((ercd) != (expected_ercd) ? \
147 (check_ercd_error(ercd, __FILE__, __LINE__), 0) : 0))
148
149/*
150 * システム状æ…
151‹ã®ãƒã‚§ãƒƒã‚¯
152 */
153#define check_state(ctx, loc, dsp, dpn, ter) do { \
154 check_assert(sns_ctx() == ctx); \
155 check_assert(sns_loc() == loc); \
156 check_assert(sns_dsp() == dsp); \
157 check_assert(sns_dpn() == dpn); \
158 check_assert(sns_ter() == ter); \
159} while (false);
160
161/*
162 * 割込み優å…
163ˆåº¦ãƒžã‚¹ã‚¯ã®ãƒã‚§ãƒƒã‚¯
164 */
165#define check_ipm(ipm) do { \
166 PRI intpri; \
167 ER ercd; \
168 \
169 ercd = tTestService_eTestService_getInterruptPriorityMask(&intpri); \
170 check_ercd(ercd, E_OK); \
171 check_assert(intpri == ipm); \
172} while (false);
173
174#ifdef __cplusplus
175}
176#endif
177
178/*
179 * TECSで記述された自己診断サービスを直接呼び出すための定義
180 *
181 * C言語で記述されたアプリケーションから,TECSで記述された自己診断サー
182 * ビスを呼び出すためには,アダプタを用いるのが正当な方法であるが,自
183 * 己診断サービスがシングルトンであることを利用して直接呼び出す.
184 */
185extern ER tBuiltInTestAdaptor_eGetBuiltInTestDescriptor_getDescriptor
186 (void **p_desc, int_t i);
187
188Inline void *
189get_bit_kernel(void)
190{
191 void *desc;
192
193 tBuiltInTestAdaptor_eGetBuiltInTestDescriptor_getDescriptor(&desc, 0);
194 return(desc);
195}
196
197Inline void *
198get_bit_mutex(void)
199{
200 void *desc;
201
202 tBuiltInTestAdaptor_eGetBuiltInTestDescriptor_getDescriptor(&desc, 1);
203 return(desc);
204}
205
206#endif /* TOPPERS_TEST_SVC_H */
Note: See TracBrowser for help on using the repository browser.