forked from sugarlabs/musicblocks
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrodi.json
executable file
·54 lines (54 loc) · 14.9 KB
/
rodi.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
"HIGHLIGHTSTROKECOLORS": {
"rodi": "#000000"
},
"ARGPLUGINS": {
"rodisenseleft": "var block = logo.blocks.blockList[blk];block.value = doRodiGetSensor(logo, blk, 0);",
"rodisee": "var block = logo.blocks.blockList[blk];block.value = doRodiGetDistance(logo, blk);",
"rodisenselight": "var block = logo.blocks.blockList[blk];block.value = doRodiGetLightSensor(blk);var apiUrl = RODI_BASE_URL + '/7/';doAsyncCall(logo, blk, apiUrl);",
"rodisenseright": "var block = logo.blocks.blockList[blk];block.value = doRodiGetSensor(logo, blk, 1);",
"rodimovestatus": "var block = logo.blocks.blockList[blk];block.value = doRodiGetMoveStatus(logo, blk);"
},
"GLOBALS": "RODI_BASE_URL = 'http://192.168.4.1:1234';rodiSensorsCache = null;rodiSensorsValidFor = 100;rodiSensorsCacheExpires = 0;rodiLightSensorCache = null;rodiLightSensorValidFor = 100;rodiLightSensorCacheExpires = 0;rodiMoveStatus = _('stop');rodiDistanceCache = null;rodiDistanceValidFor = 100;rodiDistanceCacheExpires = 0;doRodiGetDistance = function (logo, blk) { if (logo.inStatusMatrix) { logo.statusFields.push([blk, logo.blocks.blockList[blk].name]); } else { if (Date.now() > rodiDistanceCacheExpires) { apiUrl = RODI_BASE_URL + '/5/'; distance = doSyncCall(logo, blk, apiUrl); if (distance != null) { rodiDistanceCacheExpires = Date.now() + rodiDistanceValidFor; rodiDistanceCache = distance; return distance; } else { return 100; } } else { return rodiDistanceCache; } }};doRodiGetMoveStatus = function (logo, blk) { if (logo.inStatusMatrix) { logo.statusFields.push([blk, logo.blocks.blockList[blk].name]); } else { return rodiMoveStatus; }};doRodiMove = function (logo, blk, left, right) { apiUrl = RODI_BASE_URL + '/3/' + left + '/' + right + '/'; if (left === right) { if (left < 0) { rodiMoveStatus = _('back'); } else if (left > 0) { rodiMoveStatus = _('forward'); } else { rodiMoveStatus = _('stop'); } } else { if (left > right) { rodiMoveStatus = _('right'); } else { rodiMoveStatus = _('left'); } } doAsyncCall(logo, blk, apiUrl)};doRodiGetSensor = function (logo, blk, index) { if (logo.inStatusMatrix) { logo.statusFields.push([blk, logo.blocks.blockList[blk].name]); } else { if (Date.now() > rodiSensorsCacheExpires) { apiUrl = RODI_BASE_URL + '/2/'; sensors = doSyncCall(logo, blk, apiUrl); if (sensors != null) { rodiSensorsCacheExpires = Date.now() + rodiSensorsValidFor; rodiSensorsCache = sensors; return sensors[index]; } else { return -1; } } else { return rodiSensorsCache[index]; } }};doRodiGetLightSensor = function (logo, blk) { if (logo.inStatusMatrix) { logo.statusFields.push([blk, logo.blocks.blockList[blk].name]); } else { if (Date.now() > rodiLightSensorCacheExpires) { apiUrl = RODI_BASE_URL + '/7/'; sensor = doSyncCall(logo, apiUrl); if (sensor != null) { rodiLightSensorCacheExpires = Date.now() + rodiLightSensorValidFor; rodiLightSensorCache = sensor; return sensor; } else { return -1; } } else { return rodiLightSensorCache; } }};doAsyncCall = function (logo, blk, url){ console.log(url); try { request = new XMLHttpRequest(); request.open('GET', url, true); request.send(null); } catch (e) { if (logo != null) { logo.errorMsg(e, blk); } console.log(e); }};doSyncCall = function (logo, blk, url) { console.log(url); request = new XMLHttpRequest(); try { request.open('GET', url, false); request.send(null); return JSON.parse(request.responseText); } catch (e) { if (logo != null) { logo.errorMsg(e, blk); } console.log(e); return null; }};function doRodiStop(){ doRodiMove(null, null, 0, 0);};blocks.logo.stage.addEventListener('__STOP__', doRodiStop, false);",
"PALETTEHIGHLIGHTCOLORS": {
"rodi": "#ced8f8"
},
"FLOWPLUGINS": {
"rodiforward": "doRodiMove(logo, blk, 100, 100);",
"rodistop": "doRodiMove(logo, blk, 0, 0);",
"rodiback": "doRodiMove(logo, blk, -100, -100);",
"rodileft": "doRodiMove(logo, blk, -100, 100);",
"rodiright": "doRodiMove(logo, blk, 100, -100);",
"rodiled": "var block = logo.blocks.blockList[blk];var conns = block.connections;var state = logo.parseArg(logo, turtle, conns[1]);var apiUrl = RODI_BASE_URL + '/8/' + state + '/';doAsyncCall(logo, blk, apiUrl);",
"rodising": "var block = logo.blocks.blockList[blk];var conns = block.connections;var note = logo.parseArg(logo, turtle, conns[1]);var duration = logo.parseArg(logo, turtle, conns[2]);var apiUrl = RODI_BASE_URL + '/4/' + note + '/' + duration + '/';doAsyncCall(logo, blk, apiUrl);",
"rodimove": "var block = logo.blocks.blockList[blk];var conns = block.connections;var left = logo.parseArg(logo, turtle, conns[1]);var right = logo.parseArg(logo, turtle, conns[2]);doRodiMove(logo, blk, left, right);",
"rodipixel": "var block = logo.blocks.blockList[blk];var conns = block.connections;var red = logo.parseArg(logo, turtle, conns[1]);var green = logo.parseArg(logo, turtle, conns[2]);var blue = logo.parseArg(logo, turtle, conns[3]);var apiUrl = RODI_BASE_URL + '/6/' + red + '/' + green + '/' + blue + '/';doAsyncCall(logo, blk, apiUrl);",
"rodiblink": "var block = logo.blocks.blockList[blk];var conns = block.connections;var rate = logo.parseArg(logo, turtle, conns[1]);var apiUrl = RODI_BASE_URL + '/1/' + rate + '/';doAsyncCall(logo, blk, apiUrl);"
},
"PALETTEPLUGINS": {
"rodi": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"55\" height=\"55\" version=\"1.1\"> <g> <path style=\"fill:#ffffff;fill-opacity:1;stroke:none;display:inline\" d=\"m 27.824698,17.500015 c -1.021799,0.02531 -2.008524,0.141505 -2.941109,0.374382 -0.467003,0.114694 -0.94253,0.228488 -1.439267,0.343183 0,0 -0.393821,-0.193097 -1.001229,0.0312 -2.477892,0.915003 -1.314112,3.993403 -1.314112,3.993403 l -0.06258,2.059098 -0.125154,4.24299 -0.344172,4.0558 -0.531903,2.745464 c -0.228056,0.903839 0.148591,2.209171 1.032517,2.152694 1.069859,-0.06835 2.086639,-0.318374 2.284053,-2.277488 0.13347,-1.310696 -0.447667,-1.82011 -0.03129,-3.931005 0.04562,-0.231266 2.366534,1.309497 3.598166,1.871907 0.998903,0.456138 2.079916,1.272979 3.097552,1.934305 0.819441,0.532527 1.506739,1.45228 2.440495,1.622319 1.090895,0.198654 1.78507,-1.953095 1.251536,-3.307036 -0.407833,-1.03495 -2.415817,-0.776709 -3.31657,-1.559923 l -2.94111,-1.559923 c 1.704164,-0.433176 3.416807,-1.04305 4.974856,-2.183892 2.17134,-1.69106 2.024136,-3.015178 2.53436,-4.430181 0.07955,-1.599944 -0.318125,-2.242328 -0.688345,-3.057449 -0.4613,-0.645228 -1.252723,-1.221803 -2.002457,-1.80951 -1.220612,-0.629097 -2.359284,-1.314129 -4.474242,-1.310336 z m -0.06258,3.119846 c 0,0 2.640956,-0.07308 3.942339,0.842358 0.886489,0.623589 0.875913,1.275407 0.876075,1.279137 -0.013,1.569713 -1.182455,2.542893 -2.34663,3.213441 -1.080158,0.647294 -2.347462,1.045776 -3.692031,1.341534 -1.000512,0.181882 -2.003175,0.306154 -3.003687,0.311985 0.138786,-2.206669 0.337791,-4.407405 0.59448,-6.614073 1.115883,-0.21716 2.405793,-0.264692 3.629454,-0.374382 z M 38.478881,7.2426996 c 0,1.0332 1.931206,1.9123 2.684767,2.4013 1.038443,0.6744994 1.898655,1.4681994 2.770647,2.3168994 0.953945,0.9275 1.502719,1.6964 2.324605,2.7509 C 46.740609,15.3301 47.90384,17.5369 48.509061,17.5369 49.329678,17.5369 50,17.194 50,16.3486 50,15.2019 46.539872,11.330299 45.696382,10.509599 44.768884,9.6057996 41.074184,6.1870996 39.698788,6.1870996 c -0.545895,0 -1.219907,0.4767 -1.219907,1.0556 z M 5.542189,14.764599 c 0,0.638601 0.428617,1.055701 1.08428,1.055701 1.2573076,0 2.0101646,-1.721201 2.6563626,-2.559801 1.2514184,-1.6245 3.4692584,-3.9514994 5.3945734,-4.7777994 0.793728,-0.3395 2.792473,-1.3333 2.792473,-2.2956 0,-0.4789 -0.160798,-0.4631 -0.271155,-0.9241 -0.798219,-0.064 -0.282585,-0.263 -0.813231,-0.263 -2.210681,0 -10.843303,7.6983994 -10.843303,9.7645994 z M 41.771061,48.0585 c 1.08473,-0.7667 1.773295,-1.3411 2.705422,-2.2484 0.704035,-0.6857 4.439246,-4.5372 4.439246,-5.3117 0,-0.9522 -0.304402,-1.4514 -1.355542,-1.4514 -0.693064,0 -1.876493,2.073 -2.404374,2.6734 -1.628776,1.8526 -3.165658,3.4085 -5.267258,4.7699 -0.670895,0.4339 -2.764994,1.3512 -2.764994,2.1899 0,0.7251 0.349313,1.3198 1.2198,1.3198 0.887109,0 2.664789,-1.4019 3.4277,-1.9415 z M 12.18369,27.8299 c 0,-4.038 1.97993,-7.8198 4.099872,-9.8647 1.61504,-1.5581 1.986384,-1.8898 4.079207,-3.022901 4.590235,-2.4834 9.922603,-1.9168 14.518492,0.290001 2.671375,1.2838 4.676468,3.7435 6.061787,6.2392 3.099297,5.5816 1.370889,12.6809 -3.039839,17.0146 -2.94334,2.8925 -6.501824,3.9481 -10.400722,4.1583 C 23.184438,42.1093 19.958874,41.5529 16.758342,38.4197 13.859447,35.5823 12.18369,31.8365 12.18369,27.8299 z m 0.779526,13.4936 c 1.371935,1.3356 3.402651,3.0308 5.223156,3.8886 1.392265,0.6554 5.264264,2.0168 7.144906,2.0168 l 2.710977,0 c 10.324764,0 19.246891,-8.8418 19.246891,-18.8717 l 0,-1.5829 c 0,-2.9476 -1.187928,-5.2218 -2.016743,-7.2746 -0.778716,-1.928 -2.568061,-3.9863 -3.980753,-5.3612 -2.778263,-2.7059 -7.771706,-5.5760004 -13.249395,-5.5760004 -6.145598,0 -12.260257,2.2832004 -16.155915,7.1004004 -2.3582204,2.9161 -4.4466494,7.0194 -4.4466494,12.167 0,5.024 1.841063,9.9086 5.5235254,13.4936 z m 3.828945,7.3567 c 0,-1.5896 -1.737979,-1.8695 -2.792351,-2.5598 -2.0052,-1.3119 -3.961463,-3.0038 -5.3966514,-4.907 C 8.0222996,40.4422 7.1116296,38.6513 6.084271,38.6513 5.160455,38.6513 5,39.4192 5,40.1027 c 0,0.8004 3.8358736,4.997 4.6083636,5.5422 1.0403994,0.7352 4.7098214,3.9594 6.0994114,3.9594 0.408869,0 1.084386,-0.5385 1.084386,-0.9241 z\" /> </g></svg>"
},
"BLOCKPLUGINS": {
"rodising": "var rodiSing = new ProtoBlock('rodising');rodiSing.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodising'] = rodiSing;rodiSing.staticLabels.push(_('play'));rodiSing.staticLabels.push(_('note'));rodiSing.staticLabels.push(_('duration'));rodiSing.adjustWidthToLabel();rodiSing.twoArgBlock();rodiSing.dockTypes[1] = 'numberin';rodiSing.dockTypes[2] = 'numberin';rodiSing.defaults.push(31);rodiSing.defaults.push(250);",
"rodipixel": "var rodiPixel = new ProtoBlock('rodipixel');rodiPixel.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodipixel'] = rodiPixel;rodiPixel.staticLabels.push(_('pixel color'));rodiPixel.staticLabels.push(_('red'));rodiPixel.staticLabels.push(_('green'));rodiPixel.staticLabels.push(_('blue'));rodiPixel.adjustWidthToLabel();rodiPixel.threeArgBlock();rodiPixel.dockTypes[1] = 'numberin';rodiPixel.dockTypes[2] = 'numberin';rodiPixel.dockTypes[3] = 'numberin';rodiPixel.defaults.push(0);rodiPixel.defaults.push(0);rodiPixel.defaults.push(0);",
"rodiled": "var rodiLed = new ProtoBlock('rodiled');rodiLed.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodiled'] = rodiLed;rodiLed.staticLabels.push(_('led'));rodiLed.adjustWidthToLabel();rodiLed.oneArgBlock();rodiLed.defaults.push(1);",
"rodiblink": "var rodiBlink = new ProtoBlock('rodiblink');rodiBlink.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodiblink'] = rodiBlink;rodiBlink.staticLabels.push(_('blink'));rodiBlink.adjustWidthToLabel();rodiBlink.oneArgBlock();rodiBlink.defaults.push(1000);",
"rodisenseright": "var rodiSenseRight = new ProtoBlock('rodisenseright');rodiSenseRight.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodisenseright'] = rodiSenseRight;rodiSenseRight.staticLabels.push(_('infrared light (right)'));rodiSenseRight.adjustWidthToLabel();rodiSenseRight.parameterBlock();",
"rodisenseleft": "var rodiSenseLeft = new ProtoBlock('rodisenseleft');rodiSenseLeft.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodisenseleft'] = rodiSenseLeft;rodiSenseLeft.staticLabels.push(_('infrared light (left)'));rodiSenseLeft.adjustWidthToLabel();rodiSenseLeft.parameterBlock();",
"rodisenselight": "var rodiSenseLight = new ProtoBlock('rodisenselight');rodiSenseLight.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodisenselight'] = rodiSenseLight;rodiSenseLight.staticLabels.push(_('light intensity'));rodiSenseLight.adjustWidthToLabel();rodiSenseLight.parameterBlock();",
"rodisee": "var rodiSee = new ProtoBlock('rodisee');rodiSee.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodisee'] = rodiSee;rodiSee.staticLabels.push(_('distance'));rodiSee.adjustWidthToLabel();rodiSee.parameterBlock();",
"rodimovestatus": "var rodiMoveStatus = new ProtoBlock('rodimovestatus');rodiMoveStatus.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodimovestatus'] = rodiMoveStatus;rodiMoveStatus.staticLabels.push(_('status'));rodiMoveStatus.adjustWidthToLabel();rodiMoveStatus.parameterBlock();",
"rodimove": "var rodiMove = new ProtoBlock('rodimove');rodiMove.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodimove'] = rodiMove;rodiMove.staticLabels.push(_('move'));rodiMove.staticLabels.push(_('left'));rodiMove.staticLabels.push(_('right'));rodiMove.adjustWidthToLabel();rodiMove.twoArgBlock();rodiMove.dockTypes[1] = 'numberin';rodiMove.dockTypes[2] = 'numberin';rodiMove.defaults.push(100);rodiMove.defaults.push(100);",
"rodiright": "var rodiRight = new ProtoBlock('rodiright');rodiRight.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodiright'] = rodiRight;rodiRight.staticLabels.push(_('right'));rodiRight.adjustWidthToLabel();rodiRight.zeroArgBlock();",
"rodileft": "var rodiLeft = new ProtoBlock('rodileft');rodiLeft.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodileft'] = rodiLeft;rodiLeft.staticLabels.push(_('left'));rodiLeft.adjustWidthToLabel();rodiLeft.zeroArgBlock();",
"rodiback": "var rodiBack = new ProtoBlock('rodiback');rodiBack.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodiback'] = rodiBack;rodiBack.staticLabels.push(_('back'));rodiBack.adjustWidthToLabel();rodiBack.zeroArgBlock();",
"rodiforward": "var rodiForward = new ProtoBlock('rodiforward');rodiForward.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodiforward'] = rodiForward;rodiForward.staticLabels.push(_('forward'));rodiForward.adjustWidthToLabel();rodiForward.zeroArgBlock();",
"rodistop": "var rodiStop = new ProtoBlock('rodistop');rodiStop.palette = palettes.dict['rodi'];blocks.protoBlockDict['rodistop'] = rodiStop;rodiStop.staticLabels.push(_('stop'));rodiStop.adjustWidthToLabel();rodiStop.zeroArgBlock();"
},
"PALETTEFILLCOLORS": {
"rodi": "#6a8df6"
},
"PALETTESTROKECOLORS": {
"rodi": "#5a7de6"
}
}