Majestic to Waybeam conversion - #132
Draft
Lupinixx wants to merge 2 commits into
Draft
Conversation
Contributor
Author
|
I've bench tested it and it all works. Will keep this as draft as long as the main VTX images does not yet implement waybeam_venc yet. |
Document the Majestic-to-Waybeam conversion context for AI coding agents. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Reapplies the majestic-to-waybeam camera changes on top of the Miller column menu rework (colmenu_pages.c), which replaced the old imperative air_camera.c/gs_system.c widget builders with data-driven page tables. - Video: replace WFB-specific Size/FPS (Majestic resolution/fps) with a single Mode dropdown (Waybeam fixed-mode selector), gated to WFB via mode_mask. APFPV keeps its existing Video Mode item unchanged. - Video: drop the Codec dropdown — the Waybeam/star6e encoder is H.265-only. - Image: rename Hue -> Brightness and Luminance -> Lightness (Waybeam IQ param names), add new Sharpness and HSV sliders. - ISP: rename Exposure -> EV Compensation (Waybeam ae_ev_comp IQ param). The gsmenu.sh side of this conversion (Waybeam API helpers, get/set bodies for mode/brightness/lightness/sharpness/hsv/exposure, etc.) is not carried into this repo: upstream master turned gsmenu.sh into a generic no-op boilerplate template. That real implementation needs to be ported into ~/sbc-groundstations/package/pixelpilot/files/gsmenu.sh instead, which is where the actual air/ground station logic now lives. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Lupinixx
force-pushed
the
majestic-to-waybeam
branch
from
August 3, 2026 14:10
3af0943 to
be35aec
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In this (draft) PR I compile a list of everything that needs to change to make PixelPilot compatible with waybeam_venc instead of Majestic, and track progress on the implementation.
If anything is missing, let me know and I'll add it to the list.
Sensor / Mode
GET /api/v1/modesRecording
get air camera rec_enable— query recording state viaGET /api/v1/record/statusset air camera rec_enable— start/stop viaGET /api/v1/record/start|stopwith retry-and-status-check loop (no Majestic CLI fallback)Infrastructure helpers (gsmenu.sh)
waybeam_api_get(endpoint)— base curl wrapperwaybeam_record_active()— checks/record/statusfor"active": truewaybeam_record_start()/waybeam_record_stop()waybeam_record_set_with_retry_bg(on|off)— retry loop with status verification, background subshellwaybeam_set_config(key, value)— calls/api/v1/set?key=value; returns 1 and logs to stderr on failurewaybeam_mode_options()/waybeam_mode_index_from_label()— mode dropdown helperswaybeam_get_config(key)—GET /api/v1/get?key, replacesget_majestic_value()waybeam_get_iq(param)— query a single ISP IQ parameter fromGET /api/v1/iqwaybeam_set_iq(param, value)— set a single ISP IQ parameter viaGET /api/v1/iq/setwaybeam_restart()—GET /api/v1/restart(needed after setting RESTART-mutability fields)Image settings — get side
get air camera mirror→GET /api/v1/get?image.mirrorget air camera flip→GET /api/v1/get?image.flipget air camera contrast→GET /api/v1/iq→contrastparam→ renamed toget air camera hueget air camera brightness→GET /api/v1/iq→brightnessparamget air camera saturation→GET /api/v1/iq→saturationparam→ renamed toget air camera luminaceget air camera lightness→GET /api/v1/iq→lightnessparamget air camera sharpness(new) →GET /api/v1/iq→sharpnessparamget air camera hsv(new) →GET /api/v1/iq→hsvparamImage settings — set side
set air camera mirror→GET /api/v1/set?image.mirror=+ restartset air camera flip→GET /api/v1/set?image.flip=+ restartset air camera contrast→GET /api/v1/iq/set?param=contrast&value=(LIVE)→ renamed toset air camera hueset air camera brightness→GET /api/v1/iq/set?param=brightness&value=(LIVE)set air camera saturation→GET /api/v1/iq/set?param=saturation&value=(LIVE)→ renamed toset air camera luminaceset air camera lightness→GET /api/v1/iq/set?param=lightness&value=(LIVE)set air camera sharpness(new) →GET /api/v1/iq/set?param=sharpness&value=(LIVE)set air camera hsv(new) →GET /api/v1/iq/set?param=hsv&value=(LIVE)Video encoding — get side
get air camera bitrate→GET /api/v1/get?video0.bitrateget air camera gopsize→GET /api/v1/get?video0.gopSizeget air camera rc_mode→GET /api/v1/get?video0.rcMode(addedqvbroption)get air camera codec→ returnsh265statically; control hidden in UI (Waybeam is H.265-only on star6e)Video encoding — set side
set air camera bitrate→GET /api/v1/set?video0.bitrate=(LIVE)set air camera gopsize→GET /api/v1/set?video0.gopSize=(LIVE)set air camera rc_mode→GET /api/v1/set?video0.rcMode=+ restartset air camera codec→ no-op; control hidden in UIISP / exposure — get side
get air camera antiflicker→GET /api/v1/iq→ae_flickerparamget air camera exposure→GET /api/v1/iq→ae_ev_comp(EV compensation, range -4 to 4); UI label renamed to "EV Compensation"get air camera sensor_file→GET /api/v1/get?isp.sensorBinISP / exposure — set side
set air camera antiflicker→GET /api/v1/iq/set?param=ae_flicker&value=set air camera exposure→GET /api/v1/iq/set?param=ae_ev_comp&value=(LIVE)set air camera sensor_file→GET /api/v1/set?isp.sensorBin=+ restartFPV / ROI — get side
get air camera fpv_enable→GET /api/v1/get?fpv.roiEnabledget air camera noiselevel→GET /api/v1/get?fpv.noiseLevel(range 0–7)FPV / ROI — set side
set air camera fpv_enable→GET /api/v1/set?fpv.roiEnabled=(LIVE)set air camera noiselevel→GET /api/v1/set?fpv.noiseLevel=+ restartRecording config (drone-side) — get side
get air camera rec_split→GET /api/v1/get?record.maxSeconds(range 0–300)get air camera rec_maxusage→GET /api/v1/get?record.maxMB(range 0–10000)Recording config (drone-side) — set side
set air camera rec_split→GET /api/v1/set?record.maxSeconds=+ restartset air camera rec_maxusage→GET /api/v1/set?record.maxMB=+ restartAdditional fixes
set air wfbng adaptivelink— removed majestic CLI calls; useswaybeam_set_configforvideo0.qpDeltareload_switch_value— fix callback double-fire bug (remove/re-add event cb aroundlv_obj_set_state)bitratevisibility — no longer toggled bygsmenu_toggle_rxmodeInfrastructure cleanup
get_majestic_value()(all camera reads now use Waybeam API)MAJESTIC_YAMLvariablemajestic.yamlfromrefresh_cache()SCPwfb.yaml/alink.confSCP cache retained — still needed for WFB-ng and alink settingsOut of scope for this PR
wifibroadcast cli, not Majestic/waybeamwifibroadcast cli