source: EcnlProtoTool/trunk/webapp/webmrbc/Arduino/SdBlock.cs@ 287

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

ファイルヘッダーコメントを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csharp
File size: 13.9 KB
Line 
1/*
2 * TOPPERS/ECNL Prototyping tool
3 *
4 * Copyright (C) 2017 Cores Co., Ltd. Japan
5 *
6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
11 * スコード中に含まれていること.
12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
15 * の無保証規定を掲載すること.
16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
18 * と.
19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
20 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
22 * 報告すること.
23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
27 * 免責すること.
28 *
29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
33 * の責任を負わない.
34 *
35 * @(#) $Id: SdBlock.cs 287 2017-05-05 14:22:23Z coas-nagasima $
36 */
37using System;
38using System.Collections.Generic;
39using System.Linq;
40
41namespace WebMrbc
42{
43 public class SdExistsBlock : Block
44 {
45 public const string type_name = "sd_exists";
46
47 public SdExistsBlock()
48 : base(type_name)
49 {
50 }
51
52 public void init()
53 {
54 this.appendDummyInput()
55 .appendField("ファイルが存在するかどうか調べる");
56 this.appendValueInput("FILENAME")
57 .setCheck("String");
58 this.setInputsInline(true);
59 this.setOutput(true, "Boolean");
60 this.setColour(160);
61 this.setTooltip("");
62 this.setHelpUrl("http://www.example.com/");
63 }
64 }
65
66 public class SdMkdirBlock : Block
67 {
68 public const string type_name = "sd_mkdir";
69
70 public SdMkdirBlock()
71 : base(type_name)
72 {
73 }
74
75 public void init()
76 {
77 this.appendDummyInput()
78 .appendField("ディレクトリを作成する");
79 this.appendValueInput("DIRNAME")
80 .setCheck("String");
81 this.setInputsInline(true);
82 this.setOutput(true, "Boolean");
83 this.setColour(160);
84 this.setTooltip("");
85 this.setHelpUrl("http://www.example.com/");
86 }
87 }
88
89 public class SdRemoveBlock : Block
90 {
91 public const string type_name = "sd_remove";
92
93 public SdRemoveBlock()
94 : base(type_name)
95 {
96 }
97
98 public void init()
99 {
100 this.appendDummyInput()
101 .appendField("ファイルを削除する");
102 this.appendValueInput("FILENAME")
103 .setCheck("String");
104 this.setInputsInline(true);
105 this.setOutput(true, "Boolean");
106 this.setColour(160);
107 this.setTooltip("");
108 this.setHelpUrl("http://www.example.com/");
109 }
110 }
111
112 public class SdCopyBlock : Block
113 {
114 public const string type_name = "sd_copy";
115
116 public SdCopyBlock()
117 : base(type_name)
118 {
119 }
120
121 public void init()
122 {
123 this.appendDummyInput()
124 .appendField("ファイルをコピーする");
125 this.appendValueInput("SRC_FILENAME")
126 .setCheck("String")
127 .appendField("コピー元ファイル名");
128 this.appendValueInput("DST_FILENAME")
129 .setCheck("String")
130 .appendField("コピー先ファイル名");
131 this.setInputsInline(true);
132 this.setOutput(true, "Boolean");
133 this.setColour(160);
134 this.setTooltip("");
135 this.setHelpUrl("http://www.example.com/");
136 }
137 }
138
139 public class SdRmdirBlock : Block
140 {
141 public const string type_name = "sd_rmdir";
142
143 public SdRmdirBlock()
144 : base(type_name)
145 {
146 }
147
148 public void init()
149 {
150 this.appendDummyInput()
151 .appendField("ディレクトリを削除する");
152 this.appendValueInput("DIRNAME")
153 .setCheck("String");
154 this.setInputsInline(true);
155 this.setOutput(true, "Boolean");
156 this.setColour(160);
157 this.setTooltip("");
158 this.setHelpUrl("http://www.example.com/");
159 }
160 }
161
162 public class SdOpenBlock : Block
163 {
164 public const string type_name = "sd_open";
165
166 public SdOpenBlock()
167 : base(type_name)
168 {
169 }
170
171 public void init()
172 {
173 this.appendDummyInput()
174 .appendField("ファイルをオープンします")
175 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
176 this.appendValueInput("FILENAME")
177 .setCheck("String")
178 .appendField("ファイル名");
179 this.appendDummyInput()
180 .appendField("モード")
181 .appendField(new FieldDropdown(new[] {
182 new[] { "Read", "READ" },
183 new[] { "Append", "APPEND" },
184 new[] { "New Create", "NEW_CREATE" }
185 }), "SD_OPEN_MODE");
186 this.setInputsInline(true);
187 this.setOutput(true, "Boolean");
188 this.setColour(160);
189 this.setTooltip("");
190 this.setHelpUrl("http://www.example.com/");
191 }
192 }
193
194 public class SdCloseBlock : Block
195 {
196 public const string type_name = "sd_close";
197
198 public SdCloseBlock()
199 : base(type_name)
200 {
201 }
202
203 public void init()
204 {
205 this.appendDummyInput()
206 .appendField("ファイルをクローズします")
207 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
208 this.setInputsInline(true);
209 this.setOutput(true, "Boolean");
210 this.setColour(160);
211 this.setTooltip("");
212 this.setHelpUrl("http://www.example.com/");
213 }
214 }
215
216 public class SdReadBlock : Block
217 {
218 public const string type_name = "sd_read";
219
220 public SdReadBlock()
221 : base(type_name)
222 {
223 }
224
225 public void init()
226 {
227 this.appendDummyInput()
228 .appendField("ファイルから1バイト読み込みます")
229 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
230 this.setInputsInline(true);
231 this.setOutput(true, "Number");
232 this.setColour(160);
233 this.setTooltip("");
234 this.setHelpUrl("http://www.example.com/");
235 }
236 }
237
238 public class SdSeekBlock : Block
239 {
240 public const string type_name = "sd_seek";
241
242 public SdSeekBlock()
243 : base(type_name)
244 {
245 }
246
247 public void init()
248 {
249 this.appendDummyInput()
250 .appendField("ファイルの読み出し位置を移動する")
251 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
252 this.appendValueInput("POSITION")
253 .setCheck("Number")
254 .appendField("バイト数");
255 this.setInputsInline(true);
256 this.setOutput(true, "Boolean");
257 this.setColour(160);
258 this.setTooltip("");
259 this.setHelpUrl("http://www.example.com/");
260 }
261 }
262
263 public class SdWriteBlock : Block
264 {
265 public const string type_name = "sd_write";
266
267 public SdWriteBlock()
268 : base(type_name)
269 {
270 }
271
272 public void init()
273 {
274 this.appendDummyInput()
275 .appendField("ファイルにバイナリデータを書き込む")
276 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
277 this.appendValueInput("DATA")
278 .setCheck("String")
279 .appendField("データ");
280 this.appendValueInput("LENGTH")
281 .setCheck("Number")
282 .appendField("データサイズ");
283 this.setInputsInline(true);
284 this.setOutput(true, "Boolean");
285 this.setColour(160);
286 this.setTooltip("");
287 this.setHelpUrl("http://www.example.com/");
288 }
289 }
290
291 public class SdFlushBlock : Block
292 {
293 public const string type_name = "sd_flush";
294
295 public SdFlushBlock()
296 : base(type_name)
297 {
298 }
299
300 public void init()
301 {
302 this.appendDummyInput()
303 .appendField("ファイルの書き込みをフラッシュします")
304 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
305 this.setPreviousStatement(true, null);
306 this.setNextStatement(true, null);
307 this.setColour(160);
308 this.setTooltip("");
309 this.setHelpUrl("http://www.example.com/");
310 }
311 }
312
313 public class SdSizeBlock : Block
314 {
315 public const string type_name = "sd_size";
316
317 public SdSizeBlock()
318 : base(type_name)
319 {
320 }
321
322 public void init()
323 {
324 this.appendDummyInput()
325 .appendField("ファイルのサイズを取得します")
326 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
327 this.setOutput(true, "Number");
328 this.setColour(160);
329 this.setTooltip("");
330 this.setHelpUrl("http://www.example.com/");
331 }
332 }
333
334 public class SdPositionBlock : Block
335 {
336 public const string type_name = "sd_position";
337
338 public SdPositionBlock()
339 : base(type_name)
340 {
341 }
342 public void init()
343 {
344 this.appendDummyInput()
345 .appendField("ファイルのseek位置を取得します")
346 .appendField(App.TargetBoard.SdFileHandles(), "SD_FILE_NO");
347 this.setOutput(true, "Number");
348 this.setColour(160);
349 this.setTooltip("");
350 this.setHelpUrl("http://www.example.com/");
351 }
352 }
353
354 partial class Ruby
355 {
356 public node sd_exists(SdExistsBlock block)
357 {
358 var value_filename = valueToCode(block, "FILENAME");
359 var c = new const_node(this, intern("SD"));
360 var p = new node[] {
361 value_filename,
362 };
363 return new call_node(this, c, intern("exists"), p, null);
364 }
365
366 public node sd_mkdir(SdMkdirBlock block)
367 {
368 var value_filename = valueToCode(block, "DIRNAME");
369 var c = new const_node(this, intern("SD"));
370 var p = new node[] {
371 value_filename,
372 };
373 return new call_node(this, c, intern("mkdir"), p, null);
374 }
375
376 public node sd_remove(SdRemoveBlock block)
377 {
378 var value_filename = valueToCode(block, "FILENAME");
379 var c = new const_node(this, intern("SD"));
380 var p = new node[] {
381 value_filename,
382 };
383 return new call_node(this, c, intern("remove"), p, null);
384 }
385
386 public node sd_copy(SdCopyBlock block)
387 {
388 var value_src_filename = valueToCode(block, "SRC_FILENAME");
389 var value_dst_filename = valueToCode(block, "DST_FILENAME");
390 var c = new const_node(this, intern("SD"));
391 var p = new node[] {
392 value_src_filename,
393 value_dst_filename,
394 };
395 return new call_node(this, c, intern("copy"), p, null);
396 }
397
398 public node sd_rmdir(SdRmdirBlock block)
399 {
400 var value_filename = valueToCode(block, "DIRNAME");
401 var c = new const_node(this, intern("SD"));
402 var p = new node[] {
403 value_filename,
404 };
405 return new call_node(this, c, intern("rmdir"), p, null);
406 }
407
408 public node sd_open(SdOpenBlock block)
409 {
410 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
411 var value_filename = valueToCode(block, "FILENAME");
412 var dropdown_sd_open_mode = block.getFieldValue("SD_OPEN_MODE");
413 var c = new const_node(this, intern("SD"));
414 var p = new node[] {
415 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
416 value_filename,
417 new int_node(this, App.TargetBoard.SdOpenModeNameToNum(dropdown_sd_open_mode)),
418 };
419 return new call_node(this, c, intern("open"), p, null);
420 }
421
422 public node sd_close(SdCloseBlock block)
423 {
424 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
425 var c = new const_node(this, intern("SD"));
426 var p = new node[] {
427 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
428 };
429 return new call_node(this, c, intern("close"), p, null);
430 }
431
432 public node sd_read(SdReadBlock block)
433 {
434 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
435 var c = new const_node(this, intern("SD"));
436 var p = new node[] {
437 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
438 };
439 return new call_node(this, c, intern("read"), p, null);
440 }
441
442 public node sd_seek(SdSeekBlock block)
443 {
444 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
445 var value_position = valueToCode(block, "POSITION");
446 var c = new const_node(this, intern("SD"));
447 var p = new node[] {
448 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
449 value_position,
450 };
451 return new call_node(this, c, intern("seek"), p, null);
452 }
453
454 public node sd_write(SdWriteBlock block)
455 {
456 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
457 var value_data = valueToCode(block, "DATA");
458 var value_length = valueToCode(block, "LENGTH");
459 var c = new const_node(this, intern("SD"));
460 var p = new node[] {
461 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
462 value_data,
463 value_length,
464 };
465 return new call_node(this, c, intern("write"), p, null);
466 }
467
468 public node sd_flush(SdFlushBlock block)
469 {
470 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
471 var c = new const_node(this, intern("SD"));
472 var p = new node[] {
473 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
474 };
475 return new call_node(this, c, intern("flush"), p, null);
476 }
477
478 public node sd_size(SdSizeBlock block)
479 {
480 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
481 var c = new const_node(this, intern("SD"));
482 var p = new node[] {
483 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
484 };
485 return new call_node(this, c, intern("size"), p, null);
486 }
487
488 public node sd_position(SdPositionBlock block)
489 {
490 var dropdown_sd_file_no = block.getFieldValue("SD_FILE_NO");
491 var c = new const_node(this, intern("SD"));
492 var p = new node[] {
493 new int_node(this, App.TargetBoard.SdFileHandlerNameToNum(dropdown_sd_file_no)),
494 };
495 return new call_node(this, c, intern("position"), p, null);
496 }
497 }
498}
Note: See TracBrowser for help on using the repository browser.