2020-08-16 02:17:59 +02:00
|
|
|
class JarvisService extends OS.application.BaseService
|
|
|
|
constructor: (args) ->
|
|
|
|
super "JarvisService", args
|
|
|
|
@text = __("Jarvis({0}%)", 0.toString())
|
|
|
|
@iconclass = "fa fa-android"
|
|
|
|
|
|
|
|
@nodes = [
|
|
|
|
{text: __("Status"), id: 1},
|
2020-08-16 02:51:08 +02:00
|
|
|
{text: __("Exit service"), id: 2},
|
|
|
|
{text: __("Shutdown"), id: 3},
|
|
|
|
{text: __("Reboot"), id: 4}
|
2020-08-16 02:17:59 +02:00
|
|
|
]
|
|
|
|
@onchildselect = (e) => @action e
|
|
|
|
|
|
|
|
init: () ->
|
|
|
|
checklib = () =>
|
|
|
|
if not Antunnel.tunnel
|
|
|
|
@error __("The Antunnel service is not started, please start it first")
|
|
|
|
@_gui.pushService("Antunnel/AntunnelService")
|
|
|
|
.catch (e) =>
|
|
|
|
@error e.toString(), e
|
|
|
|
@quit()
|
|
|
|
else
|
|
|
|
@tunnel = Antunnel.tunnel
|
|
|
|
@sub = new Antunnel.Subscriber("notification")
|
|
|
|
@sub.onopen = () =>
|
|
|
|
#@sub.send Antunnel.Msg.DATA, new TextEncoder("utf-8").encode("Hello")
|
|
|
|
console.log("Subscribed to notification channel")
|
|
|
|
|
|
|
|
@sub.onerror = (e) =>
|
|
|
|
@error __("Error: {0}", new TextDecoder("utf-8").decode(e.data)), e
|
|
|
|
#@sub = undefined
|
|
|
|
|
|
|
|
@sub.onmessage = (e) =>
|
|
|
|
obj = JSON.parse(new TextDecoder("utf-8").decode(e.data)) if e.data
|
|
|
|
# update the battery
|
|
|
|
@text = __("Jarvis({0}%)", Math.round(obj.battery_percent).toString())
|
|
|
|
@update()
|
|
|
|
|
|
|
|
@sub.onclose = () =>
|
|
|
|
@sub = undefined
|
|
|
|
@notify __("Unsubscribed to the notification service")
|
|
|
|
@quit()
|
|
|
|
Antunnel.tunnel.subscribe @sub
|
|
|
|
|
|
|
|
if not window.Antunnel
|
|
|
|
console.log "require Antunnel"
|
|
|
|
@_api.requires("pkg://Antunnel/main.js").then () =>
|
|
|
|
checklib()
|
|
|
|
.catch (e) =>
|
|
|
|
@error __("Unable to load Antunnel: {0}",e.toString()), e
|
|
|
|
@quit()
|
|
|
|
else
|
|
|
|
checklib()
|
|
|
|
|
|
|
|
|
|
|
|
action: (e) ->
|
|
|
|
switch e.data.item.data.id
|
|
|
|
when 1
|
|
|
|
@_gui.launch "JarvisControl", []
|
|
|
|
when 2
|
|
|
|
@quit()
|
2020-08-16 02:51:08 +02:00
|
|
|
when 3
|
|
|
|
@execute("halt\n")
|
|
|
|
when 4
|
|
|
|
@execute("reboot\n")
|
|
|
|
|
|
|
|
execute: (cmd) ->
|
|
|
|
return unless @tunnel
|
|
|
|
sub = new Antunnel.Subscriber("jarvis_control")
|
|
|
|
sub.onopen = () =>
|
|
|
|
console.log("Subscribed to jarvis_control channel. Send the command")
|
|
|
|
sub.send Antunnel.Msg.DATA, new TextEncoder("utf-8").encode(cmd)
|
|
|
|
sub.close()
|
|
|
|
|
|
|
|
sub.onerror = (e) =>
|
|
|
|
@error __("Error: {0}", new TextDecoder("utf-8").decode(e.data)), e
|
|
|
|
#@sub = undefined
|
|
|
|
|
|
|
|
sub.onclose = () =>
|
|
|
|
@notify __("Unsubscribed to the jarvis_control service")
|
|
|
|
@tunnel.subscribe sub
|
2020-08-16 02:17:59 +02:00
|
|
|
|
|
|
|
awake: () ->
|
|
|
|
|
|
|
|
cleanup: () ->
|
|
|
|
@sub.close() if @sub
|
|
|
|
|
|
|
|
|
|
|
|
this.OS.register "JarvisService", JarvisService
|