forked from RaspberryPiFoundation/blockly
-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlisp_functions.js
More file actions
89 lines (81 loc) · 2.61 KB
/
lisp_functions.js
File metadata and controls
89 lines (81 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/// Code Generator Functions for Custom Blocks in lisp_blocks.js.
/// Initially exported by Block Exporter from lisp_library.xml.
Blockly.Lisp['coap'] = function(block) {
// Generate CoAP message payload:
// coap!( @json {
// "device": &device_id,
// sensor_data,
// })
var elements = new Array(block.itemCount_);
for (var i = 0; i < block.itemCount_; i++) {
elements[i] = Blockly.Lisp.valueToCode(block, 'ADD' + i,
Blockly.Lisp.ORDER_NONE) || '\'\'';
}
var code = [
'coap!( @json {',
// Insert the indented elements.
Blockly.Lisp.prefixLines(
elements.join(',\n'),
Blockly.Lisp.INDENT),
'})',
].join('\n');
return [code, Blockly.Lisp.ORDER_UNARY_POSTFIX];
};
Blockly.Lisp['field'] = function(block) {
// Generate a field for CoAP message payload: `name: value`
var text_name = block.getFieldValue('NAME');
var value_name = Blockly.Lisp.valueToCode(block, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code = [
'"', text_name, '"',
': ',
value_name,
].join('');
// TODO: Change ORDER_NONE to the correct strength.
return [code, Blockly.Lisp.ORDER_NONE];
};
Blockly.Lisp['forever'] = function(block) {
// Run this code at forever in a loop. Inspired by MakeCode "forever" and Arduino "loop".
var statements_stmts = Blockly.Lisp.statementToCode(block, 'STMTS');
var code = statements_stmts;
code = [
'( loop ',
code + ')',
].join('\n');
return code;
};
Blockly.Lisp['wait'] = function(block) {
var number_duration = block.getFieldValue('DURATION');
var code = [
'( delay ' + (number_duration * 1000) + ' )',
''
].join('\n');
return code;
};
Blockly.Lisp['digital_toggle_pin'] = function(block) {
var dropdown_pin = block.getFieldValue('PIN');
// TODO: Call init_out only once,
var code = [
'// Toggle the GPIO pin',
'gpio::toggle(' + dropdown_pin + ') ? ;',
''
].join('\n');
return code;
};
Blockly.Lisp['digital_read_pin'] = function(block) {
var dropdown_pin = block.getFieldValue('PIN');
// TODO: Call init_in only once: gpio::init_in(MCU_GPIO_PORTC!(13), pull_type) ? ;
var code = 'gpio::read(' + dropdown_pin + ')';
// TODO: Change ORDER_NONE to the correct strength.
return [code, Blockly.Lisp.ORDER_NONE];
};
Blockly.Lisp['digital_write_pin'] = function(block) {
var dropdown_pin = block.getFieldValue('PIN');
var dropdown_value = block.getFieldValue('VALUE');
// TODO: Call init_out only once,
var code = [
'( pinmode ' + dropdown_pin + ' :output )',
'( digitalwrite ' + dropdown_pin + ' ' + dropdown_value + ' )',
''
].join('\n');
return code;
};