Add the gfcloud full-cloud controller daemon

gfcloud runs the machine under the Glowforge web service (the factory
cloud experience: the app drives homing, framing, printing). Its init
service starts it only when controller_mode = cloud - mutually exclusive
with grblHAL, which already stands down for that mode - so it owns
/dev/glowforge exclusively. Persistent GFUIService loop with a clean
SIGTERM shutdown that safes the hardware; the init script mirrors
grblhal.init. The image installs gfcloud and python3-ffmachine.
This commit is contained in:
ScottW514
2026-08-08 19:08:13 -04:00
parent 5d7ca46c07
commit abf85fccfe
4 changed files with 191 additions and 1 deletions
@@ -0,0 +1,29 @@
DESCRIPTION = "Full Glowforge web-service controller daemon for ForgeFIRM (cloud mode)"
HOMEPAGE = "https://github.com/ScottW514/forgefirm"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PV = "0.1.0"
SRC_URI = " \
file://gfcloud.py \
file://gfcloud.init \
"
S = "${WORKDIR}"
inherit update-rc.d
INITSCRIPT_NAME = "gfcloud"
INITSCRIPT_PARAMS = "defaults 92"
do_install() {
install -Dm 0755 ${WORKDIR}/gfcloud.py ${D}${sbindir}/gfcloud.py
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/gfcloud.init ${D}${sysconfdir}/init.d/gfcloud
}
# Shares the Glowforge web-service config with gfhome (SERVICE section,
# camera captures via forgectrl); pulls the shared machine glue.
RDEPENDS:${PN} += "python3-core python3-ffmachine python3-gfhardware python3-gfutilities"