#401 pocket handling of computer data

This commit is contained in:
Mikayla 2025-08-01 21:41:40 +00:00
parent 4fb39213f2
commit 0bfe767710
4 changed files with 57 additions and 3 deletions

View File

@ -35,8 +35,8 @@ iocontrol.LINK_STATE = LINK_STATE
---@class pocket_ioctl ---@class pocket_ioctl
local io = { local io = {
version = "unknown", version = "unknown", -- pocket version
ps = psil.create() ps = psil.create() -- pocket PSIL
} }
local config = nil ---@type pkt_config local config = nil ---@type pkt_config
@ -91,6 +91,9 @@ function iocontrol.init_core(pkt_comms, nav, cfg)
tone_indicators = {} ---@type IndicatorLight[] indicators to update from supervisor tone states tone_indicators = {} ---@type IndicatorLight[] indicators to update from supervisor tone states
} }
-- computer list
io.diag.get_comps = function () comms.diag__get_computers() end
-- API access -- API access
---@class pocket_ioctl_api ---@class pocket_ioctl_api
io.api = { io.api = {

View File

@ -871,6 +871,52 @@ function iorx.record_radiation_data(data)
fac.ps.publish("radiation_monitors", textutils.serialize(connected)) fac.ps.publish("radiation_monitors", textutils.serialize(connected))
end end
local comp_record = {}
-- update the computers app with the network data from INFO_LIST_CMP
---@param data table
function iorx.record_network_data(data)
local ps = io.facility.ps
local connected = {}
-- add/update connected computers
for i = 1, #data do
local entry = data[i]
local id = entry[2]
local pfx = "comp_" .. id
connected[id] = true
ps.publish(pfx .. "_type", entry[1])
ps.publish(pfx .. "_addr", id)
ps.publish(pfx .. "_fw", entry[3])
ps.publish(pfx .. "_rtt", entry[4])
if not comp_record[id] then
comp_record[id] = true
-- trigger the app to create the new element
ps.publish("comp_connect", id)
end
end
-- reset the published value
ps.publish("comp_connect", false)
-- remove disconnected computers
for id, state in pairs(comp_record) do
if state and not connected[id] then
comp_record[id] = false
-- trigger the app to delete the element
ps.publish("comp_disconnect", id)
end
end
-- reset the published value
ps.publish("comp_disconnect", false)
end
return function (io_obj) return function (io_obj)
io = io_obj io = io_obj
return iorx return iorx

View File

@ -558,6 +558,11 @@ function pocket.comms(version, nic, sv_watchdog, api_watchdog, nav)
if self.sv.linked then _send_sv(MGMT_TYPE.DIAG_ALARM_SET, { id, state }) end if self.sv.linked then _send_sv(MGMT_TYPE.DIAG_ALARM_SET, { id, state }) end
end end
-- supervisor get connected computers
function public.diag__get_computers()
if self.sv.linked then _send_sv(MGMT_TYPE.INFO_LIST_CMP, {}) end
end
-- coordinator get facility app data -- coordinator get facility app data
function public.api__get_facility() function public.api__get_facility()
if self.api.linked then _send_api(CRDN_TYPE.API_GET_FAC_DTL, {}) end if self.api.linked then _send_api(CRDN_TYPE.API_GET_FAC_DTL, {}) end

View File

@ -22,7 +22,7 @@ local pocket = require("pocket.pocket")
local renderer = require("pocket.renderer") local renderer = require("pocket.renderer")
local threads = require("pocket.threads") local threads = require("pocket.threads")
local POCKET_VERSION = "v0.13.5-beta" local POCKET_VERSION = "v0.13.6-beta"
local println = util.println local println = util.println
local println_ts = util.println_ts local println_ts = util.println_ts