mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
6 lines
2.5 KiB
JavaScript
6 lines
2.5 KiB
JavaScript
function r(a){var b=a.substring(10).split(",");k(b);g.getData(0|b[1],function(e){h[0|b[0]]+=e})}function t(a){k(a);var b=a[0];a=a.substr(3);"CONNECT OK"==a?f[b]=!0:"CONNECT FAIL"==a?f[b]=void 0:"CLOSED"==a?f[b]=void 0:"SEND OK"!=a&&"SEND FAIL"==a&&(f[b]=void 0);m=!1;return""}function l(a,b){return new Promise(function(e,c){var d="";g.cmd(a+"\r\n",b||1E3,function u(n){if(void 0===n||"ERROR"==n)c(a+": "+n?n:"TIMEOUT");else if("OK"==n)e(d);else return d+=(d?"\n":"")+n,u})})}
|
|
var g,f=[],h=" ".split(" "),m=!1,k=()=>{},v={create:function(a,b){function e(d){g.cmd(`AT+QIOPEN=${c},"TCP",${JSON.stringify(d)},${b}\r\n`,1E4,function(p){"OK"!=p&&(f[c]=void 0,m=!1)})}var c=0;if(void 0===a)return k("Server not implemented"),-1;for(;void 0!==f[c];)c++;if(6<=c)throw Error("No free sockets.");f[c]="Wait";h[c]="";m=!0;a.match(/\d+.\d+.\d+.\d+/)?e(a):(k("Lookup host "+a),g.cmd(`AT+QIDNSGIP=${JSON.stringify(a)}\r\n`,1E4,function(d){if("OK"==d)return function(p){e(p)};f[c]=void 0;m=
|
|
!1;k("Host not found")}));return c},close:function(a){f[a]&&g.cmd(`AT+QICLOSE=${a}\r\n`,1E3,function(){f[a]=void 0})},accept:function(){return-1},recv:function(a,b){if(h[a]){if(h[a].length>b){var e=h[a].substr(0,b);h[a]=h[a].substr(b)}else e=h[a],h[a]="";return e}return f[a]?"":-1},send:function(a,b){if(m||g.isBusy()||"Wait"==f[a])return 0;if(!f[a])return-1;m=!0;g.write(`AT+QISEND=${a},${b.length}\r\n`);setTimeout(function(){g.write(b)},1E3);return b.length}},q={debug:function(a){k=a||void 0===a?
|
|
function(b){print("[M35]",b)}:function(){};return{socks:f,sockData:h}},getVersion:function(a){l("AT+GMR").then(function(b){a(null,b)}).catch(function(b){a(b)})},getIP:function(a){g.cmd("AT+QILOCIP\r\n",1E3,function(b){"ERROR"==b?a(b):a(null,b)})}};exports.connect=function(a,b,e){a.removeAllListeners();q.at=g=require("AT").connect(a);require("NetworkJS").create(v);g.registerLine("+RECEIVE",r);for(a=0;6>a;a++)g.registerLine(a+", ",t);g.registerLine("+CME ERROR",function(c){console.log(c)});l("ATE0").then(function(){return l("AT+CREG?")}).then(function(c){var d=
|
|
c.split(",")[1];if(1!=d&&5!=d)throw Error("GSM not registered, "+c);k("Forcing GPRS connect");return l("AT+CGATT=1",1E4)}).then(function(){return l("AT+CGREG?")}).then(function(c){var d=c.split(",")[1];if(2==d)throw Error("GPRS still connecting, "+c);if(1!=d&&5!=d)throw Error("GPRS not registered, "+c);return l("AT+COPS?")}).then(function(c){var d=c.split(",")[2];if(!d)throw Error("No Operator, "+c);k("Operator "+d);return l("AT+QIMUX=1")}).then(function(){return l("AT+QIPROMPT=0")}).then(function(){e&&
|
|
e(null)}).catch(function(c){e&&e(c)});return q} |