UNPKG

@mixly/micropython

Version:
308 lines (287 loc) 10.5 kB
'use strict'; // console.log("hhh") pbc.assignD.get('network')['check_assign'] = function(py2block, node, targets, value) { if(value._astname != "Call" || value.func._astname != "Attribute" || value.func.value._astname != "Name"){ return false; } var moduleName = py2block.Name_str(value.func.value); var funcName = py2block.identifier(value.func.attr); if(value._astname === "Call" && moduleName === "network" && funcName === "WLAN" && value.args.length === 1) return true; return false; } pbc.assignD.get('network')['create_block'] = function(py2block, node, targets, value){ var mode = py2block.identifier(value.args[0].attr); if (mode=="STA_IF"){ mode="STA" } else if (mode=="AP_IF"){ mode="AP" } return block("network_init", node.lineno, { "mode":mode, }, { "VAR":py2block.convert(targets[0]), }); } pbc.objectFunctionD.get('active')['network'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length === 1){ var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); var reverse = py2block.Name_str(args[0]); return [block("network_open", func.lineno, { "op": reverse, }, { "VAR":objblock, }, { "inline": "true" })]; } else if (args.length === 0) { var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); return [block("network_is_active", func.lineno, { }, { "VAR":objblock, }, { "inline": "true" })]; } else { throw new Error("Incorrect number of arguments"); } } pbc.objectFunctionD.get('isconnected')['network'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 0) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); return block("network_wifi_connect", func.lineno, {}, { "VAR":objblock, }, { "inline": "true" }); } pbc.objectFunctionD.get('disconnect')['network'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 0) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); return [block("network_stop", func.lineno, {}, { "VAR":objblock, }, { "inline": "true" })]; } pbc.objectFunctionD.get('config')['network'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length == 0 & keywords.length == 2){ var objblock = py2block.convert(func.value); var essidblock = null; var channelblock = null; for (var i = 0; i < keywords.length; i++) { var param = keywords[i]; var key = py2block.identifier(param.arg); if (key === "essid") { essidblock = py2block.convert(param.value); } else if (key === "channel") { channelblock = py2block.convert(param.value); } } if (essidblock != null && channelblock != null ) { return [block("network_ap_connect", func.lineno, {}, { "VAR":objblock, "essid": essidblock, "channel": channelblock, }, { "inline": "true" })]; } }else if(args.length == 1) { var objblock = py2block.convert(func.value); var argblock = py2block.Str_value(args[0]); return block("network_get_wifi", func.lineno, { "op":argblock, }, { "VAR":objblock, }, { "inline": "true" }); }else{ throw new Error("Incorrect number of arguments"); } } pbc.objectFunctionD.get('connect')['network'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length === 2) { var objblock = py2block.convert(func.value); var idblock = py2block.convert(args[0]); var passwordblock = py2block.convert(args[1]); return [block("network_connect", func.lineno, {}, { "VAR":objblock, "id":idblock, "password":passwordblock, }, { "inline": "true" })]; } else if (args.length === 1) { var objblock = py2block.convert(func.value); var reverse = py2block.convert(args[0]); return [block("network_socket_connect", func.lineno, { }, { "address": reverse, "VAR":objblock, }, { "inline": "true" })]; } else { throw new Error("Incorrect number of arguments"); } } pbc.assignD.get('socket')['check_assign'] = function(py2block, node, targets, value) { if(value._astname != "Call" || value.func._astname != "Attribute" || value.func.value._astname != "Name"){ return false; } var moduleName = py2block.Name_str(value.func.value); var funcName = py2block.identifier(value.func.attr); if(value._astname === "Call" && moduleName === "socket" && funcName === "socket" && value.args.length <= 1) return true; return false; } pbc.assignD.get('socket')['create_block'] = function(py2block, node, targets, value){ value.args = value.args || []; if (!value.args.length){ var mode="TCP" } else { var mode = py2block.identifier(value.args[0].attr); if (mode == "SOCK_DGRAM"){ mode = "UDP" } else if (mode == "SOCK_STREAM"){ mode = "TCP" } } return block("network_socket_init", node.lineno, { "mode":mode, }, { "VAR":py2block.convert(targets[0]), }); } pbc.objectFunctionD.get('bind')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 1) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); var reverse = py2block.convert(args[0]); return [block("network_socket_bind", func.lineno, { }, { "address": reverse, "VAR":objblock, }, { "inline": "true" })]; } pbc.objectFunctionD.get('listen')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 1) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); var reverse = py2block.convert(args[0]); return [block("network_socket_listen", func.lineno, { }, { "queue": reverse, "VAR":objblock, }, { "inline": "true" })]; } pbc.objectFunctionD.get('accept')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 0) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); return block("network_socket_accept", func.lineno, {}, { "VAR":objblock, }, { "inline": "true" }); } pbc.objectFunctionD.get('recv')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 1) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); var reverse = py2block.convert(args[0]); return block("network_socket_receive", func.lineno, { }, { "size": reverse, "VAR":objblock, }, { "inline": "true" }); } pbc.objectFunctionD.get('send')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 1) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); var reverse = py2block.convert(args[0]); return [block("network_socket_send", func.lineno, { }, { "content": reverse, "VAR":objblock, }, { "inline": "true" })]; } pbc.objectFunctionD.get('recvfrom')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 1) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); var reverse = py2block.convert(args[0]); return block("network_socket_receive_from", func.lineno, { }, { "size": reverse, "VAR":objblock, }, { "inline": "true" }); } pbc.objectFunctionD.get('sendto')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 2) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); // var lightblock = py2block.identifier(args[0].n); var reverse = py2block.convert(args[0]); var address = py2block.convert(args[1]); return [block("network_socket_send_to", func.lineno, { }, { "content": reverse, "VAR":objblock, "address":address, }, { "inline": "true" })]; } pbc.objectFunctionD.get('close')['socket'] = function (py2block, func, args, keywords, starargs, kwargs, node) { if (args.length != 0) { throw new Error("Incorrect number of arguments"); } var objblock = py2block.convert(func.value); return [block("network_socket_close", func.lineno, {}, { "VAR":objblock, }, { "inline": "true" })]; }