source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/mruby/tMruby.cdl@ 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/plain
File size: 5.8 KB
Line 
1/*
2 * Copyright (C) 2012 by Ubiquitous Computing and Networking Laboratory
3 * Ritsumeikan Univ., JAPAN
4 * 上記著作権者
5は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
6 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
7 * 変・再é…
8å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
11 * スコード中に含まれていること.
12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
13 * 用できる形で再é…
14å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
15å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
16 * 者
17マニュアルなど)に,上記の著作権表示,この利用条件および下記
18 * の無保証規定を掲載すること.
19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
20 * 用できない形で再é…
21å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
22 * と.
23 * (a) 再é…
24å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
25マニュアルなど)に,上記の著
26 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
27 * (b) 再é…
28å¸ƒã®å½¢æ…
29‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
30 * 報告すること.
31 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
32 * 害からも,上記著作権者
33およびTOPPERSプロジェクトをå…
34è²¬ã™ã‚‹ã“と.
35 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
36 * 由に基づく請求からも,上記著作権者
37およびTOPPERSプロジェクトを
38 * å…
39è²¬ã™ã‚‹ã“と.
40 *
41 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
42お
43 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
44 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
45 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
46 * の責任を負わない.
47 *
48 * @(#) $Id: tMruby.cdl 388 2019-05-22 11:25:18Z coas-nagasima $
49 */
50//import(<syssvc/tSerialPort.cdl>);
51//import(<kernel.cdl>);
52
53import(<mruby.cdl>);
54import(<sMruby.cdl>);
55import(<tTLSFMalloc.cdl>);
56
57namespace nMruby{
58
59/*** mruby VM ***/
60 celltype tMrubyVM{
61 entry sMrubyVM eMrubyVM;
62 attr{
63 [omit]char_t *mrubyFile;
64 const uint8_t *irep=C_EXP("$cell_global$_irep");
65 };
66 var{
67 mrb_irep *var_irep;
68 mrb_state *mrb;
69 struct RProc *rproc;
70 };
71
72 /* MrubyBridgePlugin の生成する VM_TECSInitializeer.eInitialize へ結合する */
73 [optional] call sInitializeBridge cInit;
74 /*
75 * アロケータ
76 * 他とå…
77±æœ‰ã—ないのであれば、このアロケータは排他制御される必
78要はない
79 */
80 call sMalloc cMalloc;
81
82 FACTORY{
83 write("Makefile.tecsgen", "clean_mrb_c :");
84 write("Makefile.tecsgen", " rm -f $(MRB_C)");
85 };
86 factory{
87 write("Makefile.tecsgen", "POST_TECSGEN_TARGET := $(POST_TECSGEN_TARGET) $cell_global$_mrb.c");
88 write("Makefile.tecsgen", "$cell_global$_mrb.c : %s tecs.timestamp Makefile", mrubyFile);
89 write("Makefile.tecsgen", " $(MRBC) -B$cell_global$_irep -o$cell_global$_mrb.c %s", mrubyFile);
90 write("Makefile.tecsgen", "TECS_COBJS := $(TECS_COBJS) $cell_global$_mrb.o");
91 write("Makefile.tecsgen", "MRB_C := $(MRB_C) $cell_global$_mrb.c");
92 write("$ct_global$_factory.h","extern const uint8_t $cell_global$_irep[];");
93 };
94 };
95
96/*** Standard Task Versoin ***/
97 /*
98 * tMruby の eMrubyBody.main が、繰り返し起床されることは想定されていません。
99 */
100 celltype tMrubyTaskBody{
101 entry sTaskBody eMrubyBody;
102 call sMrubyVM cMrubyVM;
103 };
104 composite tMruby{
105 entry sTaskBody eMrubyBody;
106 [optional] call sInitializeBridge cInit;
107 attr{
108 [omit]char_t *mrubyFile;
109 size_t memoryPoolSize = 1024 * 1024; /** 1MB default **/
110 /* note: this requires enough memory */
111 /* please pay attention to memory layout */
112 };
113
114 /** **/
115 cell tMrubyVM MrubyVM{
116 mrubyFile = composite.mrubyFile;
117 cInit => composite.cInit;
118 cMalloc = TLSFMalloc.eMalloc;
119 };
120 cell tMrubyTaskBody MrubyTaskBody {
121 cMrubyVM = MrubyVM.eMrubyVM;
122 };
123 cell tTLSFMalloc TLSFMalloc {
124 memoryPoolSize = composite.memoryPoolSize;
125 };
126 composite.eMrubyBody => MrubyTaskBody.eMrubyBody;
127 };
128
129/*** Cyclic Task Versoin ***/
130 /*
131 * tMrubyCyclic の eMrubyBody.main が繰り返し呼び出されることが想定されています。
132 * この実装
133では mrb_close は呼び出されません (終了は、突然電源が切れることを想定)
134 */
135 celltype tMrubyCyclicTaskBody{
136 entry sTaskBody eMrubyBody;
137 call sMrubyVM cMrubyVM;
138 var {
139 bool_t b_init;
140 };
141 };
142 composite tMrubyCyclic{
143 entry sTaskBody eMrubyBody;
144 [optional] call sInitializeBridge cInit;
145 attr{
146 [omit]char_t *mrubyFile;
147 size_t memoryPoolSize = 1024 * 1024; /** 1MB default **/
148 /* note: this requires enough memory */
149 /* please pay attention to memory layout */
150 };
151
152 /** **/
153 cell tMrubyVM MrubyVM{
154 mrubyFile = composite.mrubyFile;
155 cInit => composite.cInit;
156 cMalloc = TLSFMalloc.eMalloc;
157 };
158 cell tMrubyCyclicTaskBody MrubyTaskBody {
159 cMrubyVM = MrubyVM.eMrubyVM;
160 };
161 cell tTLSFMalloc TLSFMalloc {
162 memoryPoolSize = composite.memoryPoolSize;
163 };
164 composite.eMrubyBody => MrubyTaskBody.eMrubyBody;
165 };
166};
Note: See TracBrowser for help on using the repository browser.