From 1fff62e48da25d2455294643ac66321033088c76 Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 17 Apr 2020 16:55:35 +0200 Subject: [PATCH 01/14] init hid camera app --- apps/hidcam/ChangeLog | 1 + apps/hidcam/add_to_apps.json | 13 +++++++++++++ apps/hidcam/app-icon.js | 1 + apps/hidcam/app.js | 12 ++++++++++++ apps/hidcam/app.png | Bin 0 -> 1620 bytes 5 files changed, 27 insertions(+) create mode 100644 apps/hidcam/ChangeLog create mode 100644 apps/hidcam/add_to_apps.json create mode 100644 apps/hidcam/app-icon.js create mode 100644 apps/hidcam/app.js create mode 100644 apps/hidcam/app.png diff --git a/apps/hidcam/ChangeLog b/apps/hidcam/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/hidcam/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/hidcam/add_to_apps.json b/apps/hidcam/add_to_apps.json new file mode 100644 index 000000000..ca75a7bd8 --- /dev/null +++ b/apps/hidcam/add_to_apps.json @@ -0,0 +1,13 @@ +// Create an entry in apps.json as follows: +{ "id": "7chname", + "name": "My app's human readable name", + "shortName":"Short Name", + "icon": "app.png", + "version":"0.01", + "description": "A detailed description of my great app", + "tags": "", + "storage": [ + {"name":"7chname.app.js","url":"app.js"}, + {"name":"7chname.img","url":"app-icon.js","evaluate":true} + ] +} diff --git a/apps/hidcam/app-icon.js b/apps/hidcam/app-icon.js new file mode 100644 index 000000000..49232b838 --- /dev/null +++ b/apps/hidcam/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwJC/AH4A/AH4AgA==")) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js new file mode 100644 index 000000000..af367779a --- /dev/null +++ b/apps/hidcam/app.js @@ -0,0 +1,12 @@ +// place your const, vars, functions or classes here + +// special function to handle display switch on +Bangle.on('lcdPower', (on) => { + if (on) { + // call your app function here + // If you clear the screen, do Bangle.drawWidgets(); + } +}); + +g.clear(); +// call your app function here diff --git a/apps/hidcam/app.png b/apps/hidcam/app.png new file mode 100644 index 0000000000000000000000000000000000000000..582cb2e0853a5a2899a3afbd7eb19cde2ee7f6a0 GIT binary patch literal 1620 zcmV-a2CMmrP)1gXjloC|3_d8m;N2OpV(|i0q4YwBna<2! zK9thw%-*|urnNbV{Gax^?eD+#{x0kLJ~)lj_;W+1>qV*k8akT^^dvctZccUyj4}H~#M%Wwee_v` zHMv7o%BM8@dBrLshn{wGD9BDl?^eV5vSM3T96;NnHvtc6La=(qzq)xrX1d8bK-TN- zrd_f$_O`9nEmS+_S7HTXK<&u;LDIW|qlN&KJvM}tt6TVVqL-AvNv`B*{NzNpBfSQwQP5~Sf(Dp@Vq1+3Q`N9wBQN2`J_?M^u0FIMlt?p^8 z%U3%80kIwg!T{E9<8J18S&$k1`eO)@HP+=TZKo(z3_A3VFYJB=sn`2^Q$mRE>02(+W)np;)L1!GUvU2{O{<&F_nE6Qe#D~Xf|dD z+?d3-D1(IUiL`C2;PPv4CKw8H)v7h8^obJ&Z6D0CjVUe8Xq_NAymxUyPAMU^CCrIu z%1M71EC`5o2if_~7E&h??0jeQ1Y3N6p?}G72FmS*)xQD)%wBE=2tW6@(+MTi!fk9H1pWKew2(jTXVu4%vk26QvSQCbGmk`Z)Y! zBIhh)6vG2)h6mF8wC^|l$M(Eo9D?JiW}=_T2jUA>LC80foTera{^p)Wi`>}Gf;(|ZwEZQ zS^k|*9wyt=f4ZOo!xty7{%}HKD9tBZ50g$=%v&&vMa!#@Nsf>EkEEDA*ST6fiC+An zsNK1#>!x0obq@j$QqYU-ad3ZvbjqUU+%iw(0WahgmHV6yeLWqoYkSl4pzFQ(_Vp&I ztO{WI-48rGLwQb?#vgVvduyd9_6W)rFRoQJq3I(J?{Xmin45#=3l9BmL6Bp<*MZej zrsWN7oRPUr7IvrHoIHOjS=gPTCw>d)^LQK+B|=f2qbGjrWaOd5D<<9Dv>MTW0X3z> zyPy}9`<>1~?NCx@m8G$_@rRTy5zH12YM&P)=tU+L^fgY z^0Z&_6^qdVuwgN3wt_Ze(10?J@%{C2grBk42hsu74qEo^nd&v`X`IHN9lrxzS~GeF S(*#!l0000 Date: Fri, 17 Apr 2020 18:56:38 +0200 Subject: [PATCH 02/14] app code and config --- apps/hidcam/ChangeLog | 2 +- apps/hidcam/add_to_apps.json | 13 ------------- apps/hidcam/app-icon.js | 2 +- apps/hidcam/app.js | 12 ------------ apps/hidcam/app.png | Bin 1620 -> 1425 bytes apps/hidcam/hidcam.app.js | 28 ++++++++++++++++++++++++++++ apps/hidcam/hidcam.app.json | 13 +++++++++++++ 7 files changed, 43 insertions(+), 27 deletions(-) delete mode 100644 apps/hidcam/add_to_apps.json delete mode 100644 apps/hidcam/app.js create mode 100644 apps/hidcam/hidcam.app.js create mode 100644 apps/hidcam/hidcam.app.json diff --git a/apps/hidcam/ChangeLog b/apps/hidcam/ChangeLog index 5560f00bc..665c0df6e 100644 --- a/apps/hidcam/ChangeLog +++ b/apps/hidcam/ChangeLog @@ -1 +1 @@ -0.01: New App! +0.01: Init diff --git a/apps/hidcam/add_to_apps.json b/apps/hidcam/add_to_apps.json deleted file mode 100644 index ca75a7bd8..000000000 --- a/apps/hidcam/add_to_apps.json +++ /dev/null @@ -1,13 +0,0 @@ -// Create an entry in apps.json as follows: -{ "id": "7chname", - "name": "My app's human readable name", - "shortName":"Short Name", - "icon": "app.png", - "version":"0.01", - "description": "A detailed description of my great app", - "tags": "", - "storage": [ - {"name":"7chname.app.js","url":"app.js"}, - {"name":"7chname.img","url":"app-icon.js","evaluate":true} - ] -} diff --git a/apps/hidcam/app-icon.js b/apps/hidcam/app-icon.js index 49232b838..aa9d5e194 100644 --- a/apps/hidcam/app-icon.js +++ b/apps/hidcam/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwJC/AH4A/AH4AgA==")) +E.toArrayBuffer(atob("MDCEAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxERERERETMzMzMzMzMzMzMzMzMzMzMzMRERERERERMzMzMzMzMzMzMzMzMzMzMzMREREREREREzMzMzMzMzMzMzMzMAAAAzEREREREREREzMzMzMzMzMzMzMzMAAAAxERERERERERETMzMzMzMzMzMzMxERERERERERERERERERERERETMzMzMzMRERERERERERERERERERERERERMzMzMzEREREREREREAAAAAEREREREREREzMzMzEREREREREQAAAAAAABERESIiIREzMzMzEREREREREAAAAAAAAAERESIiIREzMzMzEREREREQAAAKqqqgAAABESIiIREzMzMzEREREREQAAqqqqqqoAABESIiIREzMzMzEREREREAAKqqqqqqqgAAEREREREzMzMzERERERAACqqqqqqqqqAAAREREREzMzMzERERERAAqqqiIiIqqqoAAREREREzMzMzqqqqqgAAqqoiIiIiKqoAAKqqqqozMzMzqqqqqgAKqqIiIiIiKqqgAKqqqqozMzMzqqqqqgAKqqIiqqqiKqqgAKqqqqozMzMzqqqqqgAKqqqqqqqqqqqgAKqqqqozMzMzqqqqqgAKqqqqqqqqqqqgAKqqqqozMzMzqqqqqgAKqqqqqqqqqqqgAKqqqqozMzMzqqqqqgAKqqqqqqqqqqqgAKqqqqozMzMzqqqqqgAAqqqqqqqqqqoAAKqqqqozMzMzqqqqqqAAqqqqqqqqqqoACqqqqqozMzMzqqqqqqAACqqqqqqqqqAACqqqqqozMzMzqqqqqqoAAKqqqqqqqgAAqqqqqqozMzMzqqqqqqoAAAqqqqqqoAAAqqqqqqozMzMzqqqqqqqgAAAKqqqgAAAKqqqqqqozMzMzqqqqqqqqAAAAAAAAAACqqqqqqqozMzMzqqqqqqqqqgAAAAAAAKqqqqqqqqozMzMzqqqqqqqqqqoAAAAAqqqqqqqqqqozMzMzOqqqqqqqqqqqqqqqqqqqqqqqqqMzMzMzM6qqqqqqqqqqqqqqqqqqqqqqqjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMw==")) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js deleted file mode 100644 index af367779a..000000000 --- a/apps/hidcam/app.js +++ /dev/null @@ -1,12 +0,0 @@ -// place your const, vars, functions or classes here - -// special function to handle display switch on -Bangle.on('lcdPower', (on) => { - if (on) { - // call your app function here - // If you clear the screen, do Bangle.drawWidgets(); - } -}); - -g.clear(); -// call your app function here diff --git a/apps/hidcam/app.png b/apps/hidcam/app.png index 582cb2e0853a5a2899a3afbd7eb19cde2ee7f6a0..3f631a0d8c2c9a2f82ad03564f6e503e97ec3b74 100644 GIT binary patch delta 1389 zcmV-z1(N#I43P_vHGc(0Nkl2XW^HHNnRPdH7YVh3 zAi4-C0tqZh0&gNIp^K!1F0{>?F8ZK?L=!~R#889`D}{vAtGp@*QYh5@80TYmE$3rD zXXnhv+r_N&?d+VhW?jr54xID6@AEwW|9PMDejI3`i6)w8Vt*MB_an&A!4sV_lRgYQ z(U60bA)%^oee%v5e=Ilm@&!mKhW3ATK_WL9^bF=wV%=wZcFZg%y|Nrf4_+Hu9Ce*+^R zc(KwX1zV6(7k9~?h!Hyfbl2<$#^#4n_>Pe{25aG9oee=sBAVos>< zeZK4Uo0W}K0(Kub;#YIxcL|;c!>=(2h$%VihL7Ie9x1h3sya$#pG2A>uj?sd(I~Ss z(fP@7oD9euxgs&*b+QBp??8vTYo};@fk(eQ-ni7;;|S=S+iZ& zQ%oh|M8YB59uK{}eKm#b*!n`1?bz81c@c`J;#MU9gEb$E-r?5R7`a@wF$XD$N25$9 z;`H^e#@*T3crrpoc}d^j=`$FZd*5QTQ}=G&k&it!R5#a z5~;sHN+RJ9nx^6DT=C!p=z5AY=&?+XoiY$ z0cl;&&o+yA*7s@|d7*&A4IY2~>ga(^KeTm$wPd}uTO2&!yS?xnk48!Bx?urTB{Y8O zp}Gz;soP|d`93RsYw&MaTMTA}HgEpTmqCEmlE3B>kete!eU3qVk*5icj{q=sO~q-e zpMSp+hDSipOcn0eKC-^7&AFmTK9h#|DVU2xY93ges2m+&u@!v=RuyBUGRAk-hCkwT zHd(mu>FzIU%Vt2;Ai4OKOP92ymMNh=r@|E=O@~DvjMJ4404)_dY^MYJZcj2U)uHs1y5MFf2e3*24Yl+_d3@l_-s& zD%LtZ@4?5YgGDLMg^}9mAF27tr*+VQKx5Z z7#3i+xVd`{3XYEuniw^l^e(~^VJCsEUR|D=s!a{d|_>g7N8ZA(iCfm4ELF z&rVwxsxW@gF|`+JYw@Fq{E9U_6X*QpQ!J#COL!HrkVtXhxX+mFkcUw@=#W~T_>4sc`SYWX)K1a5mj_QiwG0~G+^w0W_p zHez$bVew zFhhQ-(okyzE&*GOL{)@^c6%>Q%}X*JXCa*+BNxbK^Lrar)vzjd>=rk6t!Bg2Yy*Jc zVx_5CfXEIZ)s29G-vxQ7iiXqX#cA`JBUl$AmdnVYN^4aKef`VU8(5UbfNwBZPX7|7 v5qz7=%BN2Lwq^LgCeuU{O*GNO{|o;Bs>Z}7R{Rfy00000NkvXXu0mjfd2ysS delta 1586 zcmV-22F>}A3)BpdHGc*PNklVsi@IIDWLJF z<-tS+MbQVNMvWngMiMVMF($}~PbV60iJqKGq6sl-z#5IgNDvG@D81m_8L(pU0#u>& zLWh~o%w9f}(&^0JyL+a!If?wA_PXuwzxMtv>-#=9jnnvZLw~00MXDHdHZ-F~E6@xy zAk0IFoNQ?rJ?=L3M zHi1NI%W6w_1%Iftvl|hOhaVrR!sN{2xw@hkSSKyk8akT z^^R7(Pu73-SLjz9%wK^oEKM9^v2d+uZBzb_ElWR@^923y?MQ5Sh3y}H359v|8R9g6# zr~d$slVYvzX{^gvI{yK&9t6Sw)^Fo(=6P9=8U6ZW2$40`DO|&}2{l-??t>KM^xP{PQp9J>sMDt1wG0P7(^*|FxpxgxUNu=e>XY@94oX zm34@@sD<7z%UMsx_zdi4z8GAI!3iDJ{-uogg{9 zcYkp~PAMU^CCrIu%1M71EC`5o2if_~7E&h??0jeQ1Y3N6p?}G72FSn>E+sATQ)Q)70!M+WViTAl9FdlI^_bw) zg$_FC{~s`6^Y4_v-WecL8bso`qEiB0GeD&@Sajx!_6dmf;f#FXiqAg!jge#)(`PVmVSj|$`UsHZGo<5&Mq0i(4E(oP@&iXk=-U1(Bgrgt{}SSg8|!FVQpN1*ApW3%X$qBd z0$g%sHPPlXP=%gv2Ryu4{+&-ACfn41x}XBX7bma&a6)1z%_mzAlTKO8TYoT%Ma!#@ zNsf>EkEEDA*ST6fiC+AnsNK1#>!x0obq@j$QqYU-ad3ZvbjqUU+%iw(0WahgmHV6y zeLWqoYkSl4pzFQ(_Vp&ItO{WI-48rGLwQb?#vgVvduyd9_6W)rFRoQJq3I(J?{Xmi zn45#=3l9BmL6Bp<*MZejrhnxPZJd$0O%`^i+?+grDp}Z_q9=X}=<|3S6D2}Xo}(vz z>ty7i#49G<-Lx9fe*rb6#JivumHVB}LG4gdXO*R~xABLfz>ADt4^0(GkQeZWqQ#Jh z>AK{zSO Date: Fri, 17 Apr 2020 19:00:45 +0200 Subject: [PATCH 03/14] adding the extra comma as mentioned on bangle js documentation --- apps/hidcam/hidcam.app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/hidcam/hidcam.app.json b/apps/hidcam/hidcam.app.json index df35404e4..ad3ea89fe 100644 --- a/apps/hidcam/hidcam.app.json +++ b/apps/hidcam/hidcam.app.json @@ -1,4 +1,4 @@ -// Create an entry in apps.json as follows: +}, { "id": "hidcam", "name": "HID camera shutter", "shortName":"HID cam", @@ -11,3 +11,4 @@ {"name":"hidcam.img","url":"app-icon.js","evaluate":true} ], } +] From 15535b0f19c232425c01311e1f1b5c33da50d78f Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 17 Apr 2020 19:06:09 +0200 Subject: [PATCH 04/14] move json info to the good place --- apps.json | 14 +++++++++++++- apps/hidcam/hidcam.app.json | 14 -------------- 2 files changed, 13 insertions(+), 15 deletions(-) delete mode 100644 apps/hidcam/hidcam.app.json diff --git a/apps.json b/apps.json index effa14aa4..d57f218be 100644 --- a/apps.json +++ b/apps.json @@ -1293,5 +1293,17 @@ "evaluate": true } ] - } + }, +{ "id": "hidcam", + "name": "HID camera shutter", + "shortName":"HID cam", + "icon": "app.png", + "version":"0.01", + "description": "Enable HID, connect to your phone, start your camera and trigger the shot on your Bangle", + "tags": "tools", + "storage": [ + {"name":"hidcam.app.js","url":"hidcam.app.js"}, + {"name":"hidcam.img","url":"app-icon.js","evaluate":true} + ], +} ] diff --git a/apps/hidcam/hidcam.app.json b/apps/hidcam/hidcam.app.json deleted file mode 100644 index ad3ea89fe..000000000 --- a/apps/hidcam/hidcam.app.json +++ /dev/null @@ -1,14 +0,0 @@ -}, -{ "id": "hidcam", - "name": "HID camera shutter", - "shortName":"HID cam", - "icon": "app.png", - "version":"0.01", - "description": "Enable HID, connect to your phone, start your camera and trigger the shot on your Bangle", - "tags": "tools", - "storage": [ - {"name":"hidcam.app.js","url":"hidcam.app.js"}, - {"name":"hidcam.img","url":"app-icon.js","evaluate":true} - ], -} -] From 1dc2e3805d0cbbde633669b88c9f36465931ab69 Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 17 Apr 2020 19:12:17 +0200 Subject: [PATCH 05/14] json format --- apps.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/apps.json b/apps.json index d57f218be..d89fe95b0 100644 --- a/apps.json +++ b/apps.json @@ -1294,16 +1294,16 @@ } ] }, -{ "id": "hidcam", - "name": "HID camera shutter", - "shortName":"HID cam", - "icon": "app.png", - "version":"0.01", - "description": "Enable HID, connect to your phone, start your camera and trigger the shot on your Bangle", - "tags": "tools", - "storage": [ - {"name":"hidcam.app.js","url":"hidcam.app.js"}, - {"name":"hidcam.img","url":"app-icon.js","evaluate":true} - ], + { "id": "hidcam", + "name": "HID camera shutter", + "shortName":"HID cam", + "icon": "app.png", + "version":"0.01", + "description": "Enable HID, connect to your phone, start your camera and trigger the shot on your Bangle", + "tags": "tools", + "storage": [ + {"name":"hidcam.app.js","url":"hidcam.app.js"}, + {"name":"hidcam.img","url":"app-icon.js","evaluate":true} + ] } ] From 888176f4600690754019fdd870c0a84e2cb2499d Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 15:34:35 +0200 Subject: [PATCH 06/14] shorter JS file name --- apps.json | 6 +++--- apps/hidcam/{hidcam.app.js => app.js} | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename apps/hidcam/{hidcam.app.js => app.js} (100%) diff --git a/apps.json b/apps.json index 1e6b5e945..0546d6f65 100644 --- a/apps.json +++ b/apps.json @@ -1295,14 +1295,14 @@ ] }, { "id": "hidcam", - "name": "HID camera shutter", - "shortName":"HID cam", + "name": "Camera shutter", + "shortName":"Cam shutter", "icon": "app.png", "version":"0.01", "description": "Enable HID, connect to your phone, start your camera and trigger the shot on your Bangle", "tags": "tools", "storage": [ - {"name":"hidcam.app.js","url":"hidcam.app.js"}, + {"name":"hidcam.app.js","url":"app.js"}, {"name":"hidcam.img","url":"app-icon.js","evaluate":true} ] } diff --git a/apps/hidcam/hidcam.app.js b/apps/hidcam/app.js similarity index 100% rename from apps/hidcam/hidcam.app.js rename to apps/hidcam/app.js From 696afd7f6bae48410d27df696298b239b31c1f3f Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 16:08:33 +0200 Subject: [PATCH 07/14] ble hid control is removed from require and is now hard written in app --- apps/hidcam/app.js | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js index 6a4150673..f529deff2 100644 --- a/apps/hidcam/app.js +++ b/apps/hidcam/app.js @@ -1,16 +1,46 @@ -var controls = require("ble_hid_controls"); var storage = require('Storage'); const settings = storage.readJSON('setting.json',1) || { HID: false }; +// hidcontrol module selective and manual import : +report = new Uint8Array([ + 0x05, 0x0c, // USAGE_PAGE (Consumer Devices) + 0x09, 0x01, // USAGE (Consumer Control) + 0xa1, 0x01, // COLLECTION (Application) + // -------------------- common global items + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) - each field occupies 1 bit + // -------------------- misc bits + 0x95, 0x05, // REPORT_COUNT (5) + 0x09, 0xb5, // USAGE (Scan Next Track) + 0x09, 0xb6, // USAGE (Scan Previous Track) + 0x09, 0xb7, // USAGE (Stop) + 0x09, 0xcd, // USAGE (Play/Pause) + 0x09, 0xe2, // USAGE (Mute) + 0x81, 0x06, // INPUT (Data,Var,Rel) - relative inputs + // -------------------- volume up/down bits + 0x95, 0x02, // REPORT_COUNT (2) + 0x09, 0xe9, // USAGE (Volume Up) + 0x09, 0xea, // USAGE (Volume Down) + 0x81, 0x02, // INPUT (Data,Var,Abs) - absolute inputs + // -------------------- padding bit + 0x95, 0x01, // REPORT_COUNT (1) + 0x81, 0x01, // INPUT (Cnst,Ary,Abs) + 0xc0 // END_COLLECTION +]); +function p(c,cb) { NRF.sendHIDReport(c, function() { NRF.sendHIDReport(0, cb) }); } +volumeUp = function(cb) { p(0x20,cb) }; +//end of manual selective import + g.clear(); E.showMessage('BTN2 to trigger','camTrigger'); Bangle.loadWidgets(); Bangle.drawWidgets(); if (settings.HID) { - NRF.setServices(undefined, { hid : controls.report }); - shotTrigger = function() {controls.volumeUp();}; + NRF.setServices(undefined, { hid : report }); + shotTrigger = function() {volumeUp();}; } else { E.showMessage('HID disabled'); setTimeout(load, 1000); From 41d206cdbe03461808b54f71149f6598b7ac0a24 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 16:24:33 +0200 Subject: [PATCH 08/14] typos in code and no more useless timeout --- apps/hidcam/app.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js index f529deff2..9117d94f5 100644 --- a/apps/hidcam/app.js +++ b/apps/hidcam/app.js @@ -33,6 +33,8 @@ function p(c,cb) { NRF.sendHIDReport(c, function() { NRF.sendHIDReport(0, cb) }) volumeUp = function(cb) { p(0x20,cb) }; //end of manual selective import +NRF.setServices(undefined, { hid : report }); + g.clear(); E.showMessage('BTN2 to trigger','camTrigger'); Bangle.loadWidgets(); @@ -50,7 +52,6 @@ setWatch(function(e){ E.showMessage('capture'); Bangle.beep(); shotTrigger(); - set.Timeout(load,1000); g.clear(); Bangle.loadWidgets(); Bangle.drawWidgets(); From fc6d6aa4bbe1fdfefade4a0e85ab96460d1feda2 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 16:41:43 +0200 Subject: [PATCH 09/14] hid code correction --- apps/hidcam/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js index 9117d94f5..e114863cc 100644 --- a/apps/hidcam/app.js +++ b/apps/hidcam/app.js @@ -30,7 +30,7 @@ report = new Uint8Array([ 0xc0 // END_COLLECTION ]); function p(c,cb) { NRF.sendHIDReport(c, function() { NRF.sendHIDReport(0, cb) }); } -volumeUp = function(cb) { p(0x20,cb) }; +volumeUp = function(cb) { p(0x80,cb) }; //end of manual selective import NRF.setServices(undefined, { hid : report }); From b58069fba13b50bba26dadf667dc55616d64bdc2 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 16:52:30 +0200 Subject: [PATCH 10/14] massive rewrite with really heavy inspiration from music control app --- apps/hidcam/app.js | 89 +++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 48 deletions(-) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js index e114863cc..57d4a6f05 100644 --- a/apps/hidcam/app.js +++ b/apps/hidcam/app.js @@ -2,58 +2,51 @@ var storage = require('Storage'); const settings = storage.readJSON('setting.json',1) || { HID: false }; -// hidcontrol module selective and manual import : -report = new Uint8Array([ - 0x05, 0x0c, // USAGE_PAGE (Consumer Devices) - 0x09, 0x01, // USAGE (Consumer Control) - 0xa1, 0x01, // COLLECTION (Application) - // -------------------- common global items - 0x15, 0x00, // LOGICAL_MINIMUM (0) - 0x25, 0x01, // LOGICAL_MAXIMUM (1) - 0x75, 0x01, // REPORT_SIZE (1) - each field occupies 1 bit - // -------------------- misc bits - 0x95, 0x05, // REPORT_COUNT (5) - 0x09, 0xb5, // USAGE (Scan Next Track) - 0x09, 0xb6, // USAGE (Scan Previous Track) - 0x09, 0xb7, // USAGE (Stop) - 0x09, 0xcd, // USAGE (Play/Pause) - 0x09, 0xe2, // USAGE (Mute) - 0x81, 0x06, // INPUT (Data,Var,Rel) - relative inputs - // -------------------- volume up/down bits - 0x95, 0x02, // REPORT_COUNT (2) - 0x09, 0xe9, // USAGE (Volume Up) - 0x09, 0xea, // USAGE (Volume Down) - 0x81, 0x02, // INPUT (Data,Var,Abs) - absolute inputs - // -------------------- padding bit - 0x95, 0x01, // REPORT_COUNT (1) - 0x81, 0x01, // INPUT (Cnst,Ary,Abs) - 0xc0 // END_COLLECTION -]); -function p(c,cb) { NRF.sendHIDReport(c, function() { NRF.sendHIDReport(0, cb) }); } -volumeUp = function(cb) { p(0x80,cb) }; -//end of manual selective import - -NRF.setServices(undefined, { hid : report }); - -g.clear(); -E.showMessage('BTN2 to trigger','camTrigger'); -Bangle.loadWidgets(); -Bangle.drawWidgets(); +var sendHid, camShot, profile; if (settings.HID) { - NRF.setServices(undefined, { hid : report }); - shotTrigger = function() {volumeUp();}; + profile = 'camShutter'; + sendHid = function (code, cb) { + try { + NRF.sendHIDReport([1,code], () => { + NRF.sendHIDReport([1,0], () => { + if (cb) cb(); + }); + }); + } catch(e) { + print(e); + } + }; + camShot = function (cb) { sendHid(0x80, cb); }; } else { E.showMessage('HID disabled'); setTimeout(load, 1000); } - -setWatch(function(e){ - E.showMessage('capture'); - Bangle.beep(); - shotTrigger(); +function drawApp() { g.clear(); - Bangle.loadWidgets(); - Bangle.drawWidgets(); - E.showMessage('BTN2 to trigger','camTrigger'); -},BTN2,{ repeat:true, edge:'falling' }); + g.setFont("6x8",2); + g.setFontAlign(0,0); + g.drawString(profile, 120, 120); + const d = g.getWidth() - 18; + + function c(a) { + return { + width: 8, + height: a.length, + bpp: 1, + buffer: (new Uint8Array(a)).buffer + }; + } + + g.drawImage(c([0,8,12,14,255,14,12,8]),d,116); +} + +if (camShot) { + setWatch(function(e) { + E.showMessage('camShot !'); + setTimeout(drawApp, 1000); + camShot(() => {}); + }, BTN2, { edge:"falling",repeat:true,debounce:50}); + + drawApp(); +} From 58e826accc018bbc638721f822b105959a19df52 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 17:01:01 +0200 Subject: [PATCH 11/14] adding widgets --- apps/hidcam/app.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js index 57d4a6f05..c3c672d4c 100644 --- a/apps/hidcam/app.js +++ b/apps/hidcam/app.js @@ -24,6 +24,8 @@ if (settings.HID) { } function drawApp() { g.clear(); + Bangle.loadWidgets() + Bangle.drawWidgets() g.setFont("6x8",2); g.setFontAlign(0,0); g.drawString(profile, 120, 120); From 63526c49e227a423eea5eaab25226c029d3e37b9 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 17:08:01 +0200 Subject: [PATCH 12/14] using app icon instead of text --- apps/hidcam/app.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js index c3c672d4c..6e599959c 100644 --- a/apps/hidcam/app.js +++ b/apps/hidcam/app.js @@ -26,9 +26,10 @@ function drawApp() { g.clear(); Bangle.loadWidgets() Bangle.drawWidgets() - g.setFont("6x8",2); - g.setFontAlign(0,0); - g.drawString(profile, 120, 120); +// g.setFont("6x8",2); +// g.setFontAlign(0,0); +// g.drawString(profile, 120, 120); + g.drawImage(storage.read("hidcam.img"),120,120) const d = g.getWidth() - 18; function c(a) { From 20f7c80462ce905288a987eda8455d9016771041 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 17:30:28 +0200 Subject: [PATCH 13/14] graphical adjustments --- apps/hidcam/app.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/apps/hidcam/app.js b/apps/hidcam/app.js index 6e599959c..89b8ac4a1 100644 --- a/apps/hidcam/app.js +++ b/apps/hidcam/app.js @@ -24,12 +24,10 @@ if (settings.HID) { } function drawApp() { g.clear(); - Bangle.loadWidgets() - Bangle.drawWidgets() -// g.setFont("6x8",2); -// g.setFontAlign(0,0); -// g.drawString(profile, 120, 120); - g.drawImage(storage.read("hidcam.img"),120,120) + Bangle.loadWidgets(); + Bangle.drawWidgets(); + g.fillCircle(122,127,60); + g.drawImage(storage.read("hidcam.img"),100,105); const d = g.getWidth() - 18; function c(a) { @@ -40,8 +38,7 @@ function drawApp() { buffer: (new Uint8Array(a)).buffer }; } - - g.drawImage(c([0,8,12,14,255,14,12,8]),d,116); + g.fillRect(180,130, 240, 124); } if (camShot) { From d545a7a87d8a73270f90263e337a232339355360 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 18 Apr 2020 17:36:47 +0200 Subject: [PATCH 14/14] changelog update --- apps/hidcam/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/hidcam/ChangeLog b/apps/hidcam/ChangeLog index 665c0df6e..73b3268b7 100644 --- a/apps/hidcam/ChangeLog +++ b/apps/hidcam/ChangeLog @@ -1 +1 @@ -0.01: Init +0.01: Core functionnality