Blockly.Msg.BLE_UART_ON_DATA_TITLE = "BLE UART On Data";
Blockly.Msg.BLE_UART_ON_DATA_TOOLTIP = "BLE UART On Data";
Blockly.Msg.BLE_UART_ON_DATA_HELPURL = "";
Blockly.Msg.BLE_UART_READ_TEXT_TITLE = "BLE UART Read Text";
Blockly.Msg.BLE_UART_READ_TEXT_TOOLTIP = "BLE UART Read Text";
Blockly.Msg.BLE_UART_READ_TEXT_HELPURL = "";
Blockly.Msg.BLE_UART_READ_NUMBER_TITLE = "BLE UART Read Number";
Blockly.Msg.BLE_UART_READ_NUMBER_TOOLTIP = "BLE UART read text and convert to number If invalid number return 0";
Blockly.Msg.BLE_UART_READ_NUMBER_HELPURL = "";
Blockly.Msg.BLE_UART_SEND_TITLE = "BLE UART Send";
Blockly.Msg.BLE_UART_SEND_TOOLTIP = "BLE UART Send";
Blockly.Msg.BLE_UART_SEND_HELPURL = "";
Blockly.Msg.BLE_UART_TEXT_NUMBER_TOOLTIP = "Text or number";
Blockly.Msg.BLE_UART_TEXT_NUMBER_HELPURL = "";
Blockly.Blocks['ble_uart.on_data'] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLE_UART_ON_DATA_TITLE);
this.appendStatementInput("ON_DATA")
.setCheck(null);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLE_UART_ON_DATA_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLE_UART_ON_DATA_HELPURL);
}
};
Blockly.Blocks["ble_uart.read_text"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLE_UART_READ_TEXT_TITLE);
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLE_UART_READ_TEXT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLE_UART_READ_TEXT_HELPURL);
}
};
Blockly.Blocks["ble_uart.read_number"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLE_UART_READ_NUMBER_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLE_UART_READ_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLE_UART_READ_NUMBER_HELPURL);
}
};
Blockly.Blocks["ble_uart.send"] = {
init: function() {
this.appendValueInput("VALUE")
.appendField(Blockly.Msg.BLE_UART_SEND_TITLE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLE_UART_SEND_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLE_UART_SEND_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'ble_uart.send'
}).append('\
\
\
\
'
);
}
};
Blockly.Blocks["ble_uart.text_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC', 12, 12, '*'))
.appendField(new Blockly.FieldTextInput('Hello World!'), 'VALUE')
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==', 12, 12, '*'));
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLE_UART_TEXT_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLE_UART_TEXT_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['ble_uart.on_data'] = function(block) {
var code = 'DEV_IO.BLE_UART().on_data([]() { // callback\n' + Blockly.JavaScript.statementToCode(block, 'ON_DATA') + '\n});\n';
return code;
};
Blockly.JavaScript['ble_uart.read_text'] = function(block) {
return [
'DEV_IO.BLE_UART().read_text()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['ble_uart.read_number'] = function(block) {
return [
'DEV_IO.BLE_UART().read_number()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['ble_uart.send'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_IO.BLE_UART().send(' + argument0 + ');\n';
};
Blockly.JavaScript["ble_uart.text_number"] = function(block) {
return [
'(char *)"' + block.getFieldValue('VALUE') + '"',
Blockly.JavaScript.ORDER_ATOMIC
];
}
Blockly.Msg.LCD_I2C_20X4_TITLE = "I2C LCD 20x4";
Blockly.Msg.LCD_I2C_20X4_CLR_TITLE = "Clear Screen";
Blockly.Msg.LCD_I2C_20X4_CLR_TOOLTIP = "Clear I2C LCD 20x4 display";
Blockly.Msg.LCD_I2C_20X4_CLR_HELPURL = "";
Blockly.Msg.LCD_I2C_20X4_BACKLIGHT_TITLE = "Turn BackLight";
Blockly.Msg.LCD_I2C_20X4_BACKLIGHT_TOOLTIP = "Turn I2C LCD 20x4 display backlight status off or on";
Blockly.Msg.LCD_I2C_20X4_BACKLIGHT_HELPURL = "";
Blockly.Msg.LCD_I2C_20X4_PRINT_TITLE = "Print";
Blockly.Msg.LCD_I2C_20X4_PRINT_TOOLTIP = "Print on I2C LCD 20x4 display at (column, row)";
Blockly.Msg.LCD_I2C_20X4_PRINT_HELPURL = "";
Blockly.Msg.LCD_I2C_20X4_PRINT_PREC_TITLE = "Print Number";
Blockly.Msg.LCD_I2C_20X4_PRINT_PREC_TOOLTIP = "Print number on I2C LCD 20x4 display at (column, row) with specific precision";
Blockly.Msg.LCD_I2C_20X4_PRINT_PREC_HELPURL = "";
Blockly.Msg.PRECISION_TITLE = "Precision";
Blockly.Msg.LCD_I2C_20X4_COLUMN_NUMBER_TOOLTIP = "Column value 1 to 20";
Blockly.Msg.LCD_I2C_20X4_COLUMN_NUMBER_HELPURL = "";
Blockly.Msg.LCD_I2C_20X4_ROW_NUMBER_TOOLTIP = "Row value 1 to 4";
Blockly.Msg.LCD_I2C_20X4_ROW_NUMBER_HELPURL = "";
Blockly.Msg.LCD_I2C_20X4_STRING_NUMBER_TOOLTIP = "String or number";
Blockly.Msg.LCD_I2C_20X4_STRING_NUMBER_HELPURL = "";
Blockly.Msg.LCD_I2C_20X4_NUMBER_TOOLTIP = "Number";
Blockly.Msg.LCD_I2C_20X4_NUMBER_HELPURL = "";
function lcd_i2c_20x4_init(_this) {
_this.appendDummyInput()
.appendField(Blockly.Msg.LCD_I2C_20X4_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
_this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess
_this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x20", "32"],
["0x21", "33"],
["0x22", "34"],
["0x23", "35"],
["0x24", "36"],
["0x25", "37"],
["0x26", "38"],
["0x27", "39"]
]), 'ADDRESS');
}
Blockly.Blocks["lcd_i2c_20x4.clear"] = {
init: function() {
// init
lcd_i2c_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_I2C_20X4_CLR_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_CLR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_CLR_HELPURL);
}
};
Blockly.Blocks["lcd_i2c_20x4.backlight"] = {
init: function() {
// init
lcd_i2c_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_I2C_20X4_BACKLIGHT_TITLE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.STATUS_OFF, "0"],
[Blockly.Msg.STATUS_ON, "1"]
]), 'STATUS');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_BACKLIGHT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_BACKLIGHT_HELPURL);
}
};
Blockly.Blocks["lcd_i2c_20x4.print"] = {
init: function() {
// init
lcd_i2c_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_I2C_20X4_PRINT_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')');
this.appendValueInput('VALUE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_PRINT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_PRINT_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'lcd_i2c_20x4.print'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["lcd_i2c_20x4.print_prec"] = {
init: function() {
// init
lcd_i2c_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_I2C_20X4_PRINT_PREC_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')')
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(2, 0, 4, 1), 'PREC')
.appendField(' ');
this.appendValueInput('VALUE')
.setCheck('Number');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_PRINT_PREC_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_PRINT_PREC_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'lcd_i2c_20x4.print_prec'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["lcd_i2c_20x4.column_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 20, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_COLUMN_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_COLUMN_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["lcd_i2c_20x4.row_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 4, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_ROW_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_ROW_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["lcd_i2c_20x4.string_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC', 12, 12, '*'))
.appendField(new Blockly.FieldTextInput('Hello World!'), 'VALUE')
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==', 12, 12, '*'));
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(basic_colour);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_STRING_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_STRING_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["lcd_i2c_20x4.number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, -9999999, 9999999, 0.01), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.LCD_I2C_20X4_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_I2C_20X4_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['lcd_i2c_20x4.clear'] = function(block) {
return 'DEV_I2C1.LCD_I2C(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).clear();\n';
};
Blockly.JavaScript['lcd_i2c_20x4.backlight'] = function(block) {
return 'DEV_I2C1.LCD_I2C(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).backlight(' + block.getFieldValue('STATUS') + ');\n';
}
Blockly.JavaScript['lcd_i2c_20x4.print'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_I2C1.LCD_I2C(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).print(' + column + ', ' + row + ', ' + argument0 + ');\n';
};
Blockly.JavaScript['lcd_i2c_20x4.print_prec'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var prec = parseInt(block.getFieldValue('PREC'));
if (prec < 0) {
prec = 0;
}
if (prec > 4) {
prec = 4;
}
return 'DEV_I2C1.LCD_I2C(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).print(' + column + ', ' + row + ', ' + argument0 + ', ' + prec + ');\n';
};
Blockly.JavaScript["lcd_i2c_20x4.column_number"] = function(block) {
// Numeric value.
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.JavaScript["lcd_i2c_20x4.row_number"] = function(block) {
return Blockly.JavaScript["lcd_i2c_20x4.column_number"](block);
};
Blockly.JavaScript["lcd_i2c_20x4.string_number"] = function(block) {
return [
'(char *)"' + block.getFieldValue('VALUE') + '"',
Blockly.JavaScript.ORDER_ATOMIC
];
}
Blockly.JavaScript["lcd_i2c_20x4.number"] = function(block) {
return Blockly.JavaScript["lcd_i2c_20x4.column_number"](block);
}
Blockly.Msg.LCD_SPI_20X4_TITLE = "SPI LCD 20x4";
Blockly.Msg.LCD_SPI_20X4_CLR_TITLE = "Clear Screen";
Blockly.Msg.LCD_SPI_20X4_CLR_TOOLTIP = "Clear SPI LCD 20x4 display";
Blockly.Msg.LCD_SPI_20X4_CLR_HELPURL = "";
Blockly.Msg.LCD_SPI_20X4_BACKLIGHT_TITLE = "Turn BackLight";
Blockly.Msg.LCD_SPI_20X4_BACKLIGHT_TOOLTIP = "Turn SPI LCD 20x4 display backlight status off or on";
Blockly.Msg.LCD_SPI_20X4_BACKLIGHT_HELPURL = "";
Blockly.Msg.LCD_SPI_20X4_PRINT_TITLE = "Print";
Blockly.Msg.LCD_SPI_20X4_PRINT_TOOLTIP = "Print on SPI LCD 20x4 display at (column, row)";
Blockly.Msg.LCD_SPI_20X4_PRINT_HELPURL = "";
Blockly.Msg.LCD_SPI_20X4_PRINT_PREC_TITLE = "Print Number";
Blockly.Msg.LCD_SPI_20X4_PRINT_PREC_TOOLTIP = "Print number on SPI LCD 20x4 display at (column, row) with specific precision";
Blockly.Msg.LCD_SPI_20X4_PRINT_PREC_HELPURL = "";
Blockly.Msg.PRECISION_TITLE = "Precision";
Blockly.Msg.LCD_SPI_20X4_COLUMN_NUMBER_TOOLTIP = "Column value 1 to 20";
Blockly.Msg.LCD_SPI_20X4_COLUMN_NUMBER_HELPURL = "";
Blockly.Msg.LCD_SPI_20X4_ROW_NUMBER_TOOLTIP = "Row value 1 to 4";
Blockly.Msg.LCD_SPI_20X4_ROW_NUMBER_HELPURL = "";
Blockly.Msg.LCD_SPI_20X4_STRING_NUMBER_TOOLTIP = "String or number";
Blockly.Msg.LCD_SPI_20X4_STRING_NUMBER_HELPURL = "";
Blockly.Msg.LCD_SPI_20X4_NUMBER_TOOLTIP = "Number";
Blockly.Msg.LCD_SPI_20X4_NUMBER_HELPURL = "";
function lcd_spi_20x4_init(_this) {
_this.appendDummyInput()
.appendField(Blockly.Msg.LCD_SPI_20X4_TITLE);
// spi channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
_this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(
new Blockly.FieldDropdown(channel_array, function(selectedIndex) {
try {
if ((typeof(this.sourceBlock_) != "undefined") && (typeof(this.sourceBlock_.inputList) != "undefined")) {
var inputlist = this.sourceBlock_.inputList;
// if address item index > 3 for selected index 0, set address item index to 0
if (selectedIndex == 0) {
if (Blockly.mcp23s17_get_address_item_index(selectedIndex, inputlist[2].fieldRow[1].value_) > 3) {
inputlist[2].fieldRow[1].setValue(Blockly.mcp23s17_address_dropdown_menu(0)[0][1]);
}
}
}
} catch (e) {
}
// return selected index
return selectedIndex;
}),
'CHANNEL'
);
// device addess 0x20 to 0x23 for channel 0, addess 0x20 to 0x27 for channel 1 to 64
_this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown(function() {
try {
if ((typeof(this.sourceBlock_) != "undefined") && (typeof(this.sourceBlock_.inputList) != "undefined")) {
var inputlist = this.sourceBlock_.inputList;
var selected_channel = parseInt(inputlist[1].fieldRow[1].value_);
return Blockly.mcp23s17_address_dropdown_menu(selected_channel);
}
} catch (e) {
}
// default
return Blockly.mcp23s17_address_dropdown_menu(0);
}), 'ADDRESS');
}
Blockly.Blocks["lcd_spi_20x4.clear"] = {
init: function() {
// init
lcd_spi_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_SPI_20X4_CLR_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_CLR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_CLR_HELPURL);
}
};
Blockly.Blocks["lcd_spi_20x4.backlight"] = {
init: function() {
// init
lcd_spi_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_SPI_20X4_BACKLIGHT_TITLE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.STATUS_OFF, "0"],
[Blockly.Msg.STATUS_ON, "1"]
]), 'STATUS');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_BACKLIGHT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_BACKLIGHT_HELPURL);
}
};
Blockly.Blocks["lcd_spi_20x4.print"] = {
init: function() {
// init
lcd_spi_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_SPI_20X4_PRINT_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')');
this.appendValueInput('VALUE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_PRINT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_PRINT_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'lcd_spi_20x4.print'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["lcd_spi_20x4.print_prec"] = {
init: function() {
// init
lcd_spi_20x4_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.LCD_SPI_20X4_PRINT_PREC_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')')
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(2, 0, 4, 1), 'PREC')
.appendField(' ');
this.appendValueInput('VALUE')
.setCheck('Number');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_PRINT_PREC_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_PRINT_PREC_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'lcd_spi_20x4.print_prec'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["lcd_spi_20x4.column_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 20, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_COLUMN_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_COLUMN_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["lcd_spi_20x4.row_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 4, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_ROW_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_ROW_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["lcd_spi_20x4.string_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC', 12, 12, '*'))
.appendField(new Blockly.FieldTextInput('Hello World!'), 'VALUE')
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==', 12, 12, '*'));
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(basic_colour);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_STRING_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_STRING_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["lcd_spi_20x4.number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, -9999999, 9999999, 0.01), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.LCD_SPI_20X4_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LCD_SPI_20X4_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['lcd_spi_20x4.clear'] = function(block) {
return 'DEV_SPI.LCD_SPI(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).clear();\n';
};
Blockly.JavaScript['lcd_spi_20x4.backlight'] = function(block) {
return 'DEV_SPI.LCD_SPI(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).backlight(' + block.getFieldValue('STATUS') + ');\n';
}
Blockly.JavaScript['lcd_spi_20x4.print'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_SPI.LCD_SPI(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).print(' + column + ', ' + row + ', ' + argument0 + ');\n';
};
Blockly.JavaScript['lcd_spi_20x4.print_prec'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var prec = parseInt(block.getFieldValue('PREC'));
if (prec < 0) {
prec = 0;
}
if (prec > 4) {
prec = 4;
}
return 'DEV_SPI.LCD_SPI(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ', 20, 4).print(' + column + ', ' + row + ', ' + argument0 + ', ' + prec + ');\n';
};
Blockly.JavaScript["lcd_spi_20x4.column_number"] = function(block) {
// Numeric value.
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.JavaScript["lcd_spi_20x4.row_number"] = function(block) {
return Blockly.JavaScript["lcd_spi_20x4.column_number"](block);
};
Blockly.JavaScript["lcd_spi_20x4.string_number"] = function(block) {
return [
'(char *)"' + block.getFieldValue('VALUE') + '"',
Blockly.JavaScript.ORDER_ATOMIC
];
}
Blockly.JavaScript["lcd_spi_20x4.number"] = function(block) {
return Blockly.JavaScript["lcd_spi_20x4.column_number"](block);
}
Blockly.Msg.BLINK_START_TITLE = "Start Blinking LED";
Blockly.Msg.BLINK_START_TOOLTIP = "Start Blinking LED";
Blockly.Msg.BLINK_START_HELPURL = "";
Blockly.Msg.BLINK_STOP_TITLE = "Stop Blinking LED";
Blockly.Msg.BLINK_STOP_TOOLTIP = "Stop Blinking LED";
Blockly.Msg.BLINK_STOP_HELPURL = "";
Blockly.Blocks["blink.start"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLINK_START_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLINK_START_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLINK_START_HELPURL);
}
};
Blockly.Blocks["blink.stop"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLINK_STOP_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLINK_STOP_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLINK_STOP_HELPURL);
}
};
Blockly.JavaScript['blink.start'] = function(block) {
return 'DEV_IO.BLINK().start();\n';
};
Blockly.JavaScript['blink.stop'] = function(block) {
return 'DEV_IO.BLINK().stop();\n';
};
Blockly.Msg.BLINK_STATIC_START_TITLE = "Start Blinking LED (Static)";
Blockly.Msg.BLINK_STATIC_START_TOOLTIP = "Start Blinking LED (Static)";
Blockly.Msg.BLINK_STATIC_START_HELPURL = "";
Blockly.Msg.BLINK_STATIC_STOP_TITLE = "Stop Blinking LED (Static)";
Blockly.Msg.BLINK_STATIC_STOP_TOOLTIP = "Stop Blinking LED (Static)";
Blockly.Msg.BLINK_STATIC_STOP_HELPURL = "";
Blockly.Blocks["blink_static.start"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLINK_STATIC_START_TITLE)
.appendField(new Blockly.FieldDropdown([
["BT_LED", "BT_LED_GPIO"],
["WIFI_LED", "WIFI_LED_GPIO"],
["NTP_LED", "NTP_LED_GPIO"],
["IOT_LED", "IOT_LED_GPIO"]
]), 'LED_GPIO')
.appendField(new Blockly.FieldDropdown([
["SLOW", "500"],
["FAST", "100"]
]), 'BLINK_MS');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLINK_STATIC_START_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLINK_STATIC_START_HELPURL);
}
};
Blockly.Blocks["blink_static.stop"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLINK_STATIC_STOP_TITLE)
.appendField(new Blockly.FieldDropdown([
["BT_LED", "BT_LED_GPIO"],
["WIFI_LED", "WIFI_LED_GPIO"],
["NTP_LED", "NTP_LED_GPIO"],
["IOT_LED", "IOT_LED_GPIO"]
]), 'LED_GPIO');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLINK_STATIC_STOP_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLINK_STATIC_STOP_HELPURL);
}
};
Blockly.JavaScript['blink_static.start'] = function(block) {
return 'DEV_IO.BLINK_STATIC(' + block.getFieldValue('LED_GPIO') + ').start('+ parseInt(block.getFieldValue('BLINK_MS')) + ');\n';
};
Blockly.JavaScript['blink_static.stop'] = function(block) {
return 'DEV_IO.BLINK_STATIC(' + block.getFieldValue('LED_GPIO') + ').stop();\n';
};
Blockly.Msg.BLINK_ULP_START_TITLE = "ULP Start Blinking LED";
Blockly.Msg.BLINK_ULP_START_TOOLTIP = "ULP Start Blinking LED";
Blockly.Msg.BLINK_ULP_START_HELPURL = "";
Blockly.Msg.BLINK_ULP_STOP_TITLE = "ULP Stop Blinking LED";
Blockly.Msg.BLINK_ULP_STOP_TOOLTIP = "ULP Stop Blinking LED";
Blockly.Msg.BLINK_ULP_STOP_HELPURL = "";
Blockly.Blocks["blink_ulp.start"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLINK_ULP_START_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLINK_ULP_START_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLINK_ULP_START_HELPURL);
}
};
Blockly.Blocks["blink_ulp.stop"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.BLINK_ULP_STOP_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.BLINK_ULP_STOP_TOOLTIP);
this.setHelpUrl(Blockly.Msg.BLINK_ULP_STOP_HELPURL);
}
};
Blockly.JavaScript['blink_ulp.start'] = function(block) {
return 'DEV_IO.BLINK_ULP().start();\n';
};
Blockly.JavaScript['blink_ulp.stop'] = function(block) {
return 'DEV_IO.BLINK_ULP().stop();\n';
};
Blockly.Msg.DRV8833_MOVE_TITLE = "DRV8833 Move";
Blockly.Msg.DRV8833_MOVE_TOOLTIP = "DRV8833 driving for a specific movement direction and absolute speed value";
Blockly.Msg.DRV8833_MOVE_HELPURL = "";
Blockly.Msg.MOVE_FORWARD = "Forward";
Blockly.Msg.MOVE_BACKWARD = "Backward";
Blockly.Msg.TURN_LEFT = "Turn Left";
Blockly.Msg.TURN_RIGHT = "Turn Right";
Blockly.Msg.MOTOR_SPEED = "Speed";
Blockly.Msg.DRV8833_SPEED_NUMBER_TOOLTIP = "Enter motor speed in percent";
Blockly.Msg.DRV8833_SPEED_NUMBER_HELPURL = "";
Blockly.Msg.DRV8833_STOP_TITLE = "DRV8833 Stop";
Blockly.Msg.DRV8833_STOP_TOOLTIP = "Stop movement";
Blockly.Msg.DRV8833_STOP_HELPURL = "";
Blockly.Blocks["drv8833.move"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.DRV8833_MOVE_TITLE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MOVE_FORWARD, "0"],
[Blockly.Msg.MOVE_BACKWARD, "1"],
[Blockly.Msg.TURN_LEFT, "2"],
[Blockly.Msg.TURN_RIGHT, "3"]
]), 'DIRECTION');
this.appendDummyInput()
.appendField(Blockly.Msg.MOTOR_SPEED)
this.appendValueInput("SPEED").setCheck("Number");
this.appendDummyInput()
.appendField('%');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.DRV8833_MOVE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.DRV8833_MOVE_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'drv8833.move'
}).append('\
\
\
\
'
);
}
};
Blockly.Blocks["drv8833.stop"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.DRV8833_STOP_TITLE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.DRV8833_STOP_TOOLTIP);
this.setHelpUrl(Blockly.Msg.DRV8833_STOP_HELPURL);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["drv8833.speed_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(50, -100, 100, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.DRV8833_SPEED_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.DRV8833_SPEED_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['drv8833.move'] = function(block) {
var speed = Blockly.JavaScript.valueToCode(block, 'SPEED', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
// return [
// 'DEV_IO.DRV8833().move(' + block.getFieldValue('DIRECTION') + ', ' + speed + ');\n',
// Blockly.JavaScript.ORDER_ATOMIC
// ];
return 'DEV_IO.DRV8833().move(' + block.getFieldValue('DIRECTION') + ', ' + speed + ');\n';
}
Blockly.JavaScript['drv8833.stop'] = function(block) {
return 'DEV_IO.DRV8833().stop();\n';
}
Blockly.JavaScript["drv8833.speed_number"] = function(block) {
// Numeric value.
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.Msg.JOYSTICK_1_POSITION_TITLE = "Joystick 1 Position";
Blockly.Msg.JOYSTICK_1_POSITION_TOOLTIP = "Read Joystick 1 position (-100 to 100, 0 is middle position)";
Blockly.Msg.JOYSTICK_1_POSITION_HELPURL = "";
Blockly.Msg.JOYSTICK_2_POSITION_TITLE = "Joystick 2 Position";
Blockly.Msg.JOYSTICK_2_POSITION_TOOLTIP = "Read Joystick 2 position (-100 to 100, 0 is middle position)";
Blockly.Msg.JOYSTICK_2_POSITION_HELPURL = "";
Blockly.Msg.JOYSTICK_1_CALIBRATE_SET_TITLE = "Joystick 1 Calibrate Set";
Blockly.Msg.JOYSTICK_1_CALIBRATE_SET_TOOLTIP = "Set a constant calibrate values for joystick 1";
Blockly.Msg.JOYSTICK_1_CALIBRATE_SET_HELPURL = "";
Blockly.Msg.JOYSTICK_2_CALIBRATE_SET_TITLE = "Joystick 2 Calibrate Set";
Blockly.Msg.JOYSTICK_2_CALIBRATE_SET_TOOLTIP = "Set a constant calibrate values for joystick 2";
Blockly.Msg.JOYSTICK_2_CALIBRATE_SET_HELPURL = "";
Blockly.Msg.JOYSTICK_RELEASE = "Release";
Blockly.Msg.JOYSTICK_DOWNMOST = "DownMost";
Blockly.Msg.JOYSTICK_UPMOST = "UpMost";
Blockly.Msg.JOYSTICK_LEFTMOST = "LeftMost";
Blockly.Msg.JOYSTICK_RIGHTMOST = "RightMost";
Blockly.Msg.JOYSTICK_RELEASE_DEFAULT_TOOLTIP = "Enter joystick release value";
Blockly.Msg.JOYSTICK_RELEASE_DEFAULT_HELPURL = "";
Blockly.Msg.JOYSTICK_DOWNMOST_DEFAULT_TOOLTIP = "Enter joystick downmost value";
Blockly.Msg.JOYSTICK_DOWNMOST_DEFAULT_HELPURL = "";
Blockly.Msg.JOYSTICK_UPMOST_DEFAULT_TOOLTIP = "Enter joystick upmost value";
Blockly.Msg.JOYSTICK_UPMOST_DEFAULT_HELPURL = "";
Blockly.Msg.JOYSTICK_LEFTMOST_DEFAULT_TOOLTIP = "Enter joystick leftmost value";
Blockly.Msg.JOYSTICK_LEFTMOST_DEFAULT_HELPURL = "";
Blockly.Msg.JOYSTICK_RIGHTMOST_DEFAULT_TOOLTIP = "Enter joystick rightmost value";
Blockly.Msg.JOYSTICK_RIGHTMOST_DEFAULT_HELPURL = "";
Blockly.Blocks["joystick_1.position"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_1_POSITION_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.JOYSTICK_1_POSITION_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_1_POSITION_HELPURL);
}
};
Blockly.Blocks["joystick_2.position"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_2_POSITION_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.JOYSTICK_2_POSITION_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_2_POSITION_HELPURL);
}
};
Blockly.Blocks["joystick_1.calibrate_set"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_1_CALIBRATE_SET_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_RELEASE);
this.appendValueInput("RELEASE").setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_DOWNMOST);
this.appendValueInput("DOWNMOST").setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_UPMOST);
this.appendValueInput("UPMOST").setCheck("Number");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.JOYSTICK_1_CALIBRATE_SET_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_1_CALIBRATE_SET_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'joystick_1.calibrate_set'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["joystick_2.calibrate_set"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_2_CALIBRATE_SET_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_RELEASE);
this.appendValueInput("RELEASE").setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_LEFTMOST);
this.appendValueInput("LEFTMOST").setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.JOYSTICK_RIGHTMOST);
this.appendValueInput("RIGHTMOST").setCheck("Number");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.JOYSTICK_2_CALIBRATE_SET_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_2_CALIBRATE_SET_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'joystick_2.calibrate_set'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["joystick.release_default"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, -100, 100, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.JOYSTICK_RELEASE_DEFAULT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_RELEASE_DEFAULT_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["joystick.downmost_default"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(-100, -100, 100, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.JOYSTICK_DOWNMOST_DEFAULT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_DOWNMOST_DEFAULT_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["joystick.upmost_default"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(100, -100, 100, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.JOYSTICK_UPMOST_DEFAULT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_UPMOST_DEFAULT_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["joystick.leftmost_default"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(-100, -100, 100, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.JOYSTICK_LEFTMOST_DEFAULT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_LEFTMOST_DEFAULT_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["joystick.rightmost_default"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(100, -100, 100, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.JOYSTICK_RIGHTMOST_DEFAULT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.JOYSTICK_RIGHTMOST_DEFAULT_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['joystick_1.position'] = function(block) {
return [
'DEV_IO.JOYSTICK(OUT1_GPIO, IN1_GPIO)' + '.get_position()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['joystick_2.position'] = function(block) {
return [
'DEV_IO.JOYSTICK(OUT2_GPIO, IN2_GPIO)' + '.get_position()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['joystick_1.calibrate_set'] = function(block) {
var release_value = Blockly.JavaScript.valueToCode(block, 'RELEASE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var downmost_value = Blockly.JavaScript.valueToCode(block, 'DOWNMOST', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var upmost_value = Blockly.JavaScript.valueToCode(block, 'UPMOST', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_IO.JOYSTICK(OUT1_GPIO, IN1_GPIO).calibrate_set(' + release_value + ', ' + downmost_value + ', ' + upmost_value + ');\n';
}
Blockly.JavaScript['joystick_2.calibrate_set'] = function(block) {
var release_value = Blockly.JavaScript.valueToCode(block, 'RELEASE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var leftmost_value = Blockly.JavaScript.valueToCode(block, 'LEFTMOST', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var rightmost_value = Blockly.JavaScript.valueToCode(block, 'RIGHTMOST', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_IO.JOYSTICK(OUT2_GPIO, IN2_GPIO).calibrate_set(' + release_value + ', ' + leftmost_value + ', ' + rightmost_value + ');\n';
}
function Joystick_GetValue_Code(block) {
// Numeric value.
var code = parseInt(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
}
Blockly.JavaScript["joystick.release_default"] = function(block) {
return Joystick_GetValue_Code(block);
};
Blockly.JavaScript["joystick.downmost_default"] = function(block) {
return Joystick_GetValue_Code(block);
};
Blockly.JavaScript["joystick.upmost_default"] = function(block) {
return Joystick_GetValue_Code(block);
};
Blockly.JavaScript["joystick.leftmost_default"] = function(block) {
return Joystick_GetValue_Code(block);
};
Blockly.JavaScript["joystick.rightmost_default"] = function(block) {
return Joystick_GetValue_Code(block);
};
Blockly.Msg.MCP23S17_16IN_READ_TITLE = "Read MCP23S17_16IN";
Blockly.Msg.MCP23S17_16IN_READ_TOOLTIP = "Read MCP23S17_16IN GPIO 16 inputs";
Blockly.Msg.MCP23S17_16IN_READ_HELPURL = "";
Blockly.Msg.MCP23S17_16IN_INPUT_NUMBER_TOOLTIP = "Input number value 0 to 15"
Blockly.Msg.MCP23S17_16IN_INPUT_NUMBER_HELPURL = "";
function mcp23s17_16in_init(_this) {
_this.appendDummyInput()
.appendField(Blockly.Msg.MCP23S17_16IN_READ_TITLE);
// spi channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
_this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(
new Blockly.FieldDropdown(channel_array, function(selectedIndex) {
// if address item index > 3 for selected index 0, set address item index to 0
if (selectedIndex == 0) {
if (Blockly.mcp23s17_get_address_item_index(selectedIndex, _this.sourceBlock_.inputList[2].fieldRow[1].value_) > 3) {
_this.sourceBlock_.inputList[2].fieldRow[1].setValue(Blockly.mcp23s17_address_dropdown_menu(0)[0][1]);
}
}
return selectedIndex;
}),
'CHANNEL'
);
// device addess 0 to 3 for channel 0, addess 0 to 7 for channel 1 to 64
_this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown(function() {
try {
if ((typeof(_this.sourceBlock_) != "undefined") && (typeof(_this.sourceBlock_.inputList) != "undefined")) {
var selected_channel = parseInt(_this.sourceBlock_.inputList[1].fieldRow[1].value_);
return Blockly.mcp23s17_address_dropdown_menu(selected_channel);
}
} catch (e) {
}
// default
return Blockly.mcp23s17_address_dropdown_menu(0);
}), 'ADDRESS');
}
Blockly.Blocks["mcp23s17_16in.read"] = {
init: function() {
// init
mcp23s17_16in_init(this);
// mcp23s17 gpio
this.appendDummyInput()
.appendField(Blockly.Msg.INPUT)
.appendField(new Blockly.FieldDropdown([
["0", "0"],
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"],
["7", "7"],
["8", "8"],
["9", "9"],
["10", "10"],
["11", "11"],
["12", "12"],
["13", "13"],
["14", "14"],
["15", "15"]
]), 'INPUT');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(null);
this.setNextStatement(null);
this.setColour(160);
this.setTooltip(Blockly.Msg.MCP23S17_16IN_READ_TOOLTIP);
this.setHelpUrl(Blockly.Msg.MCP23S17_16IN_READ_HELPURL);
}
};
Blockly.Blocks["mcp23s17_16in.read_input"] = {
init: function() {
// init
mcp23s17_16in_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.INPUT);
// mcp23s17 gpio
this.appendValueInput("INPUT")
.setCheck("Number");
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(null);
this.setNextStatement(null);
this.setColour(160);
this.setTooltip(Blockly.Msg.MCP23S17_16IN_READ_TOOLTIP);
this.setHelpUrl(Blockly.Msg.MCP23S17_16IN_READ_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'mcp23s17_16in.read_input'
}).append('\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["mcp23s17_16in.input_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, 0, 15, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.MCP23S17_16IN_INPUT_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.MCP23S17_16IN_INPUT_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['mcp23s17_16in.read'] = function(block) {
return [
'DEV_SPI.MCP23S17_16IN(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ')' + '.read(' + block.getFieldValue('INPUT') + ')',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['mcp23s17_16in.read_input'] = function(block) {
var input = Blockly.JavaScript.valueToCode(block, 'INPUT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return [
'DEV_SPI.MCP23S17_16IN(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ')' + '.read(' + input + ')',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript["mcp23s17_16in.input_number"] = function(block) {
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.Msg.MCP23S17_16OUT_WRITE_TITLE = "Write MCP23S17_16OUT";
Blockly.Msg.MCP23S17_16OUT_WRITE_TOOLTIP = "Write MCP23S17_16OUT GPIO 16 outputs";
Blockly.Msg.MCP23S17_16OUT_WRITE_HELPURL = "";
Blockly.Msg.MCP23S17_16OUT_OUTPUT_NUMBER_TOOLTIP = "Output number value 0 to 15"
Blockly.Msg.MCP23S17_16OUT_OUTPUT_NUMBER_HELPURL = "";
Blockly.Msg.MCP23S17_16OUT_STATUS_NUMBER_TOOLTIP = "Output status value 0 or 1"
Blockly.Msg.MCP23S17_16OUT_STATUS_NUMBER_HELPURL = "";
function mcp23s17_16out_init(_this) {
_this.appendDummyInput()
.appendField(Blockly.Msg.MCP23S17_16OUT_WRITE_TITLE);
// spi channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
_this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(
new Blockly.FieldDropdown(channel_array, function(selectedIndex) {
// if address item index > 3 for selected index 0, set address item index to 0
if (selectedIndex == 0) {
if (Blockly.mcp23s17_get_address_item_index(selectedIndex, _this.sourceBlock_.inputList[2].fieldRow[1].value_) > 3) {
_this.sourceBlock_.inputList[2].fieldRow[1].setValue(Blockly.mcp23s17_address_dropdown_menu(0)[0][1]);
}
}
return selectedIndex;
}),
'CHANNEL'
);
// device addess 0 to 3 for channel 0, addess 0 to 7 for channel 1 to 64
_this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown(function() {
try {
if ((typeof(_this.sourceBlock_) != "undefined") && (typeof(_this.sourceBlock_.inputList) != "undefined")) {
var selected_channel = parseInt(_this.sourceBlock_.inputList[1].fieldRow[1].value_);
return Blockly.mcp23s17_address_dropdown_menu(selected_channel);
}
} catch (e) {
}
// default
return Blockly.mcp23s17_address_dropdown_menu(0);
}), 'ADDRESS');
}
Blockly.Blocks["mcp23s17_16out.write"] = {
init: function() {
// init
mcp23s17_16out_init(this);
// mcp23s17 gpio
this.appendDummyInput()
.appendField(Blockly.Msg.OUTPUT)
.appendField(new Blockly.FieldDropdown([
["0", "0"],
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"],
["7", "7"],
["8", "8"],
["9", "9"],
["10", "10"],
["11", "11"],
["12", "12"],
["13", "13"],
["14", "14"],
["15", "15"]
]), 'OUTPUT')
.appendField(Blockly.Msg.STATUS)
.appendField(new Blockly.FieldDropdown([
["0", "0"],
["1", "1"]
]), 'STATUS');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.MCP23S17_16OUT_WRITE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.MCP23S17_16OUT_WRITE_HELPURL);
}
};
Blockly.Blocks["mcp23s17_16out.write_output"] = {
init: function() {
// init
mcp23s17_16out_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.OUTPUT);
// mcp23s17 gpio
this.appendValueInput("OUTPUT")
.setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.STATUS);
this.appendValueInput("STATUS")
.setCheck("Number");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.MCP23S17_16OUT_WRITE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.MCP23S17_16OUT_WRITE_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'mcp23s17_16out.write_output'
}).append('\
\
\
\
\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["mcp23s17_16out.output_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, 0, 15, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.MCP23S17_16OUT_OUTPUT_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.MCP23S17_16OUT_OUTPUT_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["mcp23s17_16out.status_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, 0, 1, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.MCP23S17_16OUT_STATUS_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.MCP23S17_16OUT_STATUS_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['mcp23s17_16out.write'] = function(block) {
return 'DEV_SPI.MCP23S17_16OUT(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ')' + '.write(' + block.getFieldValue('OUTPUT') + ', ' + block.getFieldValue('STATUS') + ');\n';
};
Blockly.JavaScript['mcp23s17_16out.write_output'] = function(block) {
var output = Blockly.JavaScript.valueToCode(block, 'OUTPUT', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var status = Blockly.JavaScript.valueToCode(block, 'STATUS', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_SPI.MCP23S17_16OUT(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ')' + '.write(' + output + ', ' + status + ');\n';
};
Blockly.JavaScript["mcp23s17_16out.output_number"] = function(block) {
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.JavaScript["mcp23s17_16out.status_number"] = function(block) {
return Blockly.JavaScript["mcp23s17_16out.output_number"](block);
};
Blockly.Msg.PULSE_CAP_READ_TITLE = "Pulse Capture Read";
Blockly.Msg.PULSE_CAP_READ_START = "Start";
Blockly.Msg.PULSE_CAP_READ_STOP = "Stop";
Blockly.Msg.PULSE_CAP_READ_TIMEOUT = "Timeout";
Blockly.Msg.PULSE_CAP_READ_MILLISECOND = "ms";
Blockly.Msg.PULSE_CAP_READ_TOOLTIP = "Read pulse capture interval in microsecond (\u00B5s)";
Blockly.Msg.PULSE_CAP_READ_HELPURL = "";
Blockly.Msg.PULSE_CAP_TIMEOUT_MS_NUMBER_TOOLTIP = "Timeout in millisecond (ms)";
Blockly.Msg.PULSE_CAP_TIMEOUT_MS_NUMBER_HELPURL = "";
Blockly.Blocks["pulse_cap.read"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.PULSE_CAP_READ_TITLE)
.appendField(Blockly.Msg.PULSE_CAP_READ_START)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'START')
.appendField(new Blockly.FieldDropdown([[{
'src': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE4SURBVFiF7ZcxbsIwFIY/MAwgtd1YyglQr8A9ELTAXdm7gKCljOEAnSuVLolqRKxnxy8JRHzSU5zISv4vsZ0EZBLgVHMlUsi2h8hN0BiRTmD/H2BTRpAcXoCu5gntOSKO1bqu25ih5SPScrSvCh+RvtXulRUkFkmkCzxY+48oT0AtJJE3wFj7Jj12Uxhgz+Vb9kD4sl0EtdVyifuTYREV0Q8VEQN84hap4qmoiMxxS2Q1j00qEC1igA9kkS/KfSrRIq/IElnN4vM6iRIxwA5/kT3ny7MmUSJT/CWymmqkzqGwSBtYEy6ypZyPz8IiE8IlsproZD8jSKRlbVfAKKfPE/93/Bf4zumzBcbpRbVIgOe0fQSGGie8/1hVxV3k2ugA70KfQRVBBAbIOYOW2bomu1iNGVqNEfkDJN/f5afRxdEAAAAASUVORK5CYII=',
'width': 24,
'height': 12,
'alt': 'One Shot'
}, "GPIO_INTR_POSEDGE"], [{
'src': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE/SURBVFiF7ZhNbsIwEIU/CKzZIfUKiCtwDyQQlwG13Kt7NiB+u2TdBUiwKC1dOEheOIxtEsdEPCmSk4w98/Q84x+QsQeuJT97Kci6BZGnQGWINBztf4BFEYEY0AWaeQ6o54g4V8vyW5mp9SISG1yTPW/UgE+gY/jX0tpvwLfBZgn0UHkkouhk7+O/UPZdHBVNpA7McSexREuNGHLkD/jw6DdJ+1ojxDqSACvs1dimfZwQakEcYk9k4OMgFJEEWCOT2OFZbUNuUUbIREa+g4ckkgAbskl8kaFGDFVLxy/3K9gYuPgOHnr3m6CqkrUaEJ8ioFSZGr6/84AaUM55pIkK+ub3gnDIilERUCfRo/Z+SL9lIlYiACetfZaMYyZyzWgbETMRJzSAmWDTDhGIgDZynPne+OUIpxvOykytyhD5B1Oq0iwC5VqWAAAAAElFTkSuQmCC',
'width': 24,
'height': 12,
'alt': 'One Shot Negative'
}, "GPIO_INTR_NEGEDGE"]]
), 'START_TYPE')
.appendField(" " + Blockly.Msg.PULSE_CAP_READ_STOP)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'STOP')
.appendField(new Blockly.FieldDropdown([[{
'src': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE4SURBVFiF7ZcxbsIwFIY/MAwgtd1YyglQr8A9ELTAXdm7gKCljOEAnSuVLolqRKxnxy8JRHzSU5zISv4vsZ0EZBLgVHMlUsi2h8hN0BiRTmD/H2BTRpAcXoCu5gntOSKO1bqu25ih5SPScrSvCh+RvtXulRUkFkmkCzxY+48oT0AtJJE3wFj7Jj12Uxhgz+Vb9kD4sl0EtdVyifuTYREV0Q8VEQN84hap4qmoiMxxS2Q1j00qEC1igA9kkS/KfSrRIq/IElnN4vM6iRIxwA5/kT3ny7MmUSJT/CWymmqkzqGwSBtYEy6ypZyPz8IiE8IlsproZD8jSKRlbVfAKKfPE/93/Bf4zumzBcbpRbVIgOe0fQSGGie8/1hVxV3k2ugA70KfQRVBBAbIOYOW2bomu1iNGVqNEfkDJN/f5afRxdEAAAAASUVORK5CYII=',
'width': 24,
'height': 12,
'alt': 'One Shot'
}, "GPIO_INTR_POSEDGE"], [{
'src': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE/SURBVFiF7ZhNbsIwEIU/CKzZIfUKiCtwDyQQlwG13Kt7NiB+u2TdBUiwKC1dOEheOIxtEsdEPCmSk4w98/Q84x+QsQeuJT97Kci6BZGnQGWINBztf4BFEYEY0AWaeQ6o54g4V8vyW5mp9SISG1yTPW/UgE+gY/jX0tpvwLfBZgn0UHkkouhk7+O/UPZdHBVNpA7McSexREuNGHLkD/jw6DdJ+1ojxDqSACvs1dimfZwQakEcYk9k4OMgFJEEWCOT2OFZbUNuUUbIREa+g4ckkgAbskl8kaFGDFVLxy/3K9gYuPgOHnr3m6CqkrUaEJ8ioFSZGr6/84AaUM55pIkK+ub3gnDIilERUCfRo/Z+SL9lIlYiACetfZaMYyZyzWgbETMRJzSAmWDTDhGIgDZynPne+OUIpxvOykytyhD5B1Oq0iwC5VqWAAAAAElFTkSuQmCC',
'width': 24,
'height': 12,
'alt': 'One Shot Negative'
}, "GPIO_INTR_NEGEDGE"]]
), 'STOP_TYPE');
this.appendDummyInput()
.appendField(" " + Blockly.Msg.PULSE_CAP_READ_TIMEOUT);
this.appendValueInput("TIMEOUT_MS")
.setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.PULSE_CAP_READ_MILLISECOND);
this.setInputsInline(true);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(Blockly.Msg.SENSOR_HUE);
this.setTooltip(Blockly.Msg.PULSE_CAP_READ_TOOLTIP);
this.setHelpUrl(Blockly.Msg.PULSE_CAP_READ_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'pulse_cap.read'
}).append('\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["pulse_cap.timeout_ms_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1000, 20, 1000000, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.PULSE_CAP_TIMEOUT_MS_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.PULSE_CAP_TIMEOUT_MS_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['pulse_cap.read'] = function(block) {
var timeout_ms = Blockly.JavaScript.valueToCode(block, 'TIMEOUT_MS', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return [
'DEV_IO.PULSE_CAP(' + block.getFieldValue('START') + ', ' + block.getFieldValue('STOP') + ')' + '.read(' + block.getFieldValue('START_TYPE') + ', ' + block.getFieldValue('STOP_TYPE') + ', ' + timeout_ms + ')',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript["pulse_cap.timeout_ms_number"] = function(block) {
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.Msg.PULSE_GEN_WRITE_TITLE = "Pulse Generator Write";
Blockly.Msg.PULSE_GEN_OUTPUT = "Output";
Blockly.Msg.PULSE_GEN_WRITE_TOOLTIP = "Generate pulse with specific type and width";
Blockly.Msg.PULSE_GEN_WRITE_HELPURL = "";
Blockly.Msg.PULSE_GEN_TYPE = "Type";
Blockly.Msg.PULSE_GEN_WIDTH_US = "Width";
Blockly.Msg.PULSE_GEN_WAIT = "Wait";
Blockly.Msg.PULSE_GEN_NO_WAIT = "No Wait";
Blockly.Msg.PULSE_GEN_MICROSECOND = "\u00B5s";
Blockly.Msg.PULSE_GEN_WIDTH_US_NUMBER_TOOLTIP = "Pulse width in microsecond (\u00B5s)";
Blockly.Msg.PULSE_GEN_WIDTH_US_NUMBER_HELPURL = "";
Blockly.Blocks["pulse_gen.write"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.PULSE_GEN_WRITE_TITLE)
.appendField(Blockly.Msg.PULSE_GEN_OUTPUT)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'OUTPUT')
.appendField(" " + Blockly.Msg.PULSE_GEN_TYPE)
.appendField(new Blockly.FieldDropdown([[{
'src': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACBSURBVFiF7ZjBCYAwEAQHiS2kCvsvw5cl2IUP/foQzkDU9diB/I5kBzafg5gV2D8+axRyuCHyC9KIlMb5DVieCHLBBIw9Lzz/kbCrX72bploWUcMialhEDYuoYRE1LKKGRdSwiBoWUSONSAHmYKa+ESSgEufsu/HrSNOGM0210ogclHNE5xvEJekAAAAASUVORK5CYII=',
'width': 24,
'height': 12,
'alt': 'One Shot'
}, "GPIO_INTR_POSEDGE"], [{
'src': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACDSURBVFiF7ZOxDYAwDARPCFZgChr23wEaRmALCmhpIFiI8LL+pHRO/Cd9APbAWanHGsnWVAz2KWlEWmAuzAxAVyHLHRuwvH3k3NW//khxb5pqWUQNi6hhETUsooZF1LCIGhZRwyJqWESNNCJtcL4Hpi+CXOx6TFSkA8bgnSqkqVYakQNm0iN6FGb0sQAAAABJRU5ErkJggg==',
'width': 24,
'height': 12,
'alt': 'One Shot Negative'
}, "GPIO_INTR_NEGEDGE"]]
), 'TYPE');
this.appendDummyInput()
.appendField(" " + Blockly.Msg.PULSE_GEN_WIDTH_US);
this.appendValueInput("WIDTH_US")
.setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.PULSE_GEN_MICROSECOND);
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown([[
Blockly.Msg.PULSE_GEN_WAIT, "true"
], [
Blockly.Msg.PULSE_GEN_NO_WAIT, "false"
]]), 'WAIT');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(Blockly.Msg.SENSOR_HUE);
this.setTooltip(Blockly.Msg.PULSE_GEN_WRITE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.PULSE_GEN_WRITE_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'pulse_gen.write'
}).append('\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["pulse_gen.width_us_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 1000000, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.PULSE_GEN_WIDTH_US_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.PULSE_GEN_WIDTH_US_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['pulse_gen.write'] = function(block) {
var type = block.getFieldValue('TYPE');
var width = Blockly.JavaScript.valueToCode(block, 'WIDTH_US', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var wait = block.getFieldValue('WAIT');
return 'DEV_IO.PULSE_GEN(' + block.getFieldValue('OUTPUT') + ')' + '.write(' + type + ', ' + width + ', ' + wait + ');\n';
};
Blockly.JavaScript["pulse_gen.width_us_number"] = function(block) {
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.Msg.DL7612_SEND_TITLE = "DL7612 Send Data";
Blockly.Msg.DL7612_SEND_TOOLTIP = "DL7612 Send Data";
Blockly.Msg.DL7612_SEND_HELPURL = "";
Blockly.Msg.DL7612_APPSKEY = "Application Key";
Blockly.Msg.DL7612_NWKSKEY = "Network Key ";
Blockly.Msg.DL7612_APPSKEY_TOOLTIP = "Enter Application Key";
Blockly.Msg.DL7612_APPSKEY_HELPURL = "";
Blockly.Msg.DL7612_NWKSKEY_TOOLTIP = "Enter Network Key";
Blockly.Msg.DL7612_NWKSKEY_HELPURL = "";
Blockly.Msg.DL7612_TEMPERATURE = "Temperature";
Blockly.Msg.DL7612_HUMIDITY = "Humidity";
Blockly.Msg.DL7612_WIND_SPEED = "Wind Speed";
Blockly.Msg.DL7612_WIND_DIRECTION = "Wind Direction";
Blockly.Msg.DL7612_RAIN_VOLUME = "Rain Volume";
Blockly.Msg.DL7612_TXPOWER = "TX Power ";
Blockly.Msg.DL7612_DBM = "dBm";
const DEFAULT_APPSKEY = 'EF6EBE0953DFF17AA7B89E64FB8A2ADD';
const DEFAULT_NWKSKEY = 'B5A6E1B6C840146389C4ABB4835CB5BA';
Blockly.Blocks["kbnet_dl7612.send_01"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.DL7612_SEND_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.DL7612_TXPOWER)
.appendField(new Blockly.FieldDropdown([
["2", "5"],
["5", "4"],
["8", "3"],
["11", "2"],
["14", "1"],
//["20", "0"]
]), 'TX_POWER')
.appendField(Blockly.Msg.DL7612_DBM);
this.appendDummyInput()
.appendField(Blockly.Msg.DL7612_APPSKEY)
.appendField(new Blockly.FieldTextInput(DEFAULT_APPSKEY, appskey_validator), 'APPSKEY');
this.appendDummyInput()
.appendField(Blockly.Msg.DL7612_NWKSKEY)
.appendField(new Blockly.FieldTextInput(DEFAULT_NWKSKEY, nwkskey_validator), 'NWKSKEY');
this.appendValueInput("VALUE_1")
.appendField(Blockly.Msg.DL7612_TEMPERATURE)
.setCheck("Number");
this.appendValueInput("VALUE_2")
.appendField(Blockly.Msg.DL7612_HUMIDITY)
.setCheck("Number");
this.appendValueInput("VALUE_3")
.appendField(Blockly.Msg.DL7612_WIND_SPEED)
.setCheck("Number");
this.appendValueInput("VALUE_4")
.appendField(Blockly.Msg.DL7612_WIND_DIRECTION)
.setCheck("Number");
this.appendValueInput("VALUE_5")
.appendField(Blockly.Msg.DL7612_RAIN_VOLUME)
.setCheck("Number");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.DL7612_SEND_TOOLTIP);
this.setHelpUrl(Blockly.Msg.DL7612_SEND_HELPURL);
},
// onchange
onchange: function(ev) {
if (ev.blockId === this.id) {
if (!this.isInFlyout) {
//console.log(this.type);
//console.log(this.workspace.getBlockById(ev.blockId));
// on block change
if (ev.type == Blockly.Events.BLOCK_CHANGE) {
//console.log(ev.name, ev.blockId, ev.type);
// on tx power dropdown changed
if (ev.name == 'TX_POWER') {
//console.log(this.getField('TX_POWER').text_, this.getField('TX_POWER').value_);
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new tx power option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('TX_POWER').value_, 'TX_POWER');
}
}
}
}
else
// on application key change
if (ev.name == 'APPSKEY') {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new appskey option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('APPSKEY').text_, 'APPSKEY');
}
}
}
}
else
// on network key change
if (ev.name == 'NWKSKEY') {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new nwkskey option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('NWKSKEY').text_, 'NWKSKEY');
}
}
}
}
}
// on block create
if (ev.type == Blockly.Events.BLOCK_CREATE) {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy current tx power value on workspace to this new block
this.setFieldValue(this.workspace.blockDB_[blockID].getField('TX_POWER').value_, 'TX_POWER');
// copy new appskey option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('APPSKEY').text_, 'APPSKEY');
// copy new nwkskey option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('NWKSKEY').text_, 'NWKSKEY');
break;
}
}
}
}
}
}
}
};
var appskey_validator = function(val) {
var re = /[0-9A-Fa-f]{32}/g;
if ((val.length == 32) && (re.test(val))) {
return val.toUpperCase();
}
else {
// default
return DEFAULT_APPSKEY;
}
};
var nwkskey_validator = function(val) {
var re = /[0-9A-Fa-f]{32}/g;
if ((val.length == 32) && (re.test(val))) {
return val.toUpperCase();
}
else {
// default
return DEFAULT_NWKSKEY;
}
};
Blockly.JavaScript['kbnet_dl7612.send_01'] = function(block) {
var value_1 = Blockly.JavaScript.valueToCode(block, 'VALUE_1', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_2 = Blockly.JavaScript.valueToCode(block, 'VALUE_2', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_3 = Blockly.JavaScript.valueToCode(block, 'VALUE_3', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_4 = Blockly.JavaScript.valueToCode(block, 'VALUE_4', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_5 = Blockly.JavaScript.valueToCode(block, 'VALUE_5', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var appskey = block.getFieldValue('APPSKEY'); //Blockly.JavaScript.valueToCode(block, 'APPSKEY', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var nwkskey = block.getFieldValue('NWKSKEY'); //Blockly.JavaScript.valueToCode(block, 'NWKSKEY', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var tx_power_index = parseInt(block.getFieldValue('TX_POWER'));
return 'DEV_IO.KBNET_DL7612("' + appskey.toLowerCase() + '", "' + nwkskey.toLowerCase() + '", ' + tx_power_index + ').send_01(' + value_1 + ', ' + value_2 + ', ' + value_3 + ', ' + value_4 + ', ' + value_5 + ');\n';
};
Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_MM_TITLE = "Rain Volume 24Hrs";
Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_MM_TOOLTIP = "Read KidBright-Net Rain Volume Last 24 Hours (mm.)";
Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_MM_HELPURL = "";
Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_COUNTER_TITLE = "24Hrs Rain Volume Counter";
Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_COUNTER_TOOLTIP = "Read KidBright-Net Rain Volume Counter Last 24 Hours";
Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_COUNTER_HELPURL = "";
Blockly.Msg.KBNET_RV_RESET_RAIN_VOLUME_TITLE = "Reset Rain Volume";
Blockly.Msg.KBNET_RV_RESET_RAIN_VOLUME_TOOLTIP = "Reset KidBright-Net Rain Volume";
Blockly.Msg.KBNET_RV_RESET_RAIN_VOLUME_HELPURL = "";
Blockly.Blocks["kbnet_rv.get_rain_volume_mm"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_MM_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_MM_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_MM_HELPURL);
}
};
/*
Blockly.Blocks["kbnet_rv.get_rain_volume_counter"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_COUNTER_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_COUNTER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_RV_GET_RAIN_VOLUME_COUNTER_HELPURL);
}
};
Blockly.Blocks["kbnet_rv.reset_rain_volume"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_RV_RESET_RAIN_VOLUME_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(58);
this.setTooltip(Blockly.KBNET_RV_RESET_RAIN_VOLUME_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_RV_RESET_RAIN_VOLUME_HELPURL);
}
};
*/
Blockly.JavaScript['kbnet_rv.get_rain_volume_mm'] = function(block) {
return [
'DEV_IO.KBNET_RV()' + '.get_rain_volume_mm()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet_rv.get_rain_volume_counter'] = function(block) {
return [
'DEV_IO.KBNET_RV()' + '.get_rain_volume_counter()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet_rv.reset_rain_volume'] = function(block) {
return 'DEV_IO.KBNET_RV().reset_rain_volume();\n';
};
Blockly.Msg.KBNET_SHT31_GET_TEMPERATURE_TITLE = "SHT31 Temperature";
Blockly.Msg.KBNET_SHT31_GET_TEMPERATURE_TOOLTIP = "Read KidBright-Net SHT31 Temperature";
Blockly.Msg.KBNET_SHT31_GET_TEMPERATURE_HELPURL = "";
Blockly.Msg.KBNET_SHT31_GET_HUMIDITY_TITLE = "SHT31 Humidity";
Blockly.Msg.KBNET_SHT31_GET_HUMIDITY_TOOLTIP = "Read KidBright-Net SHT31 Humidity";
Blockly.Msg.KBNET_SHT31_GET_HUMIDITY_HELPURL = "";
Blockly.Msg.KBNET_SHT31_IS_ERROR_TITLE = "SHT31 Error";
Blockly.Msg.KBNET_SHT31_IS_ERROR_TOOLTIP = "Check KidBright-Net SHT31 Error (sensor not found)";
Blockly.Msg.KBNET_SHT31_IS_ERROR_HELPURL = "";
Blockly.Blocks["kbnet_sht31.get_temperature"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_SHT31_GET_TEMPERATURE_TITLE);
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.KBNET_SHT31_GET_TEMPERATURE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_SHT31_GET_TEMPERATURE_HELPURL);
}
};
Blockly.Blocks["kbnet_sht31.get_humidity"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_SHT31_GET_HUMIDITY_TITLE);
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.KBNET_SHT31_GET_HUMIDITY_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_SHT31_GET_HUMIDITY_HELPURL);
}
};
Blockly.Blocks["kbnet_sht31.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_SHT31_IS_ERROR_TITLE);
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.KBNET_SHT31_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_SHT31_IS_ERROR_HELPURL);
}
};
Blockly.JavaScript['kbnet_sht31.get_temperature'] = function(block) {
return [
'DEV_I2C1.KBNET_SHT31().get_temperature()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet_sht31.get_humidity'] = function(block) {
return [
'DEV_I2C1.KBNET_SHT31().get_humidity()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet_sht31.is_error'] = function(block) {
return [
'DEV_I2C1.KBNET_SHT31().is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.KBNET_WD_GET_WIND_DIRECTION_DEGREES_TITLE = "Wind Direction";
Blockly.Msg.KBNET_WD_GET_WIND_DIRECTION_DEGREES_TOOLTIP = "Read KidBright-Net Wind Direction (degrees)";
Blockly.Msg.KBNET_WD_GET_WIND_DIRECTION_DEGREES_HELPURL = "";
Blockly.Msg.KBNET_WD_IS_ERROR_TITLE = "Wind Direction Error";
Blockly.Msg.KBNET_WD_IS_ERROR_TOOLTIP = "KidBright-Net Wind Direction Error (sensor not found)";
Blockly.Msg.KBNET_WD_IS_ERROR_HELPURL = "";
Blockly.Blocks["kbnet_wd.get_wind_direction_degrees"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_WD_GET_WIND_DIRECTION_DEGREES_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.KBNET_WD_GET_WIND_DIRECTION_DEGREES_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_WD_GET_WIND_DIRECTION_DEGREES_HELPURL);
}
};
Blockly.Blocks["kbnet_wd.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_WD_IS_ERROR_TITLE);
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.KBNET_WD_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_WD_IS_ERROR_HELPURL);
}
};
Blockly.JavaScript['kbnet_wd.get_wind_direction_degrees'] = function(block) {
return [
'DEV_IO.KBNET_WD()' + '.get_wind_direction_degrees()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet_wd.is_error'] = function(block) {
return [
'DEV_IO.KBNET_WD()' + '.is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TITLE = "Wind Speed";
Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TOOLTIP = "Read KidBright-Net Wind Speed (km/h)";
Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_HELPURL = "";
Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TEXT_TITLE = "Wind Speed Text";
Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TEXT_TOOLTIP = "Read KidBright-Net Wind Speed (km/h) Text";
Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TEXT_HELPURL = "";
Blockly.Blocks["kbnet_ws.get_wind_speed_km_h"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#a15873');
this.setTooltip(Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_HELPURL);
}
};
/*
Blockly.Blocks["kbnet_ws.get_wind_speed_km_h_text"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TEXT_TITLE)
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(1, 0, 6, 1), 'PREC');
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TEXT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET_WS_GET_WIND_SPEED_KM_H_TEXT_HELPURL);
}
};
*/
Blockly.JavaScript['kbnet_ws.get_wind_speed_km_h'] = function(block) {
return [
'DEV_IO.KBNET_WS()' + '.get_wind_speed_km_h()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet_ws.get_wind_speed_km_h_text'] = function(block) {
var prec = parseInt(block.getFieldValue('PREC'));
return [
'DEV_IO.KBNET_WS()' + '.get_wind_speed_km_h_text(' + prec + ')',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.KBNET2_E28T12S_SEND_TITLE = "E28-2G4T12S Send Data";
Blockly.Msg.KBNET2_E28T12S_SEND_TOOLTIP = "E28-2G4T12S Send Data";
Blockly.Msg.KBNET2_E28T12S_SEND_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_APPSKEY = "Application Key";
Blockly.Msg.KBNET2_E28T12S_NWKSKEY = "Network Key ";
Blockly.Msg.KBNET2_E28T12S_APPSKEY_TOOLTIP = "Enter Application Key";
Blockly.Msg.KBNET2_E28T12S_APPSKEY_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_NWKSKEY_TOOLTIP = "Enter Network Key";
Blockly.Msg.KBNET2_E28T12S_NWKSKEY_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_TEMPERATURE = "Temperature";
Blockly.Msg.KBNET2_E28T12S_HUMIDITY = "Humidity";
Blockly.Msg.KBNET2_E28T12S_WIND_SPEED = "Wind Speed";
Blockly.Msg.KBNET2_E28T12S_WIND_DIRECTION = "Wind Direction";
Blockly.Msg.KBNET2_E28T12S_RAIN_VOLUME = "Rain Volume";
Blockly.Msg.KBNET2_E28T12S_PM25 = "PM2.5";
Blockly.Msg.KBNET2_E28T12S_PM10 = "PM10";
Blockly.Msg.KBNET2_E28T12S_TXPOWER = "TX Power ";
Blockly.Msg.KBNET2_E28T12S_DBM = "dBm";
Blockly.Msg.KBNET2_E28T12S_FREQUENCY = "Frequency ";
Blockly.Msg.KBNET2_E28T12S_IS_ERROR_TITLE = "E28-2G4T12S Error";
Blockly.Msg.KBNET2_E28T12S_IS_ERROR_TOOLTIP = "Check E28-2G4T12S Error";
Blockly.Msg.KBNET2_E28T12S_IS_ERROR_HELPURL = "";
const DEFAULT_KBNET2_E28T12S_NWKSKEY = 'B5A6E1B6C840146389C4ABB4835CB5BA';
Blockly.Blocks["kbnet2_e28t12s.send_01"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_SEND_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_TXPOWER)
.appendField(new Blockly.FieldDropdown([
["12", "12"],
["10", "10"],
["7", "7"],
["4", "4"]
]), 'TX_POWER_INDEX')
.appendField(Blockly.Msg.KBNET2_E28T12S_DBM);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_FREQUENCY)
.appendField(new Blockly.FieldDropdown([
["2475", "75"],
["2476", "76"],
["2477", "77"],
["2478", "78"],
["2479", "79"],
["2480", "80"],
["2481", "81"],
["2482", "82"]
]), 'RF_FREQUENCY')
.appendField("MHz");
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_NWKSKEY)
.appendField(new Blockly.FieldTextInput(DEFAULT_KBNET2_E28T12S_NWKSKEY, nwkskey_validator), 'NWKSKEY');
this.appendValueInput("VALUE_1")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEMPERATURE)
.setCheck("Number");
this.appendValueInput("VALUE_2")
.appendField(Blockly.Msg.KBNET2_E28T12S_HUMIDITY)
.setCheck("Number");
this.appendValueInput("VALUE_3")
.appendField(Blockly.Msg.KBNET2_E28T12S_WIND_SPEED)
.setCheck("Number");
this.appendValueInput("VALUE_4")
.appendField(Blockly.Msg.KBNET2_E28T12S_WIND_DIRECTION)
.setCheck("Number");
this.appendValueInput("VALUE_5")
.appendField(Blockly.Msg.KBNET2_E28T12S_RAIN_VOLUME)
.setCheck("Number");
this.appendValueInput("VALUE_6")
.appendField(Blockly.Msg.KBNET2_E28T12S_PM25)
.setCheck("Number");
this.appendValueInput("VALUE_7")
.appendField(Blockly.Msg.KBNET2_E28T12S_PM10)
.setCheck("Number");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_E28T12S_SEND_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_E28T12S_SEND_HELPURL);
this.setFieldValue("82", "RF_FREQUENCY"); // set default frequency 2482 MHz
},
// onchange
onchange: function(ev) {
if (ev.blockId === this.id) {
if (!this.isInFlyout) {
//console.log(this.type);
//console.log(this.workspace.getBlockById(ev.blockId));
// on block change
if (ev.type == Blockly.Events.BLOCK_CHANGE) {
//console.log(ev.name, ev.blockId, ev.type);
// on tx power dropdown changed
if (ev.name == 'TX_POWER') {
//console.log(this.getField('TX_POWER').text_, this.getField('TX_POWER').value_);
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new tx power option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('TX_POWER').value_, 'TX_POWER');
}
}
}
}
else
// on channel change
if (ev.name == 'CHANNEL') {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new tx power option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('CHANNEL').value_, 'CHANNEL');
}
}
}
}
else
// on network key change
if (ev.name == 'NWKSKEY') {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new nwkskey option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('NWKSKEY').text_, 'NWKSKEY');
}
}
}
}
}
// on block create
if (ev.type == Blockly.Events.BLOCK_CREATE) {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy current tx power value on workspace to this new block
this.setFieldValue(this.workspace.blockDB_[blockID].getField('TX_POWER').value_, 'TX_POWER');
// copy new channel option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('CHANNEL').value_, 'CHANNEL');
// copy new nwkskey option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('NWKSKEY').text_, 'NWKSKEY');
break;
}
}
}
}
}
}
}
};
/*Blockly.Blocks["kbnet2_e28t12s.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_IS_ERROR_TITLE);
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_E28T12S_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_E28T12S_IS_ERROR_HELPURL);
}
};*/
var appskey_validator = function(val) {
var re = /[0-9A-Fa-f]{32}/g;
if ((val.length == 32) && (re.test(val))) {
return val.toUpperCase();
}
else {
// default
return DEFAULT_KBNET2_E28T12S_APPSKEY;
}
};
var nwkskey_validator = function(val) {
var re = /[0-9A-Fa-f]{32}/g;
if ((val.length == 32) && (re.test(val))) {
return val.toUpperCase();
}
else {
// default
return DEFAULT_KBNET2_E28T12S_NWKSKEY;
}
};
Blockly.JavaScript['kbnet2_e28t12s.send_01'] = function(block) {
var value_1 = Blockly.JavaScript.valueToCode(block, 'VALUE_1', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_2 = Blockly.JavaScript.valueToCode(block, 'VALUE_2', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_3 = Blockly.JavaScript.valueToCode(block, 'VALUE_3', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_4 = Blockly.JavaScript.valueToCode(block, 'VALUE_4', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_5 = Blockly.JavaScript.valueToCode(block, 'VALUE_5', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_6 = Blockly.JavaScript.valueToCode(block, 'VALUE_6', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_7 = Blockly.JavaScript.valueToCode(block, 'VALUE_7', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var nwkskey = block.getFieldValue('NWKSKEY'); //Blockly.JavaScript.valueToCode(block, 'NWKSKEY', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var tx_power_index = parseInt(block.getFieldValue('TX_POWER_INDEX'));
var rf_frequency = parseInt(block.getFieldValue('RF_FREQUENCY'));
return 'DEV_IO.KBNET2_E28T12S(' + tx_power_index + ', ' + rf_frequency + ', ' + '"' + nwkskey.toLowerCase() + '"' + ').send_01(' + value_1 + ', ' + value_2 + ', ' + value_3 + ', ' + value_4 + ', ' + value_5 + ', ' + value_6 + ', ' + value_7 + ');\n';
};
/*Blockly.JavaScript['kbnet2_e28t12s.is_error'] = function(block) {
return [
'DEV_IO.KBNET2_E28T12S(' + tx_power_index + ', ' + rf_frequency + ', ' + '"' + nwkskey.toLowerCase() + '"' + ').is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};*/
Blockly.Msg.KBNET2_OLED_TITLE = "OLED";
Blockly.Msg.KBNET2_OLED_CLR_TITLE = "Clear Screen";
Blockly.Msg.KBNET2_OLED_CLR_TOOLTIP = "Clear OLED display";
Blockly.Msg.KBNET2_OLED_CLR_HELPURL = "";
Blockly.Msg.KBNET2_OLED_PRINT_TITLE = "Print";
Blockly.Msg.KBNET2_OLED_PRINT_TOOLTIP = "Print on OLED display at (column, row)";
Blockly.Msg.KBNET2_OLED_PRINT_HELPURL = "";
Blockly.Msg.KBNET2_OLED_PRINT_PREC_TITLE = "Print Number";
Blockly.Msg.KBNET2_OLED_PRINT_PREC_TOOLTIP = "Print number on OLED display at (column, row) with specific precision";
Blockly.Msg.KBNET2_OLED_PRINT_PREC_HELPURL = "";
Blockly.Msg.KBNET2_OLED_PRINT_BIG_TITLE = "Print Big";
Blockly.Msg.KBNET2_OLED_PRINT_BIG_TOOLTIP = "Print big font on OLED display at (column, row)";
Blockly.Msg.KBNET2_OLED_PRINT_BIG_HELPURL = "";
Blockly.Msg.KBNET2_OLED_PRINT_BIG_PREC_TITLE = "Print Number Big";
Blockly.Msg.KBNET2_OLED_PRINT_BIG_PREC_TOOLTIP = "Print big font number on OLED display at (column, row) with specific precision";
Blockly.Msg.KBNET2_OLED_PRINT_BIG_PREC_HELPURL = "";
Blockly.Msg.PRECISION_TITLE = "Precision";
Blockly.Msg.KBNET2_OLED_COLUMN_NUMBER_TOOLTIP = "Column value 1 to 21";
Blockly.Msg.KBNET2_OLED_COLUMN_NUMBER_HELPURL = "";
Blockly.Msg.KBNET2_OLED_ROW_NUMBER_TOOLTIP = "Row value 1 to 8";
Blockly.Msg.KBNET2_OLED_ROW_NUMBER_HELPURL = "";
Blockly.Msg.KBNET2_OLED_STRING_NUMBER_TOOLTIP = "String or number";
Blockly.Msg.KBNET2_OLED_STRING_NUMBER_HELPURL = "";
Blockly.Msg.KBNET2_OLED_NUMBER_TOOLTIP = "Number";
Blockly.Msg.KBNET2_OLED_NUMBER_HELPURL = "";
Blockly.Blocks["kbnet2_oled.clear"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_CLR_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_OLED_CLR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_CLR_HELPURL);
}
};
Blockly.Blocks["kbnet2_oled.putstr"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_PRINT_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')');
this.appendValueInput('VALUE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_OLED_PRINT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_PRINT_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'kbnet2_oled.putstr'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["kbnet2_oled.putstr_prec"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_PRINT_PREC_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')')
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(2, 0, 4, 1), 'PREC')
.appendField(' ');
this.appendValueInput('VALUE')
.setCheck('Number');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_OLED_PRINT_PREC_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_PRINT_PREC_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'kbnet2_oled.putstr_prec'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["kbnet2_oled.putstr_big"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_PRINT_BIG_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')');
this.appendValueInput('VALUE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_OLED_PRINT_BIG_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_PRINT_BIG_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'kbnet2_oled.putstr_big'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["kbnet2_oled.putstr_big_prec"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_OLED_PRINT_BIG_PREC_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')')
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(2, 0, 4, 1), 'PREC')
.appendField(' ');
this.appendValueInput('VALUE')
.setCheck('Number');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_OLED_PRINT_BIG_PREC_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_PRINT_BIG_PREC_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'kbnet2_oled.putstr_big_prec'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["kbnet2_oled.column_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 21, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.KBNET2_OLED_COLUMN_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_COLUMN_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["kbnet2_oled.row_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 8, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.KBNET2_OLED_ROW_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_ROW_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["kbnet2_oled.string_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC', 12, 12, '*'))
.appendField(new Blockly.FieldTextInput('Hello World!'), 'VALUE')
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==', 12, 12, '*'));
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(basic_colour);
this.setTooltip(Blockly.Msg.KBNET2_OLED_STRING_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_STRING_NUMBER_TOOLTIP);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["kbnet2_oled.number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, -9999999, 9999999, 0.01), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.KBNET2_OLED_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_OLED_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['kbnet2_oled.clear'] = function(block) {
return 'DEV_I2C1.KBNET2_OLED().clear();\n';
};
Blockly.JavaScript['kbnet2_oled.putstr'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_I2C1.KBNET2_OLED().putstr(' + column + ', ' + row + ', ' + argument0 + ');\n';
};
Blockly.JavaScript['kbnet2_oled.putstr_prec'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var prec = parseInt(block.getFieldValue('PREC'));
if (prec < 0) {
prec = 0;
}
if (prec > 4) {
prec = 4;
}
return 'DEV_I2C1.KBNET2_OLED().putstr(' + column + ', ' + row + ', ' + argument0 + ', ' + prec + ');\n';
};
Blockly.JavaScript['kbnet2_oled.putstr_big'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_I2C1.KBNET2_OLED().putstr_big(' + column + ', ' + row + ', ' + argument0 + ');\n';
};
Blockly.JavaScript['kbnet2_oled.putstr_big_prec'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var prec = parseInt(block.getFieldValue('PREC'));
if (prec < 0) {
prec = 0;
}
if (prec > 4) {
prec = 4;
}
return 'DEV_I2C1.KBNET2_OLED().putstr_big(' + column + ', ' + row + ', ' + argument0 + ', ' + prec + ');\n';
};
Blockly.JavaScript["kbnet2_oled.column_number"] = function(block) {
// Numeric value.
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.JavaScript["kbnet2_oled.row_number"] = function(block) {
return Blockly.JavaScript["kbnet2_oled.column_number"](block);
};
Blockly.JavaScript["kbnet2_oled.string_number"] = function(block) {
return [
'(char *)"' + block.getFieldValue('VALUE') + '"',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript["kbnet2_oled.number"] = function(block) {
return Blockly.JavaScript["kbnet2_oled.column_number"](block);
};
Blockly.Msg.KBNET2_PMS9103M_GET_PM2_5_TITLE = "PMS9103M PM2.5";
Blockly.Msg.KBNET2_PMS9103M_GET_PM2_5_TOOLTIP = "Read PMS9103M PM2.5";
Blockly.Msg.KBNET2_PMS9103M_GET_PM2_5_HELPURL = "";
Blockly.Msg.KBNET2_PMS9103M_GET_PM10_TITLE = "PMS9103M PM10";
Blockly.Msg.KBNET2_PMS9103M_GET_PM10_TOOLTIP = "Read PMS9103M PM10";
Blockly.Msg.KBNET2_PMS9103M_GET_PM10_HELPURL = "";
Blockly.Msg.KBNET2_PMS9103M_IS_ERROR_TITLE = "PMS9103M Check Error";
Blockly.Msg.KBNET2_PMS9103M_IS_ERROR_TOOLTIP = "Check PMS9103M error status";
Blockly.Msg.KBNET2_PMS9103M_IS_ERROR_HELPURL = "";
Blockly.Msg.KBNET2_PMS9103M_POWER_OFF_TITLE = "PMS9103M Power Off";
Blockly.Msg.KBNET2_PMS9103M_POWER_OFF_TOOLTIP = "Turn PMS9103M power off";
Blockly.Msg.KBNET2_PMS9103M_POWER_OFF_HELPURL = "";
Blockly.Blocks["kbnet2_pms9103m.getpm2_5"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_PMS9103M_GET_PM2_5_TITLE);
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_PMS9103M_GET_PM2_5_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_PMS9103M_GET_PM2_5_HELPURL);
}
};
Blockly.Blocks["kbnet2_pms9103m.getpm10"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_PMS9103M_GET_PM10_TITLE);
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_PMS9103M_GET_PM10_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_PMS9103M_GET_PM10_HELPURL);
}
};
Blockly.Blocks["kbnet2_pms9103m.is_error"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_PMS9103M_IS_ERROR_TITLE);
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_PMS9103M_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_PMS9103M_IS_ERROR_HELPURL);
}
};
Blockly.Blocks["kbnet2_pms9103m.power_off"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_PMS9103M_POWER_OFF_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_PMS9103M_POWER_OFF_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_PMS9103M_POWER_OFF_HELPURL);
}
};
Blockly.JavaScript['kbnet2_pms9103m.getpm2_5'] = function (block) {
return [
'DEV_IO.KBNET2_PMS9103M().get_pm2_5()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_pms9103m.getpm10'] = function (block) {
return [
'DEV_IO.KBNET2_PMS9103M().get_pm10()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_pms9103m.is_error'] = function (block) {
return [
'DEV_IO.KBNET2_PMS9103M().is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_pms9103m.power_off'] = function (block) {
return 'DEV_IO.KBNET2_PMS9103M().power_off();\n';
};
Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_MM_TITLE = "Rain Volume 24Hrs";
Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_MM_TOOLTIP = "Read Rain Volume Last 24 Hours (mm.)";
Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_MM_HELPURL = "";
Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_COUNTER_TITLE = "24Hrs Rain Volume Counter";
Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_COUNTER_TOOLTIP = "Read Rain Volume Counter Last 24 Hours";
Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_COUNTER_HELPURL = "";
Blockly.Msg.KBNET2_RV_RESET_RAIN_VOLUME_TITLE = "Reset Rain Volume";
Blockly.Msg.KBNET2_RV_RESET_RAIN_VOLUME_TOOLTIP = "Reset Rain Volume";
Blockly.Msg.KBNET2_RV_RESET_RAIN_VOLUME_HELPURL = "";
Blockly.Blocks["kbnet2_rv.get_rain_volume_mm"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_MM_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_MM_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_MM_HELPURL);
}
};
/*
Blockly.Blocks["kbnet2_rv.get_rain_volume_counter"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_COUNTER_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_COUNTER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_RV_GET_RAIN_VOLUME_COUNTER_HELPURL);
}
};
Blockly.Blocks["kbnet2_rv.reset_rain_volume"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_RV_RESET_RAIN_VOLUME_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.KBNET2_RV_RESET_RAIN_VOLUME_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_RV_RESET_RAIN_VOLUME_HELPURL);
}
};
*/
Blockly.JavaScript['kbnet2_rv.get_rain_volume_mm'] = function(block) {
return [
'DEV_IO.KBNET2_RV()' + '.get_rain_volume_mm()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_rv.get_rain_volume_counter'] = function(block) {
return [
'DEV_IO.KBNET2_RV()' + '.get_rain_volume_counter()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_rv.reset_rain_volume'] = function(block) {
return 'DEV_IO.KBNET2_RV().reset_rain_volume();\n';
};
Blockly.Msg.KBNET2_SHT3X_GET_TEMPERATURE_TITLE = "SHT3X Temperature";
Blockly.Msg.KBNET2_SHT3X_GET_TEMPERATURE_TOOLTIP = "Read SHT3X Temperature";
Blockly.Msg.KBNET2_SHT3X_GET_TEMPERATURE_HELPURL = "";
Blockly.Msg.KBNET2_SHT3X_GET_HUMIDITY_TITLE = "SHT3X Humidity";
Blockly.Msg.KBNET2_SHT3X_GET_HUMIDITY_TOOLTIP = "Read SHT3X Humidity";
Blockly.Msg.KBNET2_SHT3X_GET_HUMIDITY_HELPURL = "";
Blockly.Msg.KBNET2_SHT3X_IS_ERROR_TITLE = "SHT3X Error";
Blockly.Msg.KBNET2_SHT3X_IS_ERROR_TOOLTIP = "Check SHT3X Error (sensor not found)";
Blockly.Msg.KBNET2_SHT3X_IS_ERROR_HELPURL = "";
Blockly.Blocks["kbnet2_sht3x.get_temperature"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_SHT3X_GET_TEMPERATURE_TITLE);
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_SHT3X_GET_TEMPERATURE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_SHT3X_GET_TEMPERATURE_HELPURL);
}
};
Blockly.Blocks["kbnet2_sht3x.get_humidity"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_SHT3X_GET_HUMIDITY_TITLE);
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_SHT3X_GET_HUMIDITY_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_SHT3X_GET_HUMIDITY_HELPURL);
}
};
Blockly.Blocks["kbnet2_sht3x.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_SHT3X_IS_ERROR_TITLE);
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_SHT3X_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_SHT3X_IS_ERROR_HELPURL);
}
};
Blockly.JavaScript['kbnet2_sht3x.get_temperature'] = function(block) {
return [
'DEV_I2C1.KBNET2_SHT3X().get_temperature()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_sht3x.get_humidity'] = function(block) {
return [
'DEV_I2C1.KBNET2_SHT3X().get_humidity()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_sht3x.is_error'] = function(block) {
return [
'DEV_I2C1.KBNET2_SHT3X().is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_AFTER_TITLE = "Deep Sleep Wakeup After";
Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_AFTER_TOOLTIP = "Deep sleep and wake up after time out";
Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_AFTER_HELPURL = "";
Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_SECONDS = "seconds";
Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_EVERY_TITLE = "Deep Sleep Wakeup Every";
Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_EVERY_TOOLTIP = "Deep sleep and wake up every time out";
Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_EVERY_HELPURL = "";
Blockly.Blocks["kbnet2_sleep.deep_wakeup_after"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_AFTER_TITLE);
this.appendDummyInput('WAKEUP_TIMEOUT_DUMMY')
.appendField(new Blockly.FieldNumber(1, 1, 86400, 1), 'WAKEUP_TIMEOUT') // default, min, max, step
.appendField(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_SECONDS);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_AFTER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_AFTER_HELPURL);
}
};
Blockly.Blocks["kbnet2_sleep.deep_wakeup_every"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_EVERY_TITLE);
this.appendDummyInput('WAKEUP_TIMEOUT_DUMMY')
.appendField(new Blockly.FieldNumber(1, 1, 86400, 1), 'WAKEUP_TIMEOUT') // default, min, max, step
.appendField(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_SECONDS);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_EVERY_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_SLEEP_DEEP_WAKEUP_EVERY_HELPURL);
}
};
Blockly.JavaScript['kbnet2_sleep.deep_wakeup_after'] = function(block) {
var wakeup_timeout_ms = 1000 * parseInt(block.getFieldValue('WAKEUP_TIMEOUT'));
return 'DEV_IO.KBNET2_SLEEP().deep_wakeup_after(' + wakeup_timeout_ms + ');\n';
};
Blockly.JavaScript['kbnet2_sleep.deep_wakeup_every'] = function(block) {
var wakeup_timeout_ms = 1000 * parseInt(block.getFieldValue('WAKEUP_TIMEOUT'));
return 'DEV_IO.KBNET2_SLEEP().deep_wakeup_every(' + wakeup_timeout_ms + ');\n';
};
Blockly.Msg.KBNET2_WD_GET_WIND_DIRECTION_DEGREES_TITLE = "Wind Direction";
Blockly.Msg.KBNET2_WD_GET_WIND_DIRECTION_DEGREES_TOOLTIP = "Read KidBright-Net-2 Wind Direction (degrees)";
Blockly.Msg.KBNET2_WD_GET_WIND_DIRECTION_DEGREES_HELPURL = "";
Blockly.Msg.KBNET2_WD_IS_ERROR_TITLE = "Wind Direction Error";
Blockly.Msg.KBNET2_WD_IS_ERROR_TOOLTIP = "KidBright-Net-2 Wind Direction Error (sensor not found)";
Blockly.Msg.KBNET2_WD_IS_ERROR_HELPURL = "";
Blockly.Blocks["kbnet2_wd.get_wind_direction_degrees"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_WD_GET_WIND_DIRECTION_DEGREES_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_WD_GET_WIND_DIRECTION_DEGREES_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_WD_GET_WIND_DIRECTION_DEGREES_HELPURL);
}
};
Blockly.Blocks["kbnet2_wd.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_WD_IS_ERROR_TITLE);
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_WD_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_WD_IS_ERROR_HELPURL);
}
};
Blockly.JavaScript['kbnet2_wd.get_wind_direction_degrees'] = function(block) {
return [
'DEV_IO.KBNET2_WD()' + '.get_wind_direction_degrees()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_wd.is_error'] = function(block) {
return [
'DEV_IO.KBNET2_WD()' + '.is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TITLE = "Wind Speed";
Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TOOLTIP = "Read Wind Speed (km/h)";
Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_HELPURL = "";
Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TEXT_TITLE = "Wind Speed Text";
Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TEXT_TOOLTIP = "Read Wind Speed (km/h) Text";
Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TEXT_HELPURL = "";
Blockly.Blocks["kbnet2_ws.get_wind_speed_km_h"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TITLE);
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_HELPURL);
}
};
/*
Blockly.Blocks["kbnet2_ws.get_wind_speed_km_h_text"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TEXT_TITLE)
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(1, 0, 6, 1), 'PREC');
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(230);
this.setTooltip(Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TEXT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_WS_GET_WIND_SPEED_KM_H_TEXT_HELPURL);
}
};
*/
Blockly.JavaScript['kbnet2_ws.get_wind_speed_km_h'] = function(block) {
return [
'DEV_IO.KBNET2_WS()' + '.get_wind_speed_km_h()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['kbnet2_ws.get_wind_speed_km_h_text'] = function(block) {
var prec = parseInt(block.getFieldValue('PREC'));
return [
'DEV_IO.KBNET2_WS()' + '.get_wind_speed_km_h_text(' + prec + ')',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.WS2812B = "WS2812B";
Blockly.Msg.WS2812B_POSITION = "Position";
Blockly.Msg.WS2812B_RED = "Red";
Blockly.Msg.WS2812B_GREEN = "Green";
Blockly.Msg.WS2812B_BLUE = "Blue";
Blockly.Msg.WS2812B_COLOR = "Color";
Blockly.Msg.WS2812B_GET_PIXEL_NUM_TITLE = "Get Pixel Number";
Blockly.Msg.WS2812B_GET_PIXEL_NUM_TOOLTIP = "Get WS2812B pixel number used in string";
Blockly.Msg.WS2812B_GET_PIXEL_NUM_HELPURL = "";
Blockly.Msg.WS2812B_SET_PIXEL_NUM_TITLE = "Set Pixel Number";
Blockly.Msg.WS2812B_SET_PIXEL_NUM_TOOLTIP = "Set WS2812B pixel number used in string";
Blockly.Msg.WS2812B_SET_PIXEL_NUM_HELPURL = "";
Blockly.Msg.WS2812B_PIXEL_RGB_TOOLTIP = "Show WS2812B pixel red,green,blue value 0 to 255 at selected position value 1 to number of pixel";
Blockly.Msg.WS2812B_PIXEL_RGB_HELPURL = "";
Blockly.Msg.WS2812B_PIXEL_COLOR_PICKER_TOOLTIP = "Show WS2812B pixel from color picker at selected position value 1 to number of pixel";
Blockly.Msg.WS2812B_PIXEL_COLOR_PICKER_HELPURL = "";
Blockly.Msg.WS2812B_POSITION_NUMBER_TOOLTIP = "Position value 1 to number of pixel";
Blockly.Msg.WS2812B_POSITION_NUMBER_HELPURL = "";
Blockly.Msg.WS2812B_COLOR_NUMBER_TOOLTIP = "Color value 0 to 255";
Blockly.Msg.WS2812B_COLOR_NUMBER_HELPURL = "";
Blockly.Blocks["ws2812b_rmt.set_pixel_num"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'OUTPUT')
.appendField(Blockly.Msg.WS2812B_SET_PIXEL_NUM_TITLE)
.appendField(new Blockly.FieldNumber(64, 1, 64, 1), 'VALUE'); // default, min, max, step
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.WS2812B_SET_PIXEL_NUM_TOOLTIP);
this.setHelpUrl(Blockly.Msg.WS2812B_SET_PIXEL_NUM_HELPURL);
}
};
Blockly.Blocks["ws2812b_rmt.get_pixel_num"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'OUTPUT')
.appendField(Blockly.Msg.WS2812B_GET_PIXEL_NUM_TITLE);
this.setOutput(true, 'Number');
this.setColour(160);
this.setTooltip(Blockly.Msg.WS2812B_GET_PIXEL_NUM_TOOLTIP);
this.setHelpUrl(Blockly.Msg.WS2812B_GET_PIXEL_NUM_HELPURL);
}
};
Blockly.Blocks["ws2812b_rmt.pixel_rgb"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'OUTPUT');
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B_POSITION);
this.appendValueInput("POS")
.setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B_RED);
this.appendValueInput("RED")
.setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B_GREEN);
this.appendValueInput("GREEN")
.setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B_BLUE);
this.appendValueInput("BLUE")
.setCheck("Number");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.WS2812B_PIXEL_RGB_TOOLTIP);
this.setHelpUrl(Blockly.Msg.WS2812B_PIXEL_RGB_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'ws2812b_rmt.pixel_rgb'
}).append('\
\
\
\
\
\
\
255\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["ws2812b_rmt.pixel_color_picker"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'OUTPUT');
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B_POSITION);
this.appendValueInput("POS")
.setCheck("Number");
this.appendDummyInput()
.appendField(Blockly.Msg.WS2812B_COLOR);
this.appendDummyInput()
.appendField(new Blockly.FieldColour("#ff0000"), "COLOR");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.WS2812B_PIXEL_COLOR_PICKER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.WS2812B_PIXEL_COLOR_PICKER_HELPURL);
} ,
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'ws2812b_rmt.pixel_color_picker'
}).append('\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["ws2812b_rmt.position_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 64, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.WS2812B_POSITION_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.WS2812B_POSITION_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["ws2812b_rmt.color_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, 0, 255, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.WS2812B_COLOR_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.WS2812B_COLOR_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['ws2812b_rmt.get_pixel_num'] = function(block) {
return [
'DEV_IO.WS2812B_RMT(' + block.getFieldValue('OUTPUT') + ').get_pixel_num()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['ws2812b_rmt.set_pixel_num'] = function(block) {
return 'DEV_IO.WS2812B_RMT(' + block.getFieldValue('OUTPUT') + ')' + '.set_pixel_num(' + block.getFieldValue('VALUE') + ');\n';
};
Blockly.JavaScript['ws2812b_rmt.pixel_rgb'] = function(block) {
var pos = Blockly.JavaScript.valueToCode(block, 'POS', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var red = Blockly.JavaScript.valueToCode(block, 'RED', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var green = Blockly.JavaScript.valueToCode(block, 'GREEN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var blue = Blockly.JavaScript.valueToCode(block, 'BLUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_IO.WS2812B_RMT(' + block.getFieldValue('OUTPUT') + ')' + '.pixel_rgb(' + pos + ', ' + red + ', ' + green + ', ' + blue + ');\n';
};
Blockly.JavaScript['ws2812b_rmt.pixel_color_picker'] = function(block) {
var pos = Blockly.JavaScript.valueToCode(block, 'POS', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var color = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(block.getFieldValue('COLOR'));
if (color) {
var red = parseInt(color[1], 16);
var green = parseInt(color[2], 16);
var blue = parseInt(color[3], 16);
return 'DEV_IO.WS2812B_RMT(' + block.getFieldValue('OUTPUT') + ')' + '.pixel_rgb(' + pos + ', ' + red + ', ' + green + ', ' + blue + ');\n';
}
return '\n';
};
Blockly.JavaScript['ws2812b_rmt.position_number'] = function(block) {
// Numeric value.
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.JavaScript['ws2812b_rmt.color_number'] = function(block) {
return Blockly.JavaScript['ws2812b_rmt.position_number'](block);
};
Blockly.Msg.OLED_128X64_I2C_TITLE = "I2C OLED 128x64";
Blockly.Msg.OLED_128X64_I2C_CLR_TITLE = "Clear Screen";
Blockly.Msg.OLED_128X64_I2C_CLR_TOOLTIP = "Clear I2C OLED 128x64 display";
Blockly.Msg.OLED_128X64_I2C_CLR_HELPURL = "";
Blockly.Msg.OLED_128X64_I2C_PRINT_TITLE = "Print";
Blockly.Msg.OLED_128X64_I2C_PRINT_TOOLTIP = "Print on I2C OLED 128x64 display at (column, row)";
Blockly.Msg.OLED_128X64_I2C_PRINT_HELPURL = "";
Blockly.Msg.OLED_128X64_I2C_PRINT_PREC_TITLE = "Print Number";
Blockly.Msg.OLED_128X64_I2C_PRINT_PREC_TOOLTIP = "Print number on I2C OLED 128x64 display at (column, row) with specific precision";
Blockly.Msg.OLED_128X64_I2C_PRINT_PREC_HELPURL = "";
Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_TITLE = "Print Big";
Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_TOOLTIP = "Print big font on I2C OLED 128x64 display at (column, row)";
Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_HELPURL = "";
Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_PREC_TITLE = "Print Number Big";
Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_PREC_TOOLTIP = "Print big font number on I2C OLED 128x64 display at (column, row) with specific precision";
Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_PREC_HELPURL = "";
Blockly.Msg.PRECISION_TITLE = "Precision";
Blockly.Msg.OLED_128X64_I2C_COLUMN_NUMBER_TOOLTIP = "Column value 1 to 21";
Blockly.Msg.OLED_128X64_I2C_COLUMN_NUMBER_HELPURL = "";
Blockly.Msg.OLED_128X64_I2C_ROW_NUMBER_TOOLTIP = "Row value 1 to 8";
Blockly.Msg.OLED_128X64_I2C_ROW_NUMBER_HELPURL = "";
Blockly.Msg.OLED_128X64_I2C_STRING_NUMBER_TOOLTIP = "String or number";
Blockly.Msg.OLED_128X64_I2C_STRING_NUMBER_HELPURL = "";
Blockly.Msg.OLED_128X64_I2C_NUMBER_TOOLTIP = "Number";
Blockly.Msg.OLED_128X64_I2C_NUMBER_HELPURL = "";
function oled128x64_init(_this) {
// oled chipset
_this.appendDummyInput()
.appendField(new Blockly.FieldDropdown([
["SSD1306", "ocs_ssd1306"],
["SH1106", "ocs_sh1106"]
]), 'CHIPSET');
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
_this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess
_this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x3C", "60"],
["0x3D", "61"]
]), 'ADDRESS');
}
Blockly.Blocks["oled_128x64_i2c.clear"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_TITLE);
// init
oled128x64_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_CLR_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_CLR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_CLR_HELPURL);
}
};
Blockly.Blocks["oled_128x64_i2c.putstr"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_TITLE);
// init
oled128x64_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_PRINT_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')');
this.appendValueInput('VALUE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_PRINT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_PRINT_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'oled_128x64_i2c.putstr'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["oled_128x64_i2c.putstr_prec"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_TITLE);
// init
oled128x64_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_PRINT_PREC_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')')
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(2, 0, 4, 1), 'PREC')
.appendField(' ');
this.appendValueInput('VALUE')
.setCheck('Number');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_PRINT_PREC_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_PRINT_PREC_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'oled_128x64_i2c.putstr_prec'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["oled_128x64_i2c.putstr_big"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_TITLE);
// init
oled128x64_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')');
this.appendValueInput('VALUE');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'oled_128x64_i2c.putstr_big'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
Blockly.Blocks["oled_128x64_i2c.putstr_big_prec"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_TITLE);
// init
oled128x64_init(this);
this.appendDummyInput()
.appendField(Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_PREC_TITLE + ' (');
this.appendValueInput("COLUMN")
.setCheck("Number");
this.appendDummyInput()
.appendField(',');
this.appendValueInput("ROW")
.setCheck("Number");
this.appendDummyInput()
.appendField(')')
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(2, 0, 4, 1), 'PREC')
.appendField(' ');
this.appendValueInput('VALUE')
.setCheck('Number');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(160);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_PREC_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_PRINT_BIG_PREC_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return $(document.createElement('block')).attr({
type: 'oled_128x64_i2c.putstr_big_prec'
}).append('\
\
\
\
\
\
\
\
\
\
\
\
'
);
}
};
// hidden block (no generator defined), temporary used for shadow block
Blockly.Blocks["oled_128x64_i2c.column_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 21, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_COLUMN_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_COLUMN_NUMBER_HELPURL);
},
// custom xmlToolboxcolumn
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["oled_128x64_i2c.row_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(1, 1, 8, 1), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_ROW_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_ROW_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["oled_128x64_i2c.string_number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC', 12, 12, '*'))
.appendField(new Blockly.FieldTextInput('Hello World!'), 'VALUE')
.appendField(new Blockly.FieldImage('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==', 12, 12, '*'));
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(basic_colour);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_STRING_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_STRING_NUMBER_TOOLTIP);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.Blocks["oled_128x64_i2c.number"] = {
init: function() {
this.appendDummyInput()
.appendField(new Blockly.FieldNumber(0, -9999999, 9999999, 0.01), 'VALUE');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(math_colour);
this.setTooltip(Blockly.Msg.OLED_128X64_I2C_NUMBER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.OLED_128X64_I2C_NUMBER_HELPURL);
},
// custom xmlToolbox
xmlToolbox: function() {
return null; // hidden block
}
};
Blockly.JavaScript['oled_128x64_i2c.clear'] = function(block) {
return 'DEV_I2C1.OLED_128X64_I2C(' + block.getFieldValue('CHIPSET') + ', ' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').clear();\n';
};
Blockly.JavaScript['oled_128x64_i2c.putstr'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_I2C1.OLED_128X64_I2C(' + block.getFieldValue('CHIPSET') + ', ' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').putstr(' + column + ', ' + row + ', ' + argument0 + ');\n';
};
Blockly.JavaScript['oled_128x64_i2c.putstr_prec'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var prec = parseInt(block.getFieldValue('PREC'));
if (prec < 0) {
prec = 0;
}
if (prec > 4) {
prec = 4;
}
return 'DEV_I2C1.OLED_128X64_I2C(' + block.getFieldValue('CHIPSET') + ', ' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').putstr(' + column + ', ' + row + ', ' + argument0 + ', ' + prec + ');\n';
};
Blockly.JavaScript['oled_128x64_i2c.putstr_big'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
return 'DEV_I2C1.OLED_128X64_I2C(' + block.getFieldValue('CHIPSET') + ', ' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').putstr_big(' + column + ', ' + row + ', ' + argument0 + ');\n';
};
Blockly.JavaScript['oled_128x64_i2c.putstr_big_prec'] = function(block) {
var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var column = Blockly.JavaScript.valueToCode(block, 'COLUMN', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var row = Blockly.JavaScript.valueToCode(block, 'ROW', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var prec = parseInt(block.getFieldValue('PREC'));
if (prec < 0) {
prec = 0;
}
if (prec > 4) {
prec = 4;
}
return 'DEV_I2C1.OLED_128X64_I2C(' + block.getFieldValue('CHIPSET') + ', ' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').putstr_big(' + column + ', ' + row + ', ' + argument0 + ', ' + prec + ');\n';
};
Blockly.JavaScript["oled_128x64_i2c.column_number"] = function(block) {
// Numeric value.
var code = parseFloat(block.getFieldValue('VALUE'));
var order = code >= 0 ? Blockly.JavaScript.ORDER_ATOMIC : Blockly.JavaScript.ORDER_UNARY_NEGATION;
return [code, order];
};
Blockly.JavaScript["oled_128x64_i2c.row_number"] = function(block) {
return Blockly.JavaScript["oled_128x64_i2c.column_number"](block);
};
Blockly.JavaScript["oled_128x64_i2c.string_number"] = function(block) {
return [
'(char *)"' + block.getFieldValue('VALUE') + '"',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript["oled_128x64_i2c.number"] = function(block) {
return Blockly.JavaScript["oled_128x64_i2c.column_number"](block);
};
Blockly.Msg.DS18B20_I2C_GET_TEMPERATURE_TITLE = "DS18B20 I2C Temperature";
Blockly.Msg.DS18B20_I2C_GET_TEMPERATURE_TOOLTIP = "Read DS18B20 I2C Temperature";
Blockly.Msg.DS18B20_I2C_GET_TEMPERATURE_HELPURL = "";
Blockly.Blocks["ds18b20_i2c.get_temperature"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.DS18B20_I2C_GET_TEMPERATURE_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess (ds2482 i2c to 1-wire)
this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x18", "24"],
["0x19", "25"],
["0x1A", "26"],
["0x1B", "27"]
]), 'ADDRESS');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.DS18B20_I2C_GET_TEMPERATURE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.DS18B20_I2C_GET_TEMPERATURE_HELPURL);
}
};
Blockly.JavaScript['ds18b20_i2c.get_temperature'] = function(block) {
return [
'DEV_I2C1.DS18B20_I2C(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').get_temperature()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.BYLNK_BEGIN_MESSAGE = "swcm_Service begin";
Blockly.Msg.BYLNK_BEGIN_TOOLTIP = "Setup Bylnk with token";
Blockly.Msg.BYLNK_WRITE_1_MESSAGE = "Service on Virtual Pin";
Blockly.Msg.BYLNK_WRITE_2_MESSAGE = "data received";
Blockly.Msg.BYLNK_WRITE_TOOLTIP = "";
Blockly.Msg.BYLNK_PARAM_INT_MESSAGE = "Service get received integer data";
Blockly.Msg.BYLNK_PARAM_INT_TOOLTIP = "use this block inside on data received to get the params";
Blockly.Msg.BYLNK_PARAM_DOUBLE_MESSAGE = "Service get received decimal data";
Blockly.Msg.BYLNK_PARAM_DOUBLE_TOOLTIP = "use this block inside on data received to get the params";
Blockly.Msg.BYLNK_PARAM_STR_MESSAGE = "Service get received string data";
Blockly.Msg.BYLNK_PARAM_STR_TOOLTIP = "use this block inside on data received to get the params";
Blockly.Msg.BYLNK_PUSH_DATA_MESSAGE = "Service write Virtual Pin";
Blockly.Msg.BYLNK_PUSH_DATA_TOOLTIP = "write data to virtual pin (please delay >100 ms between call)";
Blockly.Msg.BYLNK_READ_1_MESSAGE = "Service on Virtual Pin";
Blockly.Msg.BYLNK_READ_2_MESSAGE = "data request";
Blockly.Msg.BYLNK_READ_TOOLTIP = "Call when client request data on virtual pin (aka BLYNK_READ)";
Blockly.Blocks['blynk_begin'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.BYLNK_BEGIN_MESSAGE + " token:")
.appendField(new Blockly.FieldTextInput(""), "auth");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_BEGIN_TOOLTIP);
this.setHelpUrl("");
}
};
Blockly.Blocks['blynk_begin_wifi_local_server'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.BYLNK_BEGIN_MESSAGE + " token:")
.appendField(new Blockly.FieldTextInput(""), "auth")
.appendField("host:")
.appendField(new Blockly.FieldTextInput(""), "host")
.appendField("port:")
.appendField(new Blockly.FieldNumber(8442, 1, 99999), "port");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_BEGIN_TOOLTIP);
this.setHelpUrl("");
}
};
Blockly.Blocks['blynk_write'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.BYLNK_WRITE_1_MESSAGE)
.appendField(new Blockly.FieldDropdown([
["V0", "0"], ["V1", "1"], ["V2", "2"], ["V3", "3"], ["V4", "4"], ["V5", "5"], ["V6", "6"], ["V7", "7"], ["V8", "8"], ["V9", "9"], ["V10", "10"],
["V11", "11"], ["V12", "12"], ["V13", "13"], ["V14", "14"], ["V15", "15"], ["V16", "16"], ["V17", "17"], ["V18", "18"], ["V19", "19"], ["V20", "20"],
["V21", "21"], ["V22", "22"], ["V23", "23"], ["V24", "24"], ["V25", "25"], ["V26", "26"], ["V27", "27"], ["V28", "28"], ["V29", "29"], ["V30", "30"],
["V31", "31"], ["V32", "32"], ["V33", "33"], ["V34", "34"], ["V35", "35"], ["V36", "36"], ["V37", "37"], ["V38", "38"], ["V39", "39"], ["V40", "40"],
["V41", "41"], ["V42", "42"], ["V43", "43"], ["V44", "44"], ["V45", "45"], ["V46", "46"], ["V47", "47"], ["V48", "48"], ["V49", "49"], ["V50", "50"]
]), "vpin")
.appendField(Blockly.Msg.BYLNK_WRITE_2_MESSAGE);
this.appendStatementInput("statement")
.setCheck(null);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_WRITE_TOOLTIP);
this.setHelpUrl("");
}
};
Blockly.Blocks['blynk_param_int'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.BYLNK_PARAM_INT_MESSAGE);
this.setOutput(true, ["int", "Number"]);
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_PARAM_INT_TOOLTIP);
this.setHelpUrl("");
}
};
Blockly.Blocks['blynk_param_double'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.BYLNK_PARAM_DOUBLE_MESSAGE);
this.setOutput(true, ["double", "Number"]);
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_PARAM_DOUBLE_TOOLTIP);
this.setHelpUrl("");
}
};
Blockly.Blocks['blynk_param_str'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.BYLNK_PARAM_STR_MESSAGE);
this.setOutput(true, "String");
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_PARAM_STR_TOOLTIP);
this.setHelpUrl("");
}
};
Blockly.Blocks['blynk_push_data'] = {
init: function () {
this.appendValueInput("data")
.setCheck(["Boolean", "String", "Number"])
.appendField(Blockly.Msg.BYLNK_PUSH_DATA_MESSAGE)
.appendField(new Blockly.FieldDropdown([
["V0", "0"], ["V1", "1"], ["V2", "2"], ["V3", "3"], ["V4", "4"], ["V5", "5"], ["V6", "6"], ["V7", "7"], ["V8", "8"], ["V9", "9"], ["V10", "10"],
["V11", "11"], ["V12", "12"], ["V13", "13"], ["V14", "14"], ["V15", "15"], ["V16", "16"], ["V17", "17"], ["V18", "18"], ["V19", "19"], ["V20", "20"],
["V21", "21"], ["V22", "22"], ["V23", "23"], ["V24", "24"], ["V25", "25"], ["V26", "26"], ["V27", "27"], ["V28", "28"], ["V29", "29"], ["V30", "30"],
["V31", "31"], ["V32", "32"], ["V33", "33"], ["V34", "34"], ["V35", "35"], ["V36", "36"], ["V37", "37"], ["V38", "38"], ["V39", "39"], ["V40", "40"],
["V41", "41"], ["V42", "42"], ["V43", "43"], ["V44", "44"], ["V45", "45"], ["V46", "46"], ["V47", "47"], ["V48", "48"], ["V49", "49"], ["V50", "50"]
]), "vpin");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_PUSH_DATA_TOOLTIP);
this.setHelpUrl("");
}
};
Blockly.Blocks['blynk_read'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.BYLNK_READ_1_MESSAGE)
.appendField(new Blockly.FieldDropdown([
["V0", "0"], ["V1", "1"], ["V2", "2"], ["V3", "3"], ["V4", "4"], ["V5", "5"], ["V6", "6"], ["V7", "7"], ["V8", "8"], ["V9", "9"], ["V10", "10"],
["V11", "11"], ["V12", "12"], ["V13", "13"], ["V14", "14"], ["V15", "15"], ["V16", "16"], ["V17", "17"], ["V18", "18"], ["V19", "19"], ["V20", "20"],
["V21", "21"], ["V22", "22"], ["V23", "23"], ["V24", "24"], ["V25", "25"], ["V26", "26"], ["V27", "27"], ["V28", "28"], ["V29", "29"], ["V30", "30"],
["V31", "31"], ["V32", "32"], ["V33", "33"], ["V34", "34"], ["V35", "35"], ["V36", "36"], ["V37", "37"], ["V38", "38"], ["V39", "39"], ["V40", "40"],
["V41", "41"], ["V42", "42"], ["V43", "43"], ["V44", "44"], ["V45", "45"], ["V46", "46"], ["V47", "47"], ["V48", "48"], ["V49", "49"], ["V50", "50"]
]), "vpin")
.appendField(Blockly.Msg.BYLNK_READ_2_MESSAGE);
this.appendStatementInput("statement")
.setCheck(null);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(165);
this.setTooltip(Blockly.Msg.BYLNK_READ_TOOLTIP);
this.setHelpUrl("");
}
};
const BLYNK_BEGIN = "DEV_IO.Blynk()";
Blockly.JavaScript['blynk_begin'] = function (block) {
var text_auth = block.getFieldValue('auth');
var code = `${BLYNK_BEGIN}.begin("${text_auth}");\n`;
return code;
};
Blockly.JavaScript['blynk_begin_wifi_local_server'] = function (block) {
var text_auth = block.getFieldValue('auth');
var text_host = block.getFieldValue('host');
var number_port = block.getFieldValue('port');
var code = `${BLYNK_BEGIN}.begin("${text_auth}", "${text_host}", ${number_port});\n`;
return code;
};
Blockly.JavaScript['blynk_write'] = function (block) {
var dropdown_vpin = block.getFieldValue('vpin');
var statements_statement = Blockly.JavaScript.statementToCode(block, 'statement');
var code = `${BLYNK_BEGIN}.setVW(${dropdown_vpin}, []() { ${statements_statement} });\n`;
return code;
};
Blockly.JavaScript['blynk_param_int'] = function (block) {
var code = `${BLYNK_BEGIN}.asInt()`;
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript['blynk_param_double'] = function (block) {
var code = `${BLYNK_BEGIN}.asDouble()`;
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript['blynk_param_str'] = function (block) {
var code = `${BLYNK_BEGIN}.asStr()`;
return [code, Blockly.JavaScript.ORDER_NONE];
};
Blockly.JavaScript['blynk_push_data'] = function (block) {
var dropdown_vpin = block.getFieldValue('vpin');
var value_name = Blockly.JavaScript.valueToCode(block, 'data', Blockly.JavaScript.ORDER_ATOMIC);
var code = `${BLYNK_BEGIN}.writeVP(${dropdown_vpin}, ${value_name});\n`;
return code;
};
Blockly.JavaScript['blynk_read'] = function (block) {
var dropdown_vpin = block.getFieldValue('vpin');
var statements_statement = Blockly.JavaScript.statementToCode(block, 'statement');
var code = `${BLYNK_BEGIN}.setVR(${dropdown_vpin}, []() { ${statements_statement} });\n`;
return code;
};Blockly.Msg.KBNET2_E28T12S_SNDSTR_SEND_TITLE = "E28-2G4T12S Send Data";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_SEND_TOOLTIP = "E28-2G4T12S Send Data";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_SEND_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_MSG = "Message ";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_MSG_TOOLTIP = "Enter Message";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_MSG_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_TXPOWER = "TX Power ";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_DBM = "dBm";
Blockly.Msg.KBNET2_E28T12S_SNDSTR_FREQUENCY = "Frequency ";
const DEFAULT_KBNET2_E28T12S_SNDSTR_MSG = 'UUUUUUUUUUUUUUUU';
Blockly.Blocks["kbnet2_e28t12s_sndstr.send_01"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_SNDSTR_SEND_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_SNDSTR_TXPOWER)
.appendField(new Blockly.FieldDropdown([
["12", "12"],
["10", "10"],
["7", "7"],
["4", "4"]
]), 'TX_POWER_INDEX')
.appendField(Blockly.Msg.KBNET2_E28T12S_SNDSTR_DBM);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_SNDSTR_FREQUENCY)
.appendField(new Blockly.FieldDropdown([
["2475", "75"],
["2476", "76"],
["2477", "77"],
["2478", "78"],
["2479", "79"],
["2480", "80"],
["2481", "81"],
["2482", "82"]
]), 'RF_FREQUENCY')
.appendField("MHz");
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_SNDSTR_MSG)
.appendField(new Blockly.FieldTextInput(DEFAULT_KBNET2_E28T12S_SNDSTR_MSG), 'MSG');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour('#ff00ff');
this.setTooltip(Blockly.Msg.KBNET2_E28T12S_SNDSTR_SEND_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_E28T12S_SNDSTR_SEND_HELPURL);
this.setFieldValue("82", "RF_FREQUENCY"); // set default frequency 2482 MHz
},
// onchange
onchange: function(ev) {
if (ev.blockId === this.id) {
if (!this.isInFlyout) {
//console.log(this.type);
//console.log(this.workspace.getBlockById(ev.blockId));
// on block change
if (ev.type == Blockly.Events.BLOCK_CHANGE) {
//console.log(ev.name, ev.blockId, ev.type);
// on tx power dropdown changed
if (ev.name == 'TX_POWER') {
//console.log(this.getField('TX_POWER').text_, this.getField('TX_POWER').value_);
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new tx power option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('TX_POWER').value_, 'TX_POWER');
}
}
}
}
else
// on channel change
if (ev.name == 'CHANNEL') {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new tx power option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('CHANNEL').value_, 'CHANNEL');
}
}
}
}
}
// on block create
if (ev.type == Blockly.Events.BLOCK_CREATE) {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy current tx power value on workspace to this new block
this.setFieldValue(this.workspace.blockDB_[blockID].getField('TX_POWER').value_, 'TX_POWER');
// copy new channel option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('CHANNEL').value_, 'CHANNEL');
// copy new nwkskey option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('MSG').text_, 'MSG');
break;
}
}
}
}
}
}
}
};
Blockly.JavaScript['kbnet2_e28t12s_sndstr.send_01'] = function(block) {
var msg = block.getFieldValue('MSG');
var tx_power_index = parseInt(block.getFieldValue('TX_POWER_INDEX'));
var rf_frequency = parseInt(block.getFieldValue('RF_FREQUENCY'));
return 'DEV_IO.KBNET2_E28T12S_SNDSTR(' + tx_power_index + ', ' + rf_frequency + ').send_01("' + msg + '");\n';
};
Blockly.Msg.KBNET2_E28T12S_TEST_SEND_TITLE = "E28-2G4T12S Send Data";
Blockly.Msg.KBNET2_E28T12S_TEST_SEND_TOOLTIP = "E28-2G4T12S Send Data";
Blockly.Msg.KBNET2_E28T12S_TEST_SEND_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_TEST_APPSKEY = "Application Key";
Blockly.Msg.KBNET2_E28T12S_TEST_NWKSKEY = "Network Key ";
Blockly.Msg.KBNET2_E28T12S_TEST_APPSKEY_TOOLTIP = "Enter Application Key";
Blockly.Msg.KBNET2_E28T12S_TEST_APPSKEY_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_TEST_NWKSKEY_TOOLTIP = "Enter Network Key";
Blockly.Msg.KBNET2_E28T12S_TEST_NWKSKEY_HELPURL = "";
Blockly.Msg.KBNET2_E28T12S_TEST_TEMPERATURE = "Temperature";
Blockly.Msg.KBNET2_E28T12S_TEST_HUMIDITY = "Humidity";
Blockly.Msg.KBNET2_E28T12S_TEST_WIND_SPEED = "Wind Speed";
Blockly.Msg.KBNET2_E28T12S_TEST_WIND_DIRECTION = "Wind Direction";
Blockly.Msg.KBNET2_E28T12S_TEST_RAIN_VOLUME = "Rain Volume";
Blockly.Msg.KBNET2_E28T12S_TEST_PM25 = "PM2.5";
Blockly.Msg.KBNET2_E28T12S_TEST_PM10 = "PM10";
Blockly.Msg.KBNET2_E28T12S_TEST_TXPOWER = "TX Power ";
Blockly.Msg.KBNET2_E28T12S_TEST_DBM = "dBm";
Blockly.Msg.KBNET2_E28T12S_TEST_FREQUENCY = "Frequency ";
Blockly.Msg.KBNET2_E28T12S_TEST_IS_ERROR_TITLE = "E28-2G4T12S Error";
Blockly.Msg.KBNET2_E28T12S_TEST_IS_ERROR_TOOLTIP = "Check E28-2G4T12S Error";
Blockly.Msg.KBNET2_E28T12S_TEST_IS_ERROR_HELPURL = "";
const DEFAULT_KBNET2_E28T12S_TEST_NWKSKEY = 'B5A6E1B6C840146389C4ABB4835CB5BA';
Blockly.Blocks["kbnet2_e28t12s_test.send_01"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_SEND_TITLE);
/*this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_TXPOWER)
.appendField(new Blockly.FieldDropdown([
["12", "12"],
["10", "10"],
["7", "7"],
["4", "4"]
]), 'TX_POWER_INDEX')
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_DBM);
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_FREQUENCY)
.appendField(new Blockly.FieldDropdown([
["2477", "77"],
["2478", "78"],
["2479", "79"],
["2480", "80"],
["2481", "81"],
["2482", "82"],
["2483", "83"],
["2484", "84"],
["2485", "85"],
["2486", "86"],
["2487", "87"],
["2488", "88"],
["2489", "89"],
["2490", "90"],
["2491", "91"],
["2492", "92"],
["2493", "93"],
["2494", "94"],
["2495", "95"],
["2496", "96"]
]), 'RF_FREQUENCY')
.appendField("MHz");
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_NWKSKEY)
.appendField(new Blockly.FieldTextInput(DEFAULT_KBNET2_E28T12S_TEST_NWKSKEY, nwkskey_validator), 'NWKSKEY');*/
this.appendValueInput("VALUE_1")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_TEMPERATURE)
.setCheck("Number");
this.appendValueInput("VALUE_2")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_HUMIDITY)
.setCheck("Number");
this.appendValueInput("VALUE_3")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_WIND_SPEED)
.setCheck("Number");
this.appendValueInput("VALUE_4")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_WIND_DIRECTION)
.setCheck("Number");
this.appendValueInput("VALUE_5")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_RAIN_VOLUME)
.setCheck("Number");
this.appendValueInput("VALUE_6")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_PM25)
.setCheck("Number");
this.appendValueInput("VALUE_7")
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_PM10)
.setCheck("Number");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour('#ff00ff');
this.setTooltip(Blockly.Msg.KBNET2_E28T12S_TEST_SEND_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_E28T12S_TEST_SEND_HELPURL);
// this.setFieldValue("82", "RF_FREQUENCY"); // set default frequency 2482 MHz
},
// onchange
/* onchange: function(ev) {
if (ev.blockId === this.id) {
if (!this.isInFlyout) {
//console.log(this.type);
//console.log(this.workspace.getBlockById(ev.blockId));
// on block change
if (ev.type == Blockly.Events.BLOCK_CHANGE) {
//console.log(ev.name, ev.blockId, ev.type);
// on tx power dropdown changed
if (ev.name == 'TX_POWER') {
//console.log(this.getField('TX_POWER').text_, this.getField('TX_POWER').value_);
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new tx power option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('TX_POWER').value_, 'TX_POWER');
}
}
}
}
else
// on channel change
if (ev.name == 'CHANNEL') {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new tx power option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('CHANNEL').value_, 'CHANNEL');
}
}
}
}
else
// on network key change
if (ev.name == 'NWKSKEY') {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy new nwkskey option to all other blocks on workspace
this.workspace.blockDB_[blockID].setFieldValue(this.getField('NWKSKEY').text_, 'NWKSKEY');
}
}
}
}
}
// on block create
if (ev.type == Blockly.Events.BLOCK_CREATE) {
for (var blockID in this.workspace.blockDB_) {
if (this.workspace.blockDB_[blockID].type == this.type) {
// skip current block
if (blockID != ev.blockId) {
// copy current tx power value on workspace to this new block
this.setFieldValue(this.workspace.blockDB_[blockID].getField('TX_POWER').value_, 'TX_POWER');
// copy new channel option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('CHANNEL').value_, 'CHANNEL');
// copy new nwkskey option to all other blocks on workspace
this.setFieldValue(this.workspace.blockDB_[blockID].getField('NWKSKEY').text_, 'NWKSKEY');
break;
}
}
}
}
}
}
}*/
};
Blockly.Blocks["kbnet2_e28t12s_test.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.KBNET2_E28T12S_TEST_IS_ERROR_TITLE);
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour('#ff00ff');
this.setTooltip(Blockly.Msg.KBNET2_E28T12S_TEST_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.KBNET2_E28T12S_TEST_IS_ERROR_HELPURL);
}
};
var appskey_validator = function(val) {
var re = /[0-9A-Fa-f]{32}/g;
if ((val.length == 32) && (re.test(val))) {
return val.toUpperCase();
}
else {
// default
return DEFAULT_KBNET2_E28T12S_TEST_APPSKEY;
}
};
var nwkskey_validator = function(val) {
var re = /[0-9A-Fa-f]{32}/g;
if ((val.length == 32) && (re.test(val))) {
return val.toUpperCase();
}
else {
// default
return DEFAULT_KBNET2_E28T12S_TEST_NWKSKEY;
}
};
Blockly.JavaScript['kbnet2_e28t12s_test.send_01'] = function(block) {
var value_1 = Blockly.JavaScript.valueToCode(block, 'VALUE_1', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_2 = Blockly.JavaScript.valueToCode(block, 'VALUE_2', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_3 = Blockly.JavaScript.valueToCode(block, 'VALUE_3', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_4 = Blockly.JavaScript.valueToCode(block, 'VALUE_4', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_5 = Blockly.JavaScript.valueToCode(block, 'VALUE_5', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_6 = Blockly.JavaScript.valueToCode(block, 'VALUE_6', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var value_7 = Blockly.JavaScript.valueToCode(block, 'VALUE_7', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
/*var nwkskey = block.getFieldValue('NWKSKEY'); //Blockly.JavaScript.valueToCode(block, 'NWKSKEY', Blockly.JavaScript.ORDER_ASSIGNMENT) || '0';
var tx_power_index = parseInt(block.getFieldValue('TX_POWER_INDEX'));
var rf_frequency = parseInt(block.getFieldValue('RF_FREQUENCY'));
return 'DEV_IO.KBNET2_E28T12S(' + tx_power_index + ', ' + rf_frequency + ', ' + '"' + nwkskey.toLowerCase() + '"' + ').send_01(' + value_1 + ', ' + value_2 + ', ' + value_3 + ', ' + value_4 + ', ' + value_5 + ', ' + value_6 + ', ' + value_7 + ');\n';*/
return 'DEV_IO.KBNET2_E28T12S_TEST().send_01(' + value_1 + ', ' + value_2 + ', ' + value_3 + ', ' + value_4 + ', ' + value_5 + ', ' + value_6 + ', ' + value_7 + ');\n';
};
Blockly.JavaScript['kbnet2_e28t12s_test.is_error'] = function(block) {
return [
'DEV_IO.KBNET2_E28T12S_TEST().is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.LED_TEST_START_TITLE = "Start Blinking LED";
Blockly.Msg.LED_TEST_START_TOOLTIP = "Start Blinking LED";
Blockly.Msg.LED_TEST_START_HELPURL = "";
Blockly.Msg.LED_TEST_STOP_TITLE = "Stop Blinking LED";
Blockly.Msg.LED_TEST_STOP_TOOLTIP = "Stop Blinking LED";
Blockly.Msg.LED_TEST_STOP_HELPURL = "";
Blockly.Msg.LED_TEST_ALL_START_TITLE = "Start All Blinking LED";
Blockly.Msg.LED_TEST_ALL_START_TOOLTIP = "Start All Blinking LED";
Blockly.Msg.LED_TEST_ALL_START_HELPURL = "";
Blockly.Msg.LED_TEST_ALL_STOP_TITLE = "Stop All Blinking LED";
Blockly.Msg.LED_TEST_ALL_STOP_TOOLTIP = "Stop All Blinking LED";
Blockly.Msg.LED_TEST_ALL_STOP_HELPURL = "";
Blockly.Msg.LED_TEST_RUN_START_TITLE = "Start Run Blinking LED";
Blockly.Msg.LED_TEST_RUN_START_TOOLTIP = "Start Run Blinking LED";
Blockly.Msg.LED_TEST_RUN_START_HELPURL = "";
Blockly.Msg.LED_TEST_RUN_STOP_TITLE = "Stop Run Blinking LED";
Blockly.Msg.LED_TEST_RUN_STOP_TOOLTIP = "Stop Run Blinking LED";
Blockly.Msg.LED_TEST_RUN_STOP_HELPURL = "";
// bright pink: #ff69b4
// hot pink: #ff1493
// magenta: #ff00ff
const LED_TEST_BLOCK_COLOR = '#ff00ff';
/*Blockly.Blocks["led_test.start"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.LED_TEST_START_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(LED_TEST_BLOCK_COLOR);
this.setTooltip(Blockly.Msg.LED_TEST_START_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LED_TEST_START_HELPURL);
}
};
Blockly.Blocks["led_test.stop"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.LED_TEST_STOP_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(LED_TEST_BLOCK_COLOR);
this.setTooltip(Blockly.Msg.LED_TEST_STOP_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LED_TEST_STOP_HELPURL);
}
};*/
Blockly.Blocks["led_test_all.start"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.LED_TEST_ALL_START_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(LED_TEST_BLOCK_COLOR);
this.setTooltip(Blockly.Msg.LED_TEST_ALL_START_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LED_TEST_ALL_START_HELPURL);
}
};
Blockly.Blocks["led_test_all.stop"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.LED_TEST_ALL_STOP_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(LED_TEST_BLOCK_COLOR);
this.setTooltip(Blockly.Msg.LED_TEST_ALL_STOP_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LED_TEST_ALL_STOP_HELPURL);
}
};
Blockly.Blocks["led_test_run.start"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.LED_TEST_RUN_START_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(LED_TEST_BLOCK_COLOR);
this.setTooltip(Blockly.Msg.LED_TEST_RUN_START_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LED_TEST_RUN_START_HELPURL);
}
};
Blockly.Blocks["led_test_run.stop"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.LED_TEST_RUN_STOP_TITLE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(LED_TEST_BLOCK_COLOR);
this.setTooltip(Blockly.Msg.LED_TEST_RUN_STOP_TOOLTIP);
this.setHelpUrl(Blockly.Msg.LED_TEST_RUN_STOP_HELPURL);
}
};
Blockly.JavaScript['led_test.start'] = function(block) {
return 'DEV_IO.LED_TEST().start();\n';
};
Blockly.JavaScript['led_test.stop'] = function(block) {
return 'DEV_IO.LED_TEST().stop();\n';
};
Blockly.JavaScript['led_test_all.start'] = function(block) {
return 'DEV_IO.LED_TEST().start_all();\n';
};
Blockly.JavaScript['led_test_all.stop'] = function(block) {
return 'DEV_IO.LED_TEST().stop_all();\n';
};
Blockly.JavaScript['led_test_run.start'] = function(block) {
return 'DEV_IO.LED_TEST().start_run();\n';
};
Blockly.JavaScript['led_test_run.stop'] = function(block) {
return 'DEV_IO.LED_TEST().stop_run();\n';
};
Blockly.Msg.UARTCHK_TITLE = "UART Check";
Blockly.Msg.UARTCHK_TOOLTIP = "Check UART Loopback";
Blockly.Msg.UARTCHK_HELPURL = "";
Blockly.Msg.UARTCHK_UART_NUM = "UART No.";
Blockly.Msg.UARTCHK_TX = "Tx";
Blockly.Msg.UARTCHK_RX = "Rx";
Blockly.Msg.UARTCHK_PWR_EN = "Enable";
// bright pink: #ff69b4
// hot pink: #ff1493
// magenta: #ff00ff
const UART_TEST_BLOCK_COLOR = '#ff00ff';
Blockly.Blocks["uartchk.check"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.UARTCHK_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.UARTCHK_UART_NUM)
.appendField(new Blockly.FieldDropdown([
["UART_1", "UART_NUM_1"],
["UART_2", "UART_NUM_2"]
]), 'UART_NUM');
this.appendDummyInput()
.appendField(Blockly.Msg.UARTCHK_TX)
.appendField(new Blockly.FieldDropdown([
["GPIO_18", "GPIO_NUM_18"],
["GPIO_27", "GPIO_NUM_27"]
]), 'TX');
this.appendDummyInput()
.appendField(Blockly.Msg.UARTCHK_RX)
.appendField(new Blockly.FieldDropdown([
["GPIO_19", "GPIO_NUM_19"],
["GPIO_33", "GPIO_NUM_33"]
]), 'RX');
this.appendDummyInput()
.appendField(Blockly.Msg.UARTCHK_PWR_EN)
.appendField(new Blockly.FieldDropdown([
["GPIO_26", "GPIO_NUM_26"],
["GPIO_23", "GPIO_NUM_23"]
]), 'PWR_EN');
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(UART_TEST_BLOCK_COLOR);
this.setTooltip(Blockly.Msg.UARTCHK_TOOLTIP);
this.setHelpUrl(Blockly.Msg.UARTCHK_HELPURL);
}
};
Blockly.JavaScript['uartchk.check'] = function (block) {
return [
'DEV_IO.UARTCHK(' + block.getFieldValue('UART_NUM') + ', ' + block.getFieldValue('TX') + ', ' +block.getFieldValue('RX') + ', ' + block.getFieldValue('PWR_EN') + ').check()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.ADS1115_GET_LUX_TITLE = "ADS1115 Analog Voltage";
Blockly.Msg.ADS1115_GET_LUX_TOOLTIP = "Read ADS1115 Analog Voltage (From 0 to 2.048 Volt)";
Blockly.Msg.ADS1115_GET_LUX_HELPURL = "";
Blockly.Blocks["ads1115.get_volt"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.ADS1115_GET_LUX_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x48", "72"],
["0x49", "73"],
["0x4A", "74"],
["0x4B", "75"]
]), 'ADDRESS');
// adc channel
this.appendDummyInput()
.appendField(' ')
.appendField(new Blockly.FieldDropdown([
["AIN0", "0"],
["AIN1", "1"],
["AIN2", "2"],
["AIN3", "3"]
]), 'AIN');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.ADS1115_GET_LUX_TOOLTIP);
this.setHelpUrl(Blockly.Msg.ADS1115_GET_LUX_HELPURL);
}
};
Blockly.JavaScript['ads1115.get_volt'] = function(block) {
return [
'DEV_I2C1.ADS1115(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').get_volt(' + block.getFieldValue('AIN') + ')',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_MM_TITLE = "ADS-WS1 24Hrs Rain Gauge";
Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_MM_TOOLTIP = "Read ADS-WS1 Rain Gauge Last 24 Hours (mm.)";
Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_MM_HELPURL = "";
Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_COUNTER_TITLE = "ADS-WS1 24Hrs Rain Gauge Counter";
Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_COUNTER_TOOLTIP = "Read ADS-WS1 Rain Gauge Counter Last 24 Hours";
Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_COUNTER_HELPURL = "";
Blockly.Msg.ADSWS1_RG_RESET_RAIN_GAUGE_TITLE = "ADS-WS1 Reset Rain Gauge";
Blockly.Msg.ADSWS1_RG_RESET_RAIN_GAUGE_TOOLTIP = "Reset ADS-WS1 Rain Gauge";
Blockly.Msg.ADSWS1_RG_RESET_RAIN_GAUGE_HELPURL = "";
Blockly.Blocks["adsws1_rg.get_rain_gauge_mm"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_MM_TITLE)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'INPUT');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_MM_TOOLTIP);
this.setHelpUrl(Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_MM_HELPURL);
// set default field dropdown
this.inputList[0].fieldRow[1].setValue('IN2_GPIO');
}
};
Blockly.Blocks["adsws1_rg.get_rain_gauge_counter"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_COUNTER_TITLE)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'INPUT');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_COUNTER_TOOLTIP);
this.setHelpUrl(Blockly.Msg.ADSWS1_RG_GET_RAIN_GAUGE_COUNTER_HELPURL);
// set default field dropdown
this.inputList[0].fieldRow[1].setValue('IN2_GPIO');
}
};
Blockly.Blocks["adsws1_rg.reset_rain_gauge"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.ADSWS1_RG_RESET_RAIN_GAUGE_TITLE)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'INPUT');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(58);
this.setTooltip(Blockly.ADSWS1_RG_RESET_RAIN_GAUGE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.ADSWS1_RG_RESET_RAIN_GAUGE_HELPURL);
// set default field dropdown
this.inputList[0].fieldRow[1].setValue('IN2_GPIO');
}
};
Blockly.JavaScript['adsws1_rg.get_rain_gauge_mm'] = function(block) {
return [
// input = IN1(gpio 32), IN2(gpio 33), IN3(gpio 34), IN4(gpio 35)
'DEV_IO.ADSWS1_RG(' + block.getFieldValue('INPUT') + ')' + '.get_rain_gauge_mm()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['adsws1_rg.get_rain_gauge_counter'] = function(block) {
return [
// input = IN1(gpio 32), IN2(gpio 33), IN3(gpio 34), IN4(gpio 35)
'DEV_IO.ADSWS1_RG(' + block.getFieldValue('INPUT') + ')' + '.get_rain_gauge_counter()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['adsws1_rg.reset_rain_gauge'] = function(block) {
return 'DEV_IO.ADSWS1_RG(' + block.getFieldValue('INPUT') + ').reset_rain_gauge();\n';
};
Blockly.Msg.ADSWS1_WD_GET_WIND_DIRECTION_DEGREES_TITLE = "ADS-WS1 Wind Direction";
Blockly.Msg.ADSWS1_WD_GET_WIND_DIRECTION_DEGREES_TOOLTIP = "Read ADS-WS1 Wind Direction (degrees)";
Blockly.Msg.ADSWS1_WD_GET_WIND_DIRECTION_DEGREES_HELPURL = "";
Blockly.Msg.ADSWS1_WD_TRIG = "Trig";
Blockly.Msg.ADSWS1_WD_CAPTURE = "Capture";
Blockly.Msg.WIND_DIRECTION_IS_ERROR_TITLE = "ADS-WS1 Wind Direction Error";
Blockly.Msg.WIND_DIRECTION_IS_ERROR_TOOLTIP = "ADS-WS1 Wind Direction Error (sensor not found)";
Blockly.Msg.WIND_DIRECTION_IS_ERROR_HELPURL = "";
Blockly.Blocks["adsws1_wd.get_wind_direction_degrees"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.ADSWS1_WD_GET_WIND_DIRECTION_DEGREES_TITLE)
.appendField(Blockly.Msg.ADSWS1_WD_TRIG)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'OUTPUT')
.appendField(Blockly.Msg.ADSWS1_WD_CAPTURE)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'INPUT');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.ADSWS1_WD_GET_WIND_DIRECTION_DEGREES_TOOLTIP);
this.setHelpUrl(Blockly.Msg.ADSWS1_WD_GET_WIND_DIRECTION_DEGREES_HELPURL);
// set default field dropdown
this.inputList[0].fieldRow[4].setValue('IN3_GPIO');
}
};
Blockly.Blocks["adsws1_wd.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.WIND_DIRECTION_IS_ERROR_TITLE)
.appendField(Blockly.Msg.ADSWS1_WD_TRIG)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'OUTPUT')
.appendField(Blockly.Msg.ADSWS1_WD_CAPTURE)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'INPUT');
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.WIND_DIRECTION_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.WIND_DIRECTION_IS_ERROR_HELPURL);
// set default field dropdown
this.inputList[0].fieldRow[4].setValue('IN3_GPIO');
}
};
Blockly.JavaScript['adsws1_wd.get_wind_direction_degrees'] = function(block) {
return [
// input = IN1(gpio 32), IN2(gpio 33), IN3(gpio 34), IN4(gpio 35)
'DEV_IO.ADSWS1_WD(' + block.getFieldValue('OUTPUT') + ', ' + block.getFieldValue('INPUT') + ')' + '.get_wind_direction_degrees()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['adsws1_wd.is_error'] = function(block) {
return [
'DEV_IO.ADSWS1_WD(' + block.getFieldValue('OUTPUT') + ', ' + block.getFieldValue('INPUT') + ')' + '.is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TITLE = "ADS-WS1 Wind Speed";
Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TOOLTIP = "Read ADS-WS1 Wind Speed (km/h)";
Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_HELPURL = "";
Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TEXT_TITLE = "ADS-WS1 Wind Speed Text";
Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TEXT_TOOLTIP = "Read ADS-WS1 Wind Speed (km/h) Text";
Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TEXT_HELPURL = "";
Blockly.Blocks["adsws1_ws.get_wind_speed_km_h"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TITLE)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'INPUT');
this.setOutput(true, 'Number');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TOOLTIP);
this.setHelpUrl(Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_HELPURL);
}
};
Blockly.Blocks["adsws1_ws.get_wind_speed_km_h_text"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TEXT_TITLE)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'INPUT')
.appendField(Blockly.Msg.PRECISION_TITLE)
.appendField(new Blockly.FieldNumber(1, 0, 6, 1), 'PREC');
this.setOutput(true, 'String');
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TEXT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.ADSWS1_WS_GET_WIND_SPEED_KM_H_TEXT_HELPURL);
}
};
Blockly.JavaScript['adsws1_ws.get_wind_speed_km_h'] = function(block) {
return [
// input = IN1(gpio 32), IN2(gpio 33), IN3(gpio 34), IN4(gpio 35)
'DEV_IO.ADSWS1_WS(' + block.getFieldValue('INPUT') + ')' + '.get_wind_speed_km_h()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['adsws1_ws.get_wind_speed_km_h_text'] = function(block) {
var prec = parseInt(block.getFieldValue('PREC'));
return [
// input = IN1(gpio 32), IN2(gpio 33), IN3(gpio 34), IN4(gpio 35)
'DEV_IO.ADSWS1_WS(' + block.getFieldValue('INPUT') + ')' + '.get_wind_speed_km_h_text(' + prec + ')',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.HPMA115S0_GET_PM2_5_TITLE = "HPMA115S0 PM2.5";
Blockly.Msg.HPMA115S0_GET_PM2_5_TOOLTIP = "Read HPMA115S0 PM2.5";
Blockly.Msg.HPMA115S0_GET_PM2_5_HELPURL = "";
Blockly.Msg.HPMA115S0_GET_PM10_TITLE = "HPMA115S0 PM10";
Blockly.Msg.HPMA115S0_GET_PM10_TOOLTIP = "Read HPMA115S0 PM10";
Blockly.Msg.HPMA115S0_GET_PM10_HELPURL = "";
Blockly.Msg.HPMA115S0_PM_TX = "Tx";
Blockly.Msg.HPMA115S0_PM_RX = "Rx";
Blockly.Msg.HPMA115S0_IS_ERROR_TITLE = "HPMA115S0 Check Error";
Blockly.Msg.HPMA115S0_IS_ERROR_TOOLTIP = "Check HPMA115S0 error status";
Blockly.Msg.HPMA115S0_IS_ERROR_HELPURL = "";
Blockly.Msg.HPMA115S0_GET_ERROR_COUNT_TITLE = "HPMA115S0 Get Error Count";
Blockly.Msg.HPMA115S0_GET_ERROR_COUNT_TOOLTIP = "Get number of HPMA115S0 error count";
Blockly.Msg.HPMA115S0_GET_ERROR_COUNT_HELPURL = "";
Blockly.Msg.HPMA115S0_GET_ERROR_CLEAR_COUNT_TITLE = "HPMA115S0 Get Error Clear Count";
Blockly.Msg.HPMA115S0_GET_ERROR_CLEAR_COUNT_TOOLTIP = "Get number of HPMA115S0 error clear count";
Blockly.Msg.HPMA115S0_GET_ERROR_CLEAR_COUNT_HELPURL = "";
Blockly.Blocks["hpma115s0.getpm2_5"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_GET_PM2_5_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_TX)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'TX');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_RX)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'RX');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.HPMA115S0_GET_PM2_5_TOOLTIP);
this.setHelpUrl(Blockly.Msg.HPMA115S0_GET_PM2_5_HELPURL);
}
};
Blockly.Blocks["hpma115s0.getpm10"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_GET_PM10_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_TX)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'TX');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_RX)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'RX');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.HPMA115S0_GET_PM10_TOOLTIP);
this.setHelpUrl(Blockly.Msg.HPMA115S0_GET_PM10_HELPURL);
}
};
Blockly.Blocks["hpma115s0.is_error"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_IS_ERROR_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_TX)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'TX');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_RX)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'RX');
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.HPMA115S0_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.HPMA115S0_IS_ERROR_HELPURL);
}
};
Blockly.Blocks["hpma115s0.get_error_count"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_GET_ERROR_COUNT_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_TX)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'TX');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_RX)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'RX');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.HPMA115S0_GET_ERROR_COUNT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.HPMA115S0_GET_ERROR_COUNT_HELPURL);
}
};
Blockly.Blocks["hpma115s0.get_error_clear_count"] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_GET_ERROR_CLEAR_COUNT_TITLE);
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_TX)
.appendField(new Blockly.FieldDropdown([
["OUT1", "OUT1_GPIO"],
["OUT2", "OUT2_GPIO"]
]), 'TX');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.HPMA115S0_PM_RX)
.appendField(new Blockly.FieldDropdown([
["IN1", "IN1_GPIO"],
["IN2", "IN2_GPIO"],
["IN3", "IN3_GPIO"],
["IN4", "IN4_GPIO"]
]), 'RX');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.HPMA115S0_GET_ERROR_CLEAR_COUNT_TOOLTIP);
this.setHelpUrl(Blockly.Msg.HPMA115S0_GET_ERROR_CLEAR_COUNT_HELPURL);
}
};
Blockly.JavaScript['hpma115s0.getpm2_5'] = function (block) {
return [
'DEV_IO.HPMA115S0(' + block.getFieldValue('TX') + ', ' + block.getFieldValue('RX') + ').get_pm2_5()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['hpma115s0.getpm10'] = function (block) {
return [
'DEV_IO.HPMA115S0(' + block.getFieldValue('TX') + ', ' + block.getFieldValue('RX') + ').get_pm10()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['hpma115s0.is_error'] = function (block) {
return [
'DEV_IO.HPMA115S0(' + block.getFieldValue('TX') + ', ' + block.getFieldValue('RX') + ').is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['hpma115s0.get_error_count'] = function (block) {
return [
'DEV_IO.HPMA115S0(' + block.getFieldValue('TX') + ', ' + block.getFieldValue('RX') + ').get_error_count()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['hpma115s0.get_error_clear_count'] = function (block) {
return [
'DEV_IO.HPMA115S0(' + block.getFieldValue('TX') + ', ' + block.getFieldValue('RX') + ').get_error_clear_count()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.SHT21_GET_TEMPERATURE_TITLE = "SHT21 Temperature";
Blockly.Msg.SHT21_GET_TEMPERATURE_TOOLTIP = "Read SHT21 Temperature";
Blockly.Msg.SHT21_GET_TEMPERATURE_HELPURL = "";
Blockly.Msg.SHT21_GET_HUMIDITY_TITLE = "SHT21 Humidity";
Blockly.Msg.SHT21_GET_HUMIDITY_TOOLTIP = "Read SHT21 Humidity";
Blockly.Msg.SHT21_GET_HUMIDITY_HELPURL = "";
Blockly.Msg.SHT21_IS_ERROR_TITLE = "SHT21 Error";
Blockly.Msg.SHT21_IS_ERROR_TOOLTIP = "Check SHT21 Error";
Blockly.Msg.SHT21_IS_ERROR_HELPURL = "";
Blockly.Blocks["sht21.get_temperature"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SHT21_GET_TEMPERATURE_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SHT21_GET_TEMPERATURE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SHT21_GET_TEMPERATURE_HELPURL);
}
};
Blockly.Blocks["sht21.get_humidity"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SHT21_GET_HUMIDITY_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SHT21_GET_HUMIDITY_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SHT21_GET_HUMIDITY_HELPURL);
}
};
Blockly.Blocks["sht21.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SHT21_IS_ERROR_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SHT21_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SHT21_IS_ERROR_HELPURL);
}
};
Blockly.JavaScript['sht21.get_temperature'] = function(block) {
return [
'DEV_I2C1.SHT21(' + block.getFieldValue('CHANNEL') + ', 0x40).get_temperature()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['sht21.get_humidity'] = function(block) {
return [
'DEV_I2C1.SHT21(' + block.getFieldValue('CHANNEL') + ', 0x40).get_humidity()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['sht21.is_error'] = function(block) {
return [
'DEV_I2C1.SHT21(' + block.getFieldValue('CHANNEL') + ', 0x40).is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.SHT31_GET_TEMPERATURE_TITLE = "SHT31 Temperature";
Blockly.Msg.SHT31_GET_TEMPERATURE_TOOLTIP = "Read SHT31 Temperature";
Blockly.Msg.SHT31_GET_TEMPERATURE_HELPURL = "";
Blockly.Msg.SHT31_GET_HUMIDITY_TITLE = "SHT31 Humidity";
Blockly.Msg.SHT31_GET_HUMIDITY_TOOLTIP = "Read SHT31 Humidity";
Blockly.Msg.SHT31_GET_HUMIDITY_HELPURL = "";
Blockly.Msg.SHT31_IS_ERROR_TITLE = "SHT31 Error";
Blockly.Msg.SHT31_IS_ERROR_TOOLTIP = "Check SHT31 Error";
Blockly.Msg.SHT31_IS_ERROR_HELPURL = "";
Blockly.Blocks["sht31.get_temperature"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SHT31_GET_TEMPERATURE_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x44", "68"],
["0x45", "69"]
]), 'ADDRESS');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SHT31_GET_TEMPERATURE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SHT31_GET_TEMPERATURE_HELPURL);
}
};
Blockly.Blocks["sht31.get_humidity"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SHT31_GET_HUMIDITY_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x44", "68"],
["0x45", "69"]
]), 'ADDRESS');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SHT31_GET_HUMIDITY_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SHT31_GET_HUMIDITY_HELPURL);
}
};
Blockly.Blocks["sht31.is_error"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SHT31_IS_ERROR_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x44", "68"],
["0x45", "69"]
]), 'ADDRESS');
this.setOutput(true, 'Boolean');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SHT31_IS_ERROR_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SHT31_IS_ERROR_HELPURL);
}
};
Blockly.JavaScript['sht31.get_temperature'] = function(block) {
return [
'DEV_I2C1.SHT31(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').get_temperature()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['sht31.get_humidity'] = function(block) {
return [
'DEV_I2C1.SHT31(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').get_humidity()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['sht31.is_error'] = function(block) {
return [
'DEV_I2C1.SHT31(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').is_error()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.SI7021_GET_TEMPERATURE_TITLE = "SI7021 Temperature";
Blockly.Msg.SI7021_GET_TEMPERATURE_TOOLTIP = "Read SI7021 Temperature";
Blockly.Msg.SI7021_GET_TEMPERATURE_HELPURL = "";
Blockly.Msg.SI7021_GET_HUMIDITY_TITLE = "SI7021 Humidity";
Blockly.Msg.SI7021_GET_HUMIDITY_TOOLTIP = "Read SI7021 Humidity";
Blockly.Msg.SI7021_GET_HUMIDITY_HELPURL = "";
Blockly.Blocks["si7021.get_temperature"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SI7021_GET_TEMPERATURE_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SI7021_GET_TEMPERATURE_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SI7021_GET_TEMPERATURE_HELPURL);
}
};
Blockly.Blocks["si7021.get_humidity"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.SI7021_GET_HUMIDITY_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.SI7021_GET_HUMIDITY_TOOLTIP);
this.setHelpUrl(Blockly.Msg.SI7021_GET_HUMIDITY_HELPURL);
}
};
Blockly.JavaScript['si7021.get_temperature'] = function(block) {
return [
'DEV_I2C1.SI7021(' + block.getFieldValue('CHANNEL') + ', 0x40).get_temperature()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.JavaScript['si7021.get_humidity'] = function(block) {
return [
'DEV_I2C1.SI7021(' + block.getFieldValue('CHANNEL') + ', 0x40).get_humidity()',
Blockly.JavaScript.ORDER_ATOMIC
];
};
Blockly.Msg.TSL2561_GET_LUX_TITLE = "TSL2561 Illuminance in Lux";
Blockly.Msg.TSL2561_GET_LUX_TOOLTIP = "Read TSL2561 Illuminance in Lux";
Blockly.Msg.TSL2561_GET_LUX_HELPURL = "";
Blockly.Blocks["tsl2561.get_illuminance"] = {
init: function() {
this.appendDummyInput()
.appendField(Blockly.Msg.TSL2561_GET_LUX_TITLE);
// i2c channel 0 to 64
var channel_array = [];
for (var i = 0;i <= 64; i++) {
channel_array.push([String(i), String(i)]);
}
this.appendDummyInput()
.appendField(Blockly.Msg.CHANNEL)
.appendField(new Blockly.FieldDropdown(channel_array), 'CHANNEL');
// device addess
this.appendDummyInput()
.appendField(Blockly.Msg.ADDRESS)
.appendField(new Blockly.FieldDropdown([
["0x29", "41"],
["0x39", "57"],
["0x49", "73"]
]), 'ADDRESS');
this.setOutput(true, 'Number');
this.setInputsInline(true);
this.setPreviousStatement(false);
this.setNextStatement(false);
this.setColour(58);
this.setTooltip(Blockly.Msg.TSL2561_GET_LUX_TOOLTIP);
this.setHelpUrl(Blockly.Msg.TSL2561_GET_LUX_HELPURL);
}
};
Blockly.JavaScript['tsl2561.get_illuminance'] = function(block) {
return [
'DEV_I2C1.TSL2561(' + block.getFieldValue('CHANNEL') + ', ' + block.getFieldValue('ADDRESS') + ').get_illuminance()',
Blockly.JavaScript.ORDER_ATOMIC
];
};