>trace(Serial4) #2109[r5,l1] Object { #2110[r1,l2] Name String [2 blocks] "__proto__" #2106[r2,l1] Object { #2107[r1,l2] Name String [2 blocks] "constructor" #2097[r2,l1] NativeFunction 0x26f5d (1) { #2104[r1,l2] Name String [2 blocks] "prototype" #2106[r2,l2] ... } } #2124[r1,l2] Name String [2 blocks] "_baudrate" #2123[r1,l1] Integer 115200 #2126[r1,l2] Name String [2 blocks] "_options" #2118[r1,l1] Object { #2119[r1,l2] Name String [1 blocks] "tx" #2120[r1,l1] Pin 42 #2121[r1,l2] Name String [1 blocks] "rx" #2122[r1,l1] Pin 43 } #988[r1,l2] Name String [2 blocks] "#ondata" #354[r1,l3] Function { #824[r1,l2] Name Param "data" undefined #990[r1,l2] Name String [1 blocks] "ÿcod" #823[r1,l1] String [104 blocks] "{\n if (gps.enabled) {\n gps.chrono.start();\n var sots = false;\n var noTimeFix= isNaN(gps['hhmmss.ss']);\n var noPosFix= (gps.status!==\"A\");\n gps.line += data;\n var idx = gps.line.indexOf(\"\\n\");\n while (idx>=0) {\n var line = gps.line.substr(0, idx);\n gps.line = gps.line.substr(idx+1);\n if (gps.log) console.log(\"Handling:\"+line);\n try {\n var n=nmea_checksum(line);\n gps[n[0] + ((n[0]===\"PUBX\") ? n[1] : \"\")](n);\n sots = true;\n if (noTimeFix != isNaN(gps['hhmmss.ss'])) {\n console.log('Time fix from serial at '+getTime());\n gps.emit('TimeFix',n);\n noTimeFix= isNaN(gps['hhmmss.ss']);\n }\n if (noPosFix != (gps.status!==\"A\")) {\n console.log('GPS position fix from serial at '+getTime());\n gps.emit('GPSFix',n);\n noPosFix= (gps.status!==\"A\");\n }\n gps.chrono.leap();\n } catch(x) {\n if (gps.debug) console.log(\"Failed \"+x+\" to handle:\"+line);\n //throw x;\n }\n idx = gps.line.indexOf(\"\\n\");\n }\n if (sots) { gps.emit('gpsdata',getTime()); }\n gps.chrono.stop();\n } else { gps.line=\"\"; }\n }" #989[r1,l2] Name String [1 blocks] "ÿsco" #28[r3,l1] Function { #27[r1,l2] Name Param "serial" #2109[r5,l2] ... #264[r1,l2] Name Param "handling" #23[r1,l1] Array(16) [ #2248[r1,l2] Name Integer 0 #18[r1,l1] String [10 blocks] "GPGGA,hhmmss.ss,latitude,North,longitude,East,FixStatusGGA,NoSV,HDOP,mslAlt,m,Altref,m,DiffAge,DiffStation" #2226[r1,l2] Name Integer 1 #2247[r1,l1] String [8 blocks] "GPRMC,hhmmss.ss,status,latitude,North,longitude,East,sogKn,cog,ddmmyy,mv,mvE,mode" #2221[r1,l2] Name Integer 2 #2225[r1,l1] String [4 blocks] "GPZDA,hhmmss.ss,day,month,year,ltzh,ltzn" #2214[r1,l2] Name Integer 3 #2220[r1,l1] String [6 blocks] "GPGLL,latitude,North,longitude,East,hhmmss.ss,status,Mode" #2209[r1,l2] Name Integer 4 #2213[r1,l1] String [4 blocks] "GPGSV,NoMsg,MsgNo,NoSv,{,sv,elv,az,cno}" #2184[r1,l2] Name Integer 5 #2208[r1,l1] String [9 blocks] "GPGSA,Smode,FixStatusGSA,sv1,sv2,sv3,sv4,sv5,sv6,sv7,sv8,sv9,sv10,sv11,sv12,PDOP,HDOP,VDOP" #2178[r1,l2] Name Integer 6 #2183[r1,l1] String [5 blocks] "GPVTG,cogt,T,cogm,Mag,sogKn,KNots,kph,KphUnit,mode" #2173[r1,l2] Name Integer 7 #2177[r1,l1] String [4 blocks] "GPGRS,hhmmss.ss,mode{,residual}" #2155[r1,l2] Name Integer 8 #2172[r1,l1] String [6 blocks] "GPGBS,hhmmss.ss,std_lat,std_lon,std_alt,svid,prob,bias,stddev" #2141[r1,l2] Name Integer 9 #2151[r1,l1] String [7 blocks] "GPGST,hhmmss.ss,range_rms,std_major,std_minor,hdg,std_lat,std_long,std_alt" #2134[r1,l2] Name Integer 10 #2140[r1,l1] String [6 blocks] "GPDTM,LLL,LSD,latoffset,Noffset,longoffset,Eoffset,altoffset,RRR" #236[r1,l2] Name Integer 11 #2133[r1,l1] String [11 blocks] "PUBX,00,hhmmss.ss,latitude,North,longitude,East,AltRef,NavStat,Hacc,Vacc,kph,cog,Vvel,ageC,HDOP,VDOP,TDOP,GU,RU,DR" #231[r1,l2] Name Integer 12 #235[r1,l1] String [4 blocks] "PUBX,03,GT{,SVID,s,AZM,EL,SN,LK}" #223[r1,l2] Name Integer 13 #230[r1,l1] String [6 blocks] "PUBX,04,hhmmss.ss,ddmmyy,UTC_TOW,UTC_WNO,LEAP_SEC,Clk_B,Clk_D,PG" #253[r1,l2] Name Integer 14 #222[r1,l1] String [5 blocks] "PUBX,40,msgId,rddc,rus1,rus2,rusb,rspi,reserved" #265[r1,l2] Name Integer 15 #252[r1,l1] String [3 blocks] "GPTXT,xx,yy,zz,ascii_data" ] #320[r1,l2] Name Param "chrono" #262[r2,l1] Object { #261[r1,l2] Name String [2 blocks] "__proto__" #54[r2,l1] Object { #53[r1,l2] Name String [2 blocks] "constructor" #25[r2,l1] Function { #41[r1,l2] Name String [1 blocks] "ÿcod" #26[r1,l1] String [3 blocks] "{\n this.reset();\n}" #51[r1,l2] Name String [2 blocks] "prototype" #54[r2,l2] ... } #49[r1,l2] Name String [2 blocks] "reset" #47[r1,l1] Function { #74[r1,l2] Name String [1 blocks] "ÿcod" #46[r1,l1] String [10 blocks] "{\n this.nleaps=0;\n this.duration=0;\n this.notMeasuredStart=getTime();\n this.durationNotMeasured=0;\n}" } #86[r1,l2] Name String [2 blocks] "start" #84[r1,l1] Function { #100[r1,l2] Name String [1 blocks] "ÿcod" #83[r1,l1] String [9 blocks] "{\n this.startTime= getTime();\n this.durationNotMeasured+=this.startTime-this.notMeasuredStart;\n}" } #106[r1,l2] Name String [1 blocks] "leap" #105[r1,l1] Function { #113[r1,l2] Name String [1 blocks] "ÿcod" #104[r1,l1] String [3 blocks] "{\n this.nleaps++;\n}" } #125[r1,l2] Name String [1 blocks] "stop" #124[r1,l1] Function { #138[r1,l2] Name String [1 blocks] "ÿcod" #123[r1,l1] String [9 blocks] "{\n this.notMeasuredStart=getTime();\n this.duration+=this.notMeasuredStart-this.startTime;\n}" } #146[r1,l2] Name String [2 blocks] "meanLeap" #144[r1,l1] Function { #155[r1,l2] Name String [1 blocks] "ÿcod" #143[r1,l1] String [4 blocks] "{\n return this.duration/this.nleaps;\n}" } #175[r1,l2] Name String [1 blocks] "info" #174[r1,l1] Function { #196[r1,l2] Name String [1 blocks] "ÿcod" #173[r1,l1] String [17 blocks] "{\n console.log( this.nleaps+\" leaps (mean time \"+this.meanLeap()+\" s). Measured duration/Total duration \"+(100*this.duration/(this.duration+this.durationNotMeasured)).toFixed(2)+\"%\");\n}" } #219[r1,l2] Name String [2 blocks] "toString" #217[r1,l1] Function { #247[r1,l2] Name String [1 blocks] "ÿcod" #216[r1,l1] String [21 blocks] "{\n return \"Chronometer analysed \"+this.nleaps+\" leaps with a duration of \"+this.duration+\" (mean leap time \"+this.meanLeap()+\" s). Measured time/Total time \"+(100*this.duration/(this.duration+this.durationNotMeasured)).toFixed(2)+\"%\";\n}" } } #327[r1,l2] Name String [2 blocks] "nleaps" #1467[r1,l1] Integer 76114 #329[r1,l2] Name String [2 blocks] "duration" #1660[r1,l1] Double 1404.92071819305 #331[r1,l2] Name String [2 blocks] "notMeasuredStart" #1453[r1,l1] Double 1442595816.00444412231 #333[r1,l2] Name String [3 blocks] "durationNotMeasured" #1408[r1,l1] Double 24096.32186126708 #1120[r1,l2] Name String [2 blocks] "startTime" #1642[r1,l1] Double 1442595815.99214839935 } #389[r1,l2] Name String [2 blocks] "return" undefined #387[r1,l2] Name String [1 blocks] "gps" #345[r3,l1] Object { #346[r1,l2] Name String [2 blocks] "serial" #2109[r5,l2] ... #452[r1,l2] Name String [2 blocks] "GPGGA" #484[r1,l1] Function { #461[r1,l2] Name Param "d" undefined #474[r1,l2] Name String [1 blocks] "ÿcod" #462[r1,l1] String [12 blocks] "{this['hhmmss.ss']=secn(d[1]);this['latitude']=lln(d[2],d[3],'S');this['longitude']=lln(d[4],d[5],'E');this['mslAlt']=Number(d[9])}" #500[r1,l2] Name String [1 blocks] "ÿsco" #1[r5,l2] Object { #2[r1,l2] Name String [1 blocks] "ÿ" #3[r1,l2] Object { #6[r1,l2] Name String [2 blocks] "timers" #8[r2,l1] Array(4) [ #2228[r1,l2] Name Integer 3 #629[r1,l1] Object { #596[r1,l2] Name String [1 blocks] "time" #1638[r1,l1] Integer 1116109 #1419[r1,l2] Name String [2 blocks] "interval" #456[r1,l1] Integer 10485760 #5[r1,l2] Name String [2 blocks] "callback" #1353[r1,l1] Function { #1324[r1,l2] Name String [1 blocks] "ÿcod" #690[r1,l1] String [5 blocks] "{\n if (process.memory().free<500) debugger;\n}" } } ] #9[r1,l2] Name String [2 blocks] "watches" #11[r2,l1] Array(0) [ ] #12[r1,l2] Name String [2 blocks] "history" #16[r1,l1] Array(115) [ #2057[r1,l2] Name Integer 37 #2062[r1,l1] String [6 blocks] "var gps = {connect: connect}; // drop line for module" #2070[r1,l2] Name Integer 38 #2071[r1,l1] String [4 blocks] "// ----- end (modified) GPS module code" #2068[r1,l2] Name Integer 39 #2075[r1,l1] String [3 blocks] "// ===== GPS =====" #2078[r1,l2] Name Integer 40 #2079[r1,l1] String [3 blocks] "// ----- gpsSetup" #2086[r1,l2] Name Integer 41 #2087[r1,l1] String [7 blocks] "// var gps = require(\"GPS\"); // uncomment when using GPS code as module" #2083[r1,l2] Name Integer 42 #2082[r1,l1] String [4 blocks] "setSleepIndicator(undefined);" #2084[r1,l2] Name Integer 43 #2085[r1,l1] String [2 blocks] "setDeepSleep(1);" #2114[r1,l2] Name Integer 44 #2100[r1,l1] String [4 blocks] "Serial4.setup(115200,{tx:C10,rx:C11});" #2060[r1,l2] Name Integer 45 #31[r1,l1] String [94 blocks] "gps = gps.connect(Serial4, [\n \"GPGGA,hhmmss.ss,latitude,North,longitude,East,FixStatusGGA,NoSV,HDOP,mslAlt,m,Altref,m,DiffAge,DiffStation\"\n ,\"GPRMC,hhmmss.ss,status,latitude,North,longitude,East,sogKn,cog,ddmmyy,mv,mvE,mode\"\n ,\"GPZDA,hhmmss.ss,day,month,year,ltzh,ltzn\"\n ,\"GPGLL,latitude,North,longitude,East,hhmmss.ss,status,Mode\"\n ,\"GPGSV,NoMsg,MsgNo,NoSv,{,sv,elv,az,cno}\"\n ,\"GPGSA,Smode,FixStatusGSA,sv1,sv2,sv3,sv4,sv5,sv6,sv7,sv8,sv9,sv10,sv11,sv12,PDOP,HDOP,VDOP\"\n ,\"GPVTG,cogt,T,cogm,Mag,sogKn,KNots,kph,KphUnit,mode\"\n ,\"GPGRS,hhmmss.ss,mode{,residual}\"\n ,\"GPGBS,hhmmss.ss,std_lat,std_lon,std_alt,svid,prob,bias,stddev\"\n , \"GPGST,hhmmss.ss,range_rms,std_major,std_minor,hdg,std_lat,std_long,std_alt\"\n ,\"GPDTM,LLL,LSD,latoffset,Noffset,longoffset,Eoffset,altoffset,RRR\"\n , \"PUBX,00,hhmmss.ss,latitude,North,longitude,East,AltRef,NavStat,Hacc,Vacc,kph,cog,Vvel,ageC,HDOP,VDOP,TDOP,GU,RU,DR\"\n ,\"PUBX,03,GT{,SVID,s,AZM,EL,SN,LK}\"\n ,\"PUBX,04,hhmmss.ss,ddmmyy,UTC_TOW,UTC_WNO,LEAP_SEC,Clk_B,Clk_D,PG\"\n ,\"PUBX,40,msgId,rddc,rus1,rus2,rusb,rspi,reserved\"\n ,\"GPTXT,xx,yy,zz,ascii_data\"\n], new Chrono());" #1044[r1,l2] Name Integer 46 #1039[r1,l1] String [5 blocks] "// now we explicitly keep only GPGGA + GPRMC + GPGBS" #2233[r1,l2] Name Integer 47 #684[r1,l1] String [19 blocks] "(function simplify_gps(lstUselessNMEA) {\n start_stop_nmea(gps.serial,lstUselessNMEA,0,1);\n lstUselessNMEA.forEach(function (s) { delete this[s]; }, gps);\n}(['GPZDA','GPGLL','GPVTG','GPGRS','GPGST','PUBX04','PUBX00']));" #2059[r1,l2] Name Integer 48 #1003[r1,l1] String [8 blocks] "// store datas on a time based array on the sdcard with a time based tree of directories" #765[r1,l2] Name Integer 49 #1043[r1,l1] String [3 blocks] "var seconds = 240;" #734[r1,l2] Name Integer 60 #782[r1,l1] String [2 blocks] "tfTimeout" #2236[r1,l2] Name Integer 61 #2188[r1,l1] String [8 blocks] "myInterval=setInterval(function(){\n if (process.memory().free<500) debugger;\n},10000);" #356[r1,l2] Name Integer 67 #688[r1,l1] String [2 blocks] "gps.log=true;" #727[r1,l2] Name Integer 68 #562[r1,l1] String [2 blocks] "gps.log=false;" #779[r1,l2] Name Integer 72 #626[r1,l1] String [2 blocks] "debugger;" #458[r1,l2] Name Integer 73 #495[r1,l1] String [1 blocks] "q" #783[r1,l2] Name Integer 81 #569[r1,l1] String [8 blocks] " function show(d) {\n for (var i in d) print(i+\" : \"+E.getSizeOf(d[i]))\n }" #1155[r1,l2] Name Integer 82 #780[r1,l1] String [4 blocks] " console.log(\"--------- gps\");" #1388[r1,l2] Name Integer 83 #568[r1,l1] String [2 blocks] " show(gps);" #2166[r1,l2] Name Integer 84 #2205[r1,l1] String [4 blocks] " console.log(\"--------- Serial4\");" #583[r1,l2] Name Integer 85 #375[r1,l1] String [3 blocks] " show(Serial4);" #2193[r1,l2] Name Integer 86 #1349[r1,l1] String [3 blocks] "show(Serial4.#ondata)" #2232[r1,l2] Name Integer 87 #2192[r1,l1] String [3 blocks] "show(Serial4.'#ondata')" #1359[r1,l2] Name Integer 88 #362[r1,l1] String [3 blocks] "show(Serial4['#ondata'])" #1383[r1,l2] Name Integer 89 #496[r1,l1] String [3 blocks] "show(Serial4[#ondata])" #2165[r1,l2] Name Integer 90 #2195[r1,l1] String [3 blocks] "show(gps[#onGPSFix])" #1421[r1,l2] Name Integer 91 #257[r1,l1] String [3 blocks] "show(gps[onGPSFix])" #2203[r1,l2] Name Integer 92 #784[r1,l1] String [3 blocks] "show(gps['onGPSFix'])" #1389[r1,l2] Name Integer 93 #763[r1,l1] String [3 blocks] "show(gps['#onGPSFix'])" #630[r1,l2] Name Integer 95 #623[r1,l1] String [3 blocks] "gps.chrono.info()" #689[r1,l2] Name Integer 96 #609[r1,l1] String [2 blocks] "trace(Serial4)" #1455[r1,l2] Name Integer 104 #1648[r1,l1] String [2 blocks] "echo(0);" #1351[r1,l2] Name Integer 105 #1468[r1,l1] String [6 blocks] "console.log(\"<<\"+\"<<<\"+JSON.stringify(process.env)+\">>>\"+\">>\");" #2152[r1,l2] Name Integer 106 #1172[r1,l1] String [2 blocks] "echo(1);" #372[r1,l2] Name Integer 107 #1412[r1,l1] String [3 blocks] "process.memory();" #465[r1,l2] Name Integer 108 #1641[r1,l1] String [6 blocks] "for (var i in global) print(i+\" : \"+E.getSizeOf(global[i]))" #1422[r1,l2] Name Integer 109 #1343[r1,l1] String [1 blocks] "gps" #384[r1,l2] Name Integer 111 #1352[r1,l1] String [2 blocks] "Serial4" #759[r1,l2] Name Integer 112 #2049[r1,l1] String [2 blocks] "dump()" #334[r1,l2] Name Integer 113 #1323[r1,l1] String [2 blocks] "gps.log=true" #390[r1,l2] Name Integer 114 #1682[r1,l1] String [2 blocks] "gps.debug=true" ] } #33[r1,l2] Name String [2 blocks] "Chrono" #25[r2,l1] ... #324[r1,l2] Name String [2 blocks] "ddmmyy" #314[r1,l1] NativeFunction 0x1 (9) { #248[r1,l2] Name String [1 blocks] "ÿcod" #266[r1,l1] FlatString [35 blocks] "-éðO\x05FwH°ßø܁xDÀGnO\x04\x04 ¸GF\x02 ¸GrK‚F{DÍø0\r\x03“\x19F(F\x00\"fK˜G\x02&\x00!\f«*F\x00–\x02“\x01“Nö¥\x04\x0BFƒF G`L\x05XF GPF GHF G\x05˜]K˜G„F+\"aFÍø,ÀZK\x04˜˜Gßøx‘\x06ùDHFÀG\a\a™+\"TK\x06˜˜G\b0F¸G‚F0F¸GÍø0 ƒF\r\x03™(F\x00\"IK˜G\x02›\x00!Nö¥\f*F\x00–\x01“\n\x0BFàG\t\n˜ GXF GPF G\t˜AK˜G\n\n™+\"@K\b˜˜G‚FHFÀGƒF+\"YF;KPF˜G€F\x00 ¸GF0F¸G\x03™\aF\rÍø0(F\x00\"0K˜G\x02›\x00!*F\x00–\x01“\x03\x0BFNö¥\x05¨G\x05F\x03˜ G8F GHF G(F(K˜G\aF+\"9F'K@F˜G\x06F8F G(F G@F GXF GPF G\n˜ G\t˜ G\b˜ G\a˜ G\x06˜ GÝø,À`F G\x05˜ G\x04˜ G\x1DH\f–\x17KxD˜G\x13K\aF˜G\x05F8F G\x18I(FyD\x00\"\fK˜G\x01#\x00“\x02›\x00!*F\x01“Nö¥\a\x0BF€F¸G\aF@F G(F G0F G8F\x0F°½èð\tè\x02\x00í\x02\x00óy\x01\x00íè\x02\x00Ð\x02\x00}ž\x02\x00ê\x01\x00\x00\rî\x02\x00×\x01\x00\x00†\x01\x00\x00€\x00\x00\x00q\x00\x00\x0020\x00substr\x00-\x00Date\x00parse\x00\x00" } #321[r1,l2] Name String [1 blocks] "E" #322[r1,l1] NativeFunction 0x26f99 (1) { } #395[r1,l2] Name String [1 blocks] "secn" #312[r1,l1] NativeFunction 0x1 (9) { #249[r1,l2] Name String [1 blocks] "ÿcod" #397[r1,l1] FlatString [39 blocks] "-éðO…M°\aF\x00 ¨G€F\x02 ¨G‡K‚F{DÍø(€\x0B\x03“\x19F8F\x00\"}K˜G\x02&\x00!\n«:F\x00–\x02“\x01“Nö¥\x04\x0BFƒF GwLFXF GPF G@F G\n ¨Gßø܁‚FøDÍø(\x0BpK@F˜GoKƒF˜G\x02›\x00!\nF\x00–\x01“\x05\x0BFNö¥\fàGÝø\x14À\x04`F GXF GPF GHF GcK\x04˜˜G\x05Oôa`¨G„F*\"aFÍø$À^K\x05˜˜G\x060F¨G‚F0F¨GÍø( ƒF\x0B\x03™8F\x00\"RK˜G\x02›\x00!:FNö¥\f\x00–\x01“\a\x0BFàGF\a˜ GXF GPF G\n ¨GÍø(‚F\x0BHK@F˜GGK€F˜G\x02›\x00!Nö¥\f\nF\x00–\x01“\x0BFƒFàG\aXF G@F GPF GHF GK˜GØø\x000F\x02˜˜GÝø\x1CÀ€FaF\b\x00\"0F5K˜G\x00!\x01#2Fè(\x00\x0BF‚FØG\x06FPF G@F G9H\b–1KxD˜G-K€F˜G\x00!\x01#\nFè(\x00\x0BF‚FØG\x05FPF G@F G0F G(F#K˜G#K€F< ˜G‚F/\"QF!K@F˜GƒF+\"YF\x1EKHF˜G\x06FXF GPF G@F G(F GHF G8F G\x06™@ò\x05\x12\x14K\x05˜˜G\x15K\aF˜G\x05F8F Gm±\x0EK\x00 ˜G1F-\"\rK\aF˜G\x05F8F G0F G\x00à5F\x02˜ G(F\x0B°½èð\x00¿\rî\x02\x00í\x02\x00óy\x01\x00íè\x02\x00\tè\x02\x00Ð\x02\x00}ž\x02\x00Ïs\x01\x00\f\x02\x00\x00\x00\x02\x00\x00È\x01\x00\x00œ\x01\x00\x00_\x01\x00\x00ü\x00\x00\x00.\x00indexOf\x00substr\x00parseInt\x00parseFloat\x00\x00\x00\x00\x0Bz\x01\x00" } #643[r1,l2] Name String [1 blocks] "cks7" #650[r1,l1] NativeFunction 0x1 (9) { #305[r1,l2] Name String [1 blocks] "ÿcod" #651[r1,l1] FlatString [25 blocks] "-éðOF‰°ßø0¡\x00 ÐG\x06F\x00 ÐGJI\aFßø(±yD\x01\"HFØGBM\x05¨G\x03F|\"\x19F\x04“ßø\x108FÀG=I\x03ˆG\x03š=0) {\n try {\n p.push({ field: c, position: i});\n } catch (e) {\n console.log(e);\n console.log(p,c,i);\n }\n }\n } catch(x) { console.log(x); }\n return p;\n}" } #1187[r1,l2] Name String [2 blocks] "getFieldsPos" #1185[r1,l1] Function { #1184[r1,l2] Name Param "n" undefined #1197[r1,l2] Name String [1 blocks] "ÿcod" #1183[r1,l1] String [4 blocks] "{\n this[n.field]=n.position;\n}" } #1317[r1,l2] Name String [2 blocks] "parseHandlers" #1315[r1,l1] Function { #1314[r1,l2] Name Param "handling" undefined #1312[r1,l2] Name Param "serial" undefined #1310[r1,l2] Name Param "fieldsOfInterest" undefined #1443[r1,l2] Name String [1 blocks] "ÿcod" #1308[r1,l1] String [115 blocks] "{\n var handlers = {};\n handlers.serial=serial;\n var discarded=[];\n var fieldsFoundInNMEA=[];\n for (var k in handling) {\n var template=handling[k].split(',');\n if (template[0]===\"PUBX\") { // special case: we have to add to s[1] field\n template[0]=template[0]+template[1];\n template[1]=\"NumUBX\";\n }\n if (handlers[template[0]]) {\n console.log(\"ERROR Handler of \"+handling[k][0]+\" defined twice with sumindex \"+template[0]+\"...\");\n }\n else { // now extract particular fields of interest\n var posi=template.reduce(posFieldsOfInterest ,[]);\n if (posi.length>0) {\n // now note which field is found in which nmea sentence and at which position by field order\n //var fieldsFoundInTemplate={};\n //posi.forEach(getFieldsPos ,fieldsFoundInTemplate);\n posi=posi.map(codeFieldOfInterest).join(';');\n handlers[template[0]]= eval(\"(function(d) {\"+posi+\"})\"); // function to handle just what we need\n console.log('Handler of '+template[0]+' defined as '+handlers[template[0]]);\n } else\n discarded.push(template[0]);\n }\n }\n // now we now we have just the messages containing pertinent data\n // however, we could have redundant messages and need to identify them all\n var retained=[]; // so far nithing retained\n\n start_stop_nmea(serial,discarded,0,1);\n return handlers;\n}" } #1446[r1,l2] Name String [2 blocks] "estimate_dist" #1460[r1,l1] Function { #1461[r1,l2] Name Param "lat1" undefined #1462[r1,l2] Name Param "long1" undefined #1464[r1,l2] Name Param "lat2" undefined #1465[r1,l2] Name Param "long2" undefined #1551[r1,l2] Name String [1 blocks] "ÿcod" #1489[r1,l1] String [16 blocks] "{\n var R=6378137.0;\n var dera = Math.PI/180.0;\n var x = dera*(lat2-lat1) * Math.cos(dera*(long1+long2)/2);\n var y = dera*(long2-long1);\n return Math.sqrt(x*x + y*y) * R;\n}" } #1554[r1,l2] Name String [2 blocks] "tfTimeout"= int 2 #1625[r1,l2] Name String [1 blocks] "tf" #1624[r2,l1] ... #1871[r1,l2] Name String [2 blocks] "connect" #1869[r1,l1] Function { #1868[r1,l2] Name Param "serial" undefined #1866[r1,l2] Name Param "handling" undefined #1864[r1,l2] Name Param "chrono" undefined #2055[r1,l2] Name String [1 blocks] "ÿcod" #1862[r1,l1] String [174 blocks] "{ // replace with next line for module\n// exports.connect = function(serial, handling) {\n var gps = parseHandlers(handling,serial);\n gps.line=\"\";\n gps.enabled=true;\n gps.log=false;\n gps.debug=false;\n gps.chrono=chrono;\n gps.lagTime = 0;\n gps.status=\"?\";\n gps['hhmmss.ss']=NaN;\n // user callback for gps position fix\n gps.on('GPSFix', function(d){\n console.log(\"We have a GPS position fix!\");\n });\n // user callback for gps data received and analysed\n gps.on('gpsdata', function(d) {\n try {\n gps.lagTime=getTime()-d;\n if (gps.log) {\n console.log('Data received from GPS, receive treatement ended at '+d+\" and user's treatement starting after \",gps.lagTime+' s');\n }\n } catch(x) {\n console.log(x);\n }\n });\n gps.on('TimeFix',tf);\n serial.on('data', function(data) {\n if (gps.enabled) {\n gps.chrono.start();\n var sots = false;\n var noTimeFix= isNaN(gps['hhmmss.ss']);\n var noPosFix= (gps.status!==\"A\");\n gps.line += data;\n var idx = gps.line.indexOf(\"\\n\");\n while (idx>=0) {\n var line = gps.line.substr(0, idx);\n gps.line = gps.line.substr(idx+1);\n if (gps.log) console.log(\"Handling:\"+line);\n try {\n var n=nmea_checksum(line);\n gps[n[0] + ((n[0]===\"PUBX\") ? n[1] : \"\")](n);\n sots = true;\n if (noTimeFix != isNaN(gps['hhmmss.ss'])) {\n console.log('Time fix from serial at '+getTime());\n gps.emit('TimeFix',n);\n noTimeFix= isNaN(gps['hhmmss.ss']);\n }\n if (noPosFix != (gps.status!==\"A\")) {\n console.log('GPS position fix from serial at '+getTime());\n gps.emit('GPSFix',n);\n noPosFix= (gps.status!==\"A\");\n }\n gps.chrono.leap();\n } catch(x) {\n if (gps.debug) console.log(\"Failed \"+x+\" to handle:\"+line);\n //throw x;\n }\n idx = gps.line.indexOf(\"\\n\");\n }\n if (sots) { gps.emit('gpsdata',getTime()); }\n gps.chrono.stop();\n } else { gps.line=\"\"; }\n });\n return gps;\n}" } #2061[r1,l4] Name String [1 blocks] "gps" #345[r3,l2] ... #2099[r1,l2] Name String [2 blocks] "Serial" #2097[r2,l1] ... #2112[r1,l2] Name String [2 blocks] "Serial4" #2109[r5,l2] ... #485[r1,l2] Name String [2 blocks] "console" #481[r1,l1] NativeFunction 0x26f4b (1) { } #1095[r1,l2] Name String [2 blocks] "Number" #1100[r1,l1] NativeFunction 0x218b1 (17) { } #1426[r1,l2] Name String [1 blocks] "Date" #1430[r2,l1] NativeFunction 0x2a719 (17) { #2204[r1,l2] Name String [2 blocks] "prototype" #2239[r1,l1] Object { #2237[r1,l2] Name String [2 blocks] "constructor" #1430[r2,l2] ... } } #457[r1,l2] Name String [2 blocks] "Error" #1094[r2,l1] NativeFunction 0xf761 (9) { #361[r1,l2] Name String [2 blocks] "prototype" #451[r1,l1] Object { #776[r1,l2] Name String [2 blocks] "constructor" #1094[r2,l2] ... } } #2150[r1,l2] Name String [2 blocks] "seconds"= int 240 #1033[r1,l4] Name String [1 blocks] "i" #1390[r1,l1] String [1 blocks] "JSON" #2159[r1,l2] Name String [2 blocks] "process" #723[r1,l1] NativeFunction 0x26f27 (1) { } #588[r1,l2] Name String [2 blocks] "myInterval"= int 3 #440[r1,l2] Name String [2 blocks] "ReferenceError" #318[r2,l1] NativeFunction 0xf731 (9) { #502[r1,l2] Name String [2 blocks] "prototype" #489[r1,l1] Object { #639[r1,l2] Name String [2 blocks] "constructor" #318[r2,l2] ... } } #1087[r1,l2] Name String [1 blocks] "show" #1452[r1,l1] Function { #1154[r1,l8] Name Param "d" undefined #2157[r1,l2] Name String [1 blocks] "ÿcod" #486[r1,l1] String [6 blocks] "{\n for (var i in d) print(i+\" : \"+E.getSizeOf(d[i]))\n }" } #566[r1,l2] Name String [2 blocks] "SyntaxError" #1163[r2,l1] NativeFunction 0xf755 (9) { #499[r1,l2] Name String [2 blocks] "prototype" #1368[r1,l1] Object { #570[r1,l2] Name String [2 blocks] "constructor" #1163[r2,l2] ... } } #1494[r1,l2] Name String [1 blocks] "JSON" #1647[r1,l1] NativeFunction 0x26f6f (1) { } } } #449[r1,l2] Name String [2 blocks] "GPRMC" #439[r1,l1] Function { #624[r1,l2] Name Param "d" undefined #444[r1,l2] Name String [1 blocks] "ÿcod" #374[r1,l1] String [16 blocks] "{this['hhmmss.ss']=secn(d[1]);this['status']=d[2];this['latitude']=lln(d[3],d[4],'S');this['longitude']=lln(d[5],d[6],'E');this['sogKn']=Number(d[7]);this['ddmmyy']=ddmmyy(d[9])}" #581[r1,l2] Name String [1 blocks] "ÿsco" #1[r5,l2] Object { #2[r1,l2] Name String [1 blocks] "ÿ" #3[r1,l2] Object { #6[r1,l2] Name String [2 blocks] "timers" #8[r2,l1] Array(4) [ #2228[r1,l2] Name Integer 3 #629[r1,l1] Object { #596[r1,l2] Name String [1 blocks] "time" #1638[r1,l1] Integer 1116109 #1419[r1,l2] Name String [2 blocks] "interval" #456[r1,l1] Integer 10485760 #5[r1,l2] Name String [2 blocks] "callback" #1353[r1,l1] Function { #1324[r1,l2] Name String [1 blocks] "ÿcod" #690[r1,l1] String [5 blocks] "{\n if (process.memory().free<500) debugger;\n}" } } ] #9[r1,l2] Name String [2 blocks] "watches" #11[r2,l1] Array(0) [ ] #12[r1,l2] Name String [2 blocks] "history" #16[r1,l1] Array(115) [ #2057[r1,l2] Name Integer 37 #2062[r1,l1] String [6 blocks] "var gps = {connect: connect}; // drop line for module" #2070[r1,l2] Name Integer 38 #2071[r1,l1] String [4 blocks] "// ----- end (modified) GPS module code" #2068[r1,l2] Name Integer 39 #2075[r1,l1] String [3 blocks] "// ===== GPS =====" #2078[r1,l2] Name Integer 40 #2079[r1,l1] String [3 blocks] "// ----- gpsSetup" #2086[r1,l2] Name Integer 41 #2087[r1,l1] String [7 blocks] "// var gps = require(\"GPS\"); // uncomment when using GPS code as module" #2083[r1,l2] Name Integer 42 #2082[r1,l1] String [4 blocks] "setSleepIndicator(undefined);" #2084[r1,l2] Name Integer 43 #2085[r1,l1] String [2 blocks] "setDeepSleep(1);" #2114[r1,l2] Name Integer 44 #2100[r1,l1] String [4 blocks] "Serial4.setup(115200,{tx:C10,rx:C11});" #2060[r1,l2] Name Integer 45 #31[r1,l1] String [94 blocks] "gps = gps.connect(Serial4, [\n \"GPGGA,hhmmss.ss,latitude,North,longitude,East,FixStatusGGA,NoSV,HDOP,mslAlt,m,Altref,m,DiffAge,DiffStation\"\n ,\"GPRMC,hhmmss.ss,status,latitude,North,longitude,East,sogKn,cog,ddmmyy,mv,mvE,mode\"\n ,\"GPZDA,hhmmss.ss,day,month,year,ltzh,ltzn\"\n ,\"GPGLL,latitude,North,longitude,East,hhmmss.ss,status,Mode\"\n ,\"GPGSV,NoMsg,MsgNo,NoSv,{,sv,elv,az,cno}\"\n ,\"GPGSA,Smode,FixStatusGSA,sv1,sv2,sv3,sv4,sv5,sv6,sv7,sv8,sv9,sv10,sv11,sv12,PDOP,HDOP,VDOP\"\n ,\"GPVTG,cogt,T,cogm,Mag,sogKn,KNots,kph,KphUnit,mode\"\n ,\"GPGRS,hhmmss.ss,mode{,residual}\"\n ,\"GPGBS,hhmmss.ss,std_lat,std_lon,std_alt,svid,prob,bias,stddev\"\n , \"GPGST,hhmmss.ss,range_rms,std_major,std_minor,hdg,std_lat,std_long,std_alt\"\n ,\"GPDTM,LLL,LSD,latoffset,Noffset,longoffset,Eoffset,altoffset,RRR\"\n , \"PUBX,00,hhmmss.ss,latitude,North,longitude,East,AltRef,NavStat,Hacc,Vacc,kph,cog,Vvel,ageC,HDOP,VDOP,TDOP,GU,RU,DR\"\n ,\"PUBX,03,GT{,SVID,s,AZM,EL,SN,LK}\"\n ,\"PUBX,04,hhmmss.ss,ddmmyy,UTC_TOW,UTC_WNO,LEAP_SEC,Clk_B,Clk_D,PG\"\n ,\"PUBX,40,msgId,rddc,rus1,rus2,rusb,rspi,reserved\"\n ,\"GPTXT,xx,yy,zz,ascii_data\"\n], new Chrono());" #1044[r1,l2] Name Integer 46 #1039[r1,l1] String [5 blocks] "// now we explicitly keep only GPGGA + GPRMC + GPGBS" #2233[r1,l2] Name Integer 47 #684[r1,l1] String [19 blocks] "(function simplify_gps(lstUselessNMEA) {\n start_stop_nmea(gps.serial,lstUselessNMEA,0,1);\n lstUselessNMEA.forEach(function (s) { delete this[s]; }, gps);\n}(['GPZDA','GPGLL','GPVTG','GPGRS','GPGST','PUBX04','PUBX00']));" #2059[r1,l2] Name Integer 48 #1003[r1,l1] String [8 blocks] "// store datas on a time based array on the sdcard with a time based tree of directories" #765[r1,l2] Name Integer 49 #1043[r1,l1] String [3 blocks] "var seconds = 240;" #734[r1,l2] Name Integer 60 #782[r1,l1] String [2 blocks] "tfTimeout" #2236[r1,l2] Name Integer 61 #2188[r1,l1] String [8 blocks] "myInterval=setInterval(function(){\n if (process.memory().free<500) debugger;\n},10000);" #356[r1,l2] Name Integer 67 #688[r1,l1] String [2 blocks] "gps.log=true;" #727[r1,l2] Name Integer 68 #562[r1,l1] String [2 blocks] "gps.log=false;" #779[r1,l2] Name Integer 72 #626[r1,l1] String [2 blocks] "debugger;" #458[r1,l2] Name Integer 73 #495[r1,l1] String [1 blocks] "q" #783[r1,l2] Name Integer 81 #569[r1,l1] String [8 blocks] " function show(d) {\n for (var i in d) print(i+\" : \"+E.getSizeOf(d[i]))\n }" #1155[r1,l2] Name Integer 82 #780[r1,l1] String [4 blocks] " console.log(\"--------- gps\");" #1388[r1,l2] Name Integer 83 #568[r1,l1] String [2 blocks] " show(gps);" #2166[r1,l2] Name Integer 84 #2205[r1,l1] String [4 blocks] " console.log(\"--------- Serial4\");" #583[r1,l2] Name Integer 85 #375[r1,l1] String [3 blocks] " show(Serial4);" #2193[r1,l2] Name Integer 86 #1349[r1,l1] String [3 blocks] "show(Serial4.#ondata)" #2232[r1,l2] Name Integer 87 #2192[r1,l1] String [3 blocks] "show(Serial4.'#ondata')" #1359[r1,l2] Name Integer 88 #362[r1,l1] String [3 blocks] "show(Serial4['#ondata'])" #1383[r1,l2] Name Integer 89 #496[r1,l1] String [3 blocks] "show(Serial4[#ondata])" #2165[r1,l2] Name Integer 90 #2195[r1,l1] String [3 blocks] "show(gps[#onGPSFix])" #1421[r1,l2] Name Integer 91 #257[r1,l1] String [3 blocks] "show(gps[onGPSFix])" #2203[r1,l2] Name Integer 92 #784[r1,l1] String [3 blocks] "show(gps['onGPSFix'])" #1389[r1,l2] Name Integer 93 #763[r1,l1] String [3 blocks] "show(gps['#onGPSFix'])" #630[r1,l2] Name Integer 95 #623[r1,l1] String [3 blocks] "gps.chrono.info()" #689[r1,l2] Name Integer 96 #609[r1,l1] String [2 blocks] "trace(Serial4)" #1455[r1,l2] Name Integer 104 #1648[r1,l1] String [2 blocks] "echo(0);" #1351[r1,l2] Name Integer 105 #1468[r1,l1] String [6 blocks] "console.log(\"<<\"+\"<<<\"+JSON.stringify(process.env)+\">>>\"+\">>\");" #2152[r1,l2] Name Integer 106 #1172[r1,l1] String [2 blocks] "echo(1);" #372[r1,l2] Name Integer 107 #1412[r1,l1] String [3 blocks] "process.memory();" #465[r1,l2] Name Integer 108 #1641[r1,l1] String [6 blocks] "for (var i in global) print(i+\" : \"+E.getSizeOf(global[i]))" #1422[r1,l2] Name Integer 109 #1343[r1,l1] String [1 blocks] "gps" #384[r1,l2] Name Integer 111 #1352[r1,l1] String [2 blocks] "Serial4" #759[r1,l2] Name Integer 112 #2049[r1,l1] String [2 blocks] "dump()" #334[r1,l2] Name Integer 113 #1323[r1,l1] String [2 blocks] "gps.log=true" #390[r1,l2] Name Integer 114 #1682[r1,l1] String [2 blocks] "gps.debug=true" ] } #33[r1,l2] Name String [2 blocks] "Chrono" #25[r2,l1] ... #324[r1,l2] Name String [2 blocks] "ddmmyy" #314[r1,l1] NativeFunction 0x1 (9) { #248[r1,l2] Name String [1 blocks] "ÿcod" #266[r1,l1] FlatString [35 blocks] "-éðO\x05FwH°ßø܁xDÀGnO\x04\x04 ¸GF\x02 ¸GrK‚F{DÍø0\r\x03“\x19F(F\x00\"fK˜G\x02&\x00!\f«*F\x00–\x02“\x01“Nö¥\x04\x0BFƒF G`L\x05XF GPF GHF G\x05˜]K˜G„F+\"aFÍø,ÀZK\x04˜˜Gßøx‘\x06ùDHFÀG\a\a™+\"TK\x06˜˜G\b0F¸G‚F0F¸GÍø0 ƒF\r\x03™(F\x00\"IK˜G\x02›\x00!Nö¥\f*F\x00–\x01“\n\x0BFàG\t\n˜ GXF GPF G\t˜AK˜G\n\n™+\"@K\b˜˜G‚FHFÀGƒF+\"YF;KPF˜G€F\x00 ¸GF0F¸G\x03™\aF\rÍø0(F\x00\"0K˜G\x02›\x00!*F\x00–\x01“\x03\x0BFNö¥\x05¨G\x05F\x03˜ G8F GHF G(F(K˜G\aF+\"9F'K@F˜G\x06F8F G(F G@F GXF GPF G\n˜ G\t˜ G\b˜ G\a˜ G\x06˜ GÝø,À`F G\x05˜ G\x04˜ G\x1DH\f–\x17KxD˜G\x13K\aF˜G\x05F8F G\x18I(FyD\x00\"\fK˜G\x01#\x00“\x02›\x00!*F\x01“Nö¥\a\x0BF€F¸G\aF@F G(F G0F G8F\x0F°½èð\tè\x02\x00í\x02\x00óy\x01\x00íè\x02\x00Ð\x02\x00}ž\x02\x00ê\x01\x00\x00\rî\x02\x00×\x01\x00\x00†\x01\x00\x00€\x00\x00\x00q\x00\x00\x0020\x00substr\x00-\x00Date\x00parse\x00\x00" } #321[r1,l2] Name String [1 blocks] "E" #322[r1,l1] NativeFunction 0x26f99 (1) { } #395[r1,l2] Name String [1 blocks] "secn" #312[r1,l1] NativeFunction 0x1 (9) { #249[r1,l2] Name String [1 blocks] "ÿcod" #397[r1,l1] FlatString [39 blocks] "-éðO…M°\aF\x00 ¨G€F\x02 ¨G‡K‚F{DÍø(€\x0B\x03“\x19F8F\x00\"}K˜G\x02&\x00!\n«:F\x00–\x02“\x01“Nö¥\x04\x0BFƒF GwLFXF GPF G@F G\n ¨Gßø܁‚FøDÍø(\x0BpK@F˜GoKƒF˜G\x02›\x00!\nF\x00–\x01“\x05\x0BFNö¥\fàGÝø\x14À\x04`F GXF GPF GHF GcK\x04˜˜G\x05Oôa`¨G„F*\"aFÍø$À^K\x05˜˜G\x060F¨G‚F0F¨GÍø( ƒF\x0B\x03™8F\x00\"RK˜G\x02›\x00!:FNö¥\f\x00–\x01“\a\x0BFàGF\a˜ GXF GPF G\n ¨GÍø(‚F\x0BHK@F˜GGK€F˜G\x02›\x00!Nö¥\f\nF\x00–\x01“\x0BFƒFàG\aXF G@F GPF GHF GK˜GØø\x000F\x02˜˜GÝø\x1CÀ€FaF\b\x00\"0F5K˜G\x00!\x01#2Fè(\x00\x0BF‚FØG\x06FPF G@F G9H\b–1KxD˜G-K€F˜G\x00!\x01#\nFè(\x00\x0BF‚FØG\x05FPF G@F G0F G(F#K˜G#K€F< ˜G‚F/\"QF!K@F˜GƒF+\"YF\x1EKHF˜G\x06FXF GPF G@F G(F GHF G8F G\x06™@ò\x05\x12\x14K\x05˜˜G\x15K\aF˜G\x05F8F Gm±\x0EK\x00 ˜G1F-\"\rK\aF˜G\x05F8F G0F G\x00à5F\x02˜ G(F\x0B°½èð\x00¿\rî\x02\x00í\x02\x00óy\x01\x00íè\x02\x00\tè\x02\x00Ð\x02\x00}ž\x02\x00Ïs\x01\x00\f\x02\x00\x00\x00\x02\x00\x00È\x01\x00\x00œ\x01\x00\x00_\x01\x00\x00ü\x00\x00\x00.\x00indexOf\x00substr\x00parseInt\x00parseFloat\x00\x00\x00\x00\x0Bz\x01\x00" } #643[r1,l2] Name String [1 blocks] "cks7" #650[r1,l1] NativeFunction 0x1 (9) { #305[r1,l2] Name String [1 blocks] "ÿcod" #651[r1,l1] FlatString [25 blocks] "-éðOF‰°ßø0¡\x00 ÐG\x06F\x00 ÐGJI\aFßø(±yD\x01\"HFØGBM\x05¨G\x03F|\"\x19F\x04“ßø\x108FÀG=I\x03ˆG\x03š=0) {\n try {\n p.push({ field: c, position: i});\n } catch (e) {\n console.log(e);\n console.log(p,c,i);\n }\n }\n } catch(x) { console.log(x); }\n return p;\n}" } #1187[r1,l2] Name String [2 blocks] "getFieldsPos" #1185[r1,l1] Function { #1184[r1,l2] Name Param "n" undefined #1197[r1,l2] Name String [1 blocks] "ÿcod" #1183[r1,l1] String [4 blocks] "{\n this[n.field]=n.position;\n}" } #1317[r1,l2] Name String [2 blocks] "parseHandlers" #1315[r1,l1] Function { #1314[r1,l2] Name Param "handling" undefined #1312[r1,l2] Name Param "serial" undefined #1310[r1,l2] Name Param "fieldsOfInterest" undefined #1443[r1,l2] Name String [1 blocks] "ÿcod" #1308[r1,l1] String [115 blocks] "{\n var handlers = {};\n handlers.serial=serial;\n var discarded=[];\n var fieldsFoundInNMEA=[];\n for (var k in handling) {\n var template=handling[k].split(',');\n if (template[0]===\"PUBX\") { // special case: we have to add to s[1] field\n template[0]=template[0]+template[1];\n template[1]=\"NumUBX\";\n }\n if (handlers[template[0]]) {\n console.log(\"ERROR Handler of \"+handling[k][0]+\" defined twice with sumindex \"+template[0]+\"...\");\n }\n else { // now extract particular fields of interest\n var posi=template.reduce(posFieldsOfInterest ,[]);\n if (posi.length>0) {\n // now note which field is found in which nmea sentence and at which position by field order\n //var fieldsFoundInTemplate={};\n //posi.forEach(getFieldsPos ,fieldsFoundInTemplate);\n posi=posi.map(codeFieldOfInterest).join(';');\n handlers[template[0]]= eval(\"(function(d) {\"+posi+\"})\"); // function to handle just what we need\n console.log('Handler of '+template[0]+' defined as '+handlers[template[0]]);\n } else\n discarded.push(template[0]);\n }\n }\n // now we now we have just the messages containing pertinent data\n // however, we could have redundant messages and need to identify them all\n var retained=[]; // so far nithing retained\n\n start_stop_nmea(serial,discarded,0,1);\n return handlers;\n}" } #1446[r1,l2] Name String [2 blocks] "estimate_dist" #1460[r1,l1] Function { #1461[r1,l2] Name Param "lat1" undefined #1462[r1,l2] Name Param "long1" undefined #1464[r1,l2] Name Param "lat2" undefined #1465[r1,l2] Name Param "long2" undefined #1551[r1,l2] Name String [1 blocks] "ÿcod" #1489[r1,l1] String [16 blocks] "{\n var R=6378137.0;\n var dera = Math.PI/180.0;\n var x = dera*(lat2-lat1) * Math.cos(dera*(long1+long2)/2);\n var y = dera*(long2-long1);\n return Math.sqrt(x*x + y*y) * R;\n}" } #1554[r1,l2] Name String [2 blocks] "tfTimeout"= int 2 #1625[r1,l2] Name String [1 blocks] "tf" #1624[r2,l1] ... #1871[r1,l2] Name String [2 blocks] "connect" #1869[r1,l1] Function { #1868[r1,l2] Name Param "serial" undefined #1866[r1,l2] Name Param "handling" undefined #1864[r1,l2] Name Param "chrono" undefined #2055[r1,l2] Name String [1 blocks] "ÿcod" #1862[r1,l1] String [174 blocks] "{ // replace with next line for module\n// exports.connect = function(serial, handling) {\n var gps = parseHandlers(handling,serial);\n gps.line=\"\";\n gps.enabled=true;\n gps.log=false;\n gps.debug=false;\n gps.chrono=chrono;\n gps.lagTime = 0;\n gps.status=\"?\";\n gps['hhmmss.ss']=NaN;\n // user callback for gps position fix\n gps.on('GPSFix', function(d){\n console.log(\"We have a GPS position fix!\");\n });\n // user callback for gps data received and analysed\n gps.on('gpsdata', function(d) {\n try {\n gps.lagTime=getTime()-d;\n if (gps.log) {\n console.log('Data received from GPS, receive treatement ended at '+d+\" and user's treatement starting after \",gps.lagTime+' s');\n }\n } catch(x) {\n console.log(x);\n }\n });\n gps.on('TimeFix',tf);\n serial.on('data', function(data) {\n if (gps.enabled) {\n gps.chrono.start();\n var sots = false;\n var noTimeFix= isNaN(gps['hhmmss.ss']);\n var noPosFix= (gps.status!==\"A\");\n gps.line += data;\n var idx = gps.line.indexOf(\"\\n\");\n while (idx>=0) {\n var line = gps.line.substr(0, idx);\n gps.line = gps.line.substr(idx+1);\n if (gps.log) console.log(\"Handling:\"+line);\n try {\n var n=nmea_checksum(line);\n gps[n[0] + ((n[0]===\"PUBX\") ? n[1] : \"\")](n);\n sots = true;\n if (noTimeFix != isNaN(gps['hhmmss.ss'])) {\n console.log('Time fix from serial at '+getTime());\n gps.emit('TimeFix',n);\n noTimeFix= isNaN(gps['hhmmss.ss']);\n }\n if (noPosFix != (gps.status!==\"A\")) {\n console.log('GPS position fix from serial at '+getTime());\n gps.emit('GPSFix',n);\n noPosFix= (gps.status!==\"A\");\n }\n gps.chrono.leap();\n } catch(x) {\n if (gps.debug) console.log(\"Failed \"+x+\" to handle:\"+line);\n //throw x;\n }\n idx = gps.line.indexOf(\"\\n\");\n }\n if (sots) { gps.emit('gpsdata',getTime()); }\n gps.chrono.stop();\n } else { gps.line=\"\"; }\n });\n return gps;\n}" } #2061[r1,l4] Name String [1 blocks] "gps" #345[r3,l2] ... #2099[r1,l2] Name String [2 blocks] "Serial" #2097[r2,l1] ... #2112[r1,l2] Name String [2 blocks] "Serial4" #2109[r5,l2] ... #485[r1,l2] Name String [2 blocks] "console" #481[r1,l1] NativeFunction 0x26f4b (1) { } #1095[r1,l2] Name String [2 blocks] "Number" #1100[r1,l1] NativeFunction 0x218b1 (17) { } #1426[r1,l2] Name String [1 blocks] "Date" #1430[r2,l1] NativeFunction 0x2a719 (17) { #2204[r1,l2] Name String [2 blocks] "prototype" #2239[r1,l1] Object { #2237[r1,l2] Name String [2 blocks] "constructor" #1430[r2,l2] ... } } #457[r1,l2] Name String [2 blocks] "Error" #1094[r2,l1] NativeFunction 0xf761 (9) { #361[r1,l2] Name String [2 blocks] "prototype" #451[r1,l1] Object { #776[r1,l2] Name String [2 blocks] "constructor" #1094[r2,l2] ... } } #2150[r1,l2] Name String [2 blocks] "seconds"= int 240 #1033[r1,l4] Name String [1 blocks] "i" #1390[r1,l1] String [1 blocks] "JSON" #2159[r1,l2] Name String [2 blocks] "process" #723[r1,l1] NativeFunction 0x26f27 (1) { } #588[r1,l2] Name String [2 blocks] "myInterval"= int 3 #440[r1,l2] Name String [2 blocks] "ReferenceError" #318[r2,l1] NativeFunction 0xf731 (9) { #502[r1,l2] Name String [2 blocks] "prototype" #489[r1,l1] Object { #639[r1,l2] Name String [2 blocks] "constructor" #318[r2,l2] ... } } #1087[r1,l2] Name String [1 blocks] "show" #1452[r1,l1] Function { #1154[r1,l8] Name Param "d" undefined #2157[r1,l2] Name String [1 blocks] "ÿcod" #486[r1,l1] String [6 blocks] "{\n for (var i in d) print(i+\" : \"+E.getSizeOf(d[i]))\n }" } #566[r1,l2] Name String [2 blocks] "SyntaxError" #1163[r2,l1] NativeFunction 0xf755 (9) { #499[r1,l2] Name String [2 blocks] "prototype" #1368[r1,l1] Object { #570[r1,l2] Name String [2 blocks] "constructor" #1163[r2,l2] ... } } #1494[r1,l2] Name String [1 blocks] "JSON" #1647[r1,l1] NativeFunction 0x26f6f (1) { } } } #501[r1,l2] Name String [2 blocks] "GPGBS" #600[r1,l1] Function { #597[r1,l2] Name Param "d" undefined #603[r1,l2] Name String [1 blocks] "ÿcod" #592[r1,l1] String [8 blocks] "{this['hhmmss.ss']=secn(d[1]);this['std_lat']=Number(d[2]);this['std_alt']=Number(d[4])}" #625[r1,l2] Name String [1 blocks] "ÿsco" #1[r5,l2] Object { #2[r1,l2] Name String [1 blocks] "ÿ" #3[r1,l2] Object { #6[r1,l2] Name String [2 blocks] "timers" #8[r2,l1] Array(4) [ #2228[r1,l2] Name Integer 3 #629[r1,l1] Object { #596[r1,l2] Name String [1 blocks] "time" #1638[r1,l1] Integer 1116109 #1419[r1,l2] Name String [2 blocks] "interval" #456[r1,l1] Integer 10485760 #5[r1,l2] Name String [2 blocks] "callback" #1353[r1,l1] Function { #1324[r1,l2] Name String [1 blocks] "ÿcod" #690[r1,l1] String [5 blocks] "{\n if (process.memory().free<500) debugger;\n}" } } ] #9[r1,l2] Name String [2 blocks] "watches" #11[r2,l1] Array(0) [ ] #12[r1,l2] Name String [2 blocks] "history" #16[r1,l1] Array(115) [ #2057[r1,l2] Name Integer 37 #2062[r1,l1] String [6 blocks] "var gps = {connect: connect}; // drop line for module" #2070[r1,l2] Name Integer 38 #2071[r1,l1] String [4 blocks] "// ----- end (modified) GPS module code" #2068[r1,l2] Name Integer 39 #2075[r1,l1] String [3 blocks] "// ===== GPS =====" #2078[r1,l2] Name Integer 40 #2079[r1,l1] String [3 blocks] "// ----- gpsSetup" #2086[r1,l2] Name Integer 41 #2087[r1,l1] String [7 blocks] "// var gps = require(\"GPS\"); // uncomment when using GPS code as module" #2083[r1,l2] Name Integer 42 #2082[r1,l1] String [4 blocks] "setSleepIndicator(undefined);" #2084[r1,l2] Name Integer 43 #2085[r1,l1] String [2 blocks] "setDeepSleep(1);" #2114[r1,l2] Name Integer 44 #2100[r1,l1] String [4 blocks] "Serial4.setup(115200,{tx:C10,rx:C11});" #2060[r1,l2] Name Integer 45 #31[r1,l1] String [94 blocks] "gps = gps.connect(Serial4, [\n \"GPGGA,hhmmss.ss,latitude,North,longitude,East,FixStatusGGA,NoSV,HDOP,mslAlt,m,Altref,m,DiffAge,DiffStation\"\n ,\"GPRMC,hhmmss.ss,status,latitude,North,longitude,East,sogKn,cog,ddmmyy,mv,mvE,mode\"\n ,\"GPZDA,hhmmss.ss,day,month,year,ltzh,ltzn\"\n ,\"GPGLL,latitude,North,longitude,East,hhmmss.ss,status,Mode\"\n ,\"GPGSV,NoMsg,MsgNo,NoSv,{,sv,elv,az,cno}\"\n ,\"GPGSA,Smode,FixStatusGSA,sv1,sv2,sv3,sv4,sv5,sv6,sv7,sv8,sv9,sv10,sv11,sv12,PDOP,HDOP,VDOP\"\n ,\"GPVTG,cogt,T,cogm,Mag,sogKn,KNots,kph,KphUnit,mode\"\n ,\"GPGRS,hhmmss.ss,mode{,residual}\"\n ,\"GPGBS,hhmmss.ss,std_lat,std_lon,std_alt,svid,prob,bias,stddev\"\n , \"GPGST,hhmmss.ss,range_rms,std_major,std_minor,hdg,std_lat,std_long,std_alt\"\n ,\"GPDTM,LLL,LSD,latoffset,Noffset,longoffset,Eoffset,altoffset,RRR\"\n , \"PUBX,00,hhmmss.ss,latitude,North,longitude,East,AltRef,NavStat,Hacc,Vacc,kph,cog,Vvel,ageC,HDOP,VDOP,TDOP,GU,RU,DR\"\n ,\"PUBX,03,GT{,SVID,s,AZM,EL,SN,LK}\"\n ,\"PUBX,04,hhmmss.ss,ddmmyy,UTC_TOW,UTC_WNO,LEAP_SEC,Clk_B,Clk_D,PG\"\n ,\"PUBX,40,msgId,rddc,rus1,rus2,rusb,rspi,reserved\"\n ,\"GPTXT,xx,yy,zz,ascii_data\"\n], new Chrono());" #1044[r1,l2] Name Integer 46 #1039[r1,l1] String [5 blocks] "// now we explicitly keep only GPGGA + GPRMC + GPGBS" #2233[r1,l2] Name Integer 47 #684[r1,l1] String [19 blocks] "(function simplify_gps(lstUselessNMEA) {\n start_stop_nmea(gps.serial,lstUselessNMEA,0,1);\n lstUselessNMEA.forEach(function (s) { delete this[s]; }, gps);\n}(['GPZDA','GPGLL','GPVTG','GPGRS','GPGST','PUBX04','PUBX00']));" #2059[r1,l2] Name Integer 48 #1003[r1,l1] String [8 blocks] "// store datas on a time based array on the sdcard with a time based tree of directories" #765[r1,l2] Name Integer 49 #1043[r1,l1] String [3 blocks] "var seconds = 240;" #734[r1,l2] Name Integer 60 #782[r1,l1] String [2 blocks] "tfTimeout" #2236[r1,l2] Name Integer 61 #2188[r1,l1] String [8 blocks] "myInterval=setInterval(function(){\n if (process.memory().free<500) debugger;\n},10000);" #356[r1,l2] Name Integer 67 #688[r1,l1] String [2 blocks] "gps.log=true;" #727[r1,l2] Name Integer 68 #562[r1,l1] String [2 blocks] "gps.log=false;" #779[r1,l2] Name Integer 72 #626[r1,l1] String [2 blocks] "debugger;" #458[r1,l2] Name Integer 73 #495[r1,l1] String [1 blocks] "q" #783[r1,l2] Name Integer 81 #569[r1,l1] String [8 blocks] " function show(d) {\n for (var i in d) print(i+\" : \"+E.getSizeOf(d[i]))\n }" #1155[r1,l2] Name Integer 82 #780[r1,l1] String [4 blocks] " console.log(\"--------- gps\");" #1388[r1,l2] Name Integer 83 #568[r1,l1] String [2 blocks] " show(gps);" #2166[r1,l2] Name Integer 84 #2205[r1,l1] String [4 blocks] " console.log(\"--------- Serial4\");" #583[r1,l2] Name Integer 85 #375[r1,l1] String [3 blocks] " show(Serial4);" #2193[r1,l2] Name Integer 86 #1349[r1,l1] String [3 blocks] "show(Serial4.#ondata)" #2232[r1,l2] Name Integer 87 #2192[r1,l1] String [3 blocks] "show(Serial4.'#ondata')" #1359[r1,l2] Name Integer 88 #362[r1,l1] String [3 blocks] "show(Serial4['#ondata'])" #1383[r1,l2] Name Integer 89 #496[r1,l1] String [3 blocks] "show(Serial4[#ondata])" #2165[r1,l2] Name Integer 90 #2195[r1,l1] String [3 blocks] "show(gps[#onGPSFix])" #1421[r1,l2] Name Integer 91 #257[r1,l1] String [3 blocks] "show(gps[onGPSFix])" #2203[r1,l2] Name Integer 92 #784[r1,l1] String [3 blocks] "show(gps['onGPSFix'])" #1389[r1,l2] Name Integer 93 #763[r1,l1] String [3 blocks] "show(gps['#onGPSFix'])" #630[r1,l2] Name Integer 95 #623[r1,l1] String [3 blocks] "gps.chrono.info()" #689[r1,l2] Name Integer 96 #609[r1,l1] String [2 blocks] "trace(Serial4)" #1455[r1,l2] Name Integer 104 #1648[r1,l1] String [2 blocks] "echo(0);" #1351[r1,l2] Name Integer 105 #1468[r1,l1] String [6 blocks] "console.log(\"<<\"+\"<<<\"+JSON.stringify(process.env)+\">>>\"+\">>\");" #2152[r1,l2] Name Integer 106 #1172[r1,l1] String [2 blocks] "echo(1);" #372[r1,l2] Name Integer 107 #1412[r1,l1] String [3 blocks] "process.memory();" #465[r1,l2] Name Integer 108 #1641[r1,l1] String [6 blocks] "for (var i in global) print(i+\" : \"+E.getSizeOf(global[i]))" #1422[r1,l2] Name Integer 109 #1343[r1,l1] String [1 blocks] "gps" #384[r1,l2] Name Integer 111 #1352[r1,l1] String [2 blocks] "Serial4" #759[r1,l2] Name Integer 112 #2049[r1,l1] String [2 blocks] "dump()" #334[r1,l2] Name Integer 113 #1323[r1,l1] String [2 blocks] "gps.log=true" #390[r1,l2] Name Integer 114 #1682[r1,l1] String [2 blocks] "gps.debug=true" ] } #33[r1,l2] Name String [2 blocks] "Chrono" #25[r2,l1] ... #324[r1,l2] Name String [2 blocks] "ddmmyy" #314[r1,l1] NativeFunction 0x1 (9) { #248[r1,l2] Name String [1 blocks] "ÿcod" #266[r1,l1] FlatString [35 blocks] "-éðO\x05FwH°ßø܁xDÀGnO\x04\x04 ¸GF\x02 ¸GrK‚F{DÍø0\r\x03“\x19F(F\x00\"fK˜G\x02&\x00!\f«*F\x00–\x02“\x01“Nö¥\x04\x0BFƒF G`L\x05XF GPF GHF G\x05˜]K˜G„F+\"aFÍø,ÀZK\x04˜˜Gßøx‘\x06ùDHFÀG\a\a™+\"TK\x06˜˜G\b0F¸G‚F0F¸GÍø0 ƒF\r\x03™(F\x00\"IK˜G\x02›\x00!Nö¥\f*F\x00–\x01“\n\x0BFàG\t\n˜ GXF GPF G\t˜AK˜G\n\n™+\"@K\b˜˜G‚FHFÀGƒF+\"YF;KPF˜G€F\x00 ¸GF0F¸G\x03™\aF\rÍø0(F\x00\"0K˜G\x02›\x00!*F\x00–\x01“\x03\x0BFNö¥\x05¨G\x05F\x03˜ G8F GHF G(F(K˜G\aF+\"9F'K@F˜G\x06F8F G(F G@F GXF GPF G\n˜ G\t˜ G\b˜ G\a˜ G\x06˜ GÝø,À`F G\x05˜ G\x04˜ G\x1DH\f–\x17KxD˜G\x13K\aF˜G\x05F8F G\x18I(FyD\x00\"\fK˜G\x01#\x00“\x02›\x00!*F\x01“Nö¥\a\x0BF€F¸G\aF@F G(F G0F G8F\x0F°½èð\tè\x02\x00í\x02\x00óy\x01\x00íè\x02\x00Ð\x02\x00}ž\x02\x00ê\x01\x00\x00\rî\x02\x00×\x01\x00\x00†\x01\x00\x00€\x00\x00\x00q\x00\x00\x0020\x00substr\x00-\x00Date\x00parse\x00\x00" } #321[r1,l2] Name String [1 blocks] "E" #322[r1,l1] NativeFunction 0x26f99 (1) { } #395[r1,l2] Name String [1 blocks] "secn" #312[r1,l1] NativeFunction 0x1 (9) { #249[r1,l2] Name String [1 blocks] "ÿcod" #397[r1,l1] FlatString [39 blocks] "-éðO…M°\aF\x00 ¨G€F\x02 ¨G‡K‚F{DÍø(€\x0B\x03“\x19F8F\x00\"}K˜G\x02&\x00!\n«:F\x00–\x02“\x01“Nö¥\x04\x0BFƒF GwLFXF GPF G@F G\n ¨Gßø܁‚FøDÍø(\x0BpK@F˜GoKƒF˜G\x02›\x00!\nF\x00–\x01“\x05\x0BFNö¥\fàGÝø\x14À\x04`F GXF GPF GHF GcK\x04˜˜G\x05Oôa`¨G„F*\"aFÍø$À^K\x05˜˜G\x060F¨G‚F0F¨GÍø( ƒF\x0B\x03™8F\x00\"RK˜G\x02›\x00!:FNö¥\f\x00–\x01“\a\x0BFàGF\a˜ GXF GPF G\n ¨GÍø(‚F\x0BHK@F˜GGK€F˜G\x02›\x00!Nö¥\f\nF\x00–\x01“\x0BFƒFàG\aXF G@F GPF GHF GK˜GØø\x000F\x02˜˜GÝø\x1CÀ€FaF\b\x00\"0F5K˜G\x00!\x01#2Fè(\x00\x0BF‚FØG\x06FPF G@F G9H\b–1KxD˜G-K€F˜G\x00!\x01#\nFè(\x00\x0BF‚FØG\x05FPF G@F G0F G(F#K˜G#K€F< ˜G‚F/\"QF!K@F˜GƒF+\"YF\x1EKHF˜G\x06FXF GPF G@F G(F GHF G8F G\x06™@ò\x05\x12\x14K\x05˜˜G\x15K\aF˜G\x05F8F Gm±\x0EK\x00 ˜G1F-\"\rK\aF˜G\x05F8F G0F G\x00à5F\x02˜ G(F\x0B°½èð\x00¿\rî\x02\x00í\x02\x00óy\x01\x00íè\x02\x00\tè\x02\x00Ð\x02\x00}ž\x02\x00Ïs\x01\x00\f\x02\x00\x00\x00\x02\x00\x00È\x01\x00\x00œ\x01\x00\x00_\x01\x00\x00ü\x00\x00\x00.\x00indexOf\x00substr\x00parseInt\x00parseFloat\x00\x00\x00\x00\x0Bz\x01\x00" } #643[r1,l2] Name String [1 blocks] "cks7" #650[r1,l1] NativeFunction 0x1 (9) { #305[r1,l2] Name String [1 blocks] "ÿcod" #651[r1,l1] FlatString [25 blocks] "-éðOF‰°ßø0¡\x00 ÐG\x06F\x00 ÐGJI\aFßø(±yD\x01\"HFØGBM\x05¨G\x03F|\"\x19F\x04“ßø\x108FÀG=I\x03ˆG\x03š=0) {\n try {\n p.push({ field: c, position: i});\n } catch (e) {\n console.log(e);\n console.log(p,c,i);\n }\n }\n } catch(x) { console.log(x); }\n return p;\n}" } #1187[r1,l2] Name String [2 blocks] "getFieldsPos" #1185[r1,l1] Function { #1184[r1,l2] Name Param "n" undefined #1197[r1,l2] Name String [1 blocks] "ÿcod" #1183[r1,l1] String [4 blocks] "{\n this[n.field]=n.position;\n}" } #1317[r1,l2] Name String [2 blocks] "parseHandlers" #1315[r1,l1] Function { #1314[r1,l2] Name Param "handling" undefined #1312[r1,l2] Name Param "serial" undefined #1310[r1,l2] Name Param "fieldsOfInterest" undefined #1443[r1,l2] Name String [1 blocks] "ÿcod" #1308[r1,l1] String [115 blocks] "{\n var handlers = {};\n handlers.serial=serial;\n var discarded=[];\n var fieldsFoundInNMEA=[];\n for (var k in handling) {\n var template=handling[k].split(',');\n if (template[0]===\"PUBX\") { // special case: we have to add to s[1] field\n template[0]=template[0]+template[1];\n template[1]=\"NumUBX\";\n }\n if (handlers[template[0]]) {\n console.log(\"ERROR Handler of \"+handling[k][0]+\" defined twice with sumindex \"+template[0]+\"...\");\n }\n else { // now extract particular fields of interest\n var posi=template.reduce(posFieldsOfInterest ,[]);\n if (posi.length>0) {\n // now note which field is found in which nmea sentence and at which position by field order\n //var fieldsFoundInTemplate={};\n //posi.forEach(getFieldsPos ,fieldsFoundInTemplate);\n posi=posi.map(codeFieldOfInterest).join(';');\n handlers[template[0]]= eval(\"(function(d) {\"+posi+\"})\"); // function to handle just what we need\n console.log('Handler of '+template[0]+' defined as '+handlers[template[0]]);\n } else\n discarded.push(template[0]);\n }\n }\n // now we now we have just the messages containing pertinent data\n // however, we could have redundant messages and need to identify them all\n var retained=[]; // so far nithing retained\n\n start_stop_nmea(serial,discarded,0,1);\n return handlers;\n}" } #1446[r1,l2] Name String [2 blocks] "estimate_dist" #1460[r1,l1] Function { #1461[r1,l2] Name Param "lat1" undefined #1462[r1,l2] Name Param "long1" undefined #1464[r1,l2] Name Param "lat2" undefined #1465[r1,l2] Name Param "long2" undefined #1551[r1,l2] Name String [1 blocks] "ÿcod" #1489[r1,l1] String [16 blocks] "{\n var R=6378137.0;\n var dera = Math.PI/180.0;\n var x = dera*(lat2-lat1) * Math.cos(dera*(long1+long2)/2);\n var y = dera*(long2-long1);\n return Math.sqrt(x*x + y*y) * R;\n}" } #1554[r1,l2] Name String [2 blocks] "tfTimeout"= int 2 #1625[r1,l2] Name String [1 blocks] "tf" #1624[r2,l1] ... #1871[r1,l2] Name String [2 blocks] "connect" #1869[r1,l1] Function { #1868[r1,l2] Name Param "serial" undefined #1866[r1,l2] Name Param "handling" undefined #1864[r1,l2] Name Param "chrono" undefined #2055[r1,l2] Name String [1 blocks] "ÿcod" #1862[r1,l1] String [174 blocks] "{ // replace with next line for module\n// exports.connect = function(serial, handling) {\n var gps = parseHandlers(handling,serial);\n gps.line=\"\";\n gps.enabled=true;\n gps.log=false;\n gps.debug=false;\n gps.chrono=chrono;\n gps.lagTime = 0;\n gps.status=\"?\";\n gps['hhmmss.ss']=NaN;\n // user callback for gps position fix\n gps.on('GPSFix', function(d){\n console.log(\"We have a GPS position fix!\");\n });\n // user callback for gps data received and analysed\n gps.on('gpsdata', function(d) {\n try {\n gps.lagTime=getTime()-d;\n if (gps.log) {\n console.log('Data received from GPS, receive treatement ended at '+d+\" and user's treatement starting after \",gps.lagTime+' s');\n }\n } catch(x) {\n console.log(x);\n }\n });\n gps.on('TimeFix',tf);\n serial.on('data', function(data) {\n if (gps.enabled) {\n gps.chrono.start();\n var sots = false;\n var noTimeFix= isNaN(gps['hhmmss.ss']);\n var noPosFix= (gps.status!==\"A\");\n gps.line += data;\n var idx = gps.line.indexOf(\"\\n\");\n while (idx>=0) {\n var line = gps.line.substr(0, idx);\n gps.line = gps.line.substr(idx+1);\n if (gps.log) console.log(\"Handling:\"+line);\n try {\n var n=nmea_checksum(line);\n gps[n[0] + ((n[0]===\"PUBX\") ? n[1] : \"\")](n);\n sots = true;\n if (noTimeFix != isNaN(gps['hhmmss.ss'])) {\n console.log('Time fix from serial at '+getTime());\n gps.emit('TimeFix',n);\n noTimeFix= isNaN(gps['hhmmss.ss']);\n }\n if (noPosFix != (gps.status!==\"A\")) {\n console.log('GPS position fix from serial at '+getTime());\n gps.emit('GPSFix',n);\n noPosFix= (gps.status!==\"A\");\n }\n gps.chrono.leap();\n } catch(x) {\n if (gps.debug) console.log(\"Failed \"+x+\" to handle:\"+line);\n //throw x;\n }\n idx = gps.line.indexOf(\"\\n\");\n }\n if (sots) { gps.emit('gpsdata',getTime()); }\n gps.chrono.stop();\n } else { gps.line=\"\"; }\n });\n return gps;\n}" } #2061[r1,l4] Name String [1 blocks] "gps" #345[r3,l2] ... #2099[r1,l2] Name String [2 blocks] "Serial" #2097[r2,l1] ... #2112[r1,l2] Name String [2 blocks] "Serial4" #2109[r5,l2] ... #485[r1,l2] Name String [2 blocks] "console" #481[r1,l1] NativeFunction 0x26f4b (1) { } #1095[r1,l2] Name String [2 blocks] "Number" #1100[r1,l1] NativeFunction 0x218b1 (17) { } #1426[r1,l2] Name String [1 blocks] "Date" #1430[r2,l1] NativeFunction 0x2a719 (17) { #2204[r1,l2] Name String [2 blocks] "prototype" #2239[r1,l1] Object { #2237[r1,l2] Name String [2 blocks] "constructor" #1430[r2,l2] ... } } #457[r1,l2] Name String [2 blocks] "Error" #1094[r2,l1] NativeFunction 0xf761 (9) { #361[r1,l2] Name String [2 blocks] "prototype" #451[r1,l1] Object { #776[r1,l2] Name String [2 blocks] "constructor" #1094[r2,l2] ... } } #2150[r1,l2] Name String [2 blocks] "seconds"= int 240 #1033[r1,l4] Name String [1 blocks] "i" #1390[r1,l1] String [1 blocks] "JSON" #2159[r1,l2] Name String [2 blocks] "process" #723[r1,l1] NativeFunction 0x26f27 (1) { } #588[r1,l2] Name String [2 blocks] "myInterval"= int 3 #440[r1,l2] Name String [2 blocks] "ReferenceError" #318[r2,l1] NativeFunction 0xf731 (9) { #502[r1,l2] Name String [2 blocks] "prototype" #489[r1,l1] Object { #639[r1,l2] Name String [2 blocks] "constructor" #318[r2,l2] ... } } #1087[r1,l2] Name String [1 blocks] "show" #1452[r1,l1] Function { #1154[r1,l8] Name Param "d" undefined #2157[r1,l2] Name String [1 blocks] "ÿcod" #486[r1,l1] String [6 blocks] "{\n for (var i in d) print(i+\" : \"+E.getSizeOf(d[i]))\n }" } #566[r1,l2] Name String [2 blocks] "SyntaxError" #1163[r2,l1] NativeFunction 0xf755 (9) { #499[r1,l2] Name String [2 blocks] "prototype" #1368[r1,l1] Object { #570[r1,l2] Name String [2 blocks] "constructor" #1163[r2,l2] ... } } #1494[r1,l2] Name String [1 blocks] "JSON" #1647[r1,l1] NativeFunction 0x26f6f (1) { } } } #386[r1,l2] Name String [1 blocks] "line" #2048[r1,l1] String [1 blocks] "" #642[r1,l2] Name String [2 blocks] "enabled" #358[r1,l1] Bool true #620[r1,l2] Name String [1 blocks] "log" #2194[r1,l1] Bool true #359[r1,l2] Name String [2 blocks] "debug" #761[r1,l1] Bool true #687[r1,l2] Name String [2 blocks] "chrono" #262[r2,l1] ... #303[r1,l2] Name String [2 blocks] "lagTime" #1496[r1,l1] Double 0.04415130615 #391[r1,l2] Name String [2 blocks] "status" #1331[r1,l1] String [1 blocks] "V" #611[r1,l2] Name String [2 blocks] "hhmmss.ss" #1381[r1,l1] Double 61374.04 #385[r1,l2] Name String [2 blocks] "#onGPSFix" #348[r1,l1] Function { #349[r1,l2] Name Param "d" undefined #337[r1,l2] Name String [1 blocks] "ÿcod" #343[r1,l1] String [6 blocks] "{\n console.log(\"We have a GPS position fix!\");\n }" #338[r1,l2] Name String [1 blocks] "ÿsco" #28[r3,l2] ... } #736[r1,l2] Name String [2 blocks] "#ongpsdata" #758[r1,l1] Function { #517[r1,l2] Name Param "d" undefined #737[r1,l2] Name String [1 blocks] "ÿcod" #773[r1,l1] String [23 blocks] "{\n try {\n gps.lagTime=getTime()-d;\n if (gps.log) {\n console.log('Data received from GPS, receive treatement ended at '+d+\" and user's treatement starting after \",gps.lagTime+' s');\n }\n } catch(x) {\n console.log(x);\n }\n }" #735[r1,l2] Name String [1 blocks] "ÿsco" #28[r3,l2] ... } #614[r1,l2] Name String [2 blocks] "latitude" #1334[r1,l1] Double NaN #1166[r1,l2] Name String [2 blocks] "longitude" #1083[r1,l1] Double NaN #1165[r1,l2] Name String [2 blocks] "sogKn"= int 0 #1107[r1,l2] Name String [2 blocks] "ddmmyy" #494[r1,l1] Double 1442534400000 #1102[r1,l2] Name String [2 blocks] "mslAlt"= int 0 #1398[r1,l2] Name String [2 blocks] "std_lat"= int 0 #1377[r1,l2] Name String [2 blocks] "std_alt"= int 0 #1425[r1,l2] Name String [2 blocks] "epoch" #2238[r1,l1] Double 1442570315000 #379[r1,l2] Name String [2 blocks] "#onTimeFix" #1624[r2,l1] Function { #1623[r1,l2] Name Param "d" undefined #1692[r1,l2] Name String [1 blocks] "ÿcod" #1622[r1,l1] String [62 blocks] "{\n console.log('Received a TimeFix event with parameter '+d);\n gps.epoch=gps.ddmmyy+gps['hhmmss.ss']*1000;\n var deltat=getTime()*1000-gps.epoch;\n if ((deltat<0-1000) || (deltat>1000)) {\n setTime(gps.epoch/1000); // Now setup system time to gps time (there is a lag)\n console.log('Internal clock set to gps time '+new Date().toString()+' with a delta time of '+deltat+' ms');\n } else {\n console.log('Internal clock was only '+deltat+' ms from GPS epoch '+new Date(gps.epoch).toString()+' so no changes were made.');\n }\n // Remove this listener for some time, say 1 hour\n gps.removeAllListeners('TimeFix');\n tfTimeout=setTimeout(function (){\n gps.on('TimeFix',tf); // reconnect after on hour\n },3600000);\n}" } } } } } =undefined