From ef1f4e406465c127910d18037152aad5dcab102b Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 11 May 2023 10:28:33 +0100 Subject: [PATCH] add magnetometer clock info --- apps/clkinfomag/ChangeLog | 1 + apps/clkinfomag/clkinfo.js | 48 ++++++++++++++++++++++++++++++++++ apps/clkinfomag/icon.png | Bin 0 -> 1769 bytes apps/clkinfomag/metadata.json | 12 +++++++++ 4 files changed, 61 insertions(+) create mode 100644 apps/clkinfomag/ChangeLog create mode 100644 apps/clkinfomag/clkinfo.js create mode 100644 apps/clkinfomag/icon.png create mode 100644 apps/clkinfomag/metadata.json diff --git a/apps/clkinfomag/ChangeLog b/apps/clkinfomag/ChangeLog new file mode 100644 index 000000000..4c21f3ace --- /dev/null +++ b/apps/clkinfomag/ChangeLog @@ -0,0 +1 @@ +0.01: New Widget! diff --git a/apps/clkinfomag/clkinfo.js b/apps/clkinfomag/clkinfo.js new file mode 100644 index 000000000..7a6062a2f --- /dev/null +++ b/apps/clkinfomag/clkinfo.js @@ -0,0 +1,48 @@ +(function() { + var heading, cnt; + function magHandler(m) { + var h = m.heading; + if (isNaN(heading) || isNaN(h)) + heading = h; + else { + // Average + if (Math.abs(heading-h)>180) { + if (h<180 && heading>180) h+=360; + if (h>180 && heading<180) h-=360; + } + heading = heading*0.8 + h*0.2; + if (heading<0) heading+=360; + if (heading>=360) heading-=360; + } + // only draw 1 in 2 to try and save some power! + if (!(1&cnt++)) ci.items[0].emit('redraw'); + } + var ci = { + name: "Bangle", + items: [ + { name : "Compass", + get : function() { + var g = Graphics.createArrayBuffer(24,24,1,{msb:true}); + if (isNaN(heading)) + g.drawLine(8,12,16,12); + else + g.fillPoly(g.transformVertices([0,-10,4,10,-4,10],{x:12,y:12,rotate:-heading/57})); + return { text : isNaN(heading)?"--":Math.round(heading), + v : 0|heading, min : 0, max : 360, + img : g.asImage("string") }}, + show : function() { + Bangle.setCompassPower(1,"clkinfomag"); + Bangle.on('mag',magHandler); + cnt=0; + heading = undefined; + }, + hide : function() { + Bangle.removeListener('mag', magHandler); + Bangle.setCompassPower(0,"clkinfomag"); + }, + run : function() { Bangle.resetCompass(); } + } + ] + }; + return ci; +}) // must not have a semi-colon! \ No newline at end of file diff --git a/apps/clkinfomag/icon.png b/apps/clkinfomag/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa9c7027e0659ae8af3b962840dfe4b9893bec6 GIT binary patch literal 1769 zcmV4FBKm#SdD;zL=7k^ zAPF(ymH3Dx$iu`c5F`dmdCZh;flAu|EzrmAmIAGo*0wxaC`ijfw`{xZF0|e0?Ce}h z5VXgfyWM5y&hF0a1JtB9ImztIoqNA?=bZ06)?gSO!((_PKZ;=FnC<@8OuW3>$diL6 zj=7;C9V<^Ir?YLJ;!9Q+> zQ6^446lue>d>MW@Ex{G94@6PaB{(;?NrJTesAg4;d!__Do<=0_&zfb}a@-GIAv(~j zy}eYTJ?|4l$ZU{c!ge{5lUGhGg8P$JAd=bO$u)LppLmsDwI&X)j7Q3#w7u`OXwkN`u;K;`bfq!DF{}CfcyzI&A1&>mF z@(dNd^Dnx6@DlqaIMSaG#Ujs#FNAh_!gPx=g)=_q!dRcNKc-j^=h;pR8*0!%i*wXz+m=bk=M zWlETK=tG|lBQQ@1e;Ii`+9@`-UV_YmVz5*w)GK1zs6`}^VA0UictJVe3Y z{CZl{b+bQQIkRn#ot@<_Cwd!RWLYZ zR0urEz}^habr;+G3I)dU@=9$5I8q$`66Q8~C=mUD+gBDk_1$Ghp0=sV_f(ztcvlzz@Ft07xy3y4I_4 z_}KK~4?SN%kt#c{YH!rj+ehO<^My;4HW#k4K=J$q0Bb)D$Q$>B6zJNx3|bwR!R7X7 zuG@Y^WSPjT{RJ5Q?-kS_Yn#qe$1SX=rZgHf8gZKTg4;yg92J)@^ErwHeKDaQ*@~`PGMzXE{ofJDeLU z%@&g~p#+_{#qNQrA60}D2nw3hqLpRTvGLTAUiFefO@dCWpiwLXwKnSS7vYO<>r~+1 zTVR9lx0OPHttwg;@(egC`$DKa+FzhaD1z{+{Moi|0(vBl_ zr!@UxCu=^O?9$!M!_<|n#IOKoHz}=Xqu`f)R}XFN0qWC}PNSenWgjSy=nqKUlk?aj zpR6||Q_x`dAbb;7S1-(2`YY@!u_s*6bas1a#m4$WMm_7i@{Q4115X;_8Q2kEOG>1* z;3icyPUv*?CS6i`1p(TeouS{y96p#}R`rRt8sZ(JbEJpaq8_UxyW4liiuy|)AH0&Q z>P!d;_f4@^$t*@&AJ{!ebz8;m_QBK$Z50zwW*d?j*sEk0ePI`Ys*9;>Y#nn%Xr}~B zXPY7EQ3NARJSkxpM?1ytL97^|)mrQoMEJQ*QrY|v>)6uL;og)rcd_9b;q%gy!vZ{( zBCOzCthOdIR2i1ESyR^BRWx}SW?~~Y*07kr)H-}Llf)B7!E3ySiY~JH)e)9gnoY`1 zKGMKmCCg5!5F=0el6Kg*`ldYLFu)`aT)u%kkF;&L+XJH`rX6hVq!V}-rU!9H*gG=P zVFWgvuy2DoI~E>T*