123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
-
- 'use strict';
- goog.provide('Blockly.Blocks.spi');
- goog.require('Blockly.Blocks');
- goog.require('Blockly.Types');
- Blockly.Blocks.spi.HUE = 80;
- Blockly.Blocks['spi_setup'] = {
-
- init: function() {
- this.setHelpUrl('http://arduino.cc/en/Reference/SPI');
- this.setColour(Blockly.Blocks.spi.HUE);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_SPI_SETUP)
- .appendField(new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.spi), 'SPI_ID')
- .appendField(Blockly.Msg.ARD_SPI_SETUP_CONF);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_SPI_SETUP_SHIFT)
- .appendField(
- new Blockly.FieldDropdown(
- [[Blockly.Msg.ARD_SPI_SETUP_MSBFIRST, 'MSBFIRST'],
- [Blockly.Msg.ARD_SPI_SETUP_LSBFIRST, 'LSBFIRST']]),
- 'SPI_SHIFT_ORDER');
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_SPI_SETUP_DIVIDE)
- .appendField(
- new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.spiClockDivide),
- 'SPI_CLOCK_DIVIDE');
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_SPI_SETUP_MODE)
- .appendField(
- new Blockly.FieldDropdown(
- [[Blockly.Msg.ARD_SPI_SETUP_MODE0, 'SPI_MODE0'],
- [Blockly.Msg.ARD_SPI_SETUP_MODE1, 'SPI_MODE1'],
- [Blockly.Msg.ARD_SPI_SETUP_MODE2, 'SPI_MODE2'],
- [Blockly.Msg.ARD_SPI_SETUP_MODE3, 'SPI_MODE3']]),
- 'SPI_MODE');
- this.setTooltip(Blockly.Msg.ARD_SPI_SETUP_TIP);
- },
-
- getSpiSetupInstance: function() {
- return this.getFieldValue('SPI_ID');
- },
-
- updateFields: function() {
- Blockly.Python.Boards.refreshBlockFieldDropdown(
- this, 'SPI_ID', 'spi');
- Blockly.Python.Boards.refreshBlockFieldDropdown(
- this, 'SPI_CLOCK_DIVIDE', 'spiClockDivide');
- }
- };
- Blockly.Blocks['spi_transfer'] = {
-
- init: function() {
-
- var slaveNone = [[Blockly.Msg.ARD_SPI_TRANS_NONE, 'none']];
- var digitalPinsExtended = slaveNone.concat(
- Blockly.Python.Boards.selected.digitalPins);
- this.setHelpUrl('http://arduino.cc/en/Reference/SPITransfer');
- this.setColour(Blockly.Blocks.spi.HUE);
- this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.spi), 'SPI_ID');
- this.appendValueInput('SPI_DATA')
- .setCheck(Blockly.Types.NUMBER.checkList)
- .appendField(Blockly.Msg.ARD_SPI_TRANS_VAL);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_SPI_TRANS_SLAVE)
- .appendField(
- new Blockly.FieldDropdown(digitalPinsExtended), 'SPI_SS');
- this.setInputsInline(true);
- this.setPreviousStatement(true, null);
- this.setNextStatement(true, null);
- this.setTooltip(Blockly.Msg.ARD_SPI_TRANS_TIP);
- },
-
- onchange: function() {
- if (!this.workspace) { return; }
-
- var thisInstanceName = this.getFieldValue('SPI_ID');
-
- var blocks = Blockly.mainWorkspace.getTopBlocks();
- var setupInstancePresent = false;
- for (var x = 0, length_ = blocks.length; x < length_; x++) {
- var func = blocks[x].getSpiSetupInstance;
- if (func) {
- var setupBlockInstanceName = func.call(blocks[x]);
- if (thisInstanceName == setupBlockInstanceName) {
- setupInstancePresent = true;
- }
- }
- }
- if (!setupInstancePresent) {
- this.setWarningText(Blockly.Msg.ARD_SPI_TRANS_WARN1.replace('%1', thisInstanceName),
- 'spi_setup');
- } else {
- this.setWarningText(null, 'spi_setup');
- }
- },
-
- getBlockType: function() {
- return Blockly.Types.NUMBER;
- },
-
- updateFields: function() {
-
- var field = this.getField('SPI_SS');
- var fieldValue = field.getValue();
- var slaveNone = [[Blockly.Msg.ARD_SPI_TRANS_NONE, 'none']];
- field.menuGenerator_ =
- slaveNone.concat(Blockly.Python.Boards.selected['digitalPins']);
- var currentValuePresent = false;
- for (var i = 0, length_ = field.menuGenerator_.length; i < length_; i++) {
- if (fieldValue == field.menuGenerator_[i][1]) {
- currentValuePresent = true;
- }
- }
-
- if (!currentValuePresent) {
- this.setWarningText(Blockly.Msg.ARD_SPI_TRANS_WARN2.replace('%1', fieldValue),
- 'bPin');
- } else {
- this.setWarningText(null, 'bPin');
- }
- }
- };
- Blockly.Blocks['spi_transfer_return'] = {
-
- init: function() {
-
- var slaveNone = [[Blockly.Msg.ARD_SPI_TRANS_NONE, 'none']];
- var digitalPinsExtended = slaveNone.concat(
- Blockly.Python.Boards.selected.digitalPins);
- this.setHelpUrl('http://arduino.cc/en/Reference/SPITransfer');
- this.setColour(Blockly.Blocks.spi.HUE);
- this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.spi), 'SPI_ID');
- this.appendValueInput('SPI_DATA')
- .appendField(Blockly.Msg.ARD_SPI_TRANS_VAL);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_SPI_TRANS_SLAVE)
- .appendField(
- new Blockly.FieldDropdown(digitalPinsExtended), 'SPI_SS');
- this.setInputsInline(true);
- this.setOutput(true);
- this.setTooltip(Blockly.Msg.ARD_SPI_TRANSRETURN_TIP);
- },
-
- onchange: Blockly.Blocks['spi_transfer'].onchange,
-
- getBlockType: Blockly.Blocks['spi_transfer'].getBlockType,
-
- updateFields: Blockly.Blocks['spi_transfer'].updateFields
- };
|