Support for Web IDE remote from Gadgetbridge

pull/2735/head^2
Gordon Williams 2023-05-05 11:15:40 +01:00
parent 3e26732693
commit b6ca665724
2 changed files with 45 additions and 3 deletions

View File

@ -144,6 +144,7 @@
<button class="btn tooltip" id="downloadallapps" data-tooltip="Download all Bangle.js files to a ZIP file">Backup</button>
<button class="btn tooltip" id="uploadallapps" data-tooltip="Restore Bangle.js from a ZIP file">Restore</button>
<button class="btn tooltip" id="defaultbanglesettings" data-tooltip="Reset your Bangle's settings to the defaults">Reset Settings</button>
<button class="btn tooltip" id="webideremote" data-tooltip="Enable the Web IDE remote server">Web IDE Remote</button>
</p>
<h3>Settings</h3>
<div class="form-group">
@ -203,6 +204,9 @@
<script src="core/js/appinfo.js"></script>
<script src="core/js/index.js"></script>
<script src="core/js/pwa.js" defer></script>
<!-- FIXME - use espruino.com/ide, github -->
<script src="https://espruino.github.io/EspruinoWebIDE/js/libs/peerjs.min.js"></script>
<script src="https://espruino.github.io/EspruinoWebIDE/EspruinoTools/libs/webrtc-connection.js"></script>
<script>
/*Android = {
bangleTx : function(data) {
@ -228,8 +232,10 @@ if (typeof Android!=="undefined") {
if (writecb) setTimeout(writecb,10);
},
close : function() {},
on : function(evt,cb) { handlers[evt] = cb; },
received : "",
hadData : false
hadData : false,
handlers : []
}
function bangleRx(data) {
@ -237,6 +243,9 @@ if (typeof Android!=="undefined") {
connection.received += data;
connection.hadData = true;
if (connection.cb) connection.cb(data);
// call data event
if (connection.handlers["data"])
connection.handlers["data"](data);
}
function log(level, s) {
@ -321,6 +330,7 @@ if (typeof Android!=="undefined") {
// ----------------------------------------------------------
Puck = {
/// Are we writing debug information? 0 is no, 1 is some, 2 is more, 3 is all.
debug : Puck.debug,
@ -331,7 +341,8 @@ if (typeof Android!=="undefined") {
/// Called with the current send progress or undefined when done - you can replace this with your own function
writeProgress : Puck.writeProgress,
connect : function(callback) {
setTimeout(callback, 10);
setTimeout(callback, 10, connection);
return connection;
},
write : write,
eval : function(expr, cb) {
@ -367,6 +378,37 @@ if (typeof Android!=="undefined") {
});
}, 500);
}
// Button to Enable Remote Web IDE
var el = document.getElementById("webideremote");
if (el) el.addEventListener("click", event=>{
webrtc = webrtcInit({
bridge:true,
onStatus : function(s) {
showToast(s);
},
onPeerID : function(s) {
showToast("Bridge's Peer ID: "+s);
showPrompt("Web IDE Remote Access","Remote access enabled\nPeer ID: "+s).then(() => {
}, function() { /* cancelled */ });
},
onGetPorts : function(cb) {
cb([{path:"Android",description:"Remote Device Connection",type:"socket"}]);
},
onPortConnect : function(serialPort, cb) {
cb(); // we're already connected...
},
onPortDisconnect : function(serialPort) {
},
onPortWrite : function(data, cb) {
Puck.write(data, cb);
}
});
connection.on("data", function(d) {
webrtc.onPortReceived(d);
});
});
</script>
</body>
</html>

2
core

@ -1 +1 @@
Subproject commit 83d92f2178901aa3130643e3a580fdda0801f8c1
Subproject commit 4ef47c139ef3091f230697667acba622b69b7c55