diff --git a/apps/web/public/i18n/locales/en/map.json b/apps/web/public/i18n/locales/en/map.json index c1cf0f63d..2bbfd1ddc 100644 --- a/apps/web/public/i18n/locales/en/map.json +++ b/apps/web/public/i18n/locales/en/map.json @@ -14,6 +14,7 @@ "positionPrecision": "Show position precision", "traceroutes": "Show traceroutes", "waypoints": "Show waypoints", + "geofences": "Show geofences", "heatmap": "Show heatmap", "density": "Density" }, @@ -32,7 +33,71 @@ "bearing": "Absolute bearing:", "lockedTo": "Locked by:", "latitude": "Latitude:", - "longitude": "Longitude:" + "longitude": "Longitude:", + "geofenceRadius": "Geofence radius:", + "notifications": "Alerts:", + "enter": "enter", + "exit": "exit", + "favoritesOnly": "favorites only", + "editGeofence": "Edit geofence", + "addGeofence": "Add geofence" + }, + "waypointEdit": { + "title": "Edit waypoint – {{name}}", + "titleCreate": "New waypoint", + "name": "Name", + "description": "Description", + "icon": "Icon", + "latitude": "Latitude", + "longitude": "Longitude", + "expiresAt": "Expires", + "radius": "Geofence radius", + "radiusHint": "0 to disable the circular geofence.", + "boundingBox": "Bounding box", + "west": "West", + "south": "South", + "east": "East", + "north": "North", + "captureFromMap": "Use current map view", + "notifyOnEnter": "Alert on enter", + "notifyOnExit": "Alert on exit", + "notifyFavoritesOnly": "Favorites only", + "save": "Save & broadcast", + "saving": "Saving…", + "cancel": "Cancel", + "savedToast": "Waypoint saved: {{name}}", + "createdToast": "Waypoint created: {{name}}", + "errorToast": "Could not save waypoint", + "errorMissingName": "Waypoint needs a name", + "errorBadCoords": "Latitude and longitude are required", + "enterToast": "{{node}} entered {{waypoint}}", + "exitToast": "{{node}} left {{waypoint}}", + "viewOnMap": "View on map", + "newWaypointAria": "New waypoint", + "placementHint": "Click on the map to place your waypoint", + "drawHint": "Drag on the map to define the bounding box", + "drawBox": "Draw box", + "editBox": "Edit box", + "removeBox": "Remove box", + "radiusOff": "Off" + }, + "unit": { + "meter": { + "one": "meter", + "plural": "meters" + }, + "kilometer": { + "plural": "km" + }, + "foot": { + "plural": "ft" + }, + "mile": { + "plural": "mi" + }, + "degree": { + "suffix": "°" + } }, "myNode": { "tooltip": "This device" diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 67f0b89c7..b358647cd 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -7,6 +7,7 @@ import { RegionSetupReminder } from "@components/RegionSetupReminder.tsx"; import { Toaster } from "@components/Toaster.tsx"; import { ErrorPage } from "@components/UI/ErrorPage.tsx"; import Footer from "@components/UI/Footer.tsx"; +import { useGeofenceAlerts } from "@core/hooks/useGeofenceAlerts.ts"; import { useTheme } from "@core/hooks/useTheme.ts"; import { SidebarProvider, useAppStore, useDeviceStore } from "@core/stores"; import { Connections } from "@pages/Connections/index.tsx"; @@ -15,6 +16,11 @@ import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"; import { ErrorBoundary } from "react-error-boundary"; import { MapProvider } from "react-map-gl/maplibre"; +const GeofenceAlertsBridge = () => { + useGeofenceAlerts(); + return null; +}; + export function App() { useTheme(); @@ -41,6 +47,7 @@ export function App() { {device ? (
+ diff --git a/apps/web/src/components/Dialog/WaypointEditDialog.test.tsx b/apps/web/src/components/Dialog/WaypointEditDialog.test.tsx new file mode 100644 index 000000000..102ff4f99 --- /dev/null +++ b/apps/web/src/components/Dialog/WaypointEditDialog.test.tsx @@ -0,0 +1,232 @@ +import { create } from "@bufbuild/protobuf"; +import type { WaypointWithMetadata } from "@core/stores"; +import { act, fireEvent, render, screen } from "@testing-library/react"; +import { Protobuf } from "@meshtastic/sdk"; +import type { + ButtonHTMLAttributes, + InputHTMLAttributes, + ReactNode, +} from "react"; +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { WaypointEditDialog } from "./WaypointEditDialog.tsx"; + +const mockToast = vi.fn(); +vi.mock("@core/hooks/useToast.ts", () => ({ + useToast: () => ({ toast: mockToast }), +})); + +const sendWaypoint = vi.fn().mockResolvedValue(0); +const addWaypoint = vi.fn(); +vi.mock("@core/stores", () => ({ + useDevice: () => ({ + hardware: { myNodeNum: 1 }, + connection: { sendWaypoint }, + addWaypoint, + // Metric device — matches the presets asserted below. + config: { display: { units: 0 } }, + }), +})); + +vi.mock("react-i18next", () => ({ + useTranslation: () => ({ + t: (key: string, opts?: Record) => + opts ? `${key} ${JSON.stringify(opts)}` : key, + }), +})); + +vi.mock("@components/UI/Dialog.tsx", () => ({ + Dialog: ({ open, children }: { open: boolean; children: ReactNode }) => + open ?
{children}
: null, + DialogContent: ({ children }: { children: ReactNode }) => ( +
{children}
+ ), + DialogHeader: ({ children }: { children: ReactNode }) => ( +
{children}
+ ), + DialogTitle: ({ children }: { children: ReactNode }) =>

{children}

, + DialogDescription: ({ children }: { children: ReactNode }) => ( +

{children}

+ ), + DialogClose: () => null, + DialogFooter: ({ children }: { children: ReactNode }) => ( +
{children}
+ ), +})); + +vi.mock("@components/UI/Button.tsx", () => ({ + Button: (props: ButtonHTMLAttributes) => ( + + ); + })} +
+ + +
+
+ +
+ + {form.hasBox && ( + + )} +
+
+ {form.hasBox && ( +

{boxSummary}

+ )} +
+ + {hasAnyGeofence && ( +
+
+ + + setForm((s) => ({ ...s, notifyOnEnter: v })) + } + /> +
+
+ + + setForm((s) => ({ ...s, notifyOnExit: v })) + } + /> +
+ {hasAnyNotifyOn && ( +
+ + + setForm((s) => ({ ...s, notifyFavoritesOnly: v })) + } + /> +
+ )} +
+ )} + + + + + + + + + ); +}; diff --git a/apps/web/src/components/PageComponents/Map/BoundingBoxOverlay.tsx b/apps/web/src/components/PageComponents/Map/BoundingBoxOverlay.tsx new file mode 100644 index 000000000..bdb3a231f --- /dev/null +++ b/apps/web/src/components/PageComponents/Map/BoundingBoxOverlay.tsx @@ -0,0 +1,25 @@ +import type { MapRef } from "react-map-gl/maplibre"; + +interface BoundingBoxOverlayProps { + mapRef: MapRef; + start: [number, number]; + current: [number, number]; +} + +export const BoundingBoxOverlay = ({ mapRef, start, current }: BoundingBoxOverlayProps) => { + const map = mapRef.getMap(); + if (!map) return null; + const rect = map.getContainer().getBoundingClientRect(); + const a = map.project(start); + const b = map.project(current); + const left = Math.min(a.x, b.x) + rect.left; + const top = Math.min(a.y, b.y) + rect.top; + const width = Math.abs(a.x - b.x); + const height = Math.abs(a.y - b.y); + return ( +
+ ); +}; diff --git a/apps/web/src/components/PageComponents/Map/Layers/GeofenceLayer.test.ts b/apps/web/src/components/PageComponents/Map/Layers/GeofenceLayer.test.ts new file mode 100644 index 000000000..d7fd3d5ca --- /dev/null +++ b/apps/web/src/components/PageComponents/Map/Layers/GeofenceLayer.test.ts @@ -0,0 +1,62 @@ +import { create } from "@bufbuild/protobuf"; +import { Protobuf } from "@meshtastic/sdk"; +import { describe, expect, it } from "vitest"; +import { generateGeofenceFeatures } from "./GeofenceLayer.tsx"; + +function makeWaypoint(fields: Record) { + const wp = create(Protobuf.Mesh.WaypointSchema, fields as never); + return Object.assign(wp, { + metadata: { channel: 0, created: new Date(), from: 1 }, + }); +} + +describe("GeofenceLayer – feature generation", () => { + it("skips waypoints without a geofence", () => { + const fc = generateGeofenceFeatures([makeWaypoint({ id: 1 })]); + expect(fc.features).toHaveLength(0); + }); + + it("emits a circle polygon for radius > 0", () => { + const fc = generateGeofenceFeatures([ + makeWaypoint({ id: 1, latitudeI: 400000000, longitudeI: -740000000, geofenceRadius: 500 }), + ]); + expect(fc.features).toHaveLength(1); + expect(fc.features[0]!.properties.kind).toBe("circle"); + expect(fc.features[0]!.properties.waypointId).toBe(1); + }); + + it("emits a rectangle polygon for bounding box", () => { + const box = create(Protobuf.Mesh.BoundingBoxSchema, { + longitudeWestI: -740100000, + latitudeSouthI: 399900000, + longitudeEastI: -739900000, + latitudeNorthI: 400100000, + }); + const fc = generateGeofenceFeatures([makeWaypoint({ id: 2, boundingBox: box })]); + expect(fc.features).toHaveLength(1); + expect(fc.features[0]!.properties.kind).toBe("box"); + const ring = fc.features[0]!.geometry.coordinates[0]!; + expect(ring).toHaveLength(5); + expect(ring[0]).toEqual(ring[4]); + }); + + it("emits both shapes when both are set", () => { + const box = create(Protobuf.Mesh.BoundingBoxSchema, { + longitudeWestI: 0, + latitudeSouthI: 0, + longitudeEastI: 1000000, + latitudeNorthI: 1000000, + }); + const fc = generateGeofenceFeatures([ + makeWaypoint({ + id: 3, + latitudeI: 0, + longitudeI: 0, + geofenceRadius: 100, + boundingBox: box, + }), + ]); + expect(fc.features).toHaveLength(2); + expect(fc.features.map((f) => f.properties.kind).sort()).toEqual(["box", "circle"]); + }); +}); diff --git a/apps/web/src/components/PageComponents/Map/Layers/GeofenceLayer.tsx b/apps/web/src/components/PageComponents/Map/Layers/GeofenceLayer.tsx new file mode 100644 index 000000000..855a01bbb --- /dev/null +++ b/apps/web/src/components/PageComponents/Map/Layers/GeofenceLayer.tsx @@ -0,0 +1,102 @@ +import type { WaypointWithMetadata } from "@core/stores"; +import { toLngLat } from "@core/utils/geo.ts"; +import { coordToDeg, hasGeofence } from "@core/utils/geofence.ts"; +import { circle } from "@turf/turf"; +import type { Feature, FeatureCollection, Polygon } from "geojson"; +import { useMemo } from "react"; +import { Layer, Source } from "react-map-gl/maplibre"; + +export interface GeofenceLayerProps { + id: string; + waypoints: readonly WaypointWithMetadata[]; + isVisible: boolean; +} + +type FeatureProps = { + waypointId: number; + kind: "circle" | "box"; +}; + +export function generateGeofenceFeatures( + waypoints: readonly WaypointWithMetadata[], +): FeatureCollection { + const features: Feature[] = []; + for (const wp of waypoints) { + if (!hasGeofence(wp)) continue; + if (wp.geofenceRadius > 0) { + const [lng, lat] = toLngLat({ + latitudeI: wp.latitudeI, + longitudeI: wp.longitudeI, + }); + const feat = circle([lng, lat], wp.geofenceRadius, { + steps: 64, + units: "meters", + }) as Feature; + feat.properties = { waypointId: wp.id, kind: "circle" }; + features.push(feat); + } + if (wp.boundingBox) { + const west = coordToDeg(wp.boundingBox.longitudeWestI); + const east = coordToDeg(wp.boundingBox.longitudeEastI); + const south = coordToDeg(wp.boundingBox.latitudeSouthI); + const north = coordToDeg(wp.boundingBox.latitudeNorthI); + const rectangle = (w: number, e: number): Polygon => ({ + type: "Polygon", + coordinates: [ + [ + [w, south], + [e, south], + [e, north], + [w, north], + [w, south], + ], + ], + }); + // Anti-meridian: split into two polygons so we don't render a + // huge polygon wrapping around the globe. + const geometries = + west <= east + ? [rectangle(west, east)] + : [rectangle(west, 180), rectangle(-180, east)]; + for (const geometry of geometries) { + features.push({ + type: "Feature", + properties: { waypointId: wp.id, kind: "box" }, + geometry, + }); + } + } + } + return { type: "FeatureCollection", features }; +} + +export const GeofenceLayer = ({ + id, + waypoints, + isVisible, +}: GeofenceLayerProps) => { + const data = useMemo(() => generateGeofenceFeatures(waypoints), [waypoints]); + return ( + + + + + ); +}; diff --git a/apps/web/src/components/PageComponents/Map/Layers/WaypointLayer.tsx b/apps/web/src/components/PageComponents/Map/Layers/WaypointLayer.tsx index 429bb1ef2..b48668453 100644 --- a/apps/web/src/components/PageComponents/Map/Layers/WaypointLayer.tsx +++ b/apps/web/src/components/PageComponents/Map/Layers/WaypointLayer.tsx @@ -14,6 +14,7 @@ export interface WaypointLayerProps { isVisible: boolean; popupState: PopupState | undefined; setPopupState: (state: PopupState | undefined) => void; + onEditWaypoint: (waypoint: WaypointWithMetadata) => void; } import { toLngLat } from "@core/utils/geo.ts"; @@ -24,6 +25,7 @@ export const WaypointLayer = ({ isVisible, popupState, setPopupState, + onEditWaypoint, }: WaypointLayerProps): React.ReactNode[] => { const { waypoints } = useDevice(); const { focusLngLat } = useMapFitting(mapRef); @@ -85,10 +87,11 @@ export const WaypointLayer = ({ {}} + onEdit={() => onEditWaypoint(popupState.waypoint)} /> , ); } + return rendered; }; diff --git a/apps/web/src/components/PageComponents/Map/Popups/WaypointDetail.tsx b/apps/web/src/components/PageComponents/Map/Popups/WaypointDetail.tsx index b938d39f3..31e899161 100644 --- a/apps/web/src/components/PageComponents/Map/Popups/WaypointDetail.tsx +++ b/apps/web/src/components/PageComponents/Map/Popups/WaypointDetail.tsx @@ -1,4 +1,5 @@ import { TimeAgo } from "@components/generic/TimeAgo"; +import { Button } from "@components/UI/Button.tsx"; import { Separator } from "@components/UI/Separator.tsx"; import { useNodeAsProto } from "@core/hooks/useNodesAsProto.ts"; import type { WaypointWithMetadata } from "@core/stores"; @@ -8,15 +9,19 @@ import { hasPos, toLngLat, } from "@core/utils/geo"; +import { hasGeofence } from "@core/utils/geofence.ts"; import type { Protobuf } from "@meshtastic/sdk"; import { + BellIcon, ClockFadingIcon, ClockPlusIcon, CompassIcon, MapPinnedIcon, MoveHorizontalIcon, NavigationIcon, + PencilIcon, RotateCwIcon, + ShieldIcon, UserLockIcon, } from "lucide-react"; import { useTranslation } from "react-i18next"; @@ -27,7 +32,7 @@ interface WaypointDetailProps { onEdit: () => void; } -export const WaypointDetail = ({ waypoint, myNode }: WaypointDetailProps) => { +export const WaypointDetail = ({ waypoint, myNode, onEdit }: WaypointDetailProps) => { const { t } = useTranslation("map"); const lockedToNode = useNodeAsProto(waypoint.lockedTo ?? 0); @@ -183,8 +188,50 @@ export const WaypointDetail = ({ waypoint, myNode }: WaypointDetailProps) => {
)} + + {/* Geofence radius */} + {waypoint.geofenceRadius > 0 && ( +
+
+ + {t("waypointDetail.geofenceRadius")} +
+
+ {waypoint.geofenceRadius}{" "} + {waypoint.geofenceRadius === 1 ? t("unit.meter.one") : t("unit.meter.plural")} +
+
+ )} + + {/* Alert flags */} + {(waypoint.notifyOnEnter || waypoint.notifyOnExit) && ( +
+
+ + {t("waypointDetail.notifications")} +
+
+ {[ + waypoint.notifyOnEnter ? t("waypointDetail.enter") : undefined, + waypoint.notifyOnExit ? t("waypointDetail.exit") : undefined, + waypoint.notifyFavoritesOnly ? t("waypointDetail.favoritesOnly") : undefined, + ] + .filter(Boolean) + .join(" · ")} +
+
+ )} + + ); }; diff --git a/apps/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx b/apps/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx index 3b9b1cef7..4b422d086 100644 --- a/apps/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx +++ b/apps/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx @@ -17,6 +17,7 @@ export interface VisibilityState { positionPrecision: boolean; traceroutes: boolean; waypoints: boolean; + geofences: boolean; heatmap: boolean; } @@ -27,6 +28,7 @@ export const defaultVisibilityState: VisibilityState = { positionPrecision: false, traceroutes: false, waypoints: true, + geofences: true, heatmap: false, }; @@ -83,6 +85,7 @@ export function MapLayerTool({ positionPrecision: false, traceroutes: false, waypoints: false, + geofences: false, heatmap: true, }); } else { @@ -97,6 +100,7 @@ export function MapLayerTool({ () => [ { key: "nodeMarkers", label: t("layerTool.nodeMarkers") }, { key: "waypoints", label: t("layerTool.waypoints") }, + { key: "geofences", label: t("layerTool.geofences") }, { key: "directNeighbors", label: t("layerTool.directNeighbors") }, { key: "remoteNeighbors", label: t("layerTool.remoteNeighbors") }, { key: "positionPrecision", label: t("layerTool.positionPrecision") }, diff --git a/apps/web/src/core/hooks/useBoundingBoxDraw.test.tsx b/apps/web/src/core/hooks/useBoundingBoxDraw.test.tsx new file mode 100644 index 000000000..38f2d742a --- /dev/null +++ b/apps/web/src/core/hooks/useBoundingBoxDraw.test.tsx @@ -0,0 +1,104 @@ +import { act, renderHook } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { useBoundingBoxDraw } from "./useBoundingBoxDraw.ts"; + +function makeMapRef(unprojectFn: (pt: [number, number]) => { lng: number; lat: number }) { + const container = { + getBoundingClientRect: () => ({ left: 0, top: 0 }) as DOMRect, + } as HTMLElement; + const map = { + unproject: vi.fn(unprojectFn), + getContainer: () => container, + }; + return { + getMap: () => map, + } as unknown as Parameters[0]; +} + +function makePointerEvent(x: number, y: number, pointerId = 1): React.PointerEvent { + const target = { + setPointerCapture: vi.fn(), + releasePointerCapture: vi.fn(), + hasPointerCapture: vi.fn().mockReturnValue(true), + }; + return { + clientX: x, + clientY: y, + pointerId, + currentTarget: target, + } as unknown as React.PointerEvent; +} + +describe("useBoundingBoxDraw", () => { + it("returns undefined without a map", async () => { + const { result } = renderHook(() => useBoundingBoxDraw(undefined)); + let value: unknown; + await act(async () => { + const promise = result.current.beginDraw(); + result.current.cancelDraw(); + value = await promise; + }); + expect(value).toBeUndefined(); + expect(result.current.active).toBe(false); + }); + + it("resolves with normalized WSEN box after drag", async () => { + const mapRef = makeMapRef(([x, y]) => ({ lng: x / 10, lat: y / 10 })); + const { result } = renderHook(() => useBoundingBoxDraw(mapRef)); + + let promise: Promise; + act(() => { + promise = result.current.beginDraw(); + }); + expect(result.current.active).toBe(true); + + act(() => { + result.current.onPointerDown(makePointerEvent(100, 200)); + }); + act(() => { + result.current.onPointerMove(makePointerEvent(300, 50)); + }); + act(() => { + result.current.onPointerUp(makePointerEvent(300, 50)); + }); + + const box = (await promise!) as { west: number; south: number; east: number; north: number }; + expect(box.west).toBe(10); + expect(box.east).toBe(30); + expect(box.south).toBe(5); + expect(box.north).toBe(20); + expect(result.current.active).toBe(false); + }); + + it("resolves undefined on zero-area drag", async () => { + const mapRef = makeMapRef(([x, y]) => ({ lng: x, lat: y })); + const { result } = renderHook(() => useBoundingBoxDraw(mapRef)); + let promise: Promise; + act(() => { + promise = result.current.beginDraw(); + }); + act(() => { + result.current.onPointerDown(makePointerEvent(50, 50)); + }); + act(() => { + result.current.onPointerUp(makePointerEvent(50, 50)); + }); + const box = await promise!; + expect(box).toBeUndefined(); + }); + + it("cancelDraw resolves outstanding promise as undefined", async () => { + const mapRef = makeMapRef(([x, y]) => ({ lng: x, lat: y })); + const { result } = renderHook(() => useBoundingBoxDraw(mapRef)); + let promise: Promise; + act(() => { + promise = result.current.beginDraw(); + }); + act(() => { + result.current.cancelDraw(); + }); + const box = await promise!; + expect(box).toBeUndefined(); + expect(result.current.active).toBe(false); + }); +}); diff --git a/apps/web/src/core/hooks/useBoundingBoxDraw.ts b/apps/web/src/core/hooks/useBoundingBoxDraw.ts new file mode 100644 index 000000000..180812a79 --- /dev/null +++ b/apps/web/src/core/hooks/useBoundingBoxDraw.ts @@ -0,0 +1,113 @@ +import { useCallback, useRef, useState } from "react"; +import type { MapRef } from "react-map-gl/maplibre"; + +export type BoundingBoxResult = { + west: number; + south: number; + east: number; + north: number; +}; + +interface DrawState { + active: boolean; + start?: [number, number]; + current?: [number, number]; +} + +/** + * Drag-to-define rectangular selector on a MapLibre map. Returns a state + * object plus a `beginDraw` promise-based API for callers (the editor + * dialog) to await a result. Matches design#114 "Set / Edit / Remove + * Bounding Box opens a drag-to-define rectangle on the map." + */ +export function useBoundingBoxDraw(mapRef: MapRef | undefined) { + const [state, setState] = useState({ active: false }); + const startRef = useRef<[number, number] | undefined>(undefined); + const currentRef = useRef<[number, number] | undefined>(undefined); + const resolverRef = useRef<((box: BoundingBoxResult | undefined) => void) | undefined>(undefined); + + const beginDraw = useCallback((): Promise => { + return new Promise((resolve) => { + resolverRef.current?.(undefined); + resolverRef.current = resolve; + startRef.current = undefined; + currentRef.current = undefined; + setState({ active: true }); + }); + }, []); + + const cancelDraw = useCallback(() => { + resolverRef.current?.(undefined); + resolverRef.current = undefined; + startRef.current = undefined; + currentRef.current = undefined; + setState({ active: false }); + }, []); + + const onPointerDown = useCallback( + (event: React.PointerEvent) => { + const map = mapRef?.getMap(); + if (!map) return; + const rect = map.getContainer().getBoundingClientRect(); + const lngLat = map.unproject([event.clientX - rect.left, event.clientY - rect.top]); + startRef.current = [lngLat.lng, lngLat.lat]; + currentRef.current = [lngLat.lng, lngLat.lat]; + setState({ active: true, start: startRef.current, current: currentRef.current }); + event.currentTarget.setPointerCapture(event.pointerId); + }, + [mapRef], + ); + + const onPointerMove = useCallback( + (event: React.PointerEvent) => { + if (!startRef.current) return; + const map = mapRef?.getMap(); + if (!map) return; + const rect = map.getContainer().getBoundingClientRect(); + const lngLat = map.unproject([event.clientX - rect.left, event.clientY - rect.top]); + currentRef.current = [lngLat.lng, lngLat.lat]; + setState((s) => ({ ...s, current: currentRef.current })); + }, + [mapRef], + ); + + const onPointerUp = useCallback((event: React.PointerEvent) => { + let box: BoundingBoxResult | undefined; + if (startRef.current && currentRef.current) { + const [x1, y1] = startRef.current; + const [x2, y2] = currentRef.current; + const west = Math.min(x1, x2); + const east = Math.max(x1, x2); + const south = Math.min(y1, y2); + const north = Math.max(y1, y2); + if (Math.abs(east - west) > 1e-6 && Math.abs(north - south) > 1e-6) { + box = { west, south, east, north }; + } + } + startRef.current = undefined; + currentRef.current = undefined; + setState({ active: false }); + if (event.currentTarget.hasPointerCapture(event.pointerId)) { + event.currentTarget.releasePointerCapture(event.pointerId); + } + resolverRef.current?.(box); + resolverRef.current = undefined; + }, []); + + const overlay = state.active + ? { + start: state.start, + current: state.current, + } + : undefined; + + return { + active: state.active, + overlay, + beginDraw, + cancelDraw, + onPointerDown, + onPointerMove, + onPointerUp, + }; +} diff --git a/apps/web/src/core/hooks/useGeofenceAlerts.ts b/apps/web/src/core/hooks/useGeofenceAlerts.ts new file mode 100644 index 000000000..636194895 --- /dev/null +++ b/apps/web/src/core/hooks/useGeofenceAlerts.ts @@ -0,0 +1,73 @@ +import { router } from "@app/routes.tsx"; +import { ToastAction, type ToastActionElement } from "@components/UI/Toast.tsx"; +import { toast } from "@core/hooks/useToast.ts"; +import { useAppStore, useDevice } from "@core/stores"; +import { GeofenceCrossings } from "@core/utils/geofenceCrossings.ts"; +import { useActiveClient } from "@meshtastic/sdk-react"; +import { createElement, useEffect, useRef } from "react"; +import { useTranslation } from "react-i18next"; + +/** + * Evaluates every incoming node position against every waypoint with a + * geofence and any notify flag set. First sighting for a + * `(waypointId, nodeNum)` pair only records a baseline (per design#114) — + * subsequent transitions fire an enter/exit toast, gated by + * `notify_favorites_only`. Toast carries an action that navigates to the + * Map page and focuses the waypoint (design#114 "Notification action: + * deep-link to the waypoint on the map"). + */ +export function useGeofenceAlerts() { + const client = useActiveClient(); + const device = useDevice(); + const setFocusWaypointId = useAppStore((s) => s.setFocusWaypointId); + const { t } = useTranslation("map"); + const crossings = useRef(new GeofenceCrossings()).current; + const waypointsRef = useRef(device.waypoints); + waypointsRef.current = device.waypoints; + + useEffect(() => { + if (!client) return; + + const dispose = client.events.onPositionPacket.subscribe((packet) => { + const { from, data } = packet; + if (data.latitudeI == null || data.longitudeI == null) return; + const point: [number, number] = [data.longitudeI / 1e7, data.latitudeI / 1e7]; + const waypoints = waypointsRef.current; + const events = crossings.evaluate(point, from, waypoints); + if (events.length === 0) return; + + for (const event of events) { + const wp = waypoints.find((w) => w.id === event.waypointId); + if (!wp) continue; + if (wp.notifyFavoritesOnly) { + const node = client.nodes.byNum(from); + if (!node?.isFavorite) continue; + } + const node = client.nodes.byNum(from); + const nodeName = node?.user?.longName ?? String(from); + toast({ + title: + event.kind === "enter" + ? t("waypointEdit.enterToast", { node: nodeName, waypoint: wp.name }) + : t("waypointEdit.exitToast", { node: nodeName, waypoint: wp.name }), + action: createElement( + ToastAction, + { + altText: t("waypointEdit.viewOnMap"), + onClick: () => { + setFocusWaypointId(wp.id); + void router.navigate({ to: "/map" }); + }, + }, + t("waypointEdit.viewOnMap"), + ) as unknown as ToastActionElement, + }); + } + }); + + return () => { + dispose(); + crossings.reset(); + }; + }, [client, crossings, setFocusWaypointId, t]); +} diff --git a/apps/web/src/core/stores/appStore/appStore.test.ts b/apps/web/src/core/stores/appStore/appStore.test.ts index 7ebe8ca0e..8f58e1611 100644 --- a/apps/web/src/core/stores/appStore/appStore.test.ts +++ b/apps/web/src/core/stores/appStore/appStore.test.ts @@ -65,6 +65,12 @@ describe("AppStore – basic state & actions", () => { state.setNodeNumDetails(777); expect(useAppStore.getState().nodeNumDetails).toBe(777); + + expect(useAppStore.getState().focusWaypointId).toBeUndefined(); + state.setFocusWaypointId(555); + expect(useAppStore.getState().focusWaypointId).toBe(555); + state.setFocusWaypointId(undefined); + expect(useAppStore.getState().focusWaypointId).toBeUndefined(); }); it("setRasterSources replaces; addRasterSource appends; removeRasterSource splices by index", async () => { diff --git a/apps/web/src/core/stores/appStore/index.ts b/apps/web/src/core/stores/appStore/index.ts index 72034911d..7c4738074 100644 --- a/apps/web/src/core/stores/appStore/index.ts +++ b/apps/web/src/core/stores/appStore/index.ts @@ -24,6 +24,7 @@ export interface AppState extends AppData { connectDialogOpen: boolean; nodeNumDetails: number; commandPaletteOpen: boolean; + focusWaypointId: number | undefined; setRasterSources: (sources: RasterSource[]) => void; addRasterSource: (source: RasterSource) => void; @@ -33,6 +34,7 @@ export interface AppState extends AppData { setNodeNumToBeRemoved: (nodeNum: number) => void; setConnectDialogOpen: (open: boolean) => void; setNodeNumDetails: (nodeNum: number) => void; + setFocusWaypointId: (id: number | undefined) => void; } export const deviceStoreInitializer: StateCreator = (set, _get) => ({ @@ -42,6 +44,7 @@ export const deviceStoreInitializer: StateCreator = (set, _get) => ({ connectDialogOpen: false, nodeNumToBeRemoved: 0, nodeNumDetails: 0, + focusWaypointId: undefined, setRasterSources: (sources: RasterSource[]) => { set( @@ -90,6 +93,10 @@ export const deviceStoreInitializer: StateCreator = (set, _get) => ({ set(() => ({ nodeNumDetails: nodeNum, })), + setFocusWaypointId: (id) => + set(() => ({ + focusWaypointId: id, + })), }); const persistOptions: PersistOptions = { diff --git a/apps/web/src/core/stores/deviceStore/deviceStore.test.ts b/apps/web/src/core/stores/deviceStore/deviceStore.test.ts index b473e141d..13c5d5689 100644 --- a/apps/web/src/core/stores/deviceStore/deviceStore.test.ts +++ b/apps/web/src/core/stores/deviceStore/deviceStore.test.ts @@ -49,6 +49,24 @@ function makeWaypoint(id: number, expire?: number) { return create(Protobuf.Mesh.WaypointSchema, { id, expire }); } +function makeGeofenceWaypoint(id: number) { + return create(Protobuf.Mesh.WaypointSchema, { + id, + latitudeI: 400000000, + longitudeI: -740000000, + geofenceRadius: 250, + boundingBox: create(Protobuf.Mesh.BoundingBoxSchema, { + longitudeWestI: -740100000, + latitudeSouthI: 399900000, + longitudeEastI: -739900000, + latitudeNorthI: 400100000, + }), + notifyOnEnter: true, + notifyOnExit: false, + notifyFavoritesOnly: true, + }); +} + function makeAdminMessage(fields: Record) { return create(Protobuf.Admin.AdminMessageSchema, fields); } @@ -254,6 +272,31 @@ describe("DeviceStore – traceroutes & waypoints retention + merge on setHardwa }); }); +describe("DeviceStore – geofence field persistence", () => { + beforeEach(() => { + idbMem.clear(); + vi.clearAllMocks(); + }); + + it("addWaypoint carries geofence fields through the store", async () => { + const { useDeviceStore } = await freshStore(false); + const state = useDeviceStore.getState(); + const device = state.addDevice(1); + device.addWaypoint(makeGeofenceWaypoint(42), 0, 5, new Date()); + + const stored = useDeviceStore + .getState() + .devices.get(1)! + .waypoints.find((w) => w.id === 42)!; + expect(stored.geofenceRadius).toBe(250); + expect(stored.notifyOnEnter).toBe(true); + expect(stored.notifyOnExit).toBe(false); + expect(stored.notifyFavoritesOnly).toBe(true); + expect(stored.boundingBox?.latitudeNorthI).toBe(400100000); + expect(stored.boundingBox?.longitudeWestI).toBe(-740100000); + }); +}); + describe("DeviceStore – persistence partialize & rehydrate", () => { beforeEach(() => { idbMem.clear(); diff --git a/apps/web/src/core/utils/geofence.test.ts b/apps/web/src/core/utils/geofence.test.ts new file mode 100644 index 000000000..7533e2724 --- /dev/null +++ b/apps/web/src/core/utils/geofence.test.ts @@ -0,0 +1,111 @@ +import { create } from "@bufbuild/protobuf"; +import { Protobuf } from "@meshtastic/sdk"; +import { describe, expect, it } from "vitest"; +import { + degToCoordI, + displayToMeters, + hasAnyNotify, + hasGeofence, + metersToDisplay, + pointInBoundingBox, + pointInGeofence, + unitSystemFromDisplayUnits, +} from "./geofence.ts"; + +const bbox = (west: number, south: number, east: number, north: number) => + create(Protobuf.Mesh.BoundingBoxSchema, { + longitudeWestI: degToCoordI(west), + latitudeSouthI: degToCoordI(south), + longitudeEastI: degToCoordI(east), + latitudeNorthI: degToCoordI(north), + }); + +const waypoint = (fields: Record) => + create(Protobuf.Mesh.WaypointSchema, fields as never); + +describe("geofence – device unit system", () => { + it("maps DisplayUnits.IMPERIAL to imperial", () => { + expect( + unitSystemFromDisplayUnits( + Protobuf.Config.Config_DisplayConfig_DisplayUnits.IMPERIAL, + ), + ).toBe("imperial"); + }); + it("maps DisplayUnits.METRIC and undefined to metric", () => { + expect( + unitSystemFromDisplayUnits( + Protobuf.Config.Config_DisplayConfig_DisplayUnits.METRIC, + ), + ).toBe("metric"); + expect(unitSystemFromDisplayUnits(undefined)).toBe("metric"); + }); + + it("round-trips display <-> meters", () => { + expect(displayToMeters(1, "metric", false)).toBe(1); + expect(displayToMeters(1, "metric", true)).toBe(1000); + expect(Math.round(displayToMeters(1, "imperial", false))).toBe(0); + expect(Math.round(displayToMeters(1, "imperial", true))).toBe(1609); + expect(metersToDisplay(2000, "metric")).toBe(2); + expect(metersToDisplay(500, "metric")).toBe(500); + }); +}); + +describe("geofence – point-in-region", () => { + it("returns false when neither shape set", () => { + expect(pointInGeofence([0, 0], waypoint({}))).toBe(false); + }); + + it("respects circular radius", () => { + const wp = waypoint({ + latitudeI: degToCoordI(40), + longitudeI: degToCoordI(-74), + geofenceRadius: 1000, + }); + expect(pointInGeofence([-74, 40], wp)).toBe(true); + expect(pointInGeofence([-74, 40.005], wp)).toBe(true); + expect(pointInGeofence([-74, 40.5], wp)).toBe(false); + }); + + it("respects bounding box (WSEN)", () => { + const wp = waypoint({ + boundingBox: bbox(-74.1, 39.9, -73.9, 40.1), + }); + expect(pointInGeofence([-74, 40], wp)).toBe(true); + expect(pointInGeofence([-74.05, 39.95], wp)).toBe(true); + expect(pointInGeofence([-73.5, 40], wp)).toBe(false); + expect(pointInGeofence([-74, 41], wp)).toBe(false); + }); + + it("OR-combines circle and box", () => { + const wp = waypoint({ + latitudeI: degToCoordI(40), + longitudeI: degToCoordI(-74), + geofenceRadius: 100, + boundingBox: bbox(-70.1, 39.9, -69.9, 40.1), + }); + expect(pointInGeofence([-74, 40], wp)).toBe(true); + expect(pointInGeofence([-70, 40], wp)).toBe(true); + expect(pointInGeofence([-72, 40], wp)).toBe(false); + }); + + it("handles anti-meridian crossing box", () => { + const wp = waypoint({ boundingBox: bbox(170, -10, -170, 10) }); + expect(pointInBoundingBox([175, 0], wp.boundingBox!)).toBe(true); + expect(pointInBoundingBox([-175, 0], wp.boundingBox!)).toBe(true); + expect(pointInBoundingBox([0, 0], wp.boundingBox!)).toBe(false); + }); +}); + +describe("geofence – helpers", () => { + it("hasGeofence detects either shape", () => { + expect(hasGeofence(waypoint({}))).toBe(false); + expect(hasGeofence(waypoint({ geofenceRadius: 10 }))).toBe(true); + expect(hasGeofence(waypoint({ boundingBox: bbox(0, 0, 1, 1) }))).toBe(true); + }); + + it("hasAnyNotify detects either flag", () => { + expect(hasAnyNotify(waypoint({}))).toBe(false); + expect(hasAnyNotify(waypoint({ notifyOnEnter: true }))).toBe(true); + expect(hasAnyNotify(waypoint({ notifyOnExit: true }))).toBe(true); + }); +}); diff --git a/apps/web/src/core/utils/geofence.ts b/apps/web/src/core/utils/geofence.ts new file mode 100644 index 000000000..226650250 --- /dev/null +++ b/apps/web/src/core/utils/geofence.ts @@ -0,0 +1,99 @@ +import { Protobuf } from "@meshtastic/sdk"; +import { distanceMeters, type LngLat } from "./geo.ts"; + +const INT_DEG = 1e7; +const METERS_PER_FOOT = 0.3048; +const METERS_PER_MILE = 1609.344; +const IMPERIAL_MILES_THRESHOLD_METERS = METERS_PER_MILE / 2; + +export type UnitSystem = "metric" | "imperial"; + +/** + * Waypoint UI reads the unit preference from the connected device's + * DisplayConfig (matches existing patterns like the position-precision + * selector in Channels/Channel.tsx). Falls back to metric when the config + * isn't loaded yet. + */ +export function unitSystemFromDisplayUnits( + units: Protobuf.Config.Config_DisplayConfig_DisplayUnits | undefined, +): UnitSystem { + return units === Protobuf.Config.Config_DisplayConfig_DisplayUnits.IMPERIAL + ? "imperial" + : "metric"; +} + +export function metersToDisplay(meters: number, system: UnitSystem): number { + if (system === "imperial") { + return meters >= IMPERIAL_MILES_THRESHOLD_METERS + ? meters / METERS_PER_MILE + : meters / METERS_PER_FOOT; + } + return meters >= 1000 ? meters / 1000 : meters; +} + +export function displayToMeters( + value: number, + system: UnitSystem, + useLarge: boolean, +): number { + if (system === "imperial") { + return useLarge ? value * METERS_PER_MILE : value * METERS_PER_FOOT; + } + return useLarge ? value * 1000 : value; +} + +export function pointInBoundingBox( + point: LngLat, + bbox: Protobuf.Mesh.BoundingBox, +): boolean { + const [lng, lat] = point; + const west = bbox.longitudeWestI / INT_DEG; + const east = bbox.longitudeEastI / INT_DEG; + const south = bbox.latitudeSouthI / INT_DEG; + const north = bbox.latitudeNorthI / INT_DEG; + + if (lat < south || lat > north) return false; + + if (west <= east) { + return lng >= west && lng <= east; + } + // Anti-meridian crossing + return lng >= west || lng <= east; +} + +export function pointInGeofence( + point: LngLat, + waypoint: Protobuf.Mesh.Waypoint, +): boolean { + const center: LngLat = [ + (waypoint.longitudeI ?? 0) / INT_DEG, + (waypoint.latitudeI ?? 0) / INT_DEG, + ]; + if (waypoint.geofenceRadius > 0) { + if (distanceMeters(point, center) <= waypoint.geofenceRadius) { + return true; + } + } + if (waypoint.boundingBox) { + if (pointInBoundingBox(point, waypoint.boundingBox)) { + return true; + } + } + return false; +} + +export function hasGeofence(waypoint: Protobuf.Mesh.Waypoint): boolean { + return waypoint.geofenceRadius > 0 || waypoint.boundingBox !== undefined; +} + +export function hasAnyNotify(waypoint: Protobuf.Mesh.Waypoint): boolean { + return waypoint.notifyOnEnter || waypoint.notifyOnExit; +} + +export function coordToDeg(coordI: number | undefined): number { + return (coordI ?? 0) / INT_DEG; +} + +export function degToCoordI(deg: number): number { + return Math.round(deg * INT_DEG); +} diff --git a/apps/web/src/core/utils/geofenceCrossings.test.ts b/apps/web/src/core/utils/geofenceCrossings.test.ts new file mode 100644 index 000000000..bfdfcdf13 --- /dev/null +++ b/apps/web/src/core/utils/geofenceCrossings.test.ts @@ -0,0 +1,119 @@ +import { create } from "@bufbuild/protobuf"; +import type { WaypointWithMetadata } from "@core/stores"; +import { degToCoordI } from "@core/utils/geofence.ts"; +import { Protobuf } from "@meshtastic/sdk"; +import { describe, expect, it } from "vitest"; +import { GeofenceCrossings } from "./geofenceCrossings.ts"; + +function wp(fields: Record): WaypointWithMetadata { + const proto = create(Protobuf.Mesh.WaypointSchema, fields as never); + return Object.assign(proto, { + metadata: { channel: 0, created: new Date(), from: 0 }, + }); +} + +const center = { latitudeI: degToCoordI(40), longitudeI: degToCoordI(-74) }; + +describe("GeofenceCrossings – baseline-first semantics", () => { + it("first sighting only records a baseline, no event", () => { + const c = new GeofenceCrossings(); + const waypoints = [wp({ id: 1, ...center, geofenceRadius: 500, notifyOnEnter: true })]; + expect(c.evaluate([-74, 40], 42, waypoints)).toEqual([]); + expect(c.evaluate([-70, 40], 42, waypoints)).toEqual([]); + }); + + it("emits enter on outside → inside transition", () => { + const c = new GeofenceCrossings(); + const waypoints = [wp({ id: 1, ...center, geofenceRadius: 500, notifyOnEnter: true })]; + // Baseline outside + c.evaluate([-70, 40], 42, waypoints); + const events = c.evaluate([-74, 40], 42, waypoints); + expect(events).toEqual([{ waypointId: 1, nodeNum: 42, kind: "enter" }]); + }); + + it("emits exit on inside → outside transition", () => { + const c = new GeofenceCrossings(); + const waypoints = [wp({ id: 1, ...center, geofenceRadius: 500, notifyOnExit: true })]; + c.evaluate([-74, 40], 42, waypoints); + const events = c.evaluate([-70, 40], 42, waypoints); + expect(events).toEqual([{ waypointId: 1, nodeNum: 42, kind: "exit" }]); + }); + + it("skips waypoints with no notify flag set", () => { + const c = new GeofenceCrossings(); + const waypoints = [wp({ id: 1, ...center, geofenceRadius: 500 })]; + c.evaluate([-70, 40], 42, waypoints); + expect(c.evaluate([-74, 40], 42, waypoints)).toEqual([]); + }); + + it("skips waypoints with no geofence shape", () => { + const c = new GeofenceCrossings(); + const waypoints = [wp({ id: 1, notifyOnEnter: true })]; + c.evaluate([-70, 40], 42, waypoints); + expect(c.evaluate([-74, 40], 42, waypoints)).toEqual([]); + }); + + it("respects notify_on_exit only", () => { + const c = new GeofenceCrossings(); + const waypoints = [wp({ id: 1, ...center, geofenceRadius: 500, notifyOnExit: true })]; + // Baseline outside then move inside: no notifyOnEnter → no event + c.evaluate([-70, 40], 42, waypoints); + expect(c.evaluate([-74, 40], 42, waypoints)).toEqual([]); + // Move back outside → exit event + expect(c.evaluate([-70, 40], 42, waypoints)).toEqual([ + { waypointId: 1, nodeNum: 42, kind: "exit" }, + ]); + }); + + it("tracks per-node state independently", () => { + const c = new GeofenceCrossings(); + const waypoints = [ + wp({ id: 1, ...center, geofenceRadius: 500, notifyOnEnter: true, notifyOnExit: true }), + ]; + // Node 1 starts inside baseline; node 2 starts outside baseline + c.evaluate([-74, 40], 1, waypoints); + c.evaluate([-70, 40], 2, waypoints); + // Node 1 leaves → exit event, node 2 unchanged + expect(c.evaluate([-70, 40], 1, waypoints)).toEqual([ + { waypointId: 1, nodeNum: 1, kind: "exit" }, + ]); + expect(c.evaluate([-70, 40], 2, waypoints)).toEqual([]); + // Node 2 enters → enter event + expect(c.evaluate([-74, 40], 2, waypoints)).toEqual([ + { waypointId: 1, nodeNum: 2, kind: "enter" }, + ]); + }); + + it("tracks per-waypoint state independently", () => { + const c = new GeofenceCrossings(); + const waypoints = [ + wp({ + id: 1, + latitudeI: degToCoordI(40), + longitudeI: degToCoordI(-74), + geofenceRadius: 500, + notifyOnEnter: true, + }), + wp({ + id: 2, + latitudeI: degToCoordI(50), + longitudeI: degToCoordI(-100), + geofenceRadius: 500, + notifyOnEnter: true, + }), + ]; + c.evaluate([-70, 40], 7, waypoints); + // Enter waypoint 1 only + const events = c.evaluate([-74, 40], 7, waypoints); + expect(events).toEqual([{ waypointId: 1, nodeNum: 7, kind: "enter" }]); + }); + + it("reset() clears state so next call re-baselines", () => { + const c = new GeofenceCrossings(); + const waypoints = [wp({ id: 1, ...center, geofenceRadius: 500, notifyOnEnter: true })]; + c.evaluate([-70, 40], 42, waypoints); + c.evaluate([-74, 40], 42, waypoints); // enter + c.reset(); + expect(c.evaluate([-74, 40], 42, waypoints)).toEqual([]); // baseline again + }); +}); diff --git a/apps/web/src/core/utils/geofenceCrossings.ts b/apps/web/src/core/utils/geofenceCrossings.ts new file mode 100644 index 000000000..a7796583e --- /dev/null +++ b/apps/web/src/core/utils/geofenceCrossings.ts @@ -0,0 +1,57 @@ +import type { WaypointWithMetadata } from "@core/stores"; +import type { LngLat } from "@core/utils/geo.ts"; +import { hasAnyNotify, hasGeofence, pointInGeofence } from "@core/utils/geofence.ts"; + +type CrossingKey = `${number}:${number}`; + +export type GeofenceEvent = { + waypointId: number; + nodeNum: number; + kind: "enter" | "exit"; +}; + +/** + * Point-in-region tracker with baseline-first `(waypointId, nodeNum)` state. + * First sighting only sets a baseline (no event); subsequent transitions + * across the region boundary emit an `enter` or `exit` event when the + * matching `notify_on_*` flag is set. + * + * Callers must filter events for the favorites-only gate — this class is + * intentionally pure and knows nothing about node favorite state. + */ +export class GeofenceCrossings { + private state = new Map(); + + reset(): void { + this.state.clear(); + } + + evaluate( + point: LngLat, + nodeNum: number, + waypoints: readonly WaypointWithMetadata[], + ): GeofenceEvent[] { + const events: GeofenceEvent[] = []; + for (const wp of waypoints) { + if (!hasGeofence(wp) || !hasAnyNotify(wp)) continue; + + const key = `${wp.id}:${nodeNum}` as CrossingKey; + const inside = pointInGeofence(point, wp); + const prior = this.state.get(key); + + if (prior === undefined) { + this.state.set(key, inside); + continue; + } + if (prior === inside) continue; + this.state.set(key, inside); + + if (inside && wp.notifyOnEnter) { + events.push({ waypointId: wp.id, nodeNum, kind: "enter" }); + } else if (!inside && wp.notifyOnExit) { + events.push({ waypointId: wp.id, nodeNum, kind: "exit" }); + } + } + return events; + } +} diff --git a/apps/web/src/pages/Map/index.tsx b/apps/web/src/pages/Map/index.tsx index f9d4a4bfc..878357a46 100644 --- a/apps/web/src/pages/Map/index.tsx +++ b/apps/web/src/pages/Map/index.tsx @@ -14,6 +14,7 @@ import { type HeatmapMode, } from "@components/PageComponents/Map/Layers/HeatmapLayer.tsx"; import { NodesLayer } from "@components/PageComponents/Map/Layers/NodesLayer.tsx"; +import { GeofenceLayer } from "@components/PageComponents/Map/Layers/GeofenceLayer.tsx"; import { PrecisionLayer } from "@components/PageComponents/Map/Layers/PrecisionLayer.tsx"; import { SNRLayer, @@ -22,21 +23,26 @@ import { } from "@components/PageComponents/Map/Layers/SNRLayer.tsx"; import { WaypointLayer } from "@components/PageComponents/Map/Layers/WaypointLayer.tsx"; import type { PopupState } from "@components/PageComponents/Map/Popups/PopupWrapper.tsx"; +import { WaypointEditDialog } from "@components/Dialog/WaypointEditDialog.tsx"; +import { BoundingBoxOverlay } from "@components/PageComponents/Map/BoundingBoxOverlay.tsx"; +import { useAppStore, useDevice, type WaypointWithMetadata } from "@core/stores"; import { PageLayout } from "@components/PageLayout.tsx"; import { Sidebar } from "@components/Sidebar.tsx"; +import { useBoundingBoxDraw } from "@core/hooks/useBoundingBoxDraw.ts"; import { useMapFitting } from "@core/hooks/useMapFitting.ts"; import { useMyNodeAsProto, useNodesAsProto, } from "@core/hooks/useNodesAsProto.ts"; import { cn } from "@core/utils/cn.ts"; -import { hasPos, toLngLat } from "@core/utils/geo.ts"; +import { hasPos, type LngLat, toLngLat } from "@core/utils/geo.ts"; import type { Protobuf } from "@meshtastic/sdk"; import { numberToHexUnpadded } from "@noble/curves/utils.js"; -import { FunnelIcon, LocateFixedIcon } from "lucide-react"; +import { FunnelIcon, LocateFixedIcon, MapPinPlusIcon } from "lucide-react"; import { useCallback, useDeferredValue, + useEffect, useId, useMemo, useRef, @@ -69,6 +75,44 @@ const MapPage = () => { const [expandedCluster, setExpandedCluster] = useState(); const [popupState, setPopupState] = useState(); + // Waypoint editor state + const [editorOpen, setEditorOpen] = useState(false); + const [editorWaypoint, setEditorWaypoint] = useState(); + const [editorInitialLngLat, setEditorInitialLngLat] = useState(); + const [placementMode, setPlacementMode] = useState(false); + const boxDraw = useBoundingBoxDraw(mapRef); + + const openEditor = useCallback((wp: WaypointWithMetadata) => { + setEditorWaypoint(wp); + setEditorInitialLngLat(undefined); + setEditorOpen(true); + }, []); + + const openCreator = useCallback((lngLat: LngLat) => { + setEditorWaypoint(undefined); + setEditorInitialLngLat(lngLat); + setEditorOpen(true); + }, []); + + useEffect(() => { + if (!placementMode) return; + const map = mapRef?.getMap(); + if (!map) return; + const canvas = map.getCanvas(); + const prev = canvas.style.cursor; + // Matches the `MapPinPlus` lucide icon used on the placement toggle button + // so the cursor advertises the same affordance while positioning a waypoint. + const pinSvg = + "data:image/svg+xml;utf8," + + encodeURIComponent( + '', + ); + canvas.style.cursor = `url("${pinSvg}") 16 29, auto`; + return () => { + canvas.style.cursor = prev; + }; + }, [mapRef, placementMode]); + const [visibilityState, setVisibilityState] = useState( () => defaultVisibilityState, ); @@ -178,10 +222,17 @@ const MapPage = () => { [getNode, t, heatmapLayerElementId], ); - // Node markers & clusters - const onMapBackgroundClick = useCallback(() => { - setExpandedCluster(undefined); - }, []); + // Node markers & clusters + placement-mode capture + const onMapBackgroundClick = useCallback( + (event: MapLayerMouseEvent) => { + setExpandedCluster(undefined); + if (placementMode) { + openCreator([event.lngLat.lng, event.lngLat.lat]); + setPlacementMode(false); + } + }, + [openCreator, placementMode], + ); const markerElements = useMemo( () => ( @@ -232,9 +283,37 @@ const MapPage = () => { isVisible={visibilityState.waypoints} popupState={popupState} setPopupState={setPopupState} + onEditWaypoint={openEditor} /> ), - [mapRef, myNode, visibilityState.waypoints, popupState], + [mapRef, myNode, visibilityState.waypoints, popupState, openEditor], + ); + + // Geofence overlays + const { waypoints } = useDevice(); + + // Deep-link focus from geofence alert toasts. + const focusWaypointId = useAppStore((s) => s.focusWaypointId); + const setFocusWaypointId = useAppStore((s) => s.setFocusWaypointId); + useEffect(() => { + if (focusWaypointId === undefined || !mapRef) return; + const wp = waypoints.find((w) => w.id === focusWaypointId); + if (!wp) return; + focusLngLat(toLngLat({ latitudeI: wp.latitudeI, longitudeI: wp.longitudeI })); + setPopupState({ type: "waypoint", waypoint: wp }); + setFocusWaypointId(undefined); + }, [focusWaypointId, focusLngLat, mapRef, setFocusWaypointId, waypoints]); + + const geofenceLayerElementId = useId(); + const geofenceLayerElement = useMemo( + () => ( + + ), + [waypoints, visibilityState.geofences, geofenceLayerElementId], ); return ( @@ -252,6 +331,7 @@ const MapPage = () => { {markerElements} {snrLayerElement} {precisionCirclesElement} + {geofenceLayerElement} {waypointLayerElement} {snrHover && ( @@ -263,6 +343,65 @@ const MapPage = () => { /> )} + + {placementMode && ( +
+ {t("waypointEdit.placementHint")} + +
+ )} + + { + setEditorOpen(open); + if (!open) { + setEditorWaypoint(undefined); + setEditorInitialLngLat(undefined); + } + }} + waypoint={editorWaypoint} + initialLngLat={editorInitialLngLat} + channel={0} + mapRef={mapRef} + onRequestBoundingBoxDraw={boxDraw.beginDraw} + /> + + {boxDraw.active && ( + <> +
+ {t("waypointEdit.drawHint")} + +
+
+ {boxDraw.overlay?.start && boxDraw.overlay.current && mapRef && ( + + )} +
+ + )} +
{myNode && hasPos(myNode?.position) && (
); diff --git a/packages/protobufs/meshtastic/mesh.proto b/packages/protobufs/meshtastic/mesh.proto index ecfdadd9a..907d34aa7 100644 --- a/packages/protobufs/meshtastic/mesh.proto +++ b/packages/protobufs/meshtastic/mesh.proto @@ -1475,6 +1475,59 @@ message Waypoint { * Designator icon for the waypoint in the form of a unicode emoji */ fixed32 icon = 8; + + /* + * Geofence circle radius in meters around (latitude_i, longitude_i). + * 0 disables the circular geofence. + */ + uint32 geofence_radius = 9; + + /* + * Optional axis-aligned rectangular geofence (WSEN order). + * A point is inside the geofence if it falls inside the circle OR the box. + */ + optional BoundingBox bounding_box = 10; + + /* + * When true, receivers alert on nodes crossing outside -> inside. + */ + bool notify_on_enter = 11; + + /* + * When true, receivers alert on nodes crossing inside -> outside. + */ + bool notify_on_exit = 12; + + /* + * When true, suppress alerts for nodes not marked as favorite locally. + */ + bool notify_favorites_only = 13; +} + +/* + * Axis-aligned rectangular region in the same 1e-7 degree encoding as + * Position. Field order matches GeoJSON bbox (west, south, east, north). + */ +message BoundingBox { + /* + * West edge longitude (1e-7 degrees). + */ + sfixed32 longitude_west_i = 1; + + /* + * South edge latitude (1e-7 degrees). + */ + sfixed32 latitude_south_i = 2; + + /* + * East edge longitude (1e-7 degrees). + */ + sfixed32 longitude_east_i = 3; + + /* + * North edge latitude (1e-7 degrees). + */ + sfixed32 latitude_north_i = 4; } /* diff --git a/packages/protobufs/package.json b/packages/protobufs/package.json index f96874535..d16397a23 100644 --- a/packages/protobufs/package.json +++ b/packages/protobufs/package.json @@ -22,6 +22,7 @@ "@bufbuild/protobuf": "^2.12.1" }, "devDependencies": { + "@bufbuild/buf": "^1.71.0", "@bufbuild/protoc-gen-es": "^2.12.1", "rimraf": "^6.0.0" } diff --git a/packages/protobufs/packages/ts/dist/meshtastic/admin_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/admin_pb.ts index 9861594b9..8c8cbc7fe 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/admin_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/admin_pb.ts @@ -1,8 +1,12 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/admin.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Channel } from "./channel_pb"; import { file_meshtastic_channel } from "./channel_pb"; @@ -12,7 +16,12 @@ import type { DeviceConnectionStatus } from "./connection_status_pb"; import { file_meshtastic_connection_status } from "./connection_status_pb"; import type { DeviceUIConfig } from "./device_ui_pb"; import { file_meshtastic_device_ui } from "./device_ui_pb"; -import type { DeviceMetadata, NodeRemoteHardwarePin, Position, User } from "./mesh_pb"; +import type { + DeviceMetadata, + NodeRemoteHardwarePin, + Position, + User, +} from "./mesh_pb"; import { file_meshtastic_mesh } from "./mesh_pb"; import type { ModuleConfig } from "./module_config_pb"; import { file_meshtastic_module_config } from "./module_config_pb"; @@ -21,8 +30,17 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/admin.proto. */ -export const file_meshtastic_admin: GenFile = /*@__PURE__*/ - fileDesc("ChZtZXNodGFzdGljL2FkbWluLnByb3RvEgptZXNodGFzdGljIqsbCgxBZG1pbk1lc3NhZ2USFwoPc2Vzc2lvbl9wYXNza2V5GGUgASgMEh0KE2dldF9jaGFubmVsX3JlcXVlc3QYASABKA1IABIzChRnZXRfY2hhbm5lbF9yZXNwb25zZRgCIAEoCzITLm1lc2h0YXN0aWMuQ2hhbm5lbEgAEhsKEWdldF9vd25lcl9yZXF1ZXN0GAMgASgISAASLgoSZ2V0X293bmVyX3Jlc3BvbnNlGAQgASgLMhAubWVzaHRhc3RpYy5Vc2VySAASQQoSZ2V0X2NvbmZpZ19yZXF1ZXN0GAUgASgOMiMubWVzaHRhc3RpYy5BZG1pbk1lc3NhZ2UuQ29uZmlnVHlwZUgAEjEKE2dldF9jb25maWdfcmVzcG9uc2UYBiABKAsyEi5tZXNodGFzdGljLkNvbmZpZ0gAEk4KGWdldF9tb2R1bGVfY29uZmlnX3JlcXVlc3QYByABKA4yKS5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5Nb2R1bGVDb25maWdUeXBlSAASPgoaZ2V0X21vZHVsZV9jb25maWdfcmVzcG9uc2UYCCABKAsyGC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZ0gAEjQKKmdldF9jYW5uZWRfbWVzc2FnZV9tb2R1bGVfbWVzc2FnZXNfcmVxdWVzdBgKIAEoCEgAEjUKK2dldF9jYW5uZWRfbWVzc2FnZV9tb2R1bGVfbWVzc2FnZXNfcmVzcG9uc2UYCyABKAlIABIlChtnZXRfZGV2aWNlX21ldGFkYXRhX3JlcXVlc3QYDCABKAhIABJCChxnZXRfZGV2aWNlX21ldGFkYXRhX3Jlc3BvbnNlGA0gASgLMhoubWVzaHRhc3RpYy5EZXZpY2VNZXRhZGF0YUgAEh4KFGdldF9yaW5ndG9uZV9yZXF1ZXN0GA4gASgISAASHwoVZ2V0X3Jpbmd0b25lX3Jlc3BvbnNlGA8gASgJSAASLgokZ2V0X2RldmljZV9jb25uZWN0aW9uX3N0YXR1c19yZXF1ZXN0GBAgASgISAASUwolZ2V0X2RldmljZV9jb25uZWN0aW9uX3N0YXR1c19yZXNwb25zZRgRIAEoCzIiLm1lc2h0YXN0aWMuRGV2aWNlQ29ubmVjdGlvblN0YXR1c0gAEjEKDHNldF9oYW1fbW9kZRgSIAEoCzIZLm1lc2h0YXN0aWMuSGFtUGFyYW1ldGVyc0gAEi8KJWdldF9ub2RlX3JlbW90ZV9oYXJkd2FyZV9waW5zX3JlcXVlc3QYEyABKAhIABJcCiZnZXRfbm9kZV9yZW1vdGVfaGFyZHdhcmVfcGluc19yZXNwb25zZRgUIAEoCzIqLm1lc2h0YXN0aWMuTm9kZVJlbW90ZUhhcmR3YXJlUGluc1Jlc3BvbnNlSAASIAoWZW50ZXJfZGZ1X21vZGVfcmVxdWVzdBgVIAEoCEgAEh0KE2RlbGV0ZV9maWxlX3JlcXVlc3QYFiABKAlIABITCglzZXRfc2NhbGUYFyABKA1IABJFChJiYWNrdXBfcHJlZmVyZW5jZXMYGCABKA4yJy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5CYWNrdXBMb2NhdGlvbkgAEkYKE3Jlc3RvcmVfcHJlZmVyZW5jZXMYGSABKA4yJy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5CYWNrdXBMb2NhdGlvbkgAEkwKGXJlbW92ZV9iYWNrdXBfcHJlZmVyZW5jZXMYGiABKA4yJy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5CYWNrdXBMb2NhdGlvbkgAEj8KEHNlbmRfaW5wdXRfZXZlbnQYGyABKAsyIy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5JbnB1dEV2ZW50SAASJQoJc2V0X293bmVyGCAgASgLMhAubWVzaHRhc3RpYy5Vc2VySAASKgoLc2V0X2NoYW5uZWwYISABKAsyEy5tZXNodGFzdGljLkNoYW5uZWxIABIoCgpzZXRfY29uZmlnGCIgASgLMhIubWVzaHRhc3RpYy5Db25maWdIABI1ChFzZXRfbW9kdWxlX2NvbmZpZxgjIAEoCzIYLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnSAASLAoic2V0X2Nhbm5lZF9tZXNzYWdlX21vZHVsZV9tZXNzYWdlcxgkIAEoCUgAEh4KFHNldF9yaW5ndG9uZV9tZXNzYWdlGCUgASgJSAASGwoRcmVtb3ZlX2J5X25vZGVudW0YJiABKA1IABIbChFzZXRfZmF2b3JpdGVfbm9kZRgnIAEoDUgAEh4KFHJlbW92ZV9mYXZvcml0ZV9ub2RlGCggASgNSAASMgoSc2V0X2ZpeGVkX3Bvc2l0aW9uGCkgASgLMhQubWVzaHRhc3RpYy5Qb3NpdGlvbkgAEh8KFXJlbW92ZV9maXhlZF9wb3NpdGlvbhgqIAEoCEgAEhcKDXNldF90aW1lX29ubHkYKyABKAdIABIfChVnZXRfdWlfY29uZmlnX3JlcXVlc3QYLCABKAhIABI8ChZnZXRfdWlfY29uZmlnX3Jlc3BvbnNlGC0gASgLMhoubWVzaHRhc3RpYy5EZXZpY2VVSUNvbmZpZ0gAEjUKD3N0b3JlX3VpX2NvbmZpZxguIAEoCzIaLm1lc2h0YXN0aWMuRGV2aWNlVUlDb25maWdIABIaChBzZXRfaWdub3JlZF9ub2RlGC8gASgNSAASHQoTcmVtb3ZlX2lnbm9yZWRfbm9kZRgwIAEoDUgAEhsKEXRvZ2dsZV9tdXRlZF9ub2RlGDEgASgNSAASHQoTYmVnaW5fZWRpdF9zZXR0aW5ncxhAIAEoCEgAEh4KFGNvbW1pdF9lZGl0X3NldHRpbmdzGEEgASgISAASMAoLYWRkX2NvbnRhY3QYQiABKAsyGS5tZXNodGFzdGljLlNoYXJlZENvbnRhY3RIABI8ChBrZXlfdmVyaWZpY2F0aW9uGEMgASgLMiAubWVzaHRhc3RpYy5LZXlWZXJpZmljYXRpb25BZG1pbkgAEh4KFGZhY3RvcnlfcmVzZXRfZGV2aWNlGF4gASgFSAASIAoScmVib290X290YV9zZWNvbmRzGF8gASgFQgIYAUgAEhgKDmV4aXRfc2ltdWxhdG9yGGAgASgISAASGAoOcmVib290X3NlY29uZHMYYSABKAVIABIaChBzaHV0ZG93bl9zZWNvbmRzGGIgASgFSAASHgoUZmFjdG9yeV9yZXNldF9jb25maWcYYyABKAVIABIWCgxub2RlZGJfcmVzZXQYZCABKAhIABI4CgtvdGFfcmVxdWVzdBhmIAEoCzIhLm1lc2h0YXN0aWMuQWRtaW5NZXNzYWdlLk9UQUV2ZW50SAASMQoNc2Vuc29yX2NvbmZpZxhnIAEoCzIYLm1lc2h0YXN0aWMuU2Vuc29yQ29uZmlnSAASMQoNbG9ja2Rvd25fYXV0aBhoIAEoCzIYLm1lc2h0YXN0aWMuTG9ja2Rvd25BdXRoSAAaUwoKSW5wdXRFdmVudBISCgpldmVudF9jb2RlGAEgASgNEg8KB2tiX2NoYXIYAiABKA0SDwoHdG91Y2hfeBgDIAEoDRIPCgd0b3VjaF95GAQgASgNGkoKCE9UQUV2ZW50EiwKD3JlYm9vdF9vdGFfbW9kZRgBIAEoDjITLm1lc2h0YXN0aWMuT1RBTW9kZRIQCghvdGFfaGFzaBgCIAEoDCLWAQoKQ29uZmlnVHlwZRIRCg1ERVZJQ0VfQ09ORklHEAASEwoPUE9TSVRJT05fQ09ORklHEAESEAoMUE9XRVJfQ09ORklHEAISEgoOTkVUV09SS19DT05GSUcQAxISCg5ESVNQTEFZX0NPTkZJRxAEEg8KC0xPUkFfQ09ORklHEAUSFAoQQkxVRVRPT1RIX0NPTkZJRxAGEhMKD1NFQ1VSSVRZX0NPTkZJRxAHEhUKEVNFU1NJT05LRVlfQ09ORklHEAgSEwoPREVWSUNFVUlfQ09ORklHEAkigwMKEE1vZHVsZUNvbmZpZ1R5cGUSDwoLTVFUVF9DT05GSUcQABIRCg1TRVJJQUxfQ09ORklHEAESEwoPRVhUTk9USUZfQ09ORklHEAISFwoTU1RPUkVGT1JXQVJEX0NPTkZJRxADEhQKEFJBTkdFVEVTVF9DT05GSUcQBBIUChBURUxFTUVUUllfQ09ORklHEAUSFAoQQ0FOTkVETVNHX0NPTkZJRxAGEhAKDEFVRElPX0NPTkZJRxAHEhkKFVJFTU9URUhBUkRXQVJFX0NPTkZJRxAIEhcKE05FSUdIQk9SSU5GT19DT05GSUcQCRIaChZBTUJJRU5UTElHSFRJTkdfQ09ORklHEAoSGgoWREVURUNUSU9OU0VOU09SX0NPTkZJRxALEhUKEVBBWENPVU5URVJfQ09ORklHEAwSGAoUU1RBVFVTTUVTU0FHRV9DT05GSUcQDRIcChhUUkFGRklDTUFOQUdFTUVOVF9DT05GSUcQDhIOCgpUQUtfQ09ORklHEA8iIwoOQmFja3VwTG9jYXRpb24SCQoFRkxBU0gQABIGCgJTRBABQhEKD3BheWxvYWRfdmFyaWFudCKWAQoMTG9ja2Rvd25BdXRoEhIKCnBhc3NwaHJhc2UYASABKAwSFwoPYm9vdHNfcmVtYWluaW5nGAIgASgNEhkKEXZhbGlkX3VudGlsX2Vwb2NoGAMgASgNEhAKCGxvY2tfbm93GAQgASgIEhsKE21heF9zZXNzaW9uX3NlY29uZHMYBSABKA0SDwoHZGlzYWJsZRgGIAEoCCJuCg1IYW1QYXJhbWV0ZXJzEhEKCWNhbGxfc2lnbhgBIAEoCRIQCgh0eF9wb3dlchgCIAEoBRIRCglmcmVxdWVuY3kYAyABKAISEgoKc2hvcnRfbmFtZRgEIAEoCRIRCglsb25nX25hbWUYBSABKAkiZgoeTm9kZVJlbW90ZUhhcmR3YXJlUGluc1Jlc3BvbnNlEkQKGW5vZGVfcmVtb3RlX2hhcmR3YXJlX3BpbnMYASADKAsyIS5tZXNodGFzdGljLk5vZGVSZW1vdGVIYXJkd2FyZVBpbiJzCg1TaGFyZWRDb250YWN0EhAKCG5vZGVfbnVtGAEgASgNEh4KBHVzZXIYAiABKAsyEC5tZXNodGFzdGljLlVzZXISFQoNc2hvdWxkX2lnbm9yZRgDIAEoCBIZChFtYW51YWxseV92ZXJpZmllZBgEIAEoCCKcAgoUS2V5VmVyaWZpY2F0aW9uQWRtaW4SQgoMbWVzc2FnZV90eXBlGAEgASgOMiwubWVzaHRhc3RpYy5LZXlWZXJpZmljYXRpb25BZG1pbi5NZXNzYWdlVHlwZRIWCg5yZW1vdGVfbm9kZW51bRgCIAEoDRINCgVub25jZRgDIAEoBBIcCg9zZWN1cml0eV9udW1iZXIYBCABKA1IAIgBASJnCgtNZXNzYWdlVHlwZRIZChVJTklUSUFURV9WRVJJRklDQVRJT04QABIbChdQUk9WSURFX1NFQ1VSSVRZX05VTUJFUhABEg0KCURPX1ZFUklGWRACEhEKDURPX05PVF9WRVJJRlkQA0ISChBfc2VjdXJpdHlfbnVtYmVyIs4BCgxTZW5zb3JDb25maWcSLgoMc2NkNHhfY29uZmlnGAEgASgLMhgubWVzaHRhc3RpYy5TQ0Q0WF9jb25maWcSLgoMc2VuNXhfY29uZmlnGAIgASgLMhgubWVzaHRhc3RpYy5TRU41WF9jb25maWcSLgoMc2NkMzBfY29uZmlnGAMgASgLMhgubWVzaHRhc3RpYy5TQ0QzMF9jb25maWcSLgoMc2h0eHhfY29uZmlnGAQgASgLMhgubWVzaHRhc3RpYy5TSFRYWF9jb25maWci4gIKDFNDRDRYX2NvbmZpZxIUCgdzZXRfYXNjGAEgASgISACIAQESIAoTc2V0X3RhcmdldF9jbzJfY29uYxgCIAEoDUgBiAEBEhwKD3NldF90ZW1wZXJhdHVyZRgDIAEoAkgCiAEBEhkKDHNldF9hbHRpdHVkZRgEIAEoDUgDiAEBEiEKFHNldF9hbWJpZW50X3ByZXNzdXJlGAUgASgNSASIAQESGgoNZmFjdG9yeV9yZXNldBgGIAEoCEgFiAEBEhsKDnNldF9wb3dlcl9tb2RlGAcgASgISAaIAQFCCgoIX3NldF9hc2NCFgoUX3NldF90YXJnZXRfY28yX2NvbmNCEgoQX3NldF90ZW1wZXJhdHVyZUIPCg1fc2V0X2FsdGl0dWRlQhcKFV9zZXRfYW1iaWVudF9wcmVzc3VyZUIQCg5fZmFjdG9yeV9yZXNldEIRCg9fc2V0X3Bvd2VyX21vZGUidgoMU0VONVhfY29uZmlnEhwKD3NldF90ZW1wZXJhdHVyZRgBIAEoAkgAiAEBEh4KEXNldF9vbmVfc2hvdF9tb2RlGAIgASgISAGIAQFCEgoQX3NldF90ZW1wZXJhdHVyZUIUChJfc2V0X29uZV9zaG90X21vZGUitAIKDFNDRDMwX2NvbmZpZxIUCgdzZXRfYXNjGAEgASgISACIAQESIAoTc2V0X3RhcmdldF9jbzJfY29uYxgCIAEoDUgBiAEBEhwKD3NldF90ZW1wZXJhdHVyZRgDIAEoAkgCiAEBEhkKDHNldF9hbHRpdHVkZRgEIAEoDUgDiAEBEiUKGHNldF9tZWFzdXJlbWVudF9pbnRlcnZhbBgFIAEoDUgEiAEBEhcKCnNvZnRfcmVzZXQYBiABKAhIBYgBAUIKCghfc2V0X2FzY0IWChRfc2V0X3RhcmdldF9jbzJfY29uY0ISChBfc2V0X3RlbXBlcmF0dXJlQg8KDV9zZXRfYWx0aXR1ZGVCGwoZX3NldF9tZWFzdXJlbWVudF9pbnRlcnZhbEINCgtfc29mdF9yZXNldCI6CgxTSFRYWF9jb25maWcSGQoMc2V0X2FjY3VyYWN5GAEgASgNSACIAQFCDwoNX3NldF9hY2N1cmFjeSo3CgdPVEFNb2RlEhEKDU5PX1JFQk9PVF9PVEEQABILCgdPVEFfQkxFEAESDAoIT1RBX1dJRkkQAkJhChRvcmcubWVzaHRhc3RpYy5wcm90b0ILQWRtaW5Qcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", [file_meshtastic_channel, file_meshtastic_config, file_meshtastic_connection_status, file_meshtastic_device_ui, file_meshtastic_mesh, file_meshtastic_module_config]); +export const file_meshtastic_admin: GenFile /*@__PURE__*/ = fileDesc( + "ChZtZXNodGFzdGljL2FkbWluLnByb3RvEgptZXNodGFzdGljIqsbCgxBZG1pbk1lc3NhZ2USFwoPc2Vzc2lvbl9wYXNza2V5GGUgASgMEh0KE2dldF9jaGFubmVsX3JlcXVlc3QYASABKA1IABIzChRnZXRfY2hhbm5lbF9yZXNwb25zZRgCIAEoCzITLm1lc2h0YXN0aWMuQ2hhbm5lbEgAEhsKEWdldF9vd25lcl9yZXF1ZXN0GAMgASgISAASLgoSZ2V0X293bmVyX3Jlc3BvbnNlGAQgASgLMhAubWVzaHRhc3RpYy5Vc2VySAASQQoSZ2V0X2NvbmZpZ19yZXF1ZXN0GAUgASgOMiMubWVzaHRhc3RpYy5BZG1pbk1lc3NhZ2UuQ29uZmlnVHlwZUgAEjEKE2dldF9jb25maWdfcmVzcG9uc2UYBiABKAsyEi5tZXNodGFzdGljLkNvbmZpZ0gAEk4KGWdldF9tb2R1bGVfY29uZmlnX3JlcXVlc3QYByABKA4yKS5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5Nb2R1bGVDb25maWdUeXBlSAASPgoaZ2V0X21vZHVsZV9jb25maWdfcmVzcG9uc2UYCCABKAsyGC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZ0gAEjQKKmdldF9jYW5uZWRfbWVzc2FnZV9tb2R1bGVfbWVzc2FnZXNfcmVxdWVzdBgKIAEoCEgAEjUKK2dldF9jYW5uZWRfbWVzc2FnZV9tb2R1bGVfbWVzc2FnZXNfcmVzcG9uc2UYCyABKAlIABIlChtnZXRfZGV2aWNlX21ldGFkYXRhX3JlcXVlc3QYDCABKAhIABJCChxnZXRfZGV2aWNlX21ldGFkYXRhX3Jlc3BvbnNlGA0gASgLMhoubWVzaHRhc3RpYy5EZXZpY2VNZXRhZGF0YUgAEh4KFGdldF9yaW5ndG9uZV9yZXF1ZXN0GA4gASgISAASHwoVZ2V0X3Jpbmd0b25lX3Jlc3BvbnNlGA8gASgJSAASLgokZ2V0X2RldmljZV9jb25uZWN0aW9uX3N0YXR1c19yZXF1ZXN0GBAgASgISAASUwolZ2V0X2RldmljZV9jb25uZWN0aW9uX3N0YXR1c19yZXNwb25zZRgRIAEoCzIiLm1lc2h0YXN0aWMuRGV2aWNlQ29ubmVjdGlvblN0YXR1c0gAEjEKDHNldF9oYW1fbW9kZRgSIAEoCzIZLm1lc2h0YXN0aWMuSGFtUGFyYW1ldGVyc0gAEi8KJWdldF9ub2RlX3JlbW90ZV9oYXJkd2FyZV9waW5zX3JlcXVlc3QYEyABKAhIABJcCiZnZXRfbm9kZV9yZW1vdGVfaGFyZHdhcmVfcGluc19yZXNwb25zZRgUIAEoCzIqLm1lc2h0YXN0aWMuTm9kZVJlbW90ZUhhcmR3YXJlUGluc1Jlc3BvbnNlSAASIAoWZW50ZXJfZGZ1X21vZGVfcmVxdWVzdBgVIAEoCEgAEh0KE2RlbGV0ZV9maWxlX3JlcXVlc3QYFiABKAlIABITCglzZXRfc2NhbGUYFyABKA1IABJFChJiYWNrdXBfcHJlZmVyZW5jZXMYGCABKA4yJy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5CYWNrdXBMb2NhdGlvbkgAEkYKE3Jlc3RvcmVfcHJlZmVyZW5jZXMYGSABKA4yJy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5CYWNrdXBMb2NhdGlvbkgAEkwKGXJlbW92ZV9iYWNrdXBfcHJlZmVyZW5jZXMYGiABKA4yJy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5CYWNrdXBMb2NhdGlvbkgAEj8KEHNlbmRfaW5wdXRfZXZlbnQYGyABKAsyIy5tZXNodGFzdGljLkFkbWluTWVzc2FnZS5JbnB1dEV2ZW50SAASJQoJc2V0X293bmVyGCAgASgLMhAubWVzaHRhc3RpYy5Vc2VySAASKgoLc2V0X2NoYW5uZWwYISABKAsyEy5tZXNodGFzdGljLkNoYW5uZWxIABIoCgpzZXRfY29uZmlnGCIgASgLMhIubWVzaHRhc3RpYy5Db25maWdIABI1ChFzZXRfbW9kdWxlX2NvbmZpZxgjIAEoCzIYLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnSAASLAoic2V0X2Nhbm5lZF9tZXNzYWdlX21vZHVsZV9tZXNzYWdlcxgkIAEoCUgAEh4KFHNldF9yaW5ndG9uZV9tZXNzYWdlGCUgASgJSAASGwoRcmVtb3ZlX2J5X25vZGVudW0YJiABKA1IABIbChFzZXRfZmF2b3JpdGVfbm9kZRgnIAEoDUgAEh4KFHJlbW92ZV9mYXZvcml0ZV9ub2RlGCggASgNSAASMgoSc2V0X2ZpeGVkX3Bvc2l0aW9uGCkgASgLMhQubWVzaHRhc3RpYy5Qb3NpdGlvbkgAEh8KFXJlbW92ZV9maXhlZF9wb3NpdGlvbhgqIAEoCEgAEhcKDXNldF90aW1lX29ubHkYKyABKAdIABIfChVnZXRfdWlfY29uZmlnX3JlcXVlc3QYLCABKAhIABI8ChZnZXRfdWlfY29uZmlnX3Jlc3BvbnNlGC0gASgLMhoubWVzaHRhc3RpYy5EZXZpY2VVSUNvbmZpZ0gAEjUKD3N0b3JlX3VpX2NvbmZpZxguIAEoCzIaLm1lc2h0YXN0aWMuRGV2aWNlVUlDb25maWdIABIaChBzZXRfaWdub3JlZF9ub2RlGC8gASgNSAASHQoTcmVtb3ZlX2lnbm9yZWRfbm9kZRgwIAEoDUgAEhsKEXRvZ2dsZV9tdXRlZF9ub2RlGDEgASgNSAASHQoTYmVnaW5fZWRpdF9zZXR0aW5ncxhAIAEoCEgAEh4KFGNvbW1pdF9lZGl0X3NldHRpbmdzGEEgASgISAASMAoLYWRkX2NvbnRhY3QYQiABKAsyGS5tZXNodGFzdGljLlNoYXJlZENvbnRhY3RIABI8ChBrZXlfdmVyaWZpY2F0aW9uGEMgASgLMiAubWVzaHRhc3RpYy5LZXlWZXJpZmljYXRpb25BZG1pbkgAEh4KFGZhY3RvcnlfcmVzZXRfZGV2aWNlGF4gASgFSAASIAoScmVib290X290YV9zZWNvbmRzGF8gASgFQgIYAUgAEhgKDmV4aXRfc2ltdWxhdG9yGGAgASgISAASGAoOcmVib290X3NlY29uZHMYYSABKAVIABIaChBzaHV0ZG93bl9zZWNvbmRzGGIgASgFSAASHgoUZmFjdG9yeV9yZXNldF9jb25maWcYYyABKAVIABIWCgxub2RlZGJfcmVzZXQYZCABKAhIABI4CgtvdGFfcmVxdWVzdBhmIAEoCzIhLm1lc2h0YXN0aWMuQWRtaW5NZXNzYWdlLk9UQUV2ZW50SAASMQoNc2Vuc29yX2NvbmZpZxhnIAEoCzIYLm1lc2h0YXN0aWMuU2Vuc29yQ29uZmlnSAASMQoNbG9ja2Rvd25fYXV0aBhoIAEoCzIYLm1lc2h0YXN0aWMuTG9ja2Rvd25BdXRoSAAaUwoKSW5wdXRFdmVudBISCgpldmVudF9jb2RlGAEgASgNEg8KB2tiX2NoYXIYAiABKA0SDwoHdG91Y2hfeBgDIAEoDRIPCgd0b3VjaF95GAQgASgNGkoKCE9UQUV2ZW50EiwKD3JlYm9vdF9vdGFfbW9kZRgBIAEoDjITLm1lc2h0YXN0aWMuT1RBTW9kZRIQCghvdGFfaGFzaBgCIAEoDCLWAQoKQ29uZmlnVHlwZRIRCg1ERVZJQ0VfQ09ORklHEAASEwoPUE9TSVRJT05fQ09ORklHEAESEAoMUE9XRVJfQ09ORklHEAISEgoOTkVUV09SS19DT05GSUcQAxISCg5ESVNQTEFZX0NPTkZJRxAEEg8KC0xPUkFfQ09ORklHEAUSFAoQQkxVRVRPT1RIX0NPTkZJRxAGEhMKD1NFQ1VSSVRZX0NPTkZJRxAHEhUKEVNFU1NJT05LRVlfQ09ORklHEAgSEwoPREVWSUNFVUlfQ09ORklHEAkigwMKEE1vZHVsZUNvbmZpZ1R5cGUSDwoLTVFUVF9DT05GSUcQABIRCg1TRVJJQUxfQ09ORklHEAESEwoPRVhUTk9USUZfQ09ORklHEAISFwoTU1RPUkVGT1JXQVJEX0NPTkZJRxADEhQKEFJBTkdFVEVTVF9DT05GSUcQBBIUChBURUxFTUVUUllfQ09ORklHEAUSFAoQQ0FOTkVETVNHX0NPTkZJRxAGEhAKDEFVRElPX0NPTkZJRxAHEhkKFVJFTU9URUhBUkRXQVJFX0NPTkZJRxAIEhcKE05FSUdIQk9SSU5GT19DT05GSUcQCRIaChZBTUJJRU5UTElHSFRJTkdfQ09ORklHEAoSGgoWREVURUNUSU9OU0VOU09SX0NPTkZJRxALEhUKEVBBWENPVU5URVJfQ09ORklHEAwSGAoUU1RBVFVTTUVTU0FHRV9DT05GSUcQDRIcChhUUkFGRklDTUFOQUdFTUVOVF9DT05GSUcQDhIOCgpUQUtfQ09ORklHEA8iIwoOQmFja3VwTG9jYXRpb24SCQoFRkxBU0gQABIGCgJTRBABQhEKD3BheWxvYWRfdmFyaWFudCKWAQoMTG9ja2Rvd25BdXRoEhIKCnBhc3NwaHJhc2UYASABKAwSFwoPYm9vdHNfcmVtYWluaW5nGAIgASgNEhkKEXZhbGlkX3VudGlsX2Vwb2NoGAMgASgNEhAKCGxvY2tfbm93GAQgASgIEhsKE21heF9zZXNzaW9uX3NlY29uZHMYBSABKA0SDwoHZGlzYWJsZRgGIAEoCCJuCg1IYW1QYXJhbWV0ZXJzEhEKCWNhbGxfc2lnbhgBIAEoCRIQCgh0eF9wb3dlchgCIAEoBRIRCglmcmVxdWVuY3kYAyABKAISEgoKc2hvcnRfbmFtZRgEIAEoCRIRCglsb25nX25hbWUYBSABKAkiZgoeTm9kZVJlbW90ZUhhcmR3YXJlUGluc1Jlc3BvbnNlEkQKGW5vZGVfcmVtb3RlX2hhcmR3YXJlX3BpbnMYASADKAsyIS5tZXNodGFzdGljLk5vZGVSZW1vdGVIYXJkd2FyZVBpbiJzCg1TaGFyZWRDb250YWN0EhAKCG5vZGVfbnVtGAEgASgNEh4KBHVzZXIYAiABKAsyEC5tZXNodGFzdGljLlVzZXISFQoNc2hvdWxkX2lnbm9yZRgDIAEoCBIZChFtYW51YWxseV92ZXJpZmllZBgEIAEoCCKcAgoUS2V5VmVyaWZpY2F0aW9uQWRtaW4SQgoMbWVzc2FnZV90eXBlGAEgASgOMiwubWVzaHRhc3RpYy5LZXlWZXJpZmljYXRpb25BZG1pbi5NZXNzYWdlVHlwZRIWCg5yZW1vdGVfbm9kZW51bRgCIAEoDRINCgVub25jZRgDIAEoBBIcCg9zZWN1cml0eV9udW1iZXIYBCABKA1IAIgBASJnCgtNZXNzYWdlVHlwZRIZChVJTklUSUFURV9WRVJJRklDQVRJT04QABIbChdQUk9WSURFX1NFQ1VSSVRZX05VTUJFUhABEg0KCURPX1ZFUklGWRACEhEKDURPX05PVF9WRVJJRlkQA0ISChBfc2VjdXJpdHlfbnVtYmVyIs4BCgxTZW5zb3JDb25maWcSLgoMc2NkNHhfY29uZmlnGAEgASgLMhgubWVzaHRhc3RpYy5TQ0Q0WF9jb25maWcSLgoMc2VuNXhfY29uZmlnGAIgASgLMhgubWVzaHRhc3RpYy5TRU41WF9jb25maWcSLgoMc2NkMzBfY29uZmlnGAMgASgLMhgubWVzaHRhc3RpYy5TQ0QzMF9jb25maWcSLgoMc2h0eHhfY29uZmlnGAQgASgLMhgubWVzaHRhc3RpYy5TSFRYWF9jb25maWci4gIKDFNDRDRYX2NvbmZpZxIUCgdzZXRfYXNjGAEgASgISACIAQESIAoTc2V0X3RhcmdldF9jbzJfY29uYxgCIAEoDUgBiAEBEhwKD3NldF90ZW1wZXJhdHVyZRgDIAEoAkgCiAEBEhkKDHNldF9hbHRpdHVkZRgEIAEoDUgDiAEBEiEKFHNldF9hbWJpZW50X3ByZXNzdXJlGAUgASgNSASIAQESGgoNZmFjdG9yeV9yZXNldBgGIAEoCEgFiAEBEhsKDnNldF9wb3dlcl9tb2RlGAcgASgISAaIAQFCCgoIX3NldF9hc2NCFgoUX3NldF90YXJnZXRfY28yX2NvbmNCEgoQX3NldF90ZW1wZXJhdHVyZUIPCg1fc2V0X2FsdGl0dWRlQhcKFV9zZXRfYW1iaWVudF9wcmVzc3VyZUIQCg5fZmFjdG9yeV9yZXNldEIRCg9fc2V0X3Bvd2VyX21vZGUidgoMU0VONVhfY29uZmlnEhwKD3NldF90ZW1wZXJhdHVyZRgBIAEoAkgAiAEBEh4KEXNldF9vbmVfc2hvdF9tb2RlGAIgASgISAGIAQFCEgoQX3NldF90ZW1wZXJhdHVyZUIUChJfc2V0X29uZV9zaG90X21vZGUitAIKDFNDRDMwX2NvbmZpZxIUCgdzZXRfYXNjGAEgASgISACIAQESIAoTc2V0X3RhcmdldF9jbzJfY29uYxgCIAEoDUgBiAEBEhwKD3NldF90ZW1wZXJhdHVyZRgDIAEoAkgCiAEBEhkKDHNldF9hbHRpdHVkZRgEIAEoDUgDiAEBEiUKGHNldF9tZWFzdXJlbWVudF9pbnRlcnZhbBgFIAEoDUgEiAEBEhcKCnNvZnRfcmVzZXQYBiABKAhIBYgBAUIKCghfc2V0X2FzY0IWChRfc2V0X3RhcmdldF9jbzJfY29uY0ISChBfc2V0X3RlbXBlcmF0dXJlQg8KDV9zZXRfYWx0aXR1ZGVCGwoZX3NldF9tZWFzdXJlbWVudF9pbnRlcnZhbEINCgtfc29mdF9yZXNldCI6CgxTSFRYWF9jb25maWcSGQoMc2V0X2FjY3VyYWN5GAEgASgNSACIAQFCDwoNX3NldF9hY2N1cmFjeSo3CgdPVEFNb2RlEhEKDU5PX1JFQk9PVF9PVEEQABILCgdPVEFfQkxFEAESDAoIT1RBX1dJRkkQAkJhChRvcmcubWVzaHRhc3RpYy5wcm90b0ILQWRtaW5Qcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", + [ + file_meshtastic_channel, + file_meshtastic_config, + file_meshtastic_connection_status, + file_meshtastic_device_ui, + file_meshtastic_mesh, + file_meshtastic_module_config, + ], +); /** * @@ -49,557 +67,616 @@ export type AdminMessage = Message<"meshtastic.AdminMessage"> & { * * @generated from oneof meshtastic.AdminMessage.payload_variant */ - payloadVariant: { - /** - * - * Send the specified channel in the response to this message - * NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present) - * - * @generated from field: uint32 get_channel_request = 1; - */ - value: number; - case: "getChannelRequest"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.Channel get_channel_response = 2; - */ - value: Channel; - case: "getChannelResponse"; - } | { - /** - * - * Send the current owner data in the response to this message. - * - * @generated from field: bool get_owner_request = 3; - */ - value: boolean; - case: "getOwnerRequest"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.User get_owner_response = 4; - */ - value: User; - case: "getOwnerResponse"; - } | { - /** - * - * Ask for the following config data to be sent - * - * @generated from field: meshtastic.AdminMessage.ConfigType get_config_request = 5; - */ - value: AdminMessage_ConfigType; - case: "getConfigRequest"; - } | { - /** - * - * Send the current Config in the response to this message. - * - * @generated from field: meshtastic.Config get_config_response = 6; - */ - value: Config; - case: "getConfigResponse"; - } | { - /** - * - * Ask for the following config data to be sent - * - * @generated from field: meshtastic.AdminMessage.ModuleConfigType get_module_config_request = 7; - */ - value: AdminMessage_ModuleConfigType; - case: "getModuleConfigRequest"; - } | { - /** - * - * Send the current Config in the response to this message. - * - * @generated from field: meshtastic.ModuleConfig get_module_config_response = 8; - */ - value: ModuleConfig; - case: "getModuleConfigResponse"; - } | { - /** - * - * Get the Canned Message Module messages in the response to this message. - * - * @generated from field: bool get_canned_message_module_messages_request = 10; - */ - value: boolean; - case: "getCannedMessageModuleMessagesRequest"; - } | { - /** - * - * Get the Canned Message Module messages in the response to this message. - * - * @generated from field: string get_canned_message_module_messages_response = 11; - */ - value: string; - case: "getCannedMessageModuleMessagesResponse"; - } | { - /** - * - * Request the node to send device metadata (firmware, protobuf version, etc) - * - * @generated from field: bool get_device_metadata_request = 12; - */ - value: boolean; - case: "getDeviceMetadataRequest"; - } | { - /** - * - * Device metadata response - * - * @generated from field: meshtastic.DeviceMetadata get_device_metadata_response = 13; - */ - value: DeviceMetadata; - case: "getDeviceMetadataResponse"; - } | { - /** - * - * Get the Ringtone in the response to this message. - * - * @generated from field: bool get_ringtone_request = 14; - */ - value: boolean; - case: "getRingtoneRequest"; - } | { - /** - * - * Get the Ringtone in the response to this message. - * - * @generated from field: string get_ringtone_response = 15; - */ - value: string; - case: "getRingtoneResponse"; - } | { - /** - * - * Request the node to send it's connection status - * - * @generated from field: bool get_device_connection_status_request = 16; - */ - value: boolean; - case: "getDeviceConnectionStatusRequest"; - } | { - /** - * - * Device connection status response - * - * @generated from field: meshtastic.DeviceConnectionStatus get_device_connection_status_response = 17; - */ - value: DeviceConnectionStatus; - case: "getDeviceConnectionStatusResponse"; - } | { - /** - * - * Setup a node for licensed amateur (ham) radio operation - * - * @generated from field: meshtastic.HamParameters set_ham_mode = 18; - */ - value: HamParameters; - case: "setHamMode"; - } | { - /** - * - * Get the mesh's nodes with their available gpio pins for RemoteHardware module use - * - * @generated from field: bool get_node_remote_hardware_pins_request = 19; - */ - value: boolean; - case: "getNodeRemoteHardwarePinsRequest"; - } | { - /** - * - * Respond with the mesh's nodes with their available gpio pins for RemoteHardware module use - * - * @generated from field: meshtastic.NodeRemoteHardwarePinsResponse get_node_remote_hardware_pins_response = 20; - */ - value: NodeRemoteHardwarePinsResponse; - case: "getNodeRemoteHardwarePinsResponse"; - } | { - /** - * - * Enter (UF2) DFU mode - * Only implemented on NRF52 currently - * - * @generated from field: bool enter_dfu_mode_request = 21; - */ - value: boolean; - case: "enterDfuModeRequest"; - } | { - /** - * - * Delete the file by the specified path from the device - * - * @generated from field: string delete_file_request = 22; - */ - value: string; - case: "deleteFileRequest"; - } | { - /** - * - * Set zero and offset for scale chips - * - * @generated from field: uint32 set_scale = 23; - */ - value: number; - case: "setScale"; - } | { - /** - * - * Backup the node's preferences - * - * @generated from field: meshtastic.AdminMessage.BackupLocation backup_preferences = 24; - */ - value: AdminMessage_BackupLocation; - case: "backupPreferences"; - } | { - /** - * - * Restore the node's preferences - * - * @generated from field: meshtastic.AdminMessage.BackupLocation restore_preferences = 25; - */ - value: AdminMessage_BackupLocation; - case: "restorePreferences"; - } | { - /** - * - * Remove backups of the node's preferences - * - * @generated from field: meshtastic.AdminMessage.BackupLocation remove_backup_preferences = 26; - */ - value: AdminMessage_BackupLocation; - case: "removeBackupPreferences"; - } | { - /** - * - * Send an input event to the node. - * This is used to trigger physical input events like button presses, touch events, etc. - * - * @generated from field: meshtastic.AdminMessage.InputEvent send_input_event = 27; - */ - value: AdminMessage_InputEvent; - case: "sendInputEvent"; - } | { - /** - * - * Set the owner for this node - * - * @generated from field: meshtastic.User set_owner = 32; - */ - value: User; - case: "setOwner"; - } | { - /** - * - * Set channels (using the new API). - * A special channel is the "primary channel". - * The other records are secondary channels. - * Note: only one channel can be marked as primary. - * If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically. - * - * @generated from field: meshtastic.Channel set_channel = 33; - */ - value: Channel; - case: "setChannel"; - } | { - /** - * - * Set the current Config - * - * @generated from field: meshtastic.Config set_config = 34; - */ - value: Config; - case: "setConfig"; - } | { - /** - * - * Set the current Config - * - * @generated from field: meshtastic.ModuleConfig set_module_config = 35; - */ - value: ModuleConfig; - case: "setModuleConfig"; - } | { - /** - * - * Set the Canned Message Module messages text. - * - * @generated from field: string set_canned_message_module_messages = 36; - */ - value: string; - case: "setCannedMessageModuleMessages"; - } | { - /** - * - * Set the ringtone for ExternalNotification. - * - * @generated from field: string set_ringtone_message = 37; - */ - value: string; - case: "setRingtoneMessage"; - } | { - /** - * - * Remove the node by the specified node-num from the NodeDB on the device - * - * @generated from field: uint32 remove_by_nodenum = 38; - */ - value: number; - case: "removeByNodenum"; - } | { - /** - * - * Set specified node-num to be favorited on the NodeDB on the device - * - * @generated from field: uint32 set_favorite_node = 39; - */ - value: number; - case: "setFavoriteNode"; - } | { - /** - * - * Set specified node-num to be un-favorited on the NodeDB on the device - * - * @generated from field: uint32 remove_favorite_node = 40; - */ - value: number; - case: "removeFavoriteNode"; - } | { - /** - * - * Set fixed position data on the node and then set the position.fixed_position = true - * - * @generated from field: meshtastic.Position set_fixed_position = 41; - */ - value: Position; - case: "setFixedPosition"; - } | { - /** - * - * Clear fixed position coordinates and then set position.fixed_position = false - * - * @generated from field: bool remove_fixed_position = 42; - */ - value: boolean; - case: "removeFixedPosition"; - } | { - /** - * - * Set time only on the node - * Convenience method to set the time on the node (as Net quality) without any other position data - * - * @generated from field: fixed32 set_time_only = 43; - */ - value: number; - case: "setTimeOnly"; - } | { - /** - * - * Tell the node to send the stored ui data. - * - * @generated from field: bool get_ui_config_request = 44; - */ - value: boolean; - case: "getUiConfigRequest"; - } | { - /** - * - * Reply stored device ui data. - * - * @generated from field: meshtastic.DeviceUIConfig get_ui_config_response = 45; - */ - value: DeviceUIConfig; - case: "getUiConfigResponse"; - } | { - /** - * - * Tell the node to store UI data persistently. - * - * @generated from field: meshtastic.DeviceUIConfig store_ui_config = 46; - */ - value: DeviceUIConfig; - case: "storeUiConfig"; - } | { - /** - * - * Set specified node-num to be ignored on the NodeDB on the device - * - * @generated from field: uint32 set_ignored_node = 47; - */ - value: number; - case: "setIgnoredNode"; - } | { - /** - * - * Set specified node-num to be un-ignored on the NodeDB on the device - * - * @generated from field: uint32 remove_ignored_node = 48; - */ - value: number; - case: "removeIgnoredNode"; - } | { - /** - * - * Set specified node-num to be muted - * - * @generated from field: uint32 toggle_muted_node = 49; - */ - value: number; - case: "toggleMutedNode"; - } | { - /** - * - * Begins an edit transaction for config, module config, owner, and channel settings changes - * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) - * - * @generated from field: bool begin_edit_settings = 64; - */ - value: boolean; - case: "beginEditSettings"; - } | { - /** - * - * Commits an open transaction for any edits made to config, module config, owner, and channel settings - * - * @generated from field: bool commit_edit_settings = 65; - */ - value: boolean; - case: "commitEditSettings"; - } | { - /** - * - * Add a contact (User) to the nodedb - * - * @generated from field: meshtastic.SharedContact add_contact = 66; - */ - value: SharedContact; - case: "addContact"; - } | { - /** - * - * Initiate or respond to a key verification request - * - * @generated from field: meshtastic.KeyVerificationAdmin key_verification = 67; - */ - value: KeyVerificationAdmin; - case: "keyVerification"; - } | { - /** - * - * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. - * - * @generated from field: int32 factory_reset_device = 94; - */ - value: number; - case: "factoryResetDevice"; - } | { - /** - * - * Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) - * Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. - * Deprecated in favor of reboot_ota_mode in 2.7.17 - * - * @generated from field: int32 reboot_ota_seconds = 95 [deprecated = true]; - * @deprecated - */ - value: number; - case: "rebootOtaSeconds"; - } | { - /** - * - * This message is only supported for the simulator Portduino build. - * If received the simulator will exit successfully. - * - * @generated from field: bool exit_simulator = 96; - */ - value: boolean; - case: "exitSimulator"; - } | { - /** - * - * Tell the node to reboot in this many seconds (or <0 to cancel reboot) - * - * @generated from field: int32 reboot_seconds = 97; - */ - value: number; - case: "rebootSeconds"; - } | { - /** - * - * Tell the node to shutdown in this many seconds (or <0 to cancel shutdown) - * - * @generated from field: int32 shutdown_seconds = 98; - */ - value: number; - case: "shutdownSeconds"; - } | { - /** - * - * Tell the node to factory reset config; all device state and configuration will be returned to factory defaults; BLE bonds will be preserved. - * - * @generated from field: int32 factory_reset_config = 99; - */ - value: number; - case: "factoryResetConfig"; - } | { - /** - * - * Tell the node to reset the nodedb. - * When true, favorites are preserved through reset. - * - * @generated from field: bool nodedb_reset = 100; - */ - value: boolean; - case: "nodedbReset"; - } | { - /** - * - * Tell the node to reset into the OTA Loader - * - * @generated from field: meshtastic.AdminMessage.OTAEvent ota_request = 102; - */ - value: AdminMessage_OTAEvent; - case: "otaRequest"; - } | { - /** - * - * Parameters and sensor configuration - * - * @generated from field: meshtastic.SensorConfig sensor_config = 103; - */ - value: SensorConfig; - case: "sensorConfig"; - } | { - /** - * - * Lockdown passphrase delivery / unlock / lock-now command for hardened - * firmware builds (see MESHTASTIC_LOCKDOWN). Used to provision the - * passphrase on first boot, unlock encrypted storage on subsequent - * reboots, re-verify on already-unlocked devices to authorize a new - * client connection, or immediately re-lock the device. - * - * Replaces the earlier scheme that repurposed SecurityConfig.private_key - * to carry passphrase bytes; that hack is retired. - * - * @generated from field: meshtastic.LockdownAuth lockdown_auth = 104; - */ - value: LockdownAuth; - case: "lockdownAuth"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * + * Send the specified channel in the response to this message + * NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present) + * + * @generated from field: uint32 get_channel_request = 1; + */ + value: number; + case: "getChannelRequest"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.Channel get_channel_response = 2; + */ + value: Channel; + case: "getChannelResponse"; + } + | { + /** + * + * Send the current owner data in the response to this message. + * + * @generated from field: bool get_owner_request = 3; + */ + value: boolean; + case: "getOwnerRequest"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.User get_owner_response = 4; + */ + value: User; + case: "getOwnerResponse"; + } + | { + /** + * + * Ask for the following config data to be sent + * + * @generated from field: meshtastic.AdminMessage.ConfigType get_config_request = 5; + */ + value: AdminMessage_ConfigType; + case: "getConfigRequest"; + } + | { + /** + * + * Send the current Config in the response to this message. + * + * @generated from field: meshtastic.Config get_config_response = 6; + */ + value: Config; + case: "getConfigResponse"; + } + | { + /** + * + * Ask for the following config data to be sent + * + * @generated from field: meshtastic.AdminMessage.ModuleConfigType get_module_config_request = 7; + */ + value: AdminMessage_ModuleConfigType; + case: "getModuleConfigRequest"; + } + | { + /** + * + * Send the current Config in the response to this message. + * + * @generated from field: meshtastic.ModuleConfig get_module_config_response = 8; + */ + value: ModuleConfig; + case: "getModuleConfigResponse"; + } + | { + /** + * + * Get the Canned Message Module messages in the response to this message. + * + * @generated from field: bool get_canned_message_module_messages_request = 10; + */ + value: boolean; + case: "getCannedMessageModuleMessagesRequest"; + } + | { + /** + * + * Get the Canned Message Module messages in the response to this message. + * + * @generated from field: string get_canned_message_module_messages_response = 11; + */ + value: string; + case: "getCannedMessageModuleMessagesResponse"; + } + | { + /** + * + * Request the node to send device metadata (firmware, protobuf version, etc) + * + * @generated from field: bool get_device_metadata_request = 12; + */ + value: boolean; + case: "getDeviceMetadataRequest"; + } + | { + /** + * + * Device metadata response + * + * @generated from field: meshtastic.DeviceMetadata get_device_metadata_response = 13; + */ + value: DeviceMetadata; + case: "getDeviceMetadataResponse"; + } + | { + /** + * + * Get the Ringtone in the response to this message. + * + * @generated from field: bool get_ringtone_request = 14; + */ + value: boolean; + case: "getRingtoneRequest"; + } + | { + /** + * + * Get the Ringtone in the response to this message. + * + * @generated from field: string get_ringtone_response = 15; + */ + value: string; + case: "getRingtoneResponse"; + } + | { + /** + * + * Request the node to send it's connection status + * + * @generated from field: bool get_device_connection_status_request = 16; + */ + value: boolean; + case: "getDeviceConnectionStatusRequest"; + } + | { + /** + * + * Device connection status response + * + * @generated from field: meshtastic.DeviceConnectionStatus get_device_connection_status_response = 17; + */ + value: DeviceConnectionStatus; + case: "getDeviceConnectionStatusResponse"; + } + | { + /** + * + * Setup a node for licensed amateur (ham) radio operation + * + * @generated from field: meshtastic.HamParameters set_ham_mode = 18; + */ + value: HamParameters; + case: "setHamMode"; + } + | { + /** + * + * Get the mesh's nodes with their available gpio pins for RemoteHardware module use + * + * @generated from field: bool get_node_remote_hardware_pins_request = 19; + */ + value: boolean; + case: "getNodeRemoteHardwarePinsRequest"; + } + | { + /** + * + * Respond with the mesh's nodes with their available gpio pins for RemoteHardware module use + * + * @generated from field: meshtastic.NodeRemoteHardwarePinsResponse get_node_remote_hardware_pins_response = 20; + */ + value: NodeRemoteHardwarePinsResponse; + case: "getNodeRemoteHardwarePinsResponse"; + } + | { + /** + * + * Enter (UF2) DFU mode + * Only implemented on NRF52 currently + * + * @generated from field: bool enter_dfu_mode_request = 21; + */ + value: boolean; + case: "enterDfuModeRequest"; + } + | { + /** + * + * Delete the file by the specified path from the device + * + * @generated from field: string delete_file_request = 22; + */ + value: string; + case: "deleteFileRequest"; + } + | { + /** + * + * Set zero and offset for scale chips + * + * @generated from field: uint32 set_scale = 23; + */ + value: number; + case: "setScale"; + } + | { + /** + * + * Backup the node's preferences + * + * @generated from field: meshtastic.AdminMessage.BackupLocation backup_preferences = 24; + */ + value: AdminMessage_BackupLocation; + case: "backupPreferences"; + } + | { + /** + * + * Restore the node's preferences + * + * @generated from field: meshtastic.AdminMessage.BackupLocation restore_preferences = 25; + */ + value: AdminMessage_BackupLocation; + case: "restorePreferences"; + } + | { + /** + * + * Remove backups of the node's preferences + * + * @generated from field: meshtastic.AdminMessage.BackupLocation remove_backup_preferences = 26; + */ + value: AdminMessage_BackupLocation; + case: "removeBackupPreferences"; + } + | { + /** + * + * Send an input event to the node. + * This is used to trigger physical input events like button presses, touch events, etc. + * + * @generated from field: meshtastic.AdminMessage.InputEvent send_input_event = 27; + */ + value: AdminMessage_InputEvent; + case: "sendInputEvent"; + } + | { + /** + * + * Set the owner for this node + * + * @generated from field: meshtastic.User set_owner = 32; + */ + value: User; + case: "setOwner"; + } + | { + /** + * + * Set channels (using the new API). + * A special channel is the "primary channel". + * The other records are secondary channels. + * Note: only one channel can be marked as primary. + * If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically. + * + * @generated from field: meshtastic.Channel set_channel = 33; + */ + value: Channel; + case: "setChannel"; + } + | { + /** + * + * Set the current Config + * + * @generated from field: meshtastic.Config set_config = 34; + */ + value: Config; + case: "setConfig"; + } + | { + /** + * + * Set the current Config + * + * @generated from field: meshtastic.ModuleConfig set_module_config = 35; + */ + value: ModuleConfig; + case: "setModuleConfig"; + } + | { + /** + * + * Set the Canned Message Module messages text. + * + * @generated from field: string set_canned_message_module_messages = 36; + */ + value: string; + case: "setCannedMessageModuleMessages"; + } + | { + /** + * + * Set the ringtone for ExternalNotification. + * + * @generated from field: string set_ringtone_message = 37; + */ + value: string; + case: "setRingtoneMessage"; + } + | { + /** + * + * Remove the node by the specified node-num from the NodeDB on the device + * + * @generated from field: uint32 remove_by_nodenum = 38; + */ + value: number; + case: "removeByNodenum"; + } + | { + /** + * + * Set specified node-num to be favorited on the NodeDB on the device + * + * @generated from field: uint32 set_favorite_node = 39; + */ + value: number; + case: "setFavoriteNode"; + } + | { + /** + * + * Set specified node-num to be un-favorited on the NodeDB on the device + * + * @generated from field: uint32 remove_favorite_node = 40; + */ + value: number; + case: "removeFavoriteNode"; + } + | { + /** + * + * Set fixed position data on the node and then set the position.fixed_position = true + * + * @generated from field: meshtastic.Position set_fixed_position = 41; + */ + value: Position; + case: "setFixedPosition"; + } + | { + /** + * + * Clear fixed position coordinates and then set position.fixed_position = false + * + * @generated from field: bool remove_fixed_position = 42; + */ + value: boolean; + case: "removeFixedPosition"; + } + | { + /** + * + * Set time only on the node + * Convenience method to set the time on the node (as Net quality) without any other position data + * + * @generated from field: fixed32 set_time_only = 43; + */ + value: number; + case: "setTimeOnly"; + } + | { + /** + * + * Tell the node to send the stored ui data. + * + * @generated from field: bool get_ui_config_request = 44; + */ + value: boolean; + case: "getUiConfigRequest"; + } + | { + /** + * + * Reply stored device ui data. + * + * @generated from field: meshtastic.DeviceUIConfig get_ui_config_response = 45; + */ + value: DeviceUIConfig; + case: "getUiConfigResponse"; + } + | { + /** + * + * Tell the node to store UI data persistently. + * + * @generated from field: meshtastic.DeviceUIConfig store_ui_config = 46; + */ + value: DeviceUIConfig; + case: "storeUiConfig"; + } + | { + /** + * + * Set specified node-num to be ignored on the NodeDB on the device + * + * @generated from field: uint32 set_ignored_node = 47; + */ + value: number; + case: "setIgnoredNode"; + } + | { + /** + * + * Set specified node-num to be un-ignored on the NodeDB on the device + * + * @generated from field: uint32 remove_ignored_node = 48; + */ + value: number; + case: "removeIgnoredNode"; + } + | { + /** + * + * Set specified node-num to be muted + * + * @generated from field: uint32 toggle_muted_node = 49; + */ + value: number; + case: "toggleMutedNode"; + } + | { + /** + * + * Begins an edit transaction for config, module config, owner, and channel settings changes + * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) + * + * @generated from field: bool begin_edit_settings = 64; + */ + value: boolean; + case: "beginEditSettings"; + } + | { + /** + * + * Commits an open transaction for any edits made to config, module config, owner, and channel settings + * + * @generated from field: bool commit_edit_settings = 65; + */ + value: boolean; + case: "commitEditSettings"; + } + | { + /** + * + * Add a contact (User) to the nodedb + * + * @generated from field: meshtastic.SharedContact add_contact = 66; + */ + value: SharedContact; + case: "addContact"; + } + | { + /** + * + * Initiate or respond to a key verification request + * + * @generated from field: meshtastic.KeyVerificationAdmin key_verification = 67; + */ + value: KeyVerificationAdmin; + case: "keyVerification"; + } + | { + /** + * + * Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. + * + * @generated from field: int32 factory_reset_device = 94; + */ + value: number; + case: "factoryResetDevice"; + } + | { + /** + * + * Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) + * Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. + * Deprecated in favor of reboot_ota_mode in 2.7.17 + * + * @generated from field: int32 reboot_ota_seconds = 95 [deprecated = true]; + * @deprecated + */ + value: number; + case: "rebootOtaSeconds"; + } + | { + /** + * + * This message is only supported for the simulator Portduino build. + * If received the simulator will exit successfully. + * + * @generated from field: bool exit_simulator = 96; + */ + value: boolean; + case: "exitSimulator"; + } + | { + /** + * + * Tell the node to reboot in this many seconds (or <0 to cancel reboot) + * + * @generated from field: int32 reboot_seconds = 97; + */ + value: number; + case: "rebootSeconds"; + } + | { + /** + * + * Tell the node to shutdown in this many seconds (or <0 to cancel shutdown) + * + * @generated from field: int32 shutdown_seconds = 98; + */ + value: number; + case: "shutdownSeconds"; + } + | { + /** + * + * Tell the node to factory reset config; all device state and configuration will be returned to factory defaults; BLE bonds will be preserved. + * + * @generated from field: int32 factory_reset_config = 99; + */ + value: number; + case: "factoryResetConfig"; + } + | { + /** + * + * Tell the node to reset the nodedb. + * When true, favorites are preserved through reset. + * + * @generated from field: bool nodedb_reset = 100; + */ + value: boolean; + case: "nodedbReset"; + } + | { + /** + * + * Tell the node to reset into the OTA Loader + * + * @generated from field: meshtastic.AdminMessage.OTAEvent ota_request = 102; + */ + value: AdminMessage_OTAEvent; + case: "otaRequest"; + } + | { + /** + * + * Parameters and sensor configuration + * + * @generated from field: meshtastic.SensorConfig sensor_config = 103; + */ + value: SensorConfig; + case: "sensorConfig"; + } + | { + /** + * + * Lockdown passphrase delivery / unlock / lock-now command for hardened + * firmware builds (see MESHTASTIC_LOCKDOWN). Used to provision the + * passphrase on first boot, unlock encrypted storage on subsequent + * reboots, re-verify on already-unlocked devices to authorize a new + * client connection, or immediately re-lock the device. + * + * Replaces the earlier scheme that repurposed SecurityConfig.private_key + * to carry passphrase bytes; that hack is retired. + * + * @generated from field: meshtastic.LockdownAuth lockdown_auth = 104; + */ + value: LockdownAuth; + case: "lockdownAuth"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.AdminMessage. * Use `create(AdminMessageSchema)` to create a new message. */ -export const AdminMessageSchema: GenMessage = /*@__PURE__*/ +export const AdminMessageSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 0); /** @@ -608,45 +685,46 @@ export const AdminMessageSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.AdminMessage.InputEvent */ -export type AdminMessage_InputEvent = Message<"meshtastic.AdminMessage.InputEvent"> & { - /** - * - * The input event code - * - * @generated from field: uint32 event_code = 1; - */ - eventCode: number; +export type AdminMessage_InputEvent = + Message<"meshtastic.AdminMessage.InputEvent"> & { + /** + * + * The input event code + * + * @generated from field: uint32 event_code = 1; + */ + eventCode: number; - /** - * - * Keyboard character code - * - * @generated from field: uint32 kb_char = 2; - */ - kbChar: number; + /** + * + * Keyboard character code + * + * @generated from field: uint32 kb_char = 2; + */ + kbChar: number; - /** - * - * The touch X coordinate - * - * @generated from field: uint32 touch_x = 3; - */ - touchX: number; + /** + * + * The touch X coordinate + * + * @generated from field: uint32 touch_x = 3; + */ + touchX: number; - /** - * - * The touch Y coordinate - * - * @generated from field: uint32 touch_y = 4; - */ - touchY: number; -}; + /** + * + * The touch Y coordinate + * + * @generated from field: uint32 touch_y = 4; + */ + touchY: number; + }; /** * Describes the message meshtastic.AdminMessage.InputEvent. * Use `create(AdminMessage_InputEventSchema)` to create a new message. */ -export const AdminMessage_InputEventSchema: GenMessage = /*@__PURE__*/ +export const AdminMessage_InputEventSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 0, 0); /** @@ -656,30 +734,31 @@ export const AdminMessage_InputEventSchema: GenMessage * * @generated from message meshtastic.AdminMessage.OTAEvent */ -export type AdminMessage_OTAEvent = Message<"meshtastic.AdminMessage.OTAEvent"> & { - /** - * - * Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now) - * - * @generated from field: meshtastic.OTAMode reboot_ota_mode = 1; - */ - rebootOtaMode: OTAMode; +export type AdminMessage_OTAEvent = + Message<"meshtastic.AdminMessage.OTAEvent"> & { + /** + * + * Tell the node to reboot into OTA mode for firmware update via BLE or WiFi (ESP32 only for now) + * + * @generated from field: meshtastic.OTAMode reboot_ota_mode = 1; + */ + rebootOtaMode: OTAMode; - /** - * - * A 32 byte hash of the OTA firmware. - * Used to verify the integrity of the firmware before applying an update. - * - * @generated from field: bytes ota_hash = 2; - */ - otaHash: Uint8Array; -}; + /** + * + * A 32 byte hash of the OTA firmware. + * Used to verify the integrity of the firmware before applying an update. + * + * @generated from field: bytes ota_hash = 2; + */ + otaHash: Uint8Array; + }; /** * Describes the message meshtastic.AdminMessage.OTAEvent. * Use `create(AdminMessage_OTAEventSchema)` to create a new message. */ -export const AdminMessage_OTAEventSchema: GenMessage = /*@__PURE__*/ +export const AdminMessage_OTAEventSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 0, 1); /** @@ -773,7 +852,7 @@ export enum AdminMessage_ConfigType { /** * Describes the enum meshtastic.AdminMessage.ConfigType. */ -export const AdminMessage_ConfigTypeSchema: GenEnum = /*@__PURE__*/ +export const AdminMessage_ConfigTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_admin, 0, 0); /** @@ -915,7 +994,7 @@ export enum AdminMessage_ModuleConfigType { /** * Describes the enum meshtastic.AdminMessage.ModuleConfigType. */ -export const AdminMessage_ModuleConfigTypeSchema: GenEnum = /*@__PURE__*/ +export const AdminMessage_ModuleConfigTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_admin, 0, 1); /** @@ -942,7 +1021,7 @@ export enum AdminMessage_BackupLocation { /** * Describes the enum meshtastic.AdminMessage.BackupLocation. */ -export const AdminMessage_BackupLocationSchema: GenEnum = /*@__PURE__*/ +export const AdminMessage_BackupLocationSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_admin, 0, 2); /** @@ -1080,7 +1159,7 @@ export type LockdownAuth = Message<"meshtastic.LockdownAuth"> & { * Describes the message meshtastic.LockdownAuth. * Use `create(LockdownAuthSchema)` to create a new message. */ -export const LockdownAuthSchema: GenMessage = /*@__PURE__*/ +export const LockdownAuthSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 1); /** @@ -1138,7 +1217,7 @@ export type HamParameters = Message<"meshtastic.HamParameters"> & { * Describes the message meshtastic.HamParameters. * Use `create(HamParametersSchema)` to create a new message. */ -export const HamParametersSchema: GenMessage = /*@__PURE__*/ +export const HamParametersSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 2); /** @@ -1147,21 +1226,22 @@ export const HamParametersSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.NodeRemoteHardwarePinsResponse */ -export type NodeRemoteHardwarePinsResponse = Message<"meshtastic.NodeRemoteHardwarePinsResponse"> & { - /** - * - * Nodes and their respective remote hardware GPIO pins - * - * @generated from field: repeated meshtastic.NodeRemoteHardwarePin node_remote_hardware_pins = 1; - */ - nodeRemoteHardwarePins: NodeRemoteHardwarePin[]; -}; +export type NodeRemoteHardwarePinsResponse = + Message<"meshtastic.NodeRemoteHardwarePinsResponse"> & { + /** + * + * Nodes and their respective remote hardware GPIO pins + * + * @generated from field: repeated meshtastic.NodeRemoteHardwarePin node_remote_hardware_pins = 1; + */ + nodeRemoteHardwarePins: NodeRemoteHardwarePin[]; + }; /** * Describes the message meshtastic.NodeRemoteHardwarePinsResponse. * Use `create(NodeRemoteHardwarePinsResponseSchema)` to create a new message. */ -export const NodeRemoteHardwarePinsResponseSchema: GenMessage = /*@__PURE__*/ +export const NodeRemoteHardwarePinsResponseSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 3); /** @@ -1205,7 +1285,7 @@ export type SharedContact = Message<"meshtastic.SharedContact"> & { * Describes the message meshtastic.SharedContact. * Use `create(SharedContactSchema)` to create a new message. */ -export const SharedContactSchema: GenMessage = /*@__PURE__*/ +export const SharedContactSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 4); /** @@ -1214,42 +1294,43 @@ export const SharedContactSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.KeyVerificationAdmin */ -export type KeyVerificationAdmin = Message<"meshtastic.KeyVerificationAdmin"> & { - /** - * @generated from field: meshtastic.KeyVerificationAdmin.MessageType message_type = 1; - */ - messageType: KeyVerificationAdmin_MessageType; +export type KeyVerificationAdmin = + Message<"meshtastic.KeyVerificationAdmin"> & { + /** + * @generated from field: meshtastic.KeyVerificationAdmin.MessageType message_type = 1; + */ + messageType: KeyVerificationAdmin_MessageType; - /** - * - * The nodenum we're requesting - * - * @generated from field: uint32 remote_nodenum = 2; - */ - remoteNodenum: number; + /** + * + * The nodenum we're requesting + * + * @generated from field: uint32 remote_nodenum = 2; + */ + remoteNodenum: number; - /** - * - * The nonce is used to track the connection - * - * @generated from field: uint64 nonce = 3; - */ - nonce: bigint; + /** + * + * The nonce is used to track the connection + * + * @generated from field: uint64 nonce = 3; + */ + nonce: bigint; - /** - * - * The 4 digit code generated by the remote node, and communicated outside the mesh - * - * @generated from field: optional uint32 security_number = 4; - */ - securityNumber?: number | undefined; -}; + /** + * + * The 4 digit code generated by the remote node, and communicated outside the mesh + * + * @generated from field: optional uint32 security_number = 4; + */ + securityNumber?: number | undefined; + }; /** * Describes the message meshtastic.KeyVerificationAdmin. * Use `create(KeyVerificationAdminSchema)` to create a new message. */ -export const KeyVerificationAdminSchema: GenMessage = /*@__PURE__*/ +export const KeyVerificationAdminSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 5); /** @@ -1296,7 +1377,7 @@ export enum KeyVerificationAdmin_MessageType { /** * Describes the enum meshtastic.KeyVerificationAdmin.MessageType. */ -export const KeyVerificationAdmin_MessageTypeSchema: GenEnum = /*@__PURE__*/ +export const KeyVerificationAdmin_MessageTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_admin, 5, 0); /** @@ -1340,7 +1421,7 @@ export type SensorConfig = Message<"meshtastic.SensorConfig"> & { * Describes the message meshtastic.SensorConfig. * Use `create(SensorConfigSchema)` to create a new message. */ -export const SensorConfigSchema: GenMessage = /*@__PURE__*/ +export const SensorConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 6); /** @@ -1408,7 +1489,7 @@ export type SCD4X_config = Message<"meshtastic.SCD4X_config"> & { * Describes the message meshtastic.SCD4X_config. * Use `create(SCD4X_configSchema)` to create a new message. */ -export const SCD4X_configSchema: GenMessage = /*@__PURE__*/ +export const SCD4X_configSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 7); /** @@ -1436,7 +1517,7 @@ export type SEN5X_config = Message<"meshtastic.SEN5X_config"> & { * Describes the message meshtastic.SEN5X_config. * Use `create(SEN5X_configSchema)` to create a new message. */ -export const SEN5X_configSchema: GenMessage = /*@__PURE__*/ +export const SEN5X_configSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 8); /** @@ -1496,7 +1577,7 @@ export type SCD30_config = Message<"meshtastic.SCD30_config"> & { * Describes the message meshtastic.SCD30_config. * Use `create(SCD30_configSchema)` to create a new message. */ -export const SCD30_configSchema: GenMessage = /*@__PURE__*/ +export const SCD30_configSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 9); /** @@ -1516,7 +1597,7 @@ export type SHTXX_config = Message<"meshtastic.SHTXX_config"> & { * Describes the message meshtastic.SHTXX_config. * Use `create(SHTXX_configSchema)` to create a new message. */ -export const SHTXX_configSchema: GenMessage = /*@__PURE__*/ +export const SHTXX_configSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_admin, 10); /** @@ -1554,6 +1635,7 @@ export enum OTAMode { /** * Describes the enum meshtastic.OTAMode. */ -export const OTAModeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_admin, 0); - +export const OTAModeSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_admin, + 0, +); diff --git a/packages/protobufs/packages/ts/dist/meshtastic/apponly_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/apponly_pb.ts index 2b3aee646..752018a23 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/apponly_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/apponly_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/apponly.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -13,8 +13,10 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/apponly.proto. */ -export const file_meshtastic_apponly: GenFile = /*@__PURE__*/ - fileDesc("ChhtZXNodGFzdGljL2FwcG9ubHkucHJvdG8SCm1lc2h0YXN0aWMibwoKQ2hhbm5lbFNldBItCghzZXR0aW5ncxgBIAMoCzIbLm1lc2h0YXN0aWMuQ2hhbm5lbFNldHRpbmdzEjIKC2xvcmFfY29uZmlnGAIgASgLMh0ubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZ0JjChRvcmcubWVzaHRhc3RpYy5wcm90b0INQXBwT25seVByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", [file_meshtastic_channel, file_meshtastic_config]); +export const file_meshtastic_apponly: GenFile /*@__PURE__*/ = fileDesc( + "ChhtZXNodGFzdGljL2FwcG9ubHkucHJvdG8SCm1lc2h0YXN0aWMibwoKQ2hhbm5lbFNldBItCghzZXR0aW5ncxgBIAMoCzIbLm1lc2h0YXN0aWMuQ2hhbm5lbFNldHRpbmdzEjIKC2xvcmFfY29uZmlnGAIgASgLMh0ubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZ0JjChRvcmcubWVzaHRhc3RpYy5wcm90b0INQXBwT25seVByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", + [file_meshtastic_channel, file_meshtastic_config], +); /** * @@ -48,6 +50,5 @@ export type ChannelSet = Message<"meshtastic.ChannelSet"> & { * Describes the message meshtastic.ChannelSet. * Use `create(ChannelSetSchema)` to create a new message. */ -export const ChannelSetSchema: GenMessage = /*@__PURE__*/ +export const ChannelSetSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_apponly, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/atak_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/atak_pb.ts index b27b15b11..5426dfc83 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/atak_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/atak_pb.ts @@ -1,18 +1,23 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/atak.proto (package meshtastic, syntax proto3) /* eslint-disable */ -// trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) +// trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/atak.proto. */ -export const file_meshtastic_atak: GenFile = /*@__PURE__*/ - fileDesc("ChVtZXNodGFzdGljL2F0YWsucHJvdG8SCm1lc2h0YXN0aWMi+AEKCVRBS1BhY2tldBIVCg1pc19jb21wcmVzc2VkGAEgASgIEiQKB2NvbnRhY3QYAiABKAsyEy5tZXNodGFzdGljLkNvbnRhY3QSIAoFZ3JvdXAYAyABKAsyES5tZXNodGFzdGljLkdyb3VwEiIKBnN0YXR1cxgEIAEoCzISLm1lc2h0YXN0aWMuU3RhdHVzEh4KA3BsaRgFIAEoCzIPLm1lc2h0YXN0aWMuUExJSAASIwoEY2hhdBgGIAEoCzITLm1lc2h0YXN0aWMuR2VvQ2hhdEgAEhAKBmRldGFpbBgHIAEoDEgAQhEKD3BheWxvYWRfdmFyaWFudCL0AgoHR2VvQ2hhdBIPCgdtZXNzYWdlGAEgASgJEg8KAnRvGAIgASgJSACIAQESGAoLdG9fY2FsbHNpZ24YAyABKAlIAYgBARIXCg9yZWNlaXB0X2Zvcl91aWQYBCABKAkSNQoMcmVjZWlwdF90eXBlGAUgASgOMh8ubWVzaHRhc3RpYy5HZW9DaGF0LlJlY2VpcHRUeXBlEhEKBGxhbmcYBiABKAlIAogBARIUCgdyb29tX2lkGAcgASgJSAOIAQESHQoQdm9pY2VfcHJvZmlsZV9pZBgIIAEoCUgEiAEBIlQKC1JlY2VpcHRUeXBlEhQKEFJlY2VpcHRUeXBlX05vbmUQABIZChVSZWNlaXB0VHlwZV9EZWxpdmVyZWQQARIUChBSZWNlaXB0VHlwZV9SZWFkEAJCBQoDX3RvQg4KDF90b19jYWxsc2lnbkIHCgVfbGFuZ0IKCghfcm9vbV9pZEITChFfdm9pY2VfcHJvZmlsZV9pZCJNCgVHcm91cBIkCgRyb2xlGAEgASgOMhYubWVzaHRhc3RpYy5NZW1iZXJSb2xlEh4KBHRlYW0YAiABKA4yEC5tZXNodGFzdGljLlRlYW0iGQoGU3RhdHVzEg8KB2JhdHRlcnkYASABKA0iNAoHQ29udGFjdBIQCghjYWxsc2lnbhgBIAEoCRIXCg9kZXZpY2VfY2FsbHNpZ24YAiABKAkiXwoDUExJEhIKCmxhdGl0dWRlX2kYASABKA8SEwoLbG9uZ2l0dWRlX2kYAiABKA8SEAoIYWx0aXR1ZGUYAyABKAUSDQoFc3BlZWQYBCABKA0SDgoGY291cnNlGAUgASgNIrABCg1BaXJjcmFmdFRyYWNrEgwKBGljYW8YASABKAkSFAoMcmVnaXN0cmF0aW9uGAIgASgJEg4KBmZsaWdodBgDIAEoCRIVCg1haXJjcmFmdF90eXBlGAQgASgJEg4KBnNxdWF3axgFIAEoDRIQCghjYXRlZ29yeRgGIAEoCRIQCghyc3NpX3gxMBgHIAEoERILCgNncHMYCCABKAgSEwoLY290X2hvc3RfaWQYCSABKAkiNwoLQ290R2VvUG9pbnQSEwoLbGF0X2RlbHRhX2kYASABKBESEwoLbG9uX2RlbHRhX2kYAiABKBEi3AYKCkRyYXduU2hhcGUSKQoEa2luZBgBIAEoDjIbLm1lc2h0YXN0aWMuRHJhd25TaGFwZS5LaW5kEi8KBXN0eWxlGAIgASgOMiAubWVzaHRhc3RpYy5EcmF3blNoYXBlLlN0eWxlTW9kZRIQCghtYWpvcl9jbRgDIAEoDRIQCghtaW5vcl9jbRgEIAEoDRIRCglhbmdsZV9kZWcYBSABKA0SJgoMc3Ryb2tlX2NvbG9yGAYgASgOMhAubWVzaHRhc3RpYy5UZWFtEhMKC3N0cm9rZV9hcmdiGAcgASgHEhkKEXN0cm9rZV93ZWlnaHRfeDEwGAggASgNEiQKCmZpbGxfY29sb3IYCSABKA4yEC5tZXNodGFzdGljLlRlYW0SEQoJZmlsbF9hcmdiGAogASgHEhEKCWxhYmVsc19vbhgLIAEoCBIZChF2ZXJ0ZXhfbGF0X2RlbHRhcxgSIAMoERIZChF2ZXJ0ZXhfbG9uX2RlbHRhcxgTIAMoERIRCgl0cnVuY2F0ZWQYDSABKAgSHAoUYnVsbHNleWVfZGlzdGFuY2VfZG0YDiABKA0SHAoUYnVsbHNleWVfYmVhcmluZ19yZWYYDyABKA0SFgoOYnVsbHNleWVfZmxhZ3MYECABKA0SGAoQYnVsbHNleWVfdWlkX3JlZhgRIAEoCSLiAQoES2luZBIUChBLaW5kX1Vuc3BlY2lmaWVkEAASDwoLS2luZF9DaXJjbGUQARISCg5LaW5kX1JlY3RhbmdsZRACEhEKDUtpbmRfRnJlZWZvcm0QAxIVChFLaW5kX1RlbGVzdHJhdGlvbhAEEhAKDEtpbmRfUG9seWdvbhAFEhYKEktpbmRfUmFuZ2luZ0NpcmNsZRAGEhEKDUtpbmRfQnVsbHNleWUQBxIQCgxLaW5kX0VsbGlwc2UQCBISCg5LaW5kX1ZlaGljbGUyRBAJEhIKDktpbmRfVmVoaWNsZTNEEAoidQoJU3R5bGVNb2RlEhkKFVN0eWxlTW9kZV9VbnNwZWNpZmllZBAAEhgKFFN0eWxlTW9kZV9TdHJva2VPbmx5EAESFgoSU3R5bGVNb2RlX0ZpbGxPbmx5EAISGwoXU3R5bGVNb2RlX1N0cm9rZUFuZEZpbGwQA0oECAwQDSLlAwoGTWFya2VyEiUKBGtpbmQYASABKA4yFy5tZXNodGFzdGljLk1hcmtlci5LaW5kEh8KBWNvbG9yGAIgASgOMhAubWVzaHRhc3RpYy5UZWFtEhIKCmNvbG9yX2FyZ2IYAyABKAcSEQoJcmVhZGluZXNzGAQgASgIEhIKCnBhcmVudF91aWQYBSABKAkSEwoLcGFyZW50X3R5cGUYBiABKAkSFwoPcGFyZW50X2NhbGxzaWduGAcgASgJEg8KB2ljb25zZXQYCCABKAkimAIKBEtpbmQSFAoQS2luZF9VbnNwZWNpZmllZBAAEg0KCUtpbmRfU3BvdBABEhEKDUtpbmRfV2F5cG9pbnQQAhITCg9LaW5kX0NoZWNrcG9pbnQQAxIVChFLaW5kX1NlbGZQb3NpdGlvbhAEEhMKD0tpbmRfU3ltYm9sMjUyNRAFEhAKDEtpbmRfU3BvdE1hcBAGEhMKD0tpbmRfQ3VzdG9tSWNvbhAHEhIKDktpbmRfR29Ub1BvaW50EAgSFQoRS2luZF9Jbml0aWFsUG9pbnQQCRIVChFLaW5kX0NvbnRhY3RQb2ludBAKEhgKFEtpbmRfT2JzZXJ2YXRpb25Qb3N0EAsSFAoQS2luZF9JbWFnZU1hcmtlchAMIs4BCg9SYW5nZUFuZEJlYXJpbmcSJwoGYW5jaG9yGAEgASgLMhcubWVzaHRhc3RpYy5Db3RHZW9Qb2ludBISCgphbmNob3JfdWlkGAIgASgJEhAKCHJhbmdlX2NtGAMgASgNEhQKDGJlYXJpbmdfY2RlZxgEIAEoDRImCgxzdHJva2VfY29sb3IYBSABKA4yEC5tZXNodGFzdGljLlRlYW0SEwoLc3Ryb2tlX2FyZ2IYBiABKAcSGQoRc3Ryb2tlX3dlaWdodF94MTAYByABKA0ihAQKBVJvdXRlEigKBm1ldGhvZBgBIAEoDjIYLm1lc2h0YXN0aWMuUm91dGUuTWV0aG9kEi4KCWRpcmVjdGlvbhgCIAEoDjIbLm1lc2h0YXN0aWMuUm91dGUuRGlyZWN0aW9uEg4KBnByZWZpeBgDIAEoCRIZChFzdHJva2Vfd2VpZ2h0X3gxMBgEIAEoDRIlCgVsaW5rcxgFIAMoCzIWLm1lc2h0YXN0aWMuUm91dGUuTGluaxIRCgl0cnVuY2F0ZWQYBiABKAgaYAoETGluaxImCgVwb2ludBgBIAEoCzIXLm1lc2h0YXN0aWMuQ290R2VvUG9pbnQSCwoDdWlkGAIgASgJEhAKCGNhbGxzaWduGAMgASgJEhEKCWxpbmtfdHlwZRgEIAEoDSKHAQoGTWV0aG9kEhYKEk1ldGhvZF9VbnNwZWNpZmllZBAAEhIKDk1ldGhvZF9Ecml2aW5nEAESEgoOTWV0aG9kX1dhbGtpbmcQAhIRCg1NZXRob2RfRmx5aW5nEAMSEwoPTWV0aG9kX1N3aW1taW5nEAQSFQoRTWV0aG9kX1dhdGVyY3JhZnQQBSJQCglEaXJlY3Rpb24SGQoVRGlyZWN0aW9uX1Vuc3BlY2lmaWVkEAASEwoPRGlyZWN0aW9uX0luZmlsEAESEwoPRGlyZWN0aW9uX0V4ZmlsEAIi1goKDUNhc2V2YWNSZXBvcnQSOAoKcHJlY2VkZW5jZRgBIAEoDjIkLm1lc2h0YXN0aWMuQ2FzZXZhY1JlcG9ydC5QcmVjZWRlbmNlEhcKD2VxdWlwbWVudF9mbGFncxgCIAEoDRIXCg9saXR0ZXJfcGF0aWVudHMYAyABKA0SGwoTYW1idWxhdG9yeV9wYXRpZW50cxgEIAEoDRI0CghzZWN1cml0eRgFIAEoDjIiLm1lc2h0YXN0aWMuQ2FzZXZhY1JlcG9ydC5TZWN1cml0eRI5CgtobHpfbWFya2luZxgGIAEoDjIkLm1lc2h0YXN0aWMuQ2FzZXZhY1JlcG9ydC5IbHpNYXJraW5nEhMKC3pvbmVfbWFya2VyGAcgASgJEhMKC3VzX21pbGl0YXJ5GAggASgNEhMKC3VzX2NpdmlsaWFuGAkgASgNEhcKD25vbl91c19taWxpdGFyeRgKIAEoDRIXCg9ub25fdXNfY2l2aWxpYW4YCyABKA0SCwoDZXB3GAwgASgNEg0KBWNoaWxkGA0gASgNEhUKDXRlcnJhaW5fZmxhZ3MYDiABKA0SEQoJZnJlcXVlbmN5GA8gASgJEg0KBXRpdGxlGBAgASgJEhcKD21lZGxpbmVfcmVtYXJrcxgRIAEoCRIUCgx1cmdlbnRfY291bnQYEiABKA0SHQoVdXJnZW50X3N1cmdpY2FsX2NvdW50GBMgASgNEhYKDnByaW9yaXR5X2NvdW50GBQgASgNEhUKDXJvdXRpbmVfY291bnQYFSABKA0SGQoRY29udmVuaWVuY2VfY291bnQYFiABKA0SGAoQZXF1aXBtZW50X2RldGFpbBgXIAEoCRIcChR6b25lX3Byb3RlY3RlZF9jb29yZBgYIAEoCRIZChF0ZXJyYWluX3Nsb3BlX2RpchgZIAEoCRIcChR0ZXJyYWluX290aGVyX2RldGFpbBgaIAEoCRIRCgltYXJrZWRfYnkYGyABKAkSEQoJb2JzdGFjbGVzGBwgASgJEhYKDndpbmRzX2FyZV9mcm9tGB0gASgJEhIKCmZyaWVuZGxpZXMYHiABKAkSDQoFZW5lbXkYHyABKAkSEwoLaGx6X3JlbWFya3MYICABKAkSJQoFem1pc3QYISADKAsyFi5tZXNodGFzdGljLlpNaXN0RW50cnkiqwEKClByZWNlZGVuY2USGgoWUHJlY2VkZW5jZV9VbnNwZWNpZmllZBAAEhUKEVByZWNlZGVuY2VfVXJnZW50EAESHQoZUHJlY2VkZW5jZV9VcmdlbnRTdXJnaWNhbBACEhcKE1ByZWNlZGVuY2VfUHJpb3JpdHkQAxIWChJQcmVjZWRlbmNlX1JvdXRpbmUQBBIaChZQcmVjZWRlbmNlX0NvbnZlbmllbmNlEAUimwEKCkhsek1hcmtpbmcSGgoWSGx6TWFya2luZ19VbnNwZWNpZmllZBAAEhUKEUhsek1hcmtpbmdfUGFuZWxzEAESGQoVSGx6TWFya2luZ19QeXJvU2lnbmFsEAISFAoQSGx6TWFya2luZ19TbW9rZRADEhMKD0hsek1hcmtpbmdfTm9uZRAEEhQKEEhsek1hcmtpbmdfT3RoZXIQBSKSAQoIU2VjdXJpdHkSGAoUU2VjdXJpdHlfVW5zcGVjaWZpZWQQABIUChBTZWN1cml0eV9Ob0VuZW15EAESGgoWU2VjdXJpdHlfUG9zc2libGVFbmVteRACEhgKFFNlY3VyaXR5X0VuZW15SW5BcmVhEAMSIAocU2VjdXJpdHlfRW5lbXlJbkFybWVkQ29udGFjdBAEIlIKClpNaXN0RW50cnkSDQoFdGl0bGUYASABKAkSCQoBehgCIAEoCRIJCgFtGAMgASgJEgkKAWkYBCABKAkSCQoBcxgFIAEoCRIJCgF0GAYgASgJIo0CCg5FbWVyZ2VuY3lBbGVydBItCgR0eXBlGAEgASgOMh8ubWVzaHRhc3RpYy5FbWVyZ2VuY3lBbGVydC5UeXBlEhUKDWF1dGhvcmluZ191aWQYAiABKAkSHAoUY2FuY2VsX3JlZmVyZW5jZV91aWQYAyABKAkilgEKBFR5cGUSFAoQVHlwZV9VbnNwZWNpZmllZBAAEhEKDVR5cGVfQWxlcnQ5MTEQARIUChBUeXBlX1JpbmdUaGVCZWxsEAISEgoOVHlwZV9JbkNvbnRhY3QQAxIZChVUeXBlX0dlb0ZlbmNlQnJlYWNoZWQQBBIPCgtUeXBlX0N1c3RvbRAFEg8KC1R5cGVfQ2FuY2VsEAYixgMKC1Rhc2tSZXF1ZXN0EhEKCXRhc2tfdHlwZRgBIAEoCRISCgp0YXJnZXRfdWlkGAIgASgJEhQKDGFzc2lnbmVlX3VpZBgDIAEoCRIyCghwcmlvcml0eRgEIAEoDjIgLm1lc2h0YXN0aWMuVGFza1JlcXVlc3QuUHJpb3JpdHkSLgoGc3RhdHVzGAUgASgOMh4ubWVzaHRhc3RpYy5UYXNrUmVxdWVzdC5TdGF0dXMSDAoEbm90ZRgGIAEoCSJ1CghQcmlvcml0eRIYChRQcmlvcml0eV9VbnNwZWNpZmllZBAAEhAKDFByaW9yaXR5X0xvdxABEhMKD1ByaW9yaXR5X05vcm1hbBACEhEKDVByaW9yaXR5X0hpZ2gQAxIVChFQcmlvcml0eV9Dcml0aWNhbBAEIpABCgZTdGF0dXMSFgoSU3RhdHVzX1Vuc3BlY2lmaWVkEAASEgoOU3RhdHVzX1BlbmRpbmcQARIXChNTdGF0dXNfQWNrbm93bGVkZ2VkEAISFQoRU3RhdHVzX0luUHJvZ3Jlc3MQAxIUChBTdGF0dXNfQ29tcGxldGVkEAQSFAoQU3RhdHVzX0NhbmNlbGxlZBAFImAKDlRBS0Vudmlyb25tZW50EhkKEXRlbXBlcmF0dXJlX2NfeDEwGAEgASgREhoKEndpbmRfZGlyZWN0aW9uX2RlZxgCIAEoDRIXCg93aW5kX3NwZWVkX2NtX3MYAyABKA0ijQMKCVNlbnNvckZvdhIuCgR0eXBlGAEgASgOMiAubWVzaHRhc3RpYy5TZW5zb3JGb3YuU2Vuc29yVHlwZRITCgthemltdXRoX2RlZxgCIAEoDRIUCgdyYW5nZV9tGAMgASgNSACIAQESGgoSZm92X2hvcml6b250YWxfZGVnGAQgASgNEhgKEGZvdl92ZXJ0aWNhbF9kZWcYBSABKA0SFQoNZWxldmF0aW9uX2RlZxgGIAEoERIQCghyb2xsX2RlZxgHIAEoERINCgVtb2RlbBgIIAEoCSKqAQoKU2Vuc29yVHlwZRIaChZTZW5zb3JUeXBlX1Vuc3BlY2lmaWVkEAASFQoRU2Vuc29yVHlwZV9DYW1lcmEQARIWChJTZW5zb3JUeXBlX1RoZXJtYWwQAhIUChBTZW5zb3JUeXBlX0xhc2VyEAMSEgoOU2Vuc29yVHlwZV9OdmcQBBIRCg1TZW5zb3JUeXBlX1JmEAUSFAoQU2Vuc29yVHlwZV9PdGhlchAGQgoKCF9yYW5nZV9tIlUKDlRha1RhbGtNZXNzYWdlEgwKBHRleHQYASABKAkSEwoLY2hhdHJvb21faWQYAiABKAkSDAoEbGFuZxgDIAEoCRISCgpmcm9tX3ZvaWNlGAQgASgIImgKD1Rha1RhbGtSb29tRGF0YRIbCg9zZW5kZXJfY2FsbHNpZ24YASABKAlCAhgBEg8KB3Jvb21faWQYAiABKAkSEQoJcm9vbV9uYW1lGAMgASgJEhQKDHBhcnRpY2lwYW50cxgEIAMoCSIeCgVNYXJ0aRIVCg1kZXN0X2NhbGxzaWduGAEgAygJIpkKCgtUQUtQYWNrZXRWMhIoCgtjb3RfdHlwZV9pZBgBIAEoDjITLm1lc2h0YXN0aWMuQ290VHlwZRIfCgNob3cYAiABKA4yEi5tZXNodGFzdGljLkNvdEhvdxIQCghjYWxsc2lnbhgDIAEoCRIeCgR0ZWFtGAQgASgOMhAubWVzaHRhc3RpYy5UZWFtEiQKBHJvbGUYBSABKA4yFi5tZXNodGFzdGljLk1lbWJlclJvbGUSEgoKbGF0aXR1ZGVfaRgGIAEoDxITCgtsb25naXR1ZGVfaRgHIAEoDxIQCghhbHRpdHVkZRgIIAEoERINCgVzcGVlZBgJIAEoDRIOCgZjb3Vyc2UYCiABKA0SDwoHYmF0dGVyeRgLIAEoDRIrCgdnZW9fc3JjGAwgASgOMhoubWVzaHRhc3RpYy5HZW9Qb2ludFNvdXJjZRIrCgdhbHRfc3JjGA0gASgOMhoubWVzaHRhc3RpYy5HZW9Qb2ludFNvdXJjZRILCgN1aWQYDiABKAkSFwoPZGV2aWNlX2NhbGxzaWduGA8gASgJEhUKDXN0YWxlX3NlY29uZHMYECABKA0SEwoLdGFrX3ZlcnNpb24YESABKAkSEgoKdGFrX2RldmljZRgSIAEoCRIUCgx0YWtfcGxhdGZvcm0YEyABKAkSDgoGdGFrX29zGBQgASgJEhAKCGVuZHBvaW50GBUgASgJEg0KBXBob25lGBYgASgJEhQKDGNvdF90eXBlX3N0chgXIAEoCRIPCgdyZW1hcmtzGBggASgJEjQKC2Vudmlyb25tZW50GBkgASgLMhoubWVzaHRhc3RpYy5UQUtFbnZpcm9ubWVudEgBiAEBEi4KCnNlbnNvcl9mb3YYGiABKAsyFS5tZXNodGFzdGljLlNlbnNvckZvdkgCiAEBEiUKBW1hcnRpGB0gASgLMhEubWVzaHRhc3RpYy5NYXJ0aUgDiAEBEiMKBGNoYXQYHyABKAsyEy5tZXNodGFzdGljLkdlb0NoYXRIABItCghhaXJjcmFmdBggIAEoCzIZLm1lc2h0YXN0aWMuQWlyY3JhZnRUcmFja0gAEhQKCnJhd19kZXRhaWwYISABKAxIABInCgVzaGFwZRgiIAEoCzIWLm1lc2h0YXN0aWMuRHJhd25TaGFwZUgAEiQKBm1hcmtlchgjIAEoCzISLm1lc2h0YXN0aWMuTWFya2VySAASKgoDcmFiGCQgASgLMhsubWVzaHRhc3RpYy5SYW5nZUFuZEJlYXJpbmdIABIiCgVyb3V0ZRglIAEoCzIRLm1lc2h0YXN0aWMuUm91dGVIABIsCgdjYXNldmFjGCYgASgLMhkubWVzaHRhc3RpYy5DYXNldmFjUmVwb3J0SAASLwoJZW1lcmdlbmN5GCcgASgLMhoubWVzaHRhc3RpYy5FbWVyZ2VuY3lBbGVydEgAEicKBHRhc2sYKCABKAsyFy5tZXNodGFzdGljLlRhc2tSZXF1ZXN0SAASLQoHdGFrdGFsaxgpIAEoCzIaLm1lc2h0YXN0aWMuVGFrVGFsa01lc3NhZ2VIABIzCgx0YWt0YWxrX3Jvb20YKiABKAsyGy5tZXNodGFzdGljLlRha1RhbGtSb29tRGF0YUgAQhEKD3BheWxvYWRfdmFyaWFudEIOCgxfZW52aXJvbm1lbnRCDQoLX3NlbnNvcl9mb3ZCCAoGX21hcnRpSgQIGxAcSgQIHBAdSgQIHhAfKsABCgRUZWFtEhQKEFVuc3BlY2lmZWRfQ29sb3IQABIJCgVXaGl0ZRABEgoKBlllbGxvdxACEgoKBk9yYW5nZRADEgsKB01hZ2VudGEQBBIHCgNSZWQQBRIKCgZNYXJvb24QBhIKCgZQdXJwbGUQBxINCglEYXJrX0JsdWUQCBIICgRCbHVlEAkSCAoEQ3lhbhAKEggKBFRlYWwQCxIJCgVHcmVlbhAMEg4KCkRhcmtfR3JlZW4QDRIJCgVCcm93bhAOKn8KCk1lbWJlclJvbGUSDgoKVW5zcGVjaWZlZBAAEg4KClRlYW1NZW1iZXIQARIMCghUZWFtTGVhZBACEgYKAkhREAMSCgoGU25pcGVyEAQSCQoFTWVkaWMQBRITCg9Gb3J3YXJkT2JzZXJ2ZXIQBhIHCgNSVE8QBxIGCgJLORAIKpYBCgZDb3RIb3cSFgoSQ290SG93X1Vuc3BlY2lmaWVkEAASDgoKQ290SG93X2hfZRABEg4KCkNvdEhvd19tX2cQAhIUChBDb3RIb3dfaF9nX2lfZ19vEAMSDgoKQ290SG93X21fchAEEg4KCkNvdEhvd19tX2YQBRIOCgpDb3RIb3dfbV9wEAYSDgoKQ290SG93X21fcxAHKoMXCgdDb3RUeXBlEhEKDUNvdFR5cGVfT3RoZXIQABIVChFDb3RUeXBlX2FfZl9HX1VfQxABEhcKE0NvdFR5cGVfYV9mX0dfVV9DX0kQAhIVChFDb3RUeXBlX2Ffbl9BX0NfRhADEhUKEUNvdFR5cGVfYV9uX0FfQ19IEAQSEwoPQ290VHlwZV9hX25fQV9DEAUSFQoRQ290VHlwZV9hX2ZfQV9NX0gQBhITCg9Db3RUeXBlX2FfZl9BX00QBxIXChNDb3RUeXBlX2FfZl9BX01fRl9GEAgSFwoTQ290VHlwZV9hX2ZfQV9NX0hfQRAJEhkKFUNvdFR5cGVfYV9mX0FfTV9IX1VfTRAKEhcKE0NvdFR5cGVfYV9oX0FfTV9GX0YQCxIXChNDb3RUeXBlX2FfaF9BX01fSF9BEAwSEwoPQ290VHlwZV9hX3VfQV9DEA0SEwoPQ290VHlwZV90X3hfZF9kEA4SFwoTQ290VHlwZV9hX2ZfR19FX1NfRRAPEhcKE0NvdFR5cGVfYV9mX0dfRV9WX0MQEBIRCg1Db3RUeXBlX2FfZl9TEBESFQoRQ290VHlwZV9hX2ZfQV9NX0YQEhIZChVDb3RUeXBlX2FfZl9BX01fRl9DX0gQExIZChVDb3RUeXBlX2FfZl9BX01fRl9VX0wQFBIXChNDb3RUeXBlX2FfZl9BX01fRl9MEBUSFwoTQ290VHlwZV9hX2ZfQV9NX0ZfUBAWEhUKEUNvdFR5cGVfYV9mX0FfQ19IEBcSFwoTQ290VHlwZV9hX25fQV9NX0ZfURAYEhEKDUNvdFR5cGVfYl90X2YQGRIVChFDb3RUeXBlX2Jfcl9mX2hfYxAaEhUKEUNvdFR5cGVfYl9hX29fcGFuEBsSFQoRQ290VHlwZV9iX2Ffb19vcG4QHBIVChFDb3RUeXBlX2JfYV9vX2NhbhAdEhUKEUNvdFR5cGVfYl9hX29fdGJsEB4SEQoNQ290VHlwZV9iX2FfZxAfEhEKDUNvdFR5cGVfYV9mX0cQIBITCg9Db3RUeXBlX2FfZl9HX1UQIRIRCg1Db3RUeXBlX2FfaF9HECISEQoNQ290VHlwZV9hX3VfRxAjEhEKDUNvdFR5cGVfYV9uX0cQJBIRCg1Db3RUeXBlX2JfbV9yECUSEwoPQ290VHlwZV9iX21fcF93ECYSFwoTQ290VHlwZV9iX21fcF9zX3BfaRAnEhEKDUNvdFR5cGVfdV9kX2YQKBIRCg1Db3RUeXBlX3VfZF9yECkSEwoPQ290VHlwZV91X2RfY19jECoSEgoOQ290VHlwZV91X3JiX2EQKxIRCg1Db3RUeXBlX2FfaF9BECwSEQoNQ290VHlwZV9hX3VfQRAtEhcKE0NvdFR5cGVfYV9mX0FfTV9IX1EQLhIVChFDb3RUeXBlX2FfZl9BX0NfRhAvEhMKD0NvdFR5cGVfYV9mX0FfQxAwEhUKEUNvdFR5cGVfYV9mX0FfQ19MEDESEQoNQ290VHlwZV9hX2ZfQRAyEhcKE0NvdFR5cGVfYV9mX0FfTV9IX0MQMxIXChNDb3RUeXBlX2Ffbl9BX01fRl9GEDQSFQoRQ290VHlwZV9hX3VfQV9DX0YQNRIbChdDb3RUeXBlX2FfZl9HX1VfQ19GX1RfQRA2EhkKFUNvdFR5cGVfYV9mX0dfVV9DX1ZfUxA3EhkKFUNvdFR5cGVfYV9mX0dfVV9DX1JfWBA4EhkKFUNvdFR5cGVfYV9mX0dfVV9DX0lfWhA5EhsKF0NvdFR5cGVfYV9mX0dfVV9DX0VfQ19XEDoSGQoVQ290VHlwZV9hX2ZfR19VX0NfSV9MEDsSGQoVQ290VHlwZV9hX2ZfR19VX0NfUl9PEDwSGQoVQ290VHlwZV9hX2ZfR19VX0NfUl9WED0SFQoRQ290VHlwZV9hX2ZfR19VX0gQPhIbChdDb3RUeXBlX2FfZl9HX1VfVV9NX1NfRRA/EhkKFUNvdFR5cGVfYV9mX0dfVV9TX01fQxBAEhUKEUNvdFR5cGVfYV9mX0dfRV9TEEESEwoPQ290VHlwZV9hX2ZfR19FEEISGQoVQ290VHlwZV9hX2ZfR19FX1ZfQ19VEEMSGgoWQ290VHlwZV9hX2ZfR19FX1ZfQ19wcxBEEhUKEUNvdFR5cGVfYV91X0dfRV9WEEUSFwoTQ290VHlwZV9hX2ZfU19OX05fUhBGEhMKD0NvdFR5cGVfYV9mX0ZfQhBHEhkKFUNvdFR5cGVfYl9tX3Bfc19wX2xvYxBIEhEKDUNvdFR5cGVfYl9pX3YQSRITCg9Db3RUeXBlX2JfZl90X3IQShITCg9Db3RUeXBlX2JfZl90X2EQSxITCg9Db3RUeXBlX3VfZF9mX20QTBIRCg1Db3RUeXBlX3VfZF9wEE0SFQoRQ290VHlwZV9iX21fcF9zX20QThITCg9Db3RUeXBlX2JfbV9wX2MQTxIVChFDb3RUeXBlX3Vfcl9iX2NfYxBQEhoKFkNvdFR5cGVfdV9yX2JfYnVsbHNleWUQURIXChNDb3RUeXBlX2FfZl9HX0VfVl9BEFISEQoNQ290VHlwZV9hX25fQRBTEhcKE0NvdFR5cGVfYV91X0dfVV9DX0YQVBIXChNDb3RUeXBlX2Ffbl9HX1VfQ19GEFUSFwoTQ290VHlwZV9hX2hfR19VX0NfRhBWEhcKE0NvdFR5cGVfYV9mX0dfVV9DX0YQVxITCg9Db3RUeXBlX2FfdV9HX0kQWBITCg9Db3RUeXBlX2Ffbl9HX0kQWRITCg9Db3RUeXBlX2FfaF9HX0kQWhITCg9Db3RUeXBlX2FfZl9HX0kQWxIXChNDb3RUeXBlX2FfdV9HX0VfWF9NEFwSFwoTQ290VHlwZV9hX25fR19FX1hfTRBdEhcKE0NvdFR5cGVfYV9oX0dfRV9YX00QXhIXChNDb3RUeXBlX2FfZl9HX0VfWF9NEF8SEQoNQ290VHlwZV9hX3VfUxBgEhEKDUNvdFR5cGVfYV9uX1MQYRIRCg1Db3RUeXBlX2FfaF9TEGISGQoVQ290VHlwZV9hX3VfR19VX0NfSV9kEGMSGQoVQ290VHlwZV9hX25fR19VX0NfSV9kEGQSGQoVQ290VHlwZV9hX2hfR19VX0NfSV9kEGUSGQoVQ290VHlwZV9hX2ZfR19VX0NfSV9kEGYSGQoVQ290VHlwZV9hX3VfR19FX1ZfQV9UEGcSGQoVQ290VHlwZV9hX25fR19FX1ZfQV9UEGgSGQoVQ290VHlwZV9hX2hfR19FX1ZfQV9UEGkSGQoVQ290VHlwZV9hX2ZfR19FX1ZfQV9UEGoSFwoTQ290VHlwZV9hX3VfR19VX0NfSRBrEhcKE0NvdFR5cGVfYV9uX0dfVV9DX0kQbBIXChNDb3RUeXBlX2FfaF9HX1VfQ19JEG0SFQoRQ290VHlwZV9hX25fR19FX1YQbhIVChFDb3RUeXBlX2FfaF9HX0VfVhBvEhUKEUNvdFR5cGVfYV9mX0dfRV9WEHASGAoUQ290VHlwZV9iX21fcF93X0dPVE8QcRIWChJDb3RUeXBlX2JfbV9wX2NfaXAQchIWChJDb3RUeXBlX2JfbV9wX2NfY3AQcxIYChRDb3RUeXBlX2JfbV9wX3NfcF9vcBB0EhEKDUNvdFR5cGVfdV9kX3YQdRITCg9Db3RUeXBlX3VfZF92X20QdhITCg9Db3RUeXBlX3VfZF9jX2UQdxITCg9Db3RUeXBlX2JfaV94X2kQeBITCg9Db3RUeXBlX2JfdF9mX2QQeRITCg9Db3RUeXBlX2JfdF9mX3IQehITCg9Db3RUeXBlX2JfYV9vX2MQexIPCgtDb3RUeXBlX3RfcxB8EhEKDUNvdFR5cGVfbV90X3QQfRINCglDb3RUeXBlX3kQfip9Cg5HZW9Qb2ludFNvdXJjZRIeChpHZW9Qb2ludFNvdXJjZV9VbnNwZWNpZmllZBAAEhYKEkdlb1BvaW50U291cmNlX0dQUxABEhcKE0dlb1BvaW50U291cmNlX1VTRVIQAhIaChZHZW9Qb2ludFNvdXJjZV9ORVRXT1JLEANCYAoUb3JnLm1lc2h0YXN0aWMucHJvdG9CCkFUQUtQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"); +export const file_meshtastic_atak: GenFile /*@__PURE__*/ = fileDesc( + "ChVtZXNodGFzdGljL2F0YWsucHJvdG8SCm1lc2h0YXN0aWMi+AEKCVRBS1BhY2tldBIVCg1pc19jb21wcmVzc2VkGAEgASgIEiQKB2NvbnRhY3QYAiABKAsyEy5tZXNodGFzdGljLkNvbnRhY3QSIAoFZ3JvdXAYAyABKAsyES5tZXNodGFzdGljLkdyb3VwEiIKBnN0YXR1cxgEIAEoCzISLm1lc2h0YXN0aWMuU3RhdHVzEh4KA3BsaRgFIAEoCzIPLm1lc2h0YXN0aWMuUExJSAASIwoEY2hhdBgGIAEoCzITLm1lc2h0YXN0aWMuR2VvQ2hhdEgAEhAKBmRldGFpbBgHIAEoDEgAQhEKD3BheWxvYWRfdmFyaWFudCL0AgoHR2VvQ2hhdBIPCgdtZXNzYWdlGAEgASgJEg8KAnRvGAIgASgJSACIAQESGAoLdG9fY2FsbHNpZ24YAyABKAlIAYgBARIXCg9yZWNlaXB0X2Zvcl91aWQYBCABKAkSNQoMcmVjZWlwdF90eXBlGAUgASgOMh8ubWVzaHRhc3RpYy5HZW9DaGF0LlJlY2VpcHRUeXBlEhEKBGxhbmcYBiABKAlIAogBARIUCgdyb29tX2lkGAcgASgJSAOIAQESHQoQdm9pY2VfcHJvZmlsZV9pZBgIIAEoCUgEiAEBIlQKC1JlY2VpcHRUeXBlEhQKEFJlY2VpcHRUeXBlX05vbmUQABIZChVSZWNlaXB0VHlwZV9EZWxpdmVyZWQQARIUChBSZWNlaXB0VHlwZV9SZWFkEAJCBQoDX3RvQg4KDF90b19jYWxsc2lnbkIHCgVfbGFuZ0IKCghfcm9vbV9pZEITChFfdm9pY2VfcHJvZmlsZV9pZCJNCgVHcm91cBIkCgRyb2xlGAEgASgOMhYubWVzaHRhc3RpYy5NZW1iZXJSb2xlEh4KBHRlYW0YAiABKA4yEC5tZXNodGFzdGljLlRlYW0iGQoGU3RhdHVzEg8KB2JhdHRlcnkYASABKA0iNAoHQ29udGFjdBIQCghjYWxsc2lnbhgBIAEoCRIXCg9kZXZpY2VfY2FsbHNpZ24YAiABKAkiXwoDUExJEhIKCmxhdGl0dWRlX2kYASABKA8SEwoLbG9uZ2l0dWRlX2kYAiABKA8SEAoIYWx0aXR1ZGUYAyABKAUSDQoFc3BlZWQYBCABKA0SDgoGY291cnNlGAUgASgNIrABCg1BaXJjcmFmdFRyYWNrEgwKBGljYW8YASABKAkSFAoMcmVnaXN0cmF0aW9uGAIgASgJEg4KBmZsaWdodBgDIAEoCRIVCg1haXJjcmFmdF90eXBlGAQgASgJEg4KBnNxdWF3axgFIAEoDRIQCghjYXRlZ29yeRgGIAEoCRIQCghyc3NpX3gxMBgHIAEoERILCgNncHMYCCABKAgSEwoLY290X2hvc3RfaWQYCSABKAkiNwoLQ290R2VvUG9pbnQSEwoLbGF0X2RlbHRhX2kYASABKBESEwoLbG9uX2RlbHRhX2kYAiABKBEi3AYKCkRyYXduU2hhcGUSKQoEa2luZBgBIAEoDjIbLm1lc2h0YXN0aWMuRHJhd25TaGFwZS5LaW5kEi8KBXN0eWxlGAIgASgOMiAubWVzaHRhc3RpYy5EcmF3blNoYXBlLlN0eWxlTW9kZRIQCghtYWpvcl9jbRgDIAEoDRIQCghtaW5vcl9jbRgEIAEoDRIRCglhbmdsZV9kZWcYBSABKA0SJgoMc3Ryb2tlX2NvbG9yGAYgASgOMhAubWVzaHRhc3RpYy5UZWFtEhMKC3N0cm9rZV9hcmdiGAcgASgHEhkKEXN0cm9rZV93ZWlnaHRfeDEwGAggASgNEiQKCmZpbGxfY29sb3IYCSABKA4yEC5tZXNodGFzdGljLlRlYW0SEQoJZmlsbF9hcmdiGAogASgHEhEKCWxhYmVsc19vbhgLIAEoCBIZChF2ZXJ0ZXhfbGF0X2RlbHRhcxgSIAMoERIZChF2ZXJ0ZXhfbG9uX2RlbHRhcxgTIAMoERIRCgl0cnVuY2F0ZWQYDSABKAgSHAoUYnVsbHNleWVfZGlzdGFuY2VfZG0YDiABKA0SHAoUYnVsbHNleWVfYmVhcmluZ19yZWYYDyABKA0SFgoOYnVsbHNleWVfZmxhZ3MYECABKA0SGAoQYnVsbHNleWVfdWlkX3JlZhgRIAEoCSLiAQoES2luZBIUChBLaW5kX1Vuc3BlY2lmaWVkEAASDwoLS2luZF9DaXJjbGUQARISCg5LaW5kX1JlY3RhbmdsZRACEhEKDUtpbmRfRnJlZWZvcm0QAxIVChFLaW5kX1RlbGVzdHJhdGlvbhAEEhAKDEtpbmRfUG9seWdvbhAFEhYKEktpbmRfUmFuZ2luZ0NpcmNsZRAGEhEKDUtpbmRfQnVsbHNleWUQBxIQCgxLaW5kX0VsbGlwc2UQCBISCg5LaW5kX1ZlaGljbGUyRBAJEhIKDktpbmRfVmVoaWNsZTNEEAoidQoJU3R5bGVNb2RlEhkKFVN0eWxlTW9kZV9VbnNwZWNpZmllZBAAEhgKFFN0eWxlTW9kZV9TdHJva2VPbmx5EAESFgoSU3R5bGVNb2RlX0ZpbGxPbmx5EAISGwoXU3R5bGVNb2RlX1N0cm9rZUFuZEZpbGwQA0oECAwQDSLlAwoGTWFya2VyEiUKBGtpbmQYASABKA4yFy5tZXNodGFzdGljLk1hcmtlci5LaW5kEh8KBWNvbG9yGAIgASgOMhAubWVzaHRhc3RpYy5UZWFtEhIKCmNvbG9yX2FyZ2IYAyABKAcSEQoJcmVhZGluZXNzGAQgASgIEhIKCnBhcmVudF91aWQYBSABKAkSEwoLcGFyZW50X3R5cGUYBiABKAkSFwoPcGFyZW50X2NhbGxzaWduGAcgASgJEg8KB2ljb25zZXQYCCABKAkimAIKBEtpbmQSFAoQS2luZF9VbnNwZWNpZmllZBAAEg0KCUtpbmRfU3BvdBABEhEKDUtpbmRfV2F5cG9pbnQQAhITCg9LaW5kX0NoZWNrcG9pbnQQAxIVChFLaW5kX1NlbGZQb3NpdGlvbhAEEhMKD0tpbmRfU3ltYm9sMjUyNRAFEhAKDEtpbmRfU3BvdE1hcBAGEhMKD0tpbmRfQ3VzdG9tSWNvbhAHEhIKDktpbmRfR29Ub1BvaW50EAgSFQoRS2luZF9Jbml0aWFsUG9pbnQQCRIVChFLaW5kX0NvbnRhY3RQb2ludBAKEhgKFEtpbmRfT2JzZXJ2YXRpb25Qb3N0EAsSFAoQS2luZF9JbWFnZU1hcmtlchAMIs4BCg9SYW5nZUFuZEJlYXJpbmcSJwoGYW5jaG9yGAEgASgLMhcubWVzaHRhc3RpYy5Db3RHZW9Qb2ludBISCgphbmNob3JfdWlkGAIgASgJEhAKCHJhbmdlX2NtGAMgASgNEhQKDGJlYXJpbmdfY2RlZxgEIAEoDRImCgxzdHJva2VfY29sb3IYBSABKA4yEC5tZXNodGFzdGljLlRlYW0SEwoLc3Ryb2tlX2FyZ2IYBiABKAcSGQoRc3Ryb2tlX3dlaWdodF94MTAYByABKA0ihAQKBVJvdXRlEigKBm1ldGhvZBgBIAEoDjIYLm1lc2h0YXN0aWMuUm91dGUuTWV0aG9kEi4KCWRpcmVjdGlvbhgCIAEoDjIbLm1lc2h0YXN0aWMuUm91dGUuRGlyZWN0aW9uEg4KBnByZWZpeBgDIAEoCRIZChFzdHJva2Vfd2VpZ2h0X3gxMBgEIAEoDRIlCgVsaW5rcxgFIAMoCzIWLm1lc2h0YXN0aWMuUm91dGUuTGluaxIRCgl0cnVuY2F0ZWQYBiABKAgaYAoETGluaxImCgVwb2ludBgBIAEoCzIXLm1lc2h0YXN0aWMuQ290R2VvUG9pbnQSCwoDdWlkGAIgASgJEhAKCGNhbGxzaWduGAMgASgJEhEKCWxpbmtfdHlwZRgEIAEoDSKHAQoGTWV0aG9kEhYKEk1ldGhvZF9VbnNwZWNpZmllZBAAEhIKDk1ldGhvZF9Ecml2aW5nEAESEgoOTWV0aG9kX1dhbGtpbmcQAhIRCg1NZXRob2RfRmx5aW5nEAMSEwoPTWV0aG9kX1N3aW1taW5nEAQSFQoRTWV0aG9kX1dhdGVyY3JhZnQQBSJQCglEaXJlY3Rpb24SGQoVRGlyZWN0aW9uX1Vuc3BlY2lmaWVkEAASEwoPRGlyZWN0aW9uX0luZmlsEAESEwoPRGlyZWN0aW9uX0V4ZmlsEAIi1goKDUNhc2V2YWNSZXBvcnQSOAoKcHJlY2VkZW5jZRgBIAEoDjIkLm1lc2h0YXN0aWMuQ2FzZXZhY1JlcG9ydC5QcmVjZWRlbmNlEhcKD2VxdWlwbWVudF9mbGFncxgCIAEoDRIXCg9saXR0ZXJfcGF0aWVudHMYAyABKA0SGwoTYW1idWxhdG9yeV9wYXRpZW50cxgEIAEoDRI0CghzZWN1cml0eRgFIAEoDjIiLm1lc2h0YXN0aWMuQ2FzZXZhY1JlcG9ydC5TZWN1cml0eRI5CgtobHpfbWFya2luZxgGIAEoDjIkLm1lc2h0YXN0aWMuQ2FzZXZhY1JlcG9ydC5IbHpNYXJraW5nEhMKC3pvbmVfbWFya2VyGAcgASgJEhMKC3VzX21pbGl0YXJ5GAggASgNEhMKC3VzX2NpdmlsaWFuGAkgASgNEhcKD25vbl91c19taWxpdGFyeRgKIAEoDRIXCg9ub25fdXNfY2l2aWxpYW4YCyABKA0SCwoDZXB3GAwgASgNEg0KBWNoaWxkGA0gASgNEhUKDXRlcnJhaW5fZmxhZ3MYDiABKA0SEQoJZnJlcXVlbmN5GA8gASgJEg0KBXRpdGxlGBAgASgJEhcKD21lZGxpbmVfcmVtYXJrcxgRIAEoCRIUCgx1cmdlbnRfY291bnQYEiABKA0SHQoVdXJnZW50X3N1cmdpY2FsX2NvdW50GBMgASgNEhYKDnByaW9yaXR5X2NvdW50GBQgASgNEhUKDXJvdXRpbmVfY291bnQYFSABKA0SGQoRY29udmVuaWVuY2VfY291bnQYFiABKA0SGAoQZXF1aXBtZW50X2RldGFpbBgXIAEoCRIcChR6b25lX3Byb3RlY3RlZF9jb29yZBgYIAEoCRIZChF0ZXJyYWluX3Nsb3BlX2RpchgZIAEoCRIcChR0ZXJyYWluX290aGVyX2RldGFpbBgaIAEoCRIRCgltYXJrZWRfYnkYGyABKAkSEQoJb2JzdGFjbGVzGBwgASgJEhYKDndpbmRzX2FyZV9mcm9tGB0gASgJEhIKCmZyaWVuZGxpZXMYHiABKAkSDQoFZW5lbXkYHyABKAkSEwoLaGx6X3JlbWFya3MYICABKAkSJQoFem1pc3QYISADKAsyFi5tZXNodGFzdGljLlpNaXN0RW50cnkiqwEKClByZWNlZGVuY2USGgoWUHJlY2VkZW5jZV9VbnNwZWNpZmllZBAAEhUKEVByZWNlZGVuY2VfVXJnZW50EAESHQoZUHJlY2VkZW5jZV9VcmdlbnRTdXJnaWNhbBACEhcKE1ByZWNlZGVuY2VfUHJpb3JpdHkQAxIWChJQcmVjZWRlbmNlX1JvdXRpbmUQBBIaChZQcmVjZWRlbmNlX0NvbnZlbmllbmNlEAUimwEKCkhsek1hcmtpbmcSGgoWSGx6TWFya2luZ19VbnNwZWNpZmllZBAAEhUKEUhsek1hcmtpbmdfUGFuZWxzEAESGQoVSGx6TWFya2luZ19QeXJvU2lnbmFsEAISFAoQSGx6TWFya2luZ19TbW9rZRADEhMKD0hsek1hcmtpbmdfTm9uZRAEEhQKEEhsek1hcmtpbmdfT3RoZXIQBSKSAQoIU2VjdXJpdHkSGAoUU2VjdXJpdHlfVW5zcGVjaWZpZWQQABIUChBTZWN1cml0eV9Ob0VuZW15EAESGgoWU2VjdXJpdHlfUG9zc2libGVFbmVteRACEhgKFFNlY3VyaXR5X0VuZW15SW5BcmVhEAMSIAocU2VjdXJpdHlfRW5lbXlJbkFybWVkQ29udGFjdBAEIlIKClpNaXN0RW50cnkSDQoFdGl0bGUYASABKAkSCQoBehgCIAEoCRIJCgFtGAMgASgJEgkKAWkYBCABKAkSCQoBcxgFIAEoCRIJCgF0GAYgASgJIo0CCg5FbWVyZ2VuY3lBbGVydBItCgR0eXBlGAEgASgOMh8ubWVzaHRhc3RpYy5FbWVyZ2VuY3lBbGVydC5UeXBlEhUKDWF1dGhvcmluZ191aWQYAiABKAkSHAoUY2FuY2VsX3JlZmVyZW5jZV91aWQYAyABKAkilgEKBFR5cGUSFAoQVHlwZV9VbnNwZWNpZmllZBAAEhEKDVR5cGVfQWxlcnQ5MTEQARIUChBUeXBlX1JpbmdUaGVCZWxsEAISEgoOVHlwZV9JbkNvbnRhY3QQAxIZChVUeXBlX0dlb0ZlbmNlQnJlYWNoZWQQBBIPCgtUeXBlX0N1c3RvbRAFEg8KC1R5cGVfQ2FuY2VsEAYixgMKC1Rhc2tSZXF1ZXN0EhEKCXRhc2tfdHlwZRgBIAEoCRISCgp0YXJnZXRfdWlkGAIgASgJEhQKDGFzc2lnbmVlX3VpZBgDIAEoCRIyCghwcmlvcml0eRgEIAEoDjIgLm1lc2h0YXN0aWMuVGFza1JlcXVlc3QuUHJpb3JpdHkSLgoGc3RhdHVzGAUgASgOMh4ubWVzaHRhc3RpYy5UYXNrUmVxdWVzdC5TdGF0dXMSDAoEbm90ZRgGIAEoCSJ1CghQcmlvcml0eRIYChRQcmlvcml0eV9VbnNwZWNpZmllZBAAEhAKDFByaW9yaXR5X0xvdxABEhMKD1ByaW9yaXR5X05vcm1hbBACEhEKDVByaW9yaXR5X0hpZ2gQAxIVChFQcmlvcml0eV9Dcml0aWNhbBAEIpABCgZTdGF0dXMSFgoSU3RhdHVzX1Vuc3BlY2lmaWVkEAASEgoOU3RhdHVzX1BlbmRpbmcQARIXChNTdGF0dXNfQWNrbm93bGVkZ2VkEAISFQoRU3RhdHVzX0luUHJvZ3Jlc3MQAxIUChBTdGF0dXNfQ29tcGxldGVkEAQSFAoQU3RhdHVzX0NhbmNlbGxlZBAFImAKDlRBS0Vudmlyb25tZW50EhkKEXRlbXBlcmF0dXJlX2NfeDEwGAEgASgREhoKEndpbmRfZGlyZWN0aW9uX2RlZxgCIAEoDRIXCg93aW5kX3NwZWVkX2NtX3MYAyABKA0ijQMKCVNlbnNvckZvdhIuCgR0eXBlGAEgASgOMiAubWVzaHRhc3RpYy5TZW5zb3JGb3YuU2Vuc29yVHlwZRITCgthemltdXRoX2RlZxgCIAEoDRIUCgdyYW5nZV9tGAMgASgNSACIAQESGgoSZm92X2hvcml6b250YWxfZGVnGAQgASgNEhgKEGZvdl92ZXJ0aWNhbF9kZWcYBSABKA0SFQoNZWxldmF0aW9uX2RlZxgGIAEoERIQCghyb2xsX2RlZxgHIAEoERINCgVtb2RlbBgIIAEoCSKqAQoKU2Vuc29yVHlwZRIaChZTZW5zb3JUeXBlX1Vuc3BlY2lmaWVkEAASFQoRU2Vuc29yVHlwZV9DYW1lcmEQARIWChJTZW5zb3JUeXBlX1RoZXJtYWwQAhIUChBTZW5zb3JUeXBlX0xhc2VyEAMSEgoOU2Vuc29yVHlwZV9OdmcQBBIRCg1TZW5zb3JUeXBlX1JmEAUSFAoQU2Vuc29yVHlwZV9PdGhlchAGQgoKCF9yYW5nZV9tIlUKDlRha1RhbGtNZXNzYWdlEgwKBHRleHQYASABKAkSEwoLY2hhdHJvb21faWQYAiABKAkSDAoEbGFuZxgDIAEoCRISCgpmcm9tX3ZvaWNlGAQgASgIImgKD1Rha1RhbGtSb29tRGF0YRIbCg9zZW5kZXJfY2FsbHNpZ24YASABKAlCAhgBEg8KB3Jvb21faWQYAiABKAkSEQoJcm9vbV9uYW1lGAMgASgJEhQKDHBhcnRpY2lwYW50cxgEIAMoCSIeCgVNYXJ0aRIVCg1kZXN0X2NhbGxzaWduGAEgAygJIpkKCgtUQUtQYWNrZXRWMhIoCgtjb3RfdHlwZV9pZBgBIAEoDjITLm1lc2h0YXN0aWMuQ290VHlwZRIfCgNob3cYAiABKA4yEi5tZXNodGFzdGljLkNvdEhvdxIQCghjYWxsc2lnbhgDIAEoCRIeCgR0ZWFtGAQgASgOMhAubWVzaHRhc3RpYy5UZWFtEiQKBHJvbGUYBSABKA4yFi5tZXNodGFzdGljLk1lbWJlclJvbGUSEgoKbGF0aXR1ZGVfaRgGIAEoDxITCgtsb25naXR1ZGVfaRgHIAEoDxIQCghhbHRpdHVkZRgIIAEoERINCgVzcGVlZBgJIAEoDRIOCgZjb3Vyc2UYCiABKA0SDwoHYmF0dGVyeRgLIAEoDRIrCgdnZW9fc3JjGAwgASgOMhoubWVzaHRhc3RpYy5HZW9Qb2ludFNvdXJjZRIrCgdhbHRfc3JjGA0gASgOMhoubWVzaHRhc3RpYy5HZW9Qb2ludFNvdXJjZRILCgN1aWQYDiABKAkSFwoPZGV2aWNlX2NhbGxzaWduGA8gASgJEhUKDXN0YWxlX3NlY29uZHMYECABKA0SEwoLdGFrX3ZlcnNpb24YESABKAkSEgoKdGFrX2RldmljZRgSIAEoCRIUCgx0YWtfcGxhdGZvcm0YEyABKAkSDgoGdGFrX29zGBQgASgJEhAKCGVuZHBvaW50GBUgASgJEg0KBXBob25lGBYgASgJEhQKDGNvdF90eXBlX3N0chgXIAEoCRIPCgdyZW1hcmtzGBggASgJEjQKC2Vudmlyb25tZW50GBkgASgLMhoubWVzaHRhc3RpYy5UQUtFbnZpcm9ubWVudEgBiAEBEi4KCnNlbnNvcl9mb3YYGiABKAsyFS5tZXNodGFzdGljLlNlbnNvckZvdkgCiAEBEiUKBW1hcnRpGB0gASgLMhEubWVzaHRhc3RpYy5NYXJ0aUgDiAEBEiMKBGNoYXQYHyABKAsyEy5tZXNodGFzdGljLkdlb0NoYXRIABItCghhaXJjcmFmdBggIAEoCzIZLm1lc2h0YXN0aWMuQWlyY3JhZnRUcmFja0gAEhQKCnJhd19kZXRhaWwYISABKAxIABInCgVzaGFwZRgiIAEoCzIWLm1lc2h0YXN0aWMuRHJhd25TaGFwZUgAEiQKBm1hcmtlchgjIAEoCzISLm1lc2h0YXN0aWMuTWFya2VySAASKgoDcmFiGCQgASgLMhsubWVzaHRhc3RpYy5SYW5nZUFuZEJlYXJpbmdIABIiCgVyb3V0ZRglIAEoCzIRLm1lc2h0YXN0aWMuUm91dGVIABIsCgdjYXNldmFjGCYgASgLMhkubWVzaHRhc3RpYy5DYXNldmFjUmVwb3J0SAASLwoJZW1lcmdlbmN5GCcgASgLMhoubWVzaHRhc3RpYy5FbWVyZ2VuY3lBbGVydEgAEicKBHRhc2sYKCABKAsyFy5tZXNodGFzdGljLlRhc2tSZXF1ZXN0SAASLQoHdGFrdGFsaxgpIAEoCzIaLm1lc2h0YXN0aWMuVGFrVGFsa01lc3NhZ2VIABIzCgx0YWt0YWxrX3Jvb20YKiABKAsyGy5tZXNodGFzdGljLlRha1RhbGtSb29tRGF0YUgAQhEKD3BheWxvYWRfdmFyaWFudEIOCgxfZW52aXJvbm1lbnRCDQoLX3NlbnNvcl9mb3ZCCAoGX21hcnRpSgQIGxAcSgQIHBAdSgQIHhAfKsABCgRUZWFtEhQKEFVuc3BlY2lmZWRfQ29sb3IQABIJCgVXaGl0ZRABEgoKBlllbGxvdxACEgoKBk9yYW5nZRADEgsKB01hZ2VudGEQBBIHCgNSZWQQBRIKCgZNYXJvb24QBhIKCgZQdXJwbGUQBxINCglEYXJrX0JsdWUQCBIICgRCbHVlEAkSCAoEQ3lhbhAKEggKBFRlYWwQCxIJCgVHcmVlbhAMEg4KCkRhcmtfR3JlZW4QDRIJCgVCcm93bhAOKn8KCk1lbWJlclJvbGUSDgoKVW5zcGVjaWZlZBAAEg4KClRlYW1NZW1iZXIQARIMCghUZWFtTGVhZBACEgYKAkhREAMSCgoGU25pcGVyEAQSCQoFTWVkaWMQBRITCg9Gb3J3YXJkT2JzZXJ2ZXIQBhIHCgNSVE8QBxIGCgJLORAIKpYBCgZDb3RIb3cSFgoSQ290SG93X1Vuc3BlY2lmaWVkEAASDgoKQ290SG93X2hfZRABEg4KCkNvdEhvd19tX2cQAhIUChBDb3RIb3dfaF9nX2lfZ19vEAMSDgoKQ290SG93X21fchAEEg4KCkNvdEhvd19tX2YQBRIOCgpDb3RIb3dfbV9wEAYSDgoKQ290SG93X21fcxAHKoMXCgdDb3RUeXBlEhEKDUNvdFR5cGVfT3RoZXIQABIVChFDb3RUeXBlX2FfZl9HX1VfQxABEhcKE0NvdFR5cGVfYV9mX0dfVV9DX0kQAhIVChFDb3RUeXBlX2Ffbl9BX0NfRhADEhUKEUNvdFR5cGVfYV9uX0FfQ19IEAQSEwoPQ290VHlwZV9hX25fQV9DEAUSFQoRQ290VHlwZV9hX2ZfQV9NX0gQBhITCg9Db3RUeXBlX2FfZl9BX00QBxIXChNDb3RUeXBlX2FfZl9BX01fRl9GEAgSFwoTQ290VHlwZV9hX2ZfQV9NX0hfQRAJEhkKFUNvdFR5cGVfYV9mX0FfTV9IX1VfTRAKEhcKE0NvdFR5cGVfYV9oX0FfTV9GX0YQCxIXChNDb3RUeXBlX2FfaF9BX01fSF9BEAwSEwoPQ290VHlwZV9hX3VfQV9DEA0SEwoPQ290VHlwZV90X3hfZF9kEA4SFwoTQ290VHlwZV9hX2ZfR19FX1NfRRAPEhcKE0NvdFR5cGVfYV9mX0dfRV9WX0MQEBIRCg1Db3RUeXBlX2FfZl9TEBESFQoRQ290VHlwZV9hX2ZfQV9NX0YQEhIZChVDb3RUeXBlX2FfZl9BX01fRl9DX0gQExIZChVDb3RUeXBlX2FfZl9BX01fRl9VX0wQFBIXChNDb3RUeXBlX2FfZl9BX01fRl9MEBUSFwoTQ290VHlwZV9hX2ZfQV9NX0ZfUBAWEhUKEUNvdFR5cGVfYV9mX0FfQ19IEBcSFwoTQ290VHlwZV9hX25fQV9NX0ZfURAYEhEKDUNvdFR5cGVfYl90X2YQGRIVChFDb3RUeXBlX2Jfcl9mX2hfYxAaEhUKEUNvdFR5cGVfYl9hX29fcGFuEBsSFQoRQ290VHlwZV9iX2Ffb19vcG4QHBIVChFDb3RUeXBlX2JfYV9vX2NhbhAdEhUKEUNvdFR5cGVfYl9hX29fdGJsEB4SEQoNQ290VHlwZV9iX2FfZxAfEhEKDUNvdFR5cGVfYV9mX0cQIBITCg9Db3RUeXBlX2FfZl9HX1UQIRIRCg1Db3RUeXBlX2FfaF9HECISEQoNQ290VHlwZV9hX3VfRxAjEhEKDUNvdFR5cGVfYV9uX0cQJBIRCg1Db3RUeXBlX2JfbV9yECUSEwoPQ290VHlwZV9iX21fcF93ECYSFwoTQ290VHlwZV9iX21fcF9zX3BfaRAnEhEKDUNvdFR5cGVfdV9kX2YQKBIRCg1Db3RUeXBlX3VfZF9yECkSEwoPQ290VHlwZV91X2RfY19jECoSEgoOQ290VHlwZV91X3JiX2EQKxIRCg1Db3RUeXBlX2FfaF9BECwSEQoNQ290VHlwZV9hX3VfQRAtEhcKE0NvdFR5cGVfYV9mX0FfTV9IX1EQLhIVChFDb3RUeXBlX2FfZl9BX0NfRhAvEhMKD0NvdFR5cGVfYV9mX0FfQxAwEhUKEUNvdFR5cGVfYV9mX0FfQ19MEDESEQoNQ290VHlwZV9hX2ZfQRAyEhcKE0NvdFR5cGVfYV9mX0FfTV9IX0MQMxIXChNDb3RUeXBlX2Ffbl9BX01fRl9GEDQSFQoRQ290VHlwZV9hX3VfQV9DX0YQNRIbChdDb3RUeXBlX2FfZl9HX1VfQ19GX1RfQRA2EhkKFUNvdFR5cGVfYV9mX0dfVV9DX1ZfUxA3EhkKFUNvdFR5cGVfYV9mX0dfVV9DX1JfWBA4EhkKFUNvdFR5cGVfYV9mX0dfVV9DX0lfWhA5EhsKF0NvdFR5cGVfYV9mX0dfVV9DX0VfQ19XEDoSGQoVQ290VHlwZV9hX2ZfR19VX0NfSV9MEDsSGQoVQ290VHlwZV9hX2ZfR19VX0NfUl9PEDwSGQoVQ290VHlwZV9hX2ZfR19VX0NfUl9WED0SFQoRQ290VHlwZV9hX2ZfR19VX0gQPhIbChdDb3RUeXBlX2FfZl9HX1VfVV9NX1NfRRA/EhkKFUNvdFR5cGVfYV9mX0dfVV9TX01fQxBAEhUKEUNvdFR5cGVfYV9mX0dfRV9TEEESEwoPQ290VHlwZV9hX2ZfR19FEEISGQoVQ290VHlwZV9hX2ZfR19FX1ZfQ19VEEMSGgoWQ290VHlwZV9hX2ZfR19FX1ZfQ19wcxBEEhUKEUNvdFR5cGVfYV91X0dfRV9WEEUSFwoTQ290VHlwZV9hX2ZfU19OX05fUhBGEhMKD0NvdFR5cGVfYV9mX0ZfQhBHEhkKFUNvdFR5cGVfYl9tX3Bfc19wX2xvYxBIEhEKDUNvdFR5cGVfYl9pX3YQSRITCg9Db3RUeXBlX2JfZl90X3IQShITCg9Db3RUeXBlX2JfZl90X2EQSxITCg9Db3RUeXBlX3VfZF9mX20QTBIRCg1Db3RUeXBlX3VfZF9wEE0SFQoRQ290VHlwZV9iX21fcF9zX20QThITCg9Db3RUeXBlX2JfbV9wX2MQTxIVChFDb3RUeXBlX3Vfcl9iX2NfYxBQEhoKFkNvdFR5cGVfdV9yX2JfYnVsbHNleWUQURIXChNDb3RUeXBlX2FfZl9HX0VfVl9BEFISEQoNQ290VHlwZV9hX25fQRBTEhcKE0NvdFR5cGVfYV91X0dfVV9DX0YQVBIXChNDb3RUeXBlX2Ffbl9HX1VfQ19GEFUSFwoTQ290VHlwZV9hX2hfR19VX0NfRhBWEhcKE0NvdFR5cGVfYV9mX0dfVV9DX0YQVxITCg9Db3RUeXBlX2FfdV9HX0kQWBITCg9Db3RUeXBlX2Ffbl9HX0kQWRITCg9Db3RUeXBlX2FfaF9HX0kQWhITCg9Db3RUeXBlX2FfZl9HX0kQWxIXChNDb3RUeXBlX2FfdV9HX0VfWF9NEFwSFwoTQ290VHlwZV9hX25fR19FX1hfTRBdEhcKE0NvdFR5cGVfYV9oX0dfRV9YX00QXhIXChNDb3RUeXBlX2FfZl9HX0VfWF9NEF8SEQoNQ290VHlwZV9hX3VfUxBgEhEKDUNvdFR5cGVfYV9uX1MQYRIRCg1Db3RUeXBlX2FfaF9TEGISGQoVQ290VHlwZV9hX3VfR19VX0NfSV9kEGMSGQoVQ290VHlwZV9hX25fR19VX0NfSV9kEGQSGQoVQ290VHlwZV9hX2hfR19VX0NfSV9kEGUSGQoVQ290VHlwZV9hX2ZfR19VX0NfSV9kEGYSGQoVQ290VHlwZV9hX3VfR19FX1ZfQV9UEGcSGQoVQ290VHlwZV9hX25fR19FX1ZfQV9UEGgSGQoVQ290VHlwZV9hX2hfR19FX1ZfQV9UEGkSGQoVQ290VHlwZV9hX2ZfR19FX1ZfQV9UEGoSFwoTQ290VHlwZV9hX3VfR19VX0NfSRBrEhcKE0NvdFR5cGVfYV9uX0dfVV9DX0kQbBIXChNDb3RUeXBlX2FfaF9HX1VfQ19JEG0SFQoRQ290VHlwZV9hX25fR19FX1YQbhIVChFDb3RUeXBlX2FfaF9HX0VfVhBvEhUKEUNvdFR5cGVfYV9mX0dfRV9WEHASGAoUQ290VHlwZV9iX21fcF93X0dPVE8QcRIWChJDb3RUeXBlX2JfbV9wX2NfaXAQchIWChJDb3RUeXBlX2JfbV9wX2NfY3AQcxIYChRDb3RUeXBlX2JfbV9wX3NfcF9vcBB0EhEKDUNvdFR5cGVfdV9kX3YQdRITCg9Db3RUeXBlX3VfZF92X20QdhITCg9Db3RUeXBlX3VfZF9jX2UQdxITCg9Db3RUeXBlX2JfaV94X2kQeBITCg9Db3RUeXBlX2JfdF9mX2QQeRITCg9Db3RUeXBlX2JfdF9mX3IQehITCg9Db3RUeXBlX2JfYV9vX2MQexIPCgtDb3RUeXBlX3RfcxB8EhEKDUNvdFR5cGVfbV90X3QQfRINCglDb3RUeXBlX3kQfip9Cg5HZW9Qb2ludFNvdXJjZRIeChpHZW9Qb2ludFNvdXJjZV9VbnNwZWNpZmllZBAAEhYKEkdlb1BvaW50U291cmNlX0dQUxABEhcKE0dlb1BvaW50U291cmNlX1VTRVIQAhIaChZHZW9Qb2ludFNvdXJjZV9ORVRXT1JLEANCYAoUb3JnLm1lc2h0YXN0aWMucHJvdG9CCkFUQUtQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", +); /** * @@ -59,43 +64,49 @@ export type TAKPacket = Message<"meshtastic.TAKPacket"> & { * * @generated from oneof meshtastic.TAKPacket.payload_variant */ - payloadVariant: { - /** - * - * TAK position report - * - * @generated from field: meshtastic.PLI pli = 5; - */ - value: PLI; - case: "pli"; - } | { - /** - * - * ATAK GeoChat message - * - * @generated from field: meshtastic.GeoChat chat = 6; - */ - value: GeoChat; - case: "chat"; - } | { - /** - * - * Generic CoT detail XML - * May be compressed / truncated by the sender (EUD) - * - * @generated from field: bytes detail = 7; - */ - value: Uint8Array; - case: "detail"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * + * TAK position report + * + * @generated from field: meshtastic.PLI pli = 5; + */ + value: PLI; + case: "pli"; + } + | { + /** + * + * ATAK GeoChat message + * + * @generated from field: meshtastic.GeoChat chat = 6; + */ + value: GeoChat; + case: "chat"; + } + | { + /** + * + * Generic CoT detail XML + * May be compressed / truncated by the sender (EUD) + * + * @generated from field: bytes detail = 7; + */ + value: Uint8Array; + case: "detail"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.TAKPacket. * Use `create(TAKPacketSchema)` to create a new message. */ -export const TAKPacketSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 0); +export const TAKPacketSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 0, +); /** * @@ -183,8 +194,10 @@ export type GeoChat = Message<"meshtastic.GeoChat"> & { * Describes the message meshtastic.GeoChat. * Use `create(GeoChatSchema)` to create a new message. */ -export const GeoChatSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 1); +export const GeoChatSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 1, +); /** * @@ -223,7 +236,7 @@ export enum GeoChat_ReceiptType { /** * Describes the enum meshtastic.GeoChat.ReceiptType. */ -export const GeoChat_ReceiptTypeSchema: GenEnum = /*@__PURE__*/ +export const GeoChat_ReceiptTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 1, 0); /** @@ -256,8 +269,10 @@ export type Group = Message<"meshtastic.Group"> & { * Describes the message meshtastic.Group. * Use `create(GroupSchema)` to create a new message. */ -export const GroupSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 2); +export const GroupSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 2, +); /** * @@ -280,8 +295,10 @@ export type Status = Message<"meshtastic.Status"> & { * Describes the message meshtastic.Status. * Use `create(StatusSchema)` to create a new message. */ -export const StatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 3); +export const StatusSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 3, +); /** * @@ -315,8 +332,10 @@ export type Contact = Message<"meshtastic.Contact"> & { * Describes the message meshtastic.Contact. * Use `create(ContactSchema)` to create a new message. */ -export const ContactSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 4); +export const ContactSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 4, +); /** * @@ -372,8 +391,10 @@ export type PLI = Message<"meshtastic.PLI"> & { * Describes the message meshtastic.PLI. * Use `create(PLISchema)` to create a new message. */ -export const PLISchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 5); +export const PLISchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 5, +); /** * @@ -460,7 +481,7 @@ export type AircraftTrack = Message<"meshtastic.AircraftTrack"> & { * Describes the message meshtastic.AircraftTrack. * Use `create(AircraftTrackSchema)` to create a new message. */ -export const AircraftTrackSchema: GenMessage = /*@__PURE__*/ +export const AircraftTrackSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 6); /** @@ -509,7 +530,7 @@ export type CotGeoPoint = Message<"meshtastic.CotGeoPoint"> & { * Describes the message meshtastic.CotGeoPoint. * Use `create(CotGeoPointSchema)` to create a new message. */ -export const CotGeoPointSchema: GenMessage = /*@__PURE__*/ +export const CotGeoPointSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 7); /** @@ -687,7 +708,7 @@ export type DrawnShape = Message<"meshtastic.DrawnShape"> & { * Describes the message meshtastic.DrawnShape. * Use `create(DrawnShapeSchema)` to create a new message. */ -export const DrawnShapeSchema: GenMessage = /*@__PURE__*/ +export const DrawnShapeSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 8); /** @@ -794,7 +815,7 @@ export enum DrawnShape_Kind { /** * Describes the enum meshtastic.DrawnShape.Kind. */ -export const DrawnShape_KindSchema: GenEnum = /*@__PURE__*/ +export const DrawnShape_KindSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 8, 0); /** @@ -850,7 +871,7 @@ export enum DrawnShape_StyleMode { /** * Describes the enum meshtastic.DrawnShape.StyleMode. */ -export const DrawnShape_StyleModeSchema: GenEnum = /*@__PURE__*/ +export const DrawnShape_StyleModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 8, 1); /** @@ -943,8 +964,10 @@ export type Marker = Message<"meshtastic.Marker"> & { * Describes the message meshtastic.Marker. * Use `create(MarkerSchema)` to create a new message. */ -export const MarkerSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 9); +export const MarkerSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 9, +); /** * @@ -1065,8 +1088,11 @@ export enum Marker_Kind { /** * Describes the enum meshtastic.Marker.Kind. */ -export const Marker_KindSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_atak, 9, 0); +export const Marker_KindSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_atak, + 9, + 0, +); /** * @@ -1141,7 +1167,7 @@ export type RangeAndBearing = Message<"meshtastic.RangeAndBearing"> & { * Describes the message meshtastic.RangeAndBearing. * Use `create(RangeAndBearingSchema)` to create a new message. */ -export const RangeAndBearingSchema: GenMessage = /*@__PURE__*/ +export const RangeAndBearingSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 10); /** @@ -1209,8 +1235,10 @@ export type Route = Message<"meshtastic.Route"> & { * Describes the message meshtastic.Route. * Use `create(RouteSchema)` to create a new message. */ -export const RouteSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 11); +export const RouteSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 11, +); /** * @@ -1257,7 +1285,7 @@ export type Route_Link = Message<"meshtastic.Route.Link"> & { * Describes the message meshtastic.Route.Link. * Use `create(Route_LinkSchema)` to create a new message. */ -export const Route_LinkSchema: GenMessage = /*@__PURE__*/ +export const Route_LinkSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 11, 0); /** @@ -1319,8 +1347,11 @@ export enum Route_Method { /** * Describes the enum meshtastic.Route.Method. */ -export const Route_MethodSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_atak, 11, 0); +export const Route_MethodSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_atak, + 11, + 0, +); /** * @@ -1357,7 +1388,7 @@ export enum Route_Direction { /** * Describes the enum meshtastic.Route.Direction. */ -export const Route_DirectionSchema: GenEnum = /*@__PURE__*/ +export const Route_DirectionSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 11, 1); /** @@ -1654,7 +1685,7 @@ export type CasevacReport = Message<"meshtastic.CasevacReport"> & { * Describes the message meshtastic.CasevacReport. * Use `create(CasevacReportSchema)` to create a new message. */ -export const CasevacReportSchema: GenMessage = /*@__PURE__*/ +export const CasevacReportSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 12); /** @@ -1708,7 +1739,7 @@ export enum CasevacReport_Precedence { /** * Describes the enum meshtastic.CasevacReport.Precedence. */ -export const CasevacReport_PrecedenceSchema: GenEnum = /*@__PURE__*/ +export const CasevacReport_PrecedenceSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 12, 0); /** @@ -1752,7 +1783,7 @@ export enum CasevacReport_HlzMarking { /** * Describes the enum meshtastic.CasevacReport.HlzMarking. */ -export const CasevacReport_HlzMarkingSchema: GenEnum = /*@__PURE__*/ +export const CasevacReport_HlzMarkingSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 12, 1); /** @@ -1799,7 +1830,7 @@ export enum CasevacReport_Security { /** * Describes the enum meshtastic.CasevacReport.Security. */ -export const CasevacReport_SecuritySchema: GenEnum = /*@__PURE__*/ +export const CasevacReport_SecuritySchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 12, 2); /** @@ -1865,7 +1896,7 @@ export type ZMistEntry = Message<"meshtastic.ZMistEntry"> & { * Describes the message meshtastic.ZMistEntry. * Use `create(ZMistEntrySchema)` to create a new message. */ -export const ZMistEntrySchema: GenMessage = /*@__PURE__*/ +export const ZMistEntrySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 13); /** @@ -1913,7 +1944,7 @@ export type EmergencyAlert = Message<"meshtastic.EmergencyAlert"> & { * Describes the message meshtastic.EmergencyAlert. * Use `create(EmergencyAlertSchema)` to create a new message. */ -export const EmergencyAlertSchema: GenMessage = /*@__PURE__*/ +export const EmergencyAlertSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 14); /** @@ -1971,7 +2002,7 @@ export enum EmergencyAlert_Type { /** * Describes the enum meshtastic.EmergencyAlert.Type. */ -export const EmergencyAlert_TypeSchema: GenEnum = /*@__PURE__*/ +export const EmergencyAlert_TypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 14, 0); /** @@ -2039,7 +2070,7 @@ export type TaskRequest = Message<"meshtastic.TaskRequest"> & { * Describes the message meshtastic.TaskRequest. * Use `create(TaskRequestSchema)` to create a new message. */ -export const TaskRequestSchema: GenMessage = /*@__PURE__*/ +export const TaskRequestSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 15); /** @@ -2075,7 +2106,7 @@ export enum TaskRequest_Priority { /** * Describes the enum meshtastic.TaskRequest.Priority. */ -export const TaskRequest_PrioritySchema: GenEnum = /*@__PURE__*/ +export const TaskRequest_PrioritySchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 15, 0); /** @@ -2126,7 +2157,7 @@ export enum TaskRequest_Status { /** * Describes the enum meshtastic.TaskRequest.Status. */ -export const TaskRequest_StatusSchema: GenEnum = /*@__PURE__*/ +export const TaskRequest_StatusSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 15, 1); /** @@ -2186,7 +2217,7 @@ export type TAKEnvironment = Message<"meshtastic.TAKEnvironment"> & { * Describes the message meshtastic.TAKEnvironment. * Use `create(TAKEnvironmentSchema)` to create a new message. */ -export const TAKEnvironmentSchema: GenMessage = /*@__PURE__*/ +export const TAKEnvironmentSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 16); /** @@ -2281,8 +2312,10 @@ export type SensorFov = Message<"meshtastic.SensorFov"> & { * Describes the message meshtastic.SensorFov. * Use `create(SensorFovSchema)` to create a new message. */ -export const SensorFovSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 17); +export const SensorFovSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 17, +); /** * @@ -2342,7 +2375,7 @@ export enum SensorFov_SensorType { /** * Describes the enum meshtastic.SensorFov.SensorType. */ -export const SensorFov_SensorTypeSchema: GenEnum = /*@__PURE__*/ +export const SensorFov_SensorTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 17, 0); /** @@ -2409,7 +2442,7 @@ export type TakTalkMessage = Message<"meshtastic.TakTalkMessage"> & { * Describes the message meshtastic.TakTalkMessage. * Use `create(TakTalkMessageSchema)` to create a new message. */ -export const TakTalkMessageSchema: GenMessage = /*@__PURE__*/ +export const TakTalkMessageSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 18); /** @@ -2472,7 +2505,7 @@ export type TakTalkRoomData = Message<"meshtastic.TakTalkRoomData"> & { * Describes the message meshtastic.TakTalkRoomData. * Use `create(TakTalkRoomDataSchema)` to create a new message. */ -export const TakTalkRoomDataSchema: GenMessage = /*@__PURE__*/ +export const TakTalkRoomDataSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 19); /** @@ -2511,8 +2544,10 @@ export type Marti = Message<"meshtastic.Marti"> & { * Describes the message meshtastic.Marti. * Use `create(MartiSchema)` to create a new message. */ -export const MartiSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_atak, 20); +export const MartiSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_atak, + 20, +); /** * @@ -2774,130 +2809,143 @@ export type TAKPacketV2 = Message<"meshtastic.TAKPacketV2"> & { * * @generated from oneof meshtastic.TAKPacketV2.payload_variant */ - payloadVariant: { - /** - * - * ATAK GeoChat message - * - * @generated from field: meshtastic.GeoChat chat = 31; - */ - value: GeoChat; - case: "chat"; - } | { - /** - * - * Aircraft track data (ADS-B, military air) - * - * @generated from field: meshtastic.AircraftTrack aircraft = 32; - */ - value: AircraftTrack; - case: "aircraft"; - } | { - /** - * - * Generic CoT detail XML for unmapped types. Kept as a fallback for CoT - * types not yet promoted to a typed variant; drawings, markers, ranging - * tools, and routes have dedicated variants below and should not land here. - * - * @generated from field: bytes raw_detail = 33; - */ - value: Uint8Array; - case: "rawDetail"; - } | { - /** - * - * User-drawn tactical graphic: circle, rectangle, polygon, polyline, - * telestration, ranging circle, or bullseye. See DrawnShape. - * - * @generated from field: meshtastic.DrawnShape shape = 34; - */ - value: DrawnShape; - case: "shape"; - } | { - /** - * - * Fixed point of interest: spot marker, waypoint, checkpoint, 2525 - * symbol, or custom icon. See Marker. - * - * @generated from field: meshtastic.Marker marker = 35; - */ - value: Marker; - case: "marker"; - } | { - /** - * - * Range and bearing measurement line. See RangeAndBearing. - * - * @generated from field: meshtastic.RangeAndBearing rab = 36; - */ - value: RangeAndBearing; - case: "rab"; - } | { - /** - * - * Named route with ordered waypoints and control points. See Route. - * - * @generated from field: meshtastic.Route route = 37; - */ - value: Route; - case: "route"; - } | { - /** - * - * 9-line MEDEVAC request. See CasevacReport. - * - * @generated from field: meshtastic.CasevacReport casevac = 38; - */ - value: CasevacReport; - case: "casevac"; - } | { - /** - * - * Emergency beacon / 911 alert. See EmergencyAlert. - * - * @generated from field: meshtastic.EmergencyAlert emergency = 39; - */ - value: EmergencyAlert; - case: "emergency"; - } | { - /** - * - * Task / engage request. See TaskRequest. - * - * @generated from field: meshtastic.TaskRequest task = 40; - */ - value: TaskRequest; - case: "task"; - } | { - /** - * - * TAKTALK chat message (CoT type m-t-t). See TakTalkMessage. - * Voice audio itself rides UDP/RTP outside the mesh; this carries the - * text envelope plus a from_voice marker for receiver UX. - * - * @generated from field: meshtastic.TakTalkMessage taktalk = 41; - */ - value: TakTalkMessage; - case: "taktalk"; - } | { - /** - * - * TAKTALK room/membership broadcast (CoT type y-). See TakTalkRoomData. - * Resolves room UUIDs (used in TakTalkMessage.chatroom_id and - * GeoChat.room_id) to display name + roster on receivers. - * - * @generated from field: meshtastic.TakTalkRoomData taktalk_room = 42; - */ - value: TakTalkRoomData; - case: "taktalkRoom"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * + * ATAK GeoChat message + * + * @generated from field: meshtastic.GeoChat chat = 31; + */ + value: GeoChat; + case: "chat"; + } + | { + /** + * + * Aircraft track data (ADS-B, military air) + * + * @generated from field: meshtastic.AircraftTrack aircraft = 32; + */ + value: AircraftTrack; + case: "aircraft"; + } + | { + /** + * + * Generic CoT detail XML for unmapped types. Kept as a fallback for CoT + * types not yet promoted to a typed variant; drawings, markers, ranging + * tools, and routes have dedicated variants below and should not land here. + * + * @generated from field: bytes raw_detail = 33; + */ + value: Uint8Array; + case: "rawDetail"; + } + | { + /** + * + * User-drawn tactical graphic: circle, rectangle, polygon, polyline, + * telestration, ranging circle, or bullseye. See DrawnShape. + * + * @generated from field: meshtastic.DrawnShape shape = 34; + */ + value: DrawnShape; + case: "shape"; + } + | { + /** + * + * Fixed point of interest: spot marker, waypoint, checkpoint, 2525 + * symbol, or custom icon. See Marker. + * + * @generated from field: meshtastic.Marker marker = 35; + */ + value: Marker; + case: "marker"; + } + | { + /** + * + * Range and bearing measurement line. See RangeAndBearing. + * + * @generated from field: meshtastic.RangeAndBearing rab = 36; + */ + value: RangeAndBearing; + case: "rab"; + } + | { + /** + * + * Named route with ordered waypoints and control points. See Route. + * + * @generated from field: meshtastic.Route route = 37; + */ + value: Route; + case: "route"; + } + | { + /** + * + * 9-line MEDEVAC request. See CasevacReport. + * + * @generated from field: meshtastic.CasevacReport casevac = 38; + */ + value: CasevacReport; + case: "casevac"; + } + | { + /** + * + * Emergency beacon / 911 alert. See EmergencyAlert. + * + * @generated from field: meshtastic.EmergencyAlert emergency = 39; + */ + value: EmergencyAlert; + case: "emergency"; + } + | { + /** + * + * Task / engage request. See TaskRequest. + * + * @generated from field: meshtastic.TaskRequest task = 40; + */ + value: TaskRequest; + case: "task"; + } + | { + /** + * + * TAKTALK chat message (CoT type m-t-t). See TakTalkMessage. + * Voice audio itself rides UDP/RTP outside the mesh; this carries the + * text envelope plus a from_voice marker for receiver UX. + * + * @generated from field: meshtastic.TakTalkMessage taktalk = 41; + */ + value: TakTalkMessage; + case: "taktalk"; + } + | { + /** + * + * TAKTALK room/membership broadcast (CoT type y-). See TakTalkRoomData. + * Resolves room UUIDs (used in TakTalkMessage.chatroom_id and + * GeoChat.room_id) to display name + roster on receivers. + * + * @generated from field: meshtastic.TakTalkRoomData taktalk_room = 42; + */ + value: TakTalkRoomData; + case: "taktalkRoom"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.TAKPacketV2. * Use `create(TAKPacketV2Schema)` to create a new message. */ -export const TAKPacketV2Schema: GenMessage = /*@__PURE__*/ +export const TAKPacketV2Schema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_atak, 21); /** @@ -3028,8 +3076,10 @@ export enum Team { /** * Describes the enum meshtastic.Team. */ -export const TeamSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_atak, 0); +export const TeamSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_atak, + 0, +); /** * @@ -3114,8 +3164,10 @@ export enum MemberRole { /** * Describes the enum meshtastic.MemberRole. */ -export const MemberRoleSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_atak, 1); +export const MemberRoleSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_atak, + 1, +); /** * @@ -3193,8 +3245,10 @@ export enum CotHow { /** * Describes the enum meshtastic.CotHow. */ -export const CotHowSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_atak, 2); +export const CotHowSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_atak, + 2, +); /** * @@ -4165,8 +4219,10 @@ export enum CotType { /** * Describes the enum meshtastic.CotType. */ -export const CotTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_atak, 3); +export const CotTypeSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_atak, + 3, +); /** * @@ -4211,6 +4267,5 @@ export enum GeoPointSource { /** * Describes the enum meshtastic.GeoPointSource. */ -export const GeoPointSourceSchema: GenEnum = /*@__PURE__*/ +export const GeoPointSourceSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_atak, 4); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/cannedmessages_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/cannedmessages_pb.ts index d7c160423..9bad7c131 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/cannedmessages_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/cannedmessages_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/cannedmessages.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -9,8 +9,9 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/cannedmessages.proto. */ -export const file_meshtastic_cannedmessages: GenFile = /*@__PURE__*/ - fileDesc("Ch9tZXNodGFzdGljL2Nhbm5lZG1lc3NhZ2VzLnByb3RvEgptZXNodGFzdGljIi0KGUNhbm5lZE1lc3NhZ2VNb2R1bGVDb25maWcSEAoIbWVzc2FnZXMYASABKAlCbwoUb3JnLm1lc2h0YXN0aWMucHJvdG9CGUNhbm5lZE1lc3NhZ2VDb25maWdQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"); +export const file_meshtastic_cannedmessages: GenFile /*@__PURE__*/ = fileDesc( + "Ch9tZXNodGFzdGljL2Nhbm5lZG1lc3NhZ2VzLnByb3RvEgptZXNodGFzdGljIi0KGUNhbm5lZE1lc3NhZ2VNb2R1bGVDb25maWcSEAoIbWVzc2FnZXMYASABKAlCbwoUb3JnLm1lc2h0YXN0aWMucHJvdG9CGUNhbm5lZE1lc3NhZ2VDb25maWdQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", +); /** * @@ -18,20 +19,20 @@ export const file_meshtastic_cannedmessages: GenFile = /*@__PURE__*/ * * @generated from message meshtastic.CannedMessageModuleConfig */ -export type CannedMessageModuleConfig = Message<"meshtastic.CannedMessageModuleConfig"> & { - /** - * - * Predefined messages for canned message module separated by '|' characters. - * - * @generated from field: string messages = 1; - */ - messages: string; -}; +export type CannedMessageModuleConfig = + Message<"meshtastic.CannedMessageModuleConfig"> & { + /** + * + * Predefined messages for canned message module separated by '|' characters. + * + * @generated from field: string messages = 1; + */ + messages: string; + }; /** * Describes the message meshtastic.CannedMessageModuleConfig. * Use `create(CannedMessageModuleConfigSchema)` to create a new message. */ -export const CannedMessageModuleConfigSchema: GenMessage = /*@__PURE__*/ +export const CannedMessageModuleConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_cannedmessages, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/channel_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/channel_pb.ts index 931366ee7..583a2f504 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/channel_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/channel_pb.ts @@ -1,18 +1,23 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/channel.proto (package meshtastic, syntax proto3) /* eslint-disable */ -// trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) +// trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/channel.proto. */ -export const file_meshtastic_channel: GenFile = /*@__PURE__*/ - fileDesc("ChhtZXNodGFzdGljL2NoYW5uZWwucHJvdG8SCm1lc2h0YXN0aWMiuAEKD0NoYW5uZWxTZXR0aW5ncxIXCgtjaGFubmVsX251bRgBIAEoDUICGAESCwoDcHNrGAIgASgMEgwKBG5hbWUYAyABKAkSCgoCaWQYBCABKAcSFgoOdXBsaW5rX2VuYWJsZWQYBSABKAgSGAoQZG93bmxpbmtfZW5hYmxlZBgGIAEoCBIzCg9tb2R1bGVfc2V0dGluZ3MYByABKAsyGi5tZXNodGFzdGljLk1vZHVsZVNldHRpbmdzIj4KDk1vZHVsZVNldHRpbmdzEhoKEnBvc2l0aW9uX3ByZWNpc2lvbhgBIAEoDRIQCghpc19tdXRlZBgCIAEoCCKhAQoHQ2hhbm5lbBINCgVpbmRleBgBIAEoBRItCghzZXR0aW5ncxgCIAEoCzIbLm1lc2h0YXN0aWMuQ2hhbm5lbFNldHRpbmdzEiYKBHJvbGUYAyABKA4yGC5tZXNodGFzdGljLkNoYW5uZWwuUm9sZSIwCgRSb2xlEgwKCERJU0FCTEVEEAASCwoHUFJJTUFSWRABEg0KCVNFQ09OREFSWRACQmMKFG9yZy5tZXNodGFzdGljLnByb3RvQg1DaGFubmVsUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw"); +export const file_meshtastic_channel: GenFile /*@__PURE__*/ = fileDesc( + "ChhtZXNodGFzdGljL2NoYW5uZWwucHJvdG8SCm1lc2h0YXN0aWMiuAEKD0NoYW5uZWxTZXR0aW5ncxIXCgtjaGFubmVsX251bRgBIAEoDUICGAESCwoDcHNrGAIgASgMEgwKBG5hbWUYAyABKAkSCgoCaWQYBCABKAcSFgoOdXBsaW5rX2VuYWJsZWQYBSABKAgSGAoQZG93bmxpbmtfZW5hYmxlZBgGIAEoCBIzCg9tb2R1bGVfc2V0dGluZ3MYByABKAsyGi5tZXNodGFzdGljLk1vZHVsZVNldHRpbmdzIj4KDk1vZHVsZVNldHRpbmdzEhoKEnBvc2l0aW9uX3ByZWNpc2lvbhgBIAEoDRIQCghpc19tdXRlZBgCIAEoCCKhAQoHQ2hhbm5lbBINCgVpbmRleBgBIAEoBRItCghzZXR0aW5ncxgCIAEoCzIbLm1lc2h0YXN0aWMuQ2hhbm5lbFNldHRpbmdzEiYKBHJvbGUYAyABKA4yGC5tZXNodGFzdGljLkNoYW5uZWwuUm9sZSIwCgRSb2xlEgwKCERJU0FCTEVEEAASCwoHUFJJTUFSWRABEg0KCVNFQ09OREFSWRACQmMKFG9yZy5tZXNodGFzdGljLnByb3RvQg1DaGFubmVsUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", +); /** * @@ -123,7 +128,7 @@ export type ChannelSettings = Message<"meshtastic.ChannelSettings"> & { * Describes the message meshtastic.ChannelSettings. * Use `create(ChannelSettingsSchema)` to create a new message. */ -export const ChannelSettingsSchema: GenMessage = /*@__PURE__*/ +export const ChannelSettingsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_channel, 0); /** @@ -155,7 +160,7 @@ export type ModuleSettings = Message<"meshtastic.ModuleSettings"> & { * Describes the message meshtastic.ModuleSettings. * Use `create(ModuleSettingsSchema)` to create a new message. */ -export const ModuleSettingsSchema: GenMessage = /*@__PURE__*/ +export const ModuleSettingsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_channel, 1); /** @@ -196,8 +201,10 @@ export type Channel = Message<"meshtastic.Channel"> & { * Describes the message meshtastic.Channel. * Use `create(ChannelSchema)` to create a new message. */ -export const ChannelSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_channel, 2); +export const ChannelSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_channel, + 2, +); /** * @@ -243,6 +250,8 @@ export enum Channel_Role { /** * Describes the enum meshtastic.Channel.Role. */ -export const Channel_RoleSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_channel, 2, 0); - +export const Channel_RoleSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_channel, + 2, + 0, +); diff --git a/packages/protobufs/packages/ts/dist/meshtastic/clientonly_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/clientonly_pb.ts index 878ab6638..25ad76828 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/clientonly_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/clientonly_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/clientonly.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -13,8 +13,10 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/clientonly.proto. */ -export const file_meshtastic_clientonly: GenFile = /*@__PURE__*/ - fileDesc("ChttZXNodGFzdGljL2NsaWVudG9ubHkucHJvdG8SCm1lc2h0YXN0aWMiqQMKDURldmljZVByb2ZpbGUSFgoJbG9uZ19uYW1lGAEgASgJSACIAQESFwoKc2hvcnRfbmFtZRgCIAEoCUgBiAEBEhgKC2NoYW5uZWxfdXJsGAMgASgJSAKIAQESLAoGY29uZmlnGAQgASgLMhcubWVzaHRhc3RpYy5Mb2NhbENvbmZpZ0gDiAEBEjkKDW1vZHVsZV9jb25maWcYBSABKAsyHS5tZXNodGFzdGljLkxvY2FsTW9kdWxlQ29uZmlnSASIAQESMQoOZml4ZWRfcG9zaXRpb24YBiABKAsyFC5tZXNodGFzdGljLlBvc2l0aW9uSAWIAQESFQoIcmluZ3RvbmUYByABKAlIBogBARIcCg9jYW5uZWRfbWVzc2FnZXMYCCABKAlIB4gBAUIMCgpfbG9uZ19uYW1lQg0KC19zaG9ydF9uYW1lQg4KDF9jaGFubmVsX3VybEIJCgdfY29uZmlnQhAKDl9tb2R1bGVfY29uZmlnQhEKD19maXhlZF9wb3NpdGlvbkILCglfcmluZ3RvbmVCEgoQX2Nhbm5lZF9tZXNzYWdlc0JmChRvcmcubWVzaHRhc3RpYy5wcm90b0IQQ2xpZW50T25seVByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", [file_meshtastic_localonly, file_meshtastic_mesh]); +export const file_meshtastic_clientonly: GenFile /*@__PURE__*/ = fileDesc( + "ChttZXNodGFzdGljL2NsaWVudG9ubHkucHJvdG8SCm1lc2h0YXN0aWMiqQMKDURldmljZVByb2ZpbGUSFgoJbG9uZ19uYW1lGAEgASgJSACIAQESFwoKc2hvcnRfbmFtZRgCIAEoCUgBiAEBEhgKC2NoYW5uZWxfdXJsGAMgASgJSAKIAQESLAoGY29uZmlnGAQgASgLMhcubWVzaHRhc3RpYy5Mb2NhbENvbmZpZ0gDiAEBEjkKDW1vZHVsZV9jb25maWcYBSABKAsyHS5tZXNodGFzdGljLkxvY2FsTW9kdWxlQ29uZmlnSASIAQESMQoOZml4ZWRfcG9zaXRpb24YBiABKAsyFC5tZXNodGFzdGljLlBvc2l0aW9uSAWIAQESFQoIcmluZ3RvbmUYByABKAlIBogBARIcCg9jYW5uZWRfbWVzc2FnZXMYCCABKAlIB4gBAUIMCgpfbG9uZ19uYW1lQg0KC19zaG9ydF9uYW1lQg4KDF9jaGFubmVsX3VybEIJCgdfY29uZmlnQhAKDl9tb2R1bGVfY29uZmlnQhEKD19maXhlZF9wb3NpdGlvbkILCglfcmluZ3RvbmVCEgoQX2Nhbm5lZF9tZXNzYWdlc0JmChRvcmcubWVzaHRhc3RpYy5wcm90b0IQQ2xpZW50T25seVByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", + [file_meshtastic_localonly, file_meshtastic_mesh], +); /** * @@ -93,6 +95,5 @@ export type DeviceProfile = Message<"meshtastic.DeviceProfile"> & { * Describes the message meshtastic.DeviceProfile. * Use `create(DeviceProfileSchema)` to create a new message. */ -export const DeviceProfileSchema: GenMessage = /*@__PURE__*/ +export const DeviceProfileSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_clientonly, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/config_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/config_pb.ts index 0b8be50a2..74f637349 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/config_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/config_pb.ts @@ -1,8 +1,12 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/config.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { DeviceUIConfig } from "./device_ui_pb"; import { file_meshtastic_device_ui } from "./device_ui_pb"; @@ -11,8 +15,10 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/config.proto. */ -export const file_meshtastic_config: GenFile = /*@__PURE__*/ - fileDesc("ChdtZXNodGFzdGljL2NvbmZpZy5wcm90bxIKbWVzaHRhc3RpYyLlLAoGQ29uZmlnEjEKBmRldmljZRgBIAEoCzIfLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZ0gAEjUKCHBvc2l0aW9uGAIgASgLMiEubWVzaHRhc3RpYy5Db25maWcuUG9zaXRpb25Db25maWdIABIvCgVwb3dlchgDIAEoCzIeLm1lc2h0YXN0aWMuQ29uZmlnLlBvd2VyQ29uZmlnSAASMwoHbmV0d29yaxgEIAEoCzIgLm1lc2h0YXN0aWMuQ29uZmlnLk5ldHdvcmtDb25maWdIABIzCgdkaXNwbGF5GAUgASgLMiAubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZ0gAEi0KBGxvcmEYBiABKAsyHS5tZXNodGFzdGljLkNvbmZpZy5Mb1JhQ29uZmlnSAASNwoJYmx1ZXRvb3RoGAcgASgLMiIubWVzaHRhc3RpYy5Db25maWcuQmx1ZXRvb3RoQ29uZmlnSAASNQoIc2VjdXJpdHkYCCABKAsyIS5tZXNodGFzdGljLkNvbmZpZy5TZWN1cml0eUNvbmZpZ0gAEjkKCnNlc3Npb25rZXkYCSABKAsyIy5tZXNodGFzdGljLkNvbmZpZy5TZXNzaW9ua2V5Q29uZmlnSAASLwoJZGV2aWNlX3VpGAogASgLMhoubWVzaHRhc3RpYy5EZXZpY2VVSUNvbmZpZ0gAGvYGCgxEZXZpY2VDb25maWcSMgoEcm9sZRgBIAEoDjIkLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5Sb2xlEhoKDnNlcmlhbF9lbmFibGVkGAIgASgIQgIYARITCgtidXR0b25fZ3BpbxgEIAEoDRITCgtidXp6ZXJfZ3BpbxgFIAEoDRJJChByZWJyb2FkY2FzdF9tb2RlGAYgASgOMi8ubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnLlJlYnJvYWRjYXN0TW9kZRIgChhub2RlX2luZm9fYnJvYWRjYXN0X3NlY3MYByABKA0SIgoaZG91YmxlX3RhcF9hc19idXR0b25fcHJlc3MYCCABKAgSFgoKaXNfbWFuYWdlZBgJIAEoCEICGAESHAoUZGlzYWJsZV90cmlwbGVfY2xpY2sYCiABKAgSDQoFdHpkZWYYCyABKAkSHgoWbGVkX2hlYXJ0YmVhdF9kaXNhYmxlZBgMIAEoCBI/CgtidXp6ZXJfbW9kZRgNIAEoDjIqLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5CdXp6ZXJNb2RlItQBCgRSb2xlEgoKBkNMSUVOVBAAEg8KC0NMSUVOVF9NVVRFEAESCgoGUk9VVEVSEAISFQoNUk9VVEVSX0NMSUVOVBADGgIIARIQCghSRVBFQVRFUhAEGgIIARILCgdUUkFDS0VSEAUSCgoGU0VOU09SEAYSBwoDVEFLEAcSEQoNQ0xJRU5UX0hJRERFThAIEhIKDkxPU1RfQU5EX0ZPVU5EEAkSDwoLVEFLX1RSQUNLRVIQChIPCgtST1VURVJfTEFURRALEg8KC0NMSUVOVF9CQVNFEAwicwoPUmVicm9hZGNhc3RNb2RlEgcKA0FMTBAAEhUKEUFMTF9TS0lQX0RFQ09ESU5HEAESDgoKTE9DQUxfT05MWRACEg4KCktOT1dOX09OTFkQAxIICgROT05FEAQSFgoSQ09SRV9QT1JUTlVNU19PTkxZEAUiaQoKQnV6emVyTW9kZRIPCgtBTExfRU5BQkxFRBAAEgwKCERJU0FCTEVEEAESFgoSTk9USUZJQ0FUSU9OU19PTkxZEAISDwoLU1lTVEVNX09OTFkQAxITCg9ESVJFQ1RfTVNHX09OTFkQBBqRBQoOUG9zaXRpb25Db25maWcSHwoXcG9zaXRpb25fYnJvYWRjYXN0X3NlY3MYASABKA0SKAogcG9zaXRpb25fYnJvYWRjYXN0X3NtYXJ0X2VuYWJsZWQYAiABKAgSFgoOZml4ZWRfcG9zaXRpb24YAyABKAgSFwoLZ3BzX2VuYWJsZWQYBCABKAhCAhgBEhsKE2dwc191cGRhdGVfaW50ZXJ2YWwYBSABKA0SHAoQZ3BzX2F0dGVtcHRfdGltZRgGIAEoDUICGAESFgoOcG9zaXRpb25fZmxhZ3MYByABKA0SDwoHcnhfZ3BpbxgIIAEoDRIPCgd0eF9ncGlvGAkgASgNEigKIGJyb2FkY2FzdF9zbWFydF9taW5pbXVtX2Rpc3RhbmNlGAogASgNEi0KJWJyb2FkY2FzdF9zbWFydF9taW5pbXVtX2ludGVydmFsX3NlY3MYCyABKA0SEwoLZ3BzX2VuX2dwaW8YDCABKA0SOwoIZ3BzX21vZGUYDSABKA4yKS5tZXNodGFzdGljLkNvbmZpZy5Qb3NpdGlvbkNvbmZpZy5HcHNNb2RlIqsBCg1Qb3NpdGlvbkZsYWdzEgkKBVVOU0VUEAASDAoIQUxUSVRVREUQARIQCgxBTFRJVFVERV9NU0wQAhIWChJHRU9JREFMX1NFUEFSQVRJT04QBBIHCgNET1AQCBIJCgVIVkRPUBAQEg0KCVNBVElOVklFVxAgEgoKBlNFUV9OTxBAEg4KCVRJTUVTVEFNUBCAARIMCgdIRUFESU5HEIACEgoKBVNQRUVEEIAEIjUKB0dwc01vZGUSDAoIRElTQUJMRUQQABILCgdFTkFCTEVEEAESDwoLTk9UX1BSRVNFTlQQAhqEAgoLUG93ZXJDb25maWcSFwoPaXNfcG93ZXJfc2F2aW5nGAEgASgIEiYKHm9uX2JhdHRlcnlfc2h1dGRvd25fYWZ0ZXJfc2VjcxgCIAEoDRIfChdhZGNfbXVsdGlwbGllcl9vdmVycmlkZRgDIAEoAhIbChN3YWl0X2JsdWV0b290aF9zZWNzGAQgASgNEhAKCHNkc19zZWNzGAYgASgNEg8KB2xzX3NlY3MYByABKA0SFQoNbWluX3dha2Vfc2VjcxgIIAEoDRIiChpkZXZpY2VfYmF0dGVyeV9pbmFfYWRkcmVzcxgJIAEoDRIYChBwb3dlcm1vbl9lbmFibGVzGCAgASgEGuUDCg1OZXR3b3JrQ29uZmlnEhQKDHdpZmlfZW5hYmxlZBgBIAEoCBIRCgl3aWZpX3NzaWQYAyABKAkSEAoId2lmaV9wc2sYBCABKAkSEgoKbnRwX3NlcnZlchgFIAEoCRITCgtldGhfZW5hYmxlZBgGIAEoCBJCCgxhZGRyZXNzX21vZGUYByABKA4yLC5tZXNodGFzdGljLkNvbmZpZy5OZXR3b3JrQ29uZmlnLkFkZHJlc3NNb2RlEkAKC2lwdjRfY29uZmlnGAggASgLMisubWVzaHRhc3RpYy5Db25maWcuTmV0d29ya0NvbmZpZy5JcFY0Q29uZmlnEhYKDnJzeXNsb2dfc2VydmVyGAkgASgJEhkKEWVuYWJsZWRfcHJvdG9jb2xzGAogASgNEhQKDGlwdjZfZW5hYmxlZBgLIAEoCBpGCgpJcFY0Q29uZmlnEgoKAmlwGAEgASgHEg8KB2dhdGV3YXkYAiABKAcSDgoGc3VibmV0GAMgASgHEgsKA2RucxgEIAEoByIjCgtBZGRyZXNzTW9kZRIICgRESENQEAASCgoGU1RBVElDEAEiNAoNUHJvdG9jb2xGbGFncxIQCgxOT19CUk9BRENBU1QQABIRCg1VRFBfQlJPQURDQVNUEAEawggKDURpc3BsYXlDb25maWcSFgoOc2NyZWVuX29uX3NlY3MYASABKA0SVgoKZ3BzX2Zvcm1hdBgCIAEoDjI+Lm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuRGVwcmVjYXRlZEdwc0Nvb3JkaW5hdGVGb3JtYXRCAhgBEiEKGWF1dG9fc2NyZWVuX2Nhcm91c2VsX3NlY3MYAyABKA0SHQoRY29tcGFzc19ub3J0aF90b3AYBCABKAhCAhgBEhMKC2ZsaXBfc2NyZWVuGAUgASgIEjwKBXVuaXRzGAYgASgOMi0ubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZy5EaXNwbGF5VW5pdHMSNwoEb2xlZBgHIAEoDjIpLm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuT2xlZFR5cGUSQQoLZGlzcGxheW1vZGUYCCABKA4yLC5tZXNodGFzdGljLkNvbmZpZy5EaXNwbGF5Q29uZmlnLkRpc3BsYXlNb2RlEhQKDGhlYWRpbmdfYm9sZBgJIAEoCBIdChV3YWtlX29uX3RhcF9vcl9tb3Rpb24YCiABKAgSUAoTY29tcGFzc19vcmllbnRhdGlvbhgLIAEoDjIzLm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuQ29tcGFzc09yaWVudGF0aW9uEhUKDXVzZV8xMmhfY2xvY2sYDCABKAgSGgoSdXNlX2xvbmdfbm9kZV9uYW1lGA0gASgIEh4KFmVuYWJsZV9tZXNzYWdlX2J1YmJsZXMYDiABKAgiKwodRGVwcmVjYXRlZEdwc0Nvb3JkaW5hdGVGb3JtYXQSCgoGVU5VU0VEEAAiKAoMRGlzcGxheVVuaXRzEgoKBk1FVFJJQxAAEgwKCElNUEVSSUFMEAEifwoIT2xlZFR5cGUSDQoJT0xFRF9BVVRPEAASEAoMT0xFRF9TU0QxMzA2EAESDwoLT0xFRF9TSDExMDYQAhIPCgtPTEVEX1NIMTEwNxADEhcKE09MRURfU0gxMTA3XzEyOF8xMjgQBBIXChNPTEVEX1NIMTEwN19ST1RBVEVEEAUiQQoLRGlzcGxheU1vZGUSCwoHREVGQVVMVBAAEgwKCFRXT0NPTE9SEAESDAoISU5WRVJURUQQAhIJCgVDT0xPUhADIroBChJDb21wYXNzT3JpZW50YXRpb24SDQoJREVHUkVFU18wEAASDgoKREVHUkVFU185MBABEg8KC0RFR1JFRVNfMTgwEAISDwoLREVHUkVFU18yNzAQAxIWChJERUdSRUVTXzBfSU5WRVJURUQQBBIXChNERUdSRUVTXzkwX0lOVkVSVEVEEAUSGAoUREVHUkVFU18xODBfSU5WRVJURUQQBhIYChRERUdSRUVTXzI3MF9JTlZFUlRFRBAHGvkKCgpMb1JhQ29uZmlnEhIKCnVzZV9wcmVzZXQYASABKAgSPwoMbW9kZW1fcHJlc2V0GAIgASgOMikubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZy5Nb2RlbVByZXNldBIRCgliYW5kd2lkdGgYAyABKA0SFQoNc3ByZWFkX2ZhY3RvchgEIAEoDRITCgtjb2RpbmdfcmF0ZRgFIAEoDRIYChBmcmVxdWVuY3lfb2Zmc2V0GAYgASgCEjgKBnJlZ2lvbhgHIAEoDjIoLm1lc2h0YXN0aWMuQ29uZmlnLkxvUmFDb25maWcuUmVnaW9uQ29kZRIRCglob3BfbGltaXQYCCABKA0SEgoKdHhfZW5hYmxlZBgJIAEoCBIQCgh0eF9wb3dlchgKIAEoBRITCgtjaGFubmVsX251bRgLIAEoDRIbChNvdmVycmlkZV9kdXR5X2N5Y2xlGAwgASgIEh4KFnN4MTI2eF9yeF9ib29zdGVkX2dhaW4YDSABKAgSGgoSb3ZlcnJpZGVfZnJlcXVlbmN5GA4gASgCEhcKD3BhX2Zhbl9kaXNhYmxlZBgPIAEoCBIXCg9pZ25vcmVfaW5jb21pbmcYZyADKA0SEwoLaWdub3JlX21xdHQYaCABKAgSGQoRY29uZmlnX29rX3RvX21xdHQYaSABKAgSQAoMZmVtX2xuYV9tb2RlGGogASgOMioubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZy5GRU1fTE5BX01vZGUSFwoPc2VyaWFsX2hhbF9vbmx5GGsgASgIIsQDCgpSZWdpb25Db2RlEgkKBVVOU0VUEAASBgoCVVMQARIKCgZFVV80MzMQAhIKCgZFVV84NjgQAxIGCgJDThAEEgYKAkpQEAUSBwoDQU5aEAYSBgoCS1IQBxIGCgJUVxAIEgYKAlJVEAkSBgoCSU4QChIKCgZOWl84NjUQCxIGCgJUSBAMEgsKB0xPUkFfMjQQDRIKCgZVQV80MzMQDhIKCgZVQV84NjgQDxIKCgZNWV80MzMQEBIKCgZNWV85MTkQERIKCgZTR185MjMQEhIKCgZQSF80MzMQExIKCgZQSF84NjgQFBIKCgZQSF85MTUQFRILCgdBTlpfNDMzEBYSCgoGS1pfNDMzEBcSCgoGS1pfODYzEBgSCgoGTlBfODY1EBkSCgoGQlJfOTAyEBoSCwoHSVRVMV8yTRAbEgsKB0lUVTJfMk0QHBIKCgZFVV84NjYQHRIKCgZFVV84NzQQHhIKCgZFVV85MTcQHxIMCghFVV9OXzg2OBAgEgsKB0lUVTNfMk0QIRINCglJVFUxXzcwQ00QIhINCglJVFUyXzcwQ00QIxINCglJVFUzXzcwQ00QJBIOCgpJVFUyXzEyNUNNECUimwIKC01vZGVtUHJlc2V0Eg0KCUxPTkdfRkFTVBAAEhEKCUxPTkdfU0xPVxABGgIIARIWCg5WRVJZX0xPTkdfU0xPVxACGgIIARIPCgtNRURJVU1fU0xPVxADEg8KC01FRElVTV9GQVNUEAQSDgoKU0hPUlRfU0xPVxAFEg4KClNIT1JUX0ZBU1QQBhIRCg1MT05HX01PREVSQVRFEAcSDwoLU0hPUlRfVFVSQk8QCBIOCgpMT05HX1RVUkJPEAkSDQoJTElURV9GQVNUEAoSDQoJTElURV9TTE9XEAsSDwoLTkFSUk9XX0ZBU1QQDBIPCgtOQVJST1dfU0xPVxANEg0KCVRJTllfRkFTVBAOEg0KCVRJTllfU0xPVxAPIjoKDEZFTV9MTkFfTW9kZRIMCghESVNBQkxFRBAAEgsKB0VOQUJMRUQQARIPCgtOT1RfUFJFU0VOVBACGq0BCg9CbHVldG9vdGhDb25maWcSDwoHZW5hYmxlZBgBIAEoCBI8CgRtb2RlGAIgASgOMi4ubWVzaHRhc3RpYy5Db25maWcuQmx1ZXRvb3RoQ29uZmlnLlBhaXJpbmdNb2RlEhEKCWZpeGVkX3BpbhgDIAEoDSI4CgtQYWlyaW5nTW9kZRIOCgpSQU5ET01fUElOEAASDQoJRklYRURfUElOEAESCgoGTk9fUElOEAIatgEKDlNlY3VyaXR5Q29uZmlnEhIKCnB1YmxpY19rZXkYASABKAwSEwoLcHJpdmF0ZV9rZXkYAiABKAwSEQoJYWRtaW5fa2V5GAMgAygMEhIKCmlzX21hbmFnZWQYBCABKAgSFgoOc2VyaWFsX2VuYWJsZWQYBSABKAgSHQoVZGVidWdfbG9nX2FwaV9lbmFibGVkGAYgASgIEh0KFWFkbWluX2NoYW5uZWxfZW5hYmxlZBgIIAEoCBoSChBTZXNzaW9ua2V5Q29uZmlnQhEKD3BheWxvYWRfdmFyaWFudEJiChRvcmcubWVzaHRhc3RpYy5wcm90b0IMQ29uZmlnUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", [file_meshtastic_device_ui]); +export const file_meshtastic_config: GenFile /*@__PURE__*/ = fileDesc( + "ChdtZXNodGFzdGljL2NvbmZpZy5wcm90bxIKbWVzaHRhc3RpYyLlLAoGQ29uZmlnEjEKBmRldmljZRgBIAEoCzIfLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZ0gAEjUKCHBvc2l0aW9uGAIgASgLMiEubWVzaHRhc3RpYy5Db25maWcuUG9zaXRpb25Db25maWdIABIvCgVwb3dlchgDIAEoCzIeLm1lc2h0YXN0aWMuQ29uZmlnLlBvd2VyQ29uZmlnSAASMwoHbmV0d29yaxgEIAEoCzIgLm1lc2h0YXN0aWMuQ29uZmlnLk5ldHdvcmtDb25maWdIABIzCgdkaXNwbGF5GAUgASgLMiAubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZ0gAEi0KBGxvcmEYBiABKAsyHS5tZXNodGFzdGljLkNvbmZpZy5Mb1JhQ29uZmlnSAASNwoJYmx1ZXRvb3RoGAcgASgLMiIubWVzaHRhc3RpYy5Db25maWcuQmx1ZXRvb3RoQ29uZmlnSAASNQoIc2VjdXJpdHkYCCABKAsyIS5tZXNodGFzdGljLkNvbmZpZy5TZWN1cml0eUNvbmZpZ0gAEjkKCnNlc3Npb25rZXkYCSABKAsyIy5tZXNodGFzdGljLkNvbmZpZy5TZXNzaW9ua2V5Q29uZmlnSAASLwoJZGV2aWNlX3VpGAogASgLMhoubWVzaHRhc3RpYy5EZXZpY2VVSUNvbmZpZ0gAGvYGCgxEZXZpY2VDb25maWcSMgoEcm9sZRgBIAEoDjIkLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5Sb2xlEhoKDnNlcmlhbF9lbmFibGVkGAIgASgIQgIYARITCgtidXR0b25fZ3BpbxgEIAEoDRITCgtidXp6ZXJfZ3BpbxgFIAEoDRJJChByZWJyb2FkY2FzdF9tb2RlGAYgASgOMi8ubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnLlJlYnJvYWRjYXN0TW9kZRIgChhub2RlX2luZm9fYnJvYWRjYXN0X3NlY3MYByABKA0SIgoaZG91YmxlX3RhcF9hc19idXR0b25fcHJlc3MYCCABKAgSFgoKaXNfbWFuYWdlZBgJIAEoCEICGAESHAoUZGlzYWJsZV90cmlwbGVfY2xpY2sYCiABKAgSDQoFdHpkZWYYCyABKAkSHgoWbGVkX2hlYXJ0YmVhdF9kaXNhYmxlZBgMIAEoCBI/CgtidXp6ZXJfbW9kZRgNIAEoDjIqLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5CdXp6ZXJNb2RlItQBCgRSb2xlEgoKBkNMSUVOVBAAEg8KC0NMSUVOVF9NVVRFEAESCgoGUk9VVEVSEAISFQoNUk9VVEVSX0NMSUVOVBADGgIIARIQCghSRVBFQVRFUhAEGgIIARILCgdUUkFDS0VSEAUSCgoGU0VOU09SEAYSBwoDVEFLEAcSEQoNQ0xJRU5UX0hJRERFThAIEhIKDkxPU1RfQU5EX0ZPVU5EEAkSDwoLVEFLX1RSQUNLRVIQChIPCgtST1VURVJfTEFURRALEg8KC0NMSUVOVF9CQVNFEAwicwoPUmVicm9hZGNhc3RNb2RlEgcKA0FMTBAAEhUKEUFMTF9TS0lQX0RFQ09ESU5HEAESDgoKTE9DQUxfT05MWRACEg4KCktOT1dOX09OTFkQAxIICgROT05FEAQSFgoSQ09SRV9QT1JUTlVNU19PTkxZEAUiaQoKQnV6emVyTW9kZRIPCgtBTExfRU5BQkxFRBAAEgwKCERJU0FCTEVEEAESFgoSTk9USUZJQ0FUSU9OU19PTkxZEAISDwoLU1lTVEVNX09OTFkQAxITCg9ESVJFQ1RfTVNHX09OTFkQBBqRBQoOUG9zaXRpb25Db25maWcSHwoXcG9zaXRpb25fYnJvYWRjYXN0X3NlY3MYASABKA0SKAogcG9zaXRpb25fYnJvYWRjYXN0X3NtYXJ0X2VuYWJsZWQYAiABKAgSFgoOZml4ZWRfcG9zaXRpb24YAyABKAgSFwoLZ3BzX2VuYWJsZWQYBCABKAhCAhgBEhsKE2dwc191cGRhdGVfaW50ZXJ2YWwYBSABKA0SHAoQZ3BzX2F0dGVtcHRfdGltZRgGIAEoDUICGAESFgoOcG9zaXRpb25fZmxhZ3MYByABKA0SDwoHcnhfZ3BpbxgIIAEoDRIPCgd0eF9ncGlvGAkgASgNEigKIGJyb2FkY2FzdF9zbWFydF9taW5pbXVtX2Rpc3RhbmNlGAogASgNEi0KJWJyb2FkY2FzdF9zbWFydF9taW5pbXVtX2ludGVydmFsX3NlY3MYCyABKA0SEwoLZ3BzX2VuX2dwaW8YDCABKA0SOwoIZ3BzX21vZGUYDSABKA4yKS5tZXNodGFzdGljLkNvbmZpZy5Qb3NpdGlvbkNvbmZpZy5HcHNNb2RlIqsBCg1Qb3NpdGlvbkZsYWdzEgkKBVVOU0VUEAASDAoIQUxUSVRVREUQARIQCgxBTFRJVFVERV9NU0wQAhIWChJHRU9JREFMX1NFUEFSQVRJT04QBBIHCgNET1AQCBIJCgVIVkRPUBAQEg0KCVNBVElOVklFVxAgEgoKBlNFUV9OTxBAEg4KCVRJTUVTVEFNUBCAARIMCgdIRUFESU5HEIACEgoKBVNQRUVEEIAEIjUKB0dwc01vZGUSDAoIRElTQUJMRUQQABILCgdFTkFCTEVEEAESDwoLTk9UX1BSRVNFTlQQAhqEAgoLUG93ZXJDb25maWcSFwoPaXNfcG93ZXJfc2F2aW5nGAEgASgIEiYKHm9uX2JhdHRlcnlfc2h1dGRvd25fYWZ0ZXJfc2VjcxgCIAEoDRIfChdhZGNfbXVsdGlwbGllcl9vdmVycmlkZRgDIAEoAhIbChN3YWl0X2JsdWV0b290aF9zZWNzGAQgASgNEhAKCHNkc19zZWNzGAYgASgNEg8KB2xzX3NlY3MYByABKA0SFQoNbWluX3dha2Vfc2VjcxgIIAEoDRIiChpkZXZpY2VfYmF0dGVyeV9pbmFfYWRkcmVzcxgJIAEoDRIYChBwb3dlcm1vbl9lbmFibGVzGCAgASgEGuUDCg1OZXR3b3JrQ29uZmlnEhQKDHdpZmlfZW5hYmxlZBgBIAEoCBIRCgl3aWZpX3NzaWQYAyABKAkSEAoId2lmaV9wc2sYBCABKAkSEgoKbnRwX3NlcnZlchgFIAEoCRITCgtldGhfZW5hYmxlZBgGIAEoCBJCCgxhZGRyZXNzX21vZGUYByABKA4yLC5tZXNodGFzdGljLkNvbmZpZy5OZXR3b3JrQ29uZmlnLkFkZHJlc3NNb2RlEkAKC2lwdjRfY29uZmlnGAggASgLMisubWVzaHRhc3RpYy5Db25maWcuTmV0d29ya0NvbmZpZy5JcFY0Q29uZmlnEhYKDnJzeXNsb2dfc2VydmVyGAkgASgJEhkKEWVuYWJsZWRfcHJvdG9jb2xzGAogASgNEhQKDGlwdjZfZW5hYmxlZBgLIAEoCBpGCgpJcFY0Q29uZmlnEgoKAmlwGAEgASgHEg8KB2dhdGV3YXkYAiABKAcSDgoGc3VibmV0GAMgASgHEgsKA2RucxgEIAEoByIjCgtBZGRyZXNzTW9kZRIICgRESENQEAASCgoGU1RBVElDEAEiNAoNUHJvdG9jb2xGbGFncxIQCgxOT19CUk9BRENBU1QQABIRCg1VRFBfQlJPQURDQVNUEAEawggKDURpc3BsYXlDb25maWcSFgoOc2NyZWVuX29uX3NlY3MYASABKA0SVgoKZ3BzX2Zvcm1hdBgCIAEoDjI+Lm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuRGVwcmVjYXRlZEdwc0Nvb3JkaW5hdGVGb3JtYXRCAhgBEiEKGWF1dG9fc2NyZWVuX2Nhcm91c2VsX3NlY3MYAyABKA0SHQoRY29tcGFzc19ub3J0aF90b3AYBCABKAhCAhgBEhMKC2ZsaXBfc2NyZWVuGAUgASgIEjwKBXVuaXRzGAYgASgOMi0ubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZy5EaXNwbGF5VW5pdHMSNwoEb2xlZBgHIAEoDjIpLm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuT2xlZFR5cGUSQQoLZGlzcGxheW1vZGUYCCABKA4yLC5tZXNodGFzdGljLkNvbmZpZy5EaXNwbGF5Q29uZmlnLkRpc3BsYXlNb2RlEhQKDGhlYWRpbmdfYm9sZBgJIAEoCBIdChV3YWtlX29uX3RhcF9vcl9tb3Rpb24YCiABKAgSUAoTY29tcGFzc19vcmllbnRhdGlvbhgLIAEoDjIzLm1lc2h0YXN0aWMuQ29uZmlnLkRpc3BsYXlDb25maWcuQ29tcGFzc09yaWVudGF0aW9uEhUKDXVzZV8xMmhfY2xvY2sYDCABKAgSGgoSdXNlX2xvbmdfbm9kZV9uYW1lGA0gASgIEh4KFmVuYWJsZV9tZXNzYWdlX2J1YmJsZXMYDiABKAgiKwodRGVwcmVjYXRlZEdwc0Nvb3JkaW5hdGVGb3JtYXQSCgoGVU5VU0VEEAAiKAoMRGlzcGxheVVuaXRzEgoKBk1FVFJJQxAAEgwKCElNUEVSSUFMEAEifwoIT2xlZFR5cGUSDQoJT0xFRF9BVVRPEAASEAoMT0xFRF9TU0QxMzA2EAESDwoLT0xFRF9TSDExMDYQAhIPCgtPTEVEX1NIMTEwNxADEhcKE09MRURfU0gxMTA3XzEyOF8xMjgQBBIXChNPTEVEX1NIMTEwN19ST1RBVEVEEAUiQQoLRGlzcGxheU1vZGUSCwoHREVGQVVMVBAAEgwKCFRXT0NPTE9SEAESDAoISU5WRVJURUQQAhIJCgVDT0xPUhADIroBChJDb21wYXNzT3JpZW50YXRpb24SDQoJREVHUkVFU18wEAASDgoKREVHUkVFU185MBABEg8KC0RFR1JFRVNfMTgwEAISDwoLREVHUkVFU18yNzAQAxIWChJERUdSRUVTXzBfSU5WRVJURUQQBBIXChNERUdSRUVTXzkwX0lOVkVSVEVEEAUSGAoUREVHUkVFU18xODBfSU5WRVJURUQQBhIYChRERUdSRUVTXzI3MF9JTlZFUlRFRBAHGvkKCgpMb1JhQ29uZmlnEhIKCnVzZV9wcmVzZXQYASABKAgSPwoMbW9kZW1fcHJlc2V0GAIgASgOMikubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZy5Nb2RlbVByZXNldBIRCgliYW5kd2lkdGgYAyABKA0SFQoNc3ByZWFkX2ZhY3RvchgEIAEoDRITCgtjb2RpbmdfcmF0ZRgFIAEoDRIYChBmcmVxdWVuY3lfb2Zmc2V0GAYgASgCEjgKBnJlZ2lvbhgHIAEoDjIoLm1lc2h0YXN0aWMuQ29uZmlnLkxvUmFDb25maWcuUmVnaW9uQ29kZRIRCglob3BfbGltaXQYCCABKA0SEgoKdHhfZW5hYmxlZBgJIAEoCBIQCgh0eF9wb3dlchgKIAEoBRITCgtjaGFubmVsX251bRgLIAEoDRIbChNvdmVycmlkZV9kdXR5X2N5Y2xlGAwgASgIEh4KFnN4MTI2eF9yeF9ib29zdGVkX2dhaW4YDSABKAgSGgoSb3ZlcnJpZGVfZnJlcXVlbmN5GA4gASgCEhcKD3BhX2Zhbl9kaXNhYmxlZBgPIAEoCBIXCg9pZ25vcmVfaW5jb21pbmcYZyADKA0SEwoLaWdub3JlX21xdHQYaCABKAgSGQoRY29uZmlnX29rX3RvX21xdHQYaSABKAgSQAoMZmVtX2xuYV9tb2RlGGogASgOMioubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZy5GRU1fTE5BX01vZGUSFwoPc2VyaWFsX2hhbF9vbmx5GGsgASgIIsQDCgpSZWdpb25Db2RlEgkKBVVOU0VUEAASBgoCVVMQARIKCgZFVV80MzMQAhIKCgZFVV84NjgQAxIGCgJDThAEEgYKAkpQEAUSBwoDQU5aEAYSBgoCS1IQBxIGCgJUVxAIEgYKAlJVEAkSBgoCSU4QChIKCgZOWl84NjUQCxIGCgJUSBAMEgsKB0xPUkFfMjQQDRIKCgZVQV80MzMQDhIKCgZVQV84NjgQDxIKCgZNWV80MzMQEBIKCgZNWV85MTkQERIKCgZTR185MjMQEhIKCgZQSF80MzMQExIKCgZQSF84NjgQFBIKCgZQSF85MTUQFRILCgdBTlpfNDMzEBYSCgoGS1pfNDMzEBcSCgoGS1pfODYzEBgSCgoGTlBfODY1EBkSCgoGQlJfOTAyEBoSCwoHSVRVMV8yTRAbEgsKB0lUVTJfMk0QHBIKCgZFVV84NjYQHRIKCgZFVV84NzQQHhIKCgZFVV85MTcQHxIMCghFVV9OXzg2OBAgEgsKB0lUVTNfMk0QIRINCglJVFUxXzcwQ00QIhINCglJVFUyXzcwQ00QIxINCglJVFUzXzcwQ00QJBIOCgpJVFUyXzEyNUNNECUimwIKC01vZGVtUHJlc2V0Eg0KCUxPTkdfRkFTVBAAEhEKCUxPTkdfU0xPVxABGgIIARIWCg5WRVJZX0xPTkdfU0xPVxACGgIIARIPCgtNRURJVU1fU0xPVxADEg8KC01FRElVTV9GQVNUEAQSDgoKU0hPUlRfU0xPVxAFEg4KClNIT1JUX0ZBU1QQBhIRCg1MT05HX01PREVSQVRFEAcSDwoLU0hPUlRfVFVSQk8QCBIOCgpMT05HX1RVUkJPEAkSDQoJTElURV9GQVNUEAoSDQoJTElURV9TTE9XEAsSDwoLTkFSUk9XX0ZBU1QQDBIPCgtOQVJST1dfU0xPVxANEg0KCVRJTllfRkFTVBAOEg0KCVRJTllfU0xPVxAPIjoKDEZFTV9MTkFfTW9kZRIMCghESVNBQkxFRBAAEgsKB0VOQUJMRUQQARIPCgtOT1RfUFJFU0VOVBACGq0BCg9CbHVldG9vdGhDb25maWcSDwoHZW5hYmxlZBgBIAEoCBI8CgRtb2RlGAIgASgOMi4ubWVzaHRhc3RpYy5Db25maWcuQmx1ZXRvb3RoQ29uZmlnLlBhaXJpbmdNb2RlEhEKCWZpeGVkX3BpbhgDIAEoDSI4CgtQYWlyaW5nTW9kZRIOCgpSQU5ET01fUElOEAASDQoJRklYRURfUElOEAESCgoGTk9fUElOEAIatgEKDlNlY3VyaXR5Q29uZmlnEhIKCnB1YmxpY19rZXkYASABKAwSEwoLcHJpdmF0ZV9rZXkYAiABKAwSEQoJYWRtaW5fa2V5GAMgAygMEhIKCmlzX21hbmFnZWQYBCABKAgSFgoOc2VyaWFsX2VuYWJsZWQYBSABKAgSHQoVZGVidWdfbG9nX2FwaV9lbmFibGVkGAYgASgIEh0KFWFkbWluX2NoYW5uZWxfZW5hYmxlZBgIIAEoCBoSChBTZXNzaW9ua2V5Q29uZmlnQhEKD3BheWxvYWRfdmFyaWFudEJiChRvcmcubWVzaHRhc3RpYy5wcm90b0IMQ29uZmlnUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", + [file_meshtastic_device_ui], +); /** * @generated from message meshtastic.Config @@ -24,75 +30,88 @@ export type Config = Message<"meshtastic.Config"> & { * * @generated from oneof meshtastic.Config.payload_variant */ - payloadVariant: { - /** - * @generated from field: meshtastic.Config.DeviceConfig device = 1; - */ - value: Config_DeviceConfig; - case: "device"; - } | { - /** - * @generated from field: meshtastic.Config.PositionConfig position = 2; - */ - value: Config_PositionConfig; - case: "position"; - } | { - /** - * @generated from field: meshtastic.Config.PowerConfig power = 3; - */ - value: Config_PowerConfig; - case: "power"; - } | { - /** - * @generated from field: meshtastic.Config.NetworkConfig network = 4; - */ - value: Config_NetworkConfig; - case: "network"; - } | { - /** - * @generated from field: meshtastic.Config.DisplayConfig display = 5; - */ - value: Config_DisplayConfig; - case: "display"; - } | { - /** - * @generated from field: meshtastic.Config.LoRaConfig lora = 6; - */ - value: Config_LoRaConfig; - case: "lora"; - } | { - /** - * @generated from field: meshtastic.Config.BluetoothConfig bluetooth = 7; - */ - value: Config_BluetoothConfig; - case: "bluetooth"; - } | { - /** - * @generated from field: meshtastic.Config.SecurityConfig security = 8; - */ - value: Config_SecurityConfig; - case: "security"; - } | { - /** - * @generated from field: meshtastic.Config.SessionkeyConfig sessionkey = 9; - */ - value: Config_SessionkeyConfig; - case: "sessionkey"; - } | { - /** - * @generated from field: meshtastic.DeviceUIConfig device_ui = 10; - */ - value: DeviceUIConfig; - case: "deviceUi"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * @generated from field: meshtastic.Config.DeviceConfig device = 1; + */ + value: Config_DeviceConfig; + case: "device"; + } + | { + /** + * @generated from field: meshtastic.Config.PositionConfig position = 2; + */ + value: Config_PositionConfig; + case: "position"; + } + | { + /** + * @generated from field: meshtastic.Config.PowerConfig power = 3; + */ + value: Config_PowerConfig; + case: "power"; + } + | { + /** + * @generated from field: meshtastic.Config.NetworkConfig network = 4; + */ + value: Config_NetworkConfig; + case: "network"; + } + | { + /** + * @generated from field: meshtastic.Config.DisplayConfig display = 5; + */ + value: Config_DisplayConfig; + case: "display"; + } + | { + /** + * @generated from field: meshtastic.Config.LoRaConfig lora = 6; + */ + value: Config_LoRaConfig; + case: "lora"; + } + | { + /** + * @generated from field: meshtastic.Config.BluetoothConfig bluetooth = 7; + */ + value: Config_BluetoothConfig; + case: "bluetooth"; + } + | { + /** + * @generated from field: meshtastic.Config.SecurityConfig security = 8; + */ + value: Config_SecurityConfig; + case: "security"; + } + | { + /** + * @generated from field: meshtastic.Config.SessionkeyConfig sessionkey = 9; + */ + value: Config_SessionkeyConfig; + case: "sessionkey"; + } + | { + /** + * @generated from field: meshtastic.DeviceUIConfig device_ui = 10; + */ + value: DeviceUIConfig; + case: "deviceUi"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.Config. * Use `create(ConfigSchema)` to create a new message. */ -export const ConfigSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_config, 0); +export const ConfigSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_config, + 0, +); /** * @@ -211,7 +230,7 @@ export type Config_DeviceConfig = Message<"meshtastic.Config.DeviceConfig"> & { * Describes the message meshtastic.Config.DeviceConfig. * Use `create(Config_DeviceConfigSchema)` to create a new message. */ -export const Config_DeviceConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_DeviceConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 0); /** @@ -361,7 +380,7 @@ export enum Config_DeviceConfig_Role { /** * Describes the enum meshtastic.Config.DeviceConfig.Role. */ -export const Config_DeviceConfig_RoleSchema: GenEnum = /*@__PURE__*/ +export const Config_DeviceConfig_RoleSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 0, 0); /** @@ -428,7 +447,7 @@ export enum Config_DeviceConfig_RebroadcastMode { /** * Describes the enum meshtastic.Config.DeviceConfig.RebroadcastMode. */ -export const Config_DeviceConfig_RebroadcastModeSchema: GenEnum = /*@__PURE__*/ +export const Config_DeviceConfig_RebroadcastModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 0, 1); /** @@ -489,7 +508,7 @@ export enum Config_DeviceConfig_BuzzerMode { /** * Describes the enum meshtastic.Config.DeviceConfig.BuzzerMode. */ -export const Config_DeviceConfig_BuzzerModeSchema: GenEnum = /*@__PURE__*/ +export const Config_DeviceConfig_BuzzerModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 0, 2); /** @@ -498,125 +517,126 @@ export const Config_DeviceConfig_BuzzerModeSchema: GenEnum & { - /** - * - * We should send our position this often (but only if it has changed significantly) - * Defaults to 15 minutes - * - * @generated from field: uint32 position_broadcast_secs = 1; - */ - positionBroadcastSecs: number; +export type Config_PositionConfig = + Message<"meshtastic.Config.PositionConfig"> & { + /** + * + * We should send our position this often (but only if it has changed significantly) + * Defaults to 15 minutes + * + * @generated from field: uint32 position_broadcast_secs = 1; + */ + positionBroadcastSecs: number; - /** - * - * Adaptive position braoadcast, which is now the default. - * - * @generated from field: bool position_broadcast_smart_enabled = 2; - */ - positionBroadcastSmartEnabled: boolean; + /** + * + * Adaptive position braoadcast, which is now the default. + * + * @generated from field: bool position_broadcast_smart_enabled = 2; + */ + positionBroadcastSmartEnabled: boolean; - /** - * - * If set, this node is at a fixed position. - * We will generate GPS position updates at the regular interval, but use whatever the last lat/lon/alt we have for the node. - * The lat/lon/alt can be set by an internal GPS or with the help of the app. - * - * @generated from field: bool fixed_position = 3; - */ - fixedPosition: boolean; + /** + * + * If set, this node is at a fixed position. + * We will generate GPS position updates at the regular interval, but use whatever the last lat/lon/alt we have for the node. + * The lat/lon/alt can be set by an internal GPS or with the help of the app. + * + * @generated from field: bool fixed_position = 3; + */ + fixedPosition: boolean; - /** - * - * Is GPS enabled for this node? - * - * @generated from field: bool gps_enabled = 4 [deprecated = true]; - * @deprecated - */ - gpsEnabled: boolean; + /** + * + * Is GPS enabled for this node? + * + * @generated from field: bool gps_enabled = 4 [deprecated = true]; + * @deprecated + */ + gpsEnabled: boolean; - /** - * - * How often should we try to get GPS position (in seconds) - * or zero for the default of once every 30 seconds - * or a very large value (maxint) to update only once at boot. - * - * @generated from field: uint32 gps_update_interval = 5; - */ - gpsUpdateInterval: number; + /** + * + * How often should we try to get GPS position (in seconds) + * or zero for the default of once every 30 seconds + * or a very large value (maxint) to update only once at boot. + * + * @generated from field: uint32 gps_update_interval = 5; + */ + gpsUpdateInterval: number; - /** - * - * Deprecated in favor of using smart / regular broadcast intervals as implicit attempt time - * - * @generated from field: uint32 gps_attempt_time = 6 [deprecated = true]; - * @deprecated - */ - gpsAttemptTime: number; + /** + * + * Deprecated in favor of using smart / regular broadcast intervals as implicit attempt time + * + * @generated from field: uint32 gps_attempt_time = 6 [deprecated = true]; + * @deprecated + */ + gpsAttemptTime: number; - /** - * - * Bit field of boolean configuration options for POSITION messages - * (bitwise OR of PositionFlags) - * - * @generated from field: uint32 position_flags = 7; - */ - positionFlags: number; + /** + * + * Bit field of boolean configuration options for POSITION messages + * (bitwise OR of PositionFlags) + * + * @generated from field: uint32 position_flags = 7; + */ + positionFlags: number; - /** - * - * (Re)define GPS_RX_PIN for your board. - * - * @generated from field: uint32 rx_gpio = 8; - */ - rxGpio: number; + /** + * + * (Re)define GPS_RX_PIN for your board. + * + * @generated from field: uint32 rx_gpio = 8; + */ + rxGpio: number; - /** - * - * (Re)define GPS_TX_PIN for your board. - * - * @generated from field: uint32 tx_gpio = 9; - */ - txGpio: number; + /** + * + * (Re)define GPS_TX_PIN for your board. + * + * @generated from field: uint32 tx_gpio = 9; + */ + txGpio: number; - /** - * - * The minimum distance in meters traveled (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled - * - * @generated from field: uint32 broadcast_smart_minimum_distance = 10; - */ - broadcastSmartMinimumDistance: number; + /** + * + * The minimum distance in meters traveled (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled + * + * @generated from field: uint32 broadcast_smart_minimum_distance = 10; + */ + broadcastSmartMinimumDistance: number; - /** - * - * The minimum number of seconds (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled - * - * @generated from field: uint32 broadcast_smart_minimum_interval_secs = 11; - */ - broadcastSmartMinimumIntervalSecs: number; + /** + * + * The minimum number of seconds (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled + * + * @generated from field: uint32 broadcast_smart_minimum_interval_secs = 11; + */ + broadcastSmartMinimumIntervalSecs: number; - /** - * - * (Re)define PIN_GPS_EN for your board. - * - * @generated from field: uint32 gps_en_gpio = 12; - */ - gpsEnGpio: number; + /** + * + * (Re)define PIN_GPS_EN for your board. + * + * @generated from field: uint32 gps_en_gpio = 12; + */ + gpsEnGpio: number; - /** - * - * Set where GPS is enabled, disabled, or not present - * - * @generated from field: meshtastic.Config.PositionConfig.GpsMode gps_mode = 13; - */ - gpsMode: Config_PositionConfig_GpsMode; -}; + /** + * + * Set where GPS is enabled, disabled, or not present + * + * @generated from field: meshtastic.Config.PositionConfig.GpsMode gps_mode = 13; + */ + gpsMode: Config_PositionConfig_GpsMode; + }; /** * Describes the message meshtastic.Config.PositionConfig. * Use `create(Config_PositionConfigSchema)` to create a new message. */ -export const Config_PositionConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_PositionConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 1); /** @@ -727,7 +747,7 @@ export enum Config_PositionConfig_PositionFlags { /** * Describes the enum meshtastic.Config.PositionConfig.PositionFlags. */ -export const Config_PositionConfig_PositionFlagsSchema: GenEnum = /*@__PURE__*/ +export const Config_PositionConfig_PositionFlagsSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 1, 0); /** @@ -762,7 +782,7 @@ export enum Config_PositionConfig_GpsMode { /** * Describes the enum meshtastic.Config.PositionConfig.GpsMode. */ -export const Config_PositionConfig_GpsModeSchema: GenEnum = /*@__PURE__*/ +export const Config_PositionConfig_GpsModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 1, 1); /** @@ -862,7 +882,7 @@ export type Config_PowerConfig = Message<"meshtastic.Config.PowerConfig"> & { * Describes the message meshtastic.Config.PowerConfig. * Use `create(Config_PowerConfigSchema)` to create a new message. */ -export const Config_PowerConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_PowerConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 2); /** @@ -871,138 +891,140 @@ export const Config_PowerConfigSchema: GenMessage = /*@__PUR * * @generated from message meshtastic.Config.NetworkConfig */ -export type Config_NetworkConfig = Message<"meshtastic.Config.NetworkConfig"> & { - /** - * - * Enable WiFi (disables Bluetooth) - * - * @generated from field: bool wifi_enabled = 1; - */ - wifiEnabled: boolean; +export type Config_NetworkConfig = + Message<"meshtastic.Config.NetworkConfig"> & { + /** + * + * Enable WiFi (disables Bluetooth) + * + * @generated from field: bool wifi_enabled = 1; + */ + wifiEnabled: boolean; - /** - * - * If set, this node will try to join the specified wifi network and - * acquire an address via DHCP - * - * @generated from field: string wifi_ssid = 3; - */ - wifiSsid: string; + /** + * + * If set, this node will try to join the specified wifi network and + * acquire an address via DHCP + * + * @generated from field: string wifi_ssid = 3; + */ + wifiSsid: string; - /** - * - * If set, will be use to authenticate to the named wifi - * - * @generated from field: string wifi_psk = 4; - */ - wifiPsk: string; + /** + * + * If set, will be use to authenticate to the named wifi + * + * @generated from field: string wifi_psk = 4; + */ + wifiPsk: string; - /** - * - * NTP server to use if WiFi is conneced, defaults to `meshtastic.pool.ntp.org` - * - * @generated from field: string ntp_server = 5; - */ - ntpServer: string; + /** + * + * NTP server to use if WiFi is conneced, defaults to `meshtastic.pool.ntp.org` + * + * @generated from field: string ntp_server = 5; + */ + ntpServer: string; - /** - * - * Enable Ethernet - * - * @generated from field: bool eth_enabled = 6; - */ - ethEnabled: boolean; + /** + * + * Enable Ethernet + * + * @generated from field: bool eth_enabled = 6; + */ + ethEnabled: boolean; - /** - * - * acquire an address via DHCP or assign static - * - * @generated from field: meshtastic.Config.NetworkConfig.AddressMode address_mode = 7; - */ - addressMode: Config_NetworkConfig_AddressMode; + /** + * + * acquire an address via DHCP or assign static + * + * @generated from field: meshtastic.Config.NetworkConfig.AddressMode address_mode = 7; + */ + addressMode: Config_NetworkConfig_AddressMode; - /** - * - * struct to keep static address - * - * @generated from field: meshtastic.Config.NetworkConfig.IpV4Config ipv4_config = 8; - */ - ipv4Config?: Config_NetworkConfig_IpV4Config | undefined; + /** + * + * struct to keep static address + * + * @generated from field: meshtastic.Config.NetworkConfig.IpV4Config ipv4_config = 8; + */ + ipv4Config?: Config_NetworkConfig_IpV4Config | undefined; - /** - * - * rsyslog Server and Port - * - * @generated from field: string rsyslog_server = 9; - */ - rsyslogServer: string; + /** + * + * rsyslog Server and Port + * + * @generated from field: string rsyslog_server = 9; + */ + rsyslogServer: string; - /** - * - * Flags for enabling/disabling network protocols - * - * @generated from field: uint32 enabled_protocols = 10; - */ - enabledProtocols: number; + /** + * + * Flags for enabling/disabling network protocols + * + * @generated from field: uint32 enabled_protocols = 10; + */ + enabledProtocols: number; - /** - * - * Enable/Disable ipv6 support - * - * @generated from field: bool ipv6_enabled = 11; - */ - ipv6Enabled: boolean; -}; + /** + * + * Enable/Disable ipv6 support + * + * @generated from field: bool ipv6_enabled = 11; + */ + ipv6Enabled: boolean; + }; /** * Describes the message meshtastic.Config.NetworkConfig. * Use `create(Config_NetworkConfigSchema)` to create a new message. */ -export const Config_NetworkConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_NetworkConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 3); /** * @generated from message meshtastic.Config.NetworkConfig.IpV4Config */ -export type Config_NetworkConfig_IpV4Config = Message<"meshtastic.Config.NetworkConfig.IpV4Config"> & { - /** - * - * Static IP address - * - * @generated from field: fixed32 ip = 1; - */ - ip: number; +export type Config_NetworkConfig_IpV4Config = + Message<"meshtastic.Config.NetworkConfig.IpV4Config"> & { + /** + * + * Static IP address + * + * @generated from field: fixed32 ip = 1; + */ + ip: number; - /** - * - * Static gateway address - * - * @generated from field: fixed32 gateway = 2; - */ - gateway: number; + /** + * + * Static gateway address + * + * @generated from field: fixed32 gateway = 2; + */ + gateway: number; - /** - * - * Static subnet mask - * - * @generated from field: fixed32 subnet = 3; - */ - subnet: number; + /** + * + * Static subnet mask + * + * @generated from field: fixed32 subnet = 3; + */ + subnet: number; - /** - * - * Static DNS server address - * - * @generated from field: fixed32 dns = 4; - */ - dns: number; -}; + /** + * + * Static DNS server address + * + * @generated from field: fixed32 dns = 4; + */ + dns: number; + }; /** * Describes the message meshtastic.Config.NetworkConfig.IpV4Config. * Use `create(Config_NetworkConfig_IpV4ConfigSchema)` to create a new message. */ -export const Config_NetworkConfig_IpV4ConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_NetworkConfig_IpV4ConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 3, 0); /** @@ -1029,7 +1051,7 @@ export enum Config_NetworkConfig_AddressMode { /** * Describes the enum meshtastic.Config.NetworkConfig.AddressMode. */ -export const Config_NetworkConfig_AddressModeSchema: GenEnum = /*@__PURE__*/ +export const Config_NetworkConfig_AddressModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 3, 0); /** @@ -1059,7 +1081,7 @@ export enum Config_NetworkConfig_ProtocolFlags { /** * Describes the enum meshtastic.Config.NetworkConfig.ProtocolFlags. */ -export const Config_NetworkConfig_ProtocolFlagsSchema: GenEnum = /*@__PURE__*/ +export const Config_NetworkConfig_ProtocolFlagsSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 3, 1); /** @@ -1068,133 +1090,134 @@ export const Config_NetworkConfig_ProtocolFlagsSchema: GenEnum & { - /** - * - * Number of seconds the screen stays on after pressing the user button or receiving a message - * 0 for default of one minute MAXUINT for always on - * - * @generated from field: uint32 screen_on_secs = 1; - */ - screenOnSecs: number; +export type Config_DisplayConfig = + Message<"meshtastic.Config.DisplayConfig"> & { + /** + * + * Number of seconds the screen stays on after pressing the user button or receiving a message + * 0 for default of one minute MAXUINT for always on + * + * @generated from field: uint32 screen_on_secs = 1; + */ + screenOnSecs: number; - /** - * - * Deprecated in 2.7.4: Unused - * How the GPS coordinates are formatted on the OLED screen. - * - * @generated from field: meshtastic.Config.DisplayConfig.DeprecatedGpsCoordinateFormat gps_format = 2 [deprecated = true]; - * @deprecated - */ - gpsFormat: Config_DisplayConfig_DeprecatedGpsCoordinateFormat; + /** + * + * Deprecated in 2.7.4: Unused + * How the GPS coordinates are formatted on the OLED screen. + * + * @generated from field: meshtastic.Config.DisplayConfig.DeprecatedGpsCoordinateFormat gps_format = 2 [deprecated = true]; + * @deprecated + */ + gpsFormat: Config_DisplayConfig_DeprecatedGpsCoordinateFormat; - /** - * - * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. - * Potentially useful for devices without user buttons. - * - * @generated from field: uint32 auto_screen_carousel_secs = 3; - */ - autoScreenCarouselSecs: number; + /** + * + * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. + * Potentially useful for devices without user buttons. + * + * @generated from field: uint32 auto_screen_carousel_secs = 3; + */ + autoScreenCarouselSecs: number; - /** - * - * If this is set, the displayed compass will always point north. if unset, the old behaviour - * (top of display is heading direction) is used. - * - * @generated from field: bool compass_north_top = 4 [deprecated = true]; - * @deprecated - */ - compassNorthTop: boolean; + /** + * + * If this is set, the displayed compass will always point north. if unset, the old behaviour + * (top of display is heading direction) is used. + * + * @generated from field: bool compass_north_top = 4 [deprecated = true]; + * @deprecated + */ + compassNorthTop: boolean; - /** - * - * Flip screen vertically, for cases that mount the screen upside down - * - * @generated from field: bool flip_screen = 5; - */ - flipScreen: boolean; + /** + * + * Flip screen vertically, for cases that mount the screen upside down + * + * @generated from field: bool flip_screen = 5; + */ + flipScreen: boolean; - /** - * - * Perferred display units - * - * @generated from field: meshtastic.Config.DisplayConfig.DisplayUnits units = 6; - */ - units: Config_DisplayConfig_DisplayUnits; + /** + * + * Perferred display units + * + * @generated from field: meshtastic.Config.DisplayConfig.DisplayUnits units = 6; + */ + units: Config_DisplayConfig_DisplayUnits; - /** - * - * Override auto-detect in screen - * - * @generated from field: meshtastic.Config.DisplayConfig.OledType oled = 7; - */ - oled: Config_DisplayConfig_OledType; + /** + * + * Override auto-detect in screen + * + * @generated from field: meshtastic.Config.DisplayConfig.OledType oled = 7; + */ + oled: Config_DisplayConfig_OledType; - /** - * - * Display Mode - * - * @generated from field: meshtastic.Config.DisplayConfig.DisplayMode displaymode = 8; - */ - displaymode: Config_DisplayConfig_DisplayMode; + /** + * + * Display Mode + * + * @generated from field: meshtastic.Config.DisplayConfig.DisplayMode displaymode = 8; + */ + displaymode: Config_DisplayConfig_DisplayMode; - /** - * - * Print first line in pseudo-bold? FALSE is original style, TRUE is bold - * - * @generated from field: bool heading_bold = 9; - */ - headingBold: boolean; + /** + * + * Print first line in pseudo-bold? FALSE is original style, TRUE is bold + * + * @generated from field: bool heading_bold = 9; + */ + headingBold: boolean; - /** - * - * Should we wake the screen up on accelerometer detected motion or tap - * - * @generated from field: bool wake_on_tap_or_motion = 10; - */ - wakeOnTapOrMotion: boolean; + /** + * + * Should we wake the screen up on accelerometer detected motion or tap + * + * @generated from field: bool wake_on_tap_or_motion = 10; + */ + wakeOnTapOrMotion: boolean; - /** - * - * Indicates how to rotate or invert the compass output to accurate display on the display. - * - * @generated from field: meshtastic.Config.DisplayConfig.CompassOrientation compass_orientation = 11; - */ - compassOrientation: Config_DisplayConfig_CompassOrientation; + /** + * + * Indicates how to rotate or invert the compass output to accurate display on the display. + * + * @generated from field: meshtastic.Config.DisplayConfig.CompassOrientation compass_orientation = 11; + */ + compassOrientation: Config_DisplayConfig_CompassOrientation; - /** - * - * If false (default), the device will display the time in 24-hour format on screen. - * If true, the device will display the time in 12-hour format on screen. - * - * @generated from field: bool use_12h_clock = 12; - */ - use12hClock: boolean; + /** + * + * If false (default), the device will display the time in 24-hour format on screen. + * If true, the device will display the time in 12-hour format on screen. + * + * @generated from field: bool use_12h_clock = 12; + */ + use12hClock: boolean; - /** - * - * If false (default), the device will use short names for various display screens. - * If true, node names will show in long format - * - * @generated from field: bool use_long_node_name = 13; - */ - useLongNodeName: boolean; + /** + * + * If false (default), the device will use short names for various display screens. + * If true, node names will show in long format + * + * @generated from field: bool use_long_node_name = 13; + */ + useLongNodeName: boolean; - /** - * - * If true, the device will display message bubbles on screen. - * - * @generated from field: bool enable_message_bubbles = 14; - */ - enableMessageBubbles: boolean; -}; + /** + * + * If true, the device will display message bubbles on screen. + * + * @generated from field: bool enable_message_bubbles = 14; + */ + enableMessageBubbles: boolean; + }; /** * Describes the message meshtastic.Config.DisplayConfig. * Use `create(Config_DisplayConfigSchema)` to create a new message. */ -export const Config_DisplayConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_DisplayConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 4); /** @@ -1213,7 +1236,7 @@ export enum Config_DisplayConfig_DeprecatedGpsCoordinateFormat { /** * Describes the enum meshtastic.Config.DisplayConfig.DeprecatedGpsCoordinateFormat. */ -export const Config_DisplayConfig_DeprecatedGpsCoordinateFormatSchema: GenEnum = /*@__PURE__*/ +export const Config_DisplayConfig_DeprecatedGpsCoordinateFormatSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 4, 0); /** @@ -1243,7 +1266,7 @@ export enum Config_DisplayConfig_DisplayUnits { /** * Describes the enum meshtastic.Config.DisplayConfig.DisplayUnits. */ -export const Config_DisplayConfig_DisplayUnitsSchema: GenEnum = /*@__PURE__*/ +export const Config_DisplayConfig_DisplayUnitsSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 4, 1); /** @@ -1305,7 +1328,7 @@ export enum Config_DisplayConfig_OledType { /** * Describes the enum meshtastic.Config.DisplayConfig.OledType. */ -export const Config_DisplayConfig_OledTypeSchema: GenEnum = /*@__PURE__*/ +export const Config_DisplayConfig_OledTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 4, 2); /** @@ -1348,7 +1371,7 @@ export enum Config_DisplayConfig_DisplayMode { /** * Describes the enum meshtastic.Config.DisplayConfig.DisplayMode. */ -export const Config_DisplayConfig_DisplayModeSchema: GenEnum = /*@__PURE__*/ +export const Config_DisplayConfig_DisplayModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 4, 3); /** @@ -1423,7 +1446,7 @@ export enum Config_DisplayConfig_CompassOrientation { /** * Describes the enum meshtastic.Config.DisplayConfig.CompassOrientation. */ -export const Config_DisplayConfig_CompassOrientationSchema: GenEnum = /*@__PURE__*/ +export const Config_DisplayConfig_CompassOrientationSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 4, 4); /** @@ -1629,7 +1652,7 @@ export type Config_LoRaConfig = Message<"meshtastic.Config.LoRaConfig"> & { * Describes the message meshtastic.Config.LoRaConfig. * Use `create(Config_LoRaConfigSchema)` to create a new message. */ -export const Config_LoRaConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_LoRaConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 5); /** @@ -1946,7 +1969,7 @@ export enum Config_LoRaConfig_RegionCode { /** * Describes the enum meshtastic.Config.LoRaConfig.RegionCode. */ -export const Config_LoRaConfig_RegionCodeSchema: GenEnum = /*@__PURE__*/ +export const Config_LoRaConfig_RegionCodeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 5, 0); /** @@ -2115,7 +2138,7 @@ export enum Config_LoRaConfig_ModemPreset { /** * Describes the enum meshtastic.Config.LoRaConfig.ModemPreset. */ -export const Config_LoRaConfig_ModemPresetSchema: GenEnum = /*@__PURE__*/ +export const Config_LoRaConfig_ModemPresetSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 5, 1); /** @@ -2150,43 +2173,44 @@ export enum Config_LoRaConfig_FEM_LNA_Mode { /** * Describes the enum meshtastic.Config.LoRaConfig.FEM_LNA_Mode. */ -export const Config_LoRaConfig_FEM_LNA_ModeSchema: GenEnum = /*@__PURE__*/ +export const Config_LoRaConfig_FEM_LNA_ModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 5, 2); /** * @generated from message meshtastic.Config.BluetoothConfig */ -export type Config_BluetoothConfig = Message<"meshtastic.Config.BluetoothConfig"> & { - /** - * - * Enable Bluetooth on the device - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type Config_BluetoothConfig = + Message<"meshtastic.Config.BluetoothConfig"> & { + /** + * + * Enable Bluetooth on the device + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * Determines the pairing strategy for the device - * - * @generated from field: meshtastic.Config.BluetoothConfig.PairingMode mode = 2; - */ - mode: Config_BluetoothConfig_PairingMode; + /** + * + * Determines the pairing strategy for the device + * + * @generated from field: meshtastic.Config.BluetoothConfig.PairingMode mode = 2; + */ + mode: Config_BluetoothConfig_PairingMode; - /** - * - * Specified PIN for PairingMode.FixedPin - * - * @generated from field: uint32 fixed_pin = 3; - */ - fixedPin: number; -}; + /** + * + * Specified PIN for PairingMode.FixedPin + * + * @generated from field: uint32 fixed_pin = 3; + */ + fixedPin: number; + }; /** * Describes the message meshtastic.Config.BluetoothConfig. * Use `create(Config_BluetoothConfigSchema)` to create a new message. */ -export const Config_BluetoothConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_BluetoothConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 6); /** @@ -2221,79 +2245,80 @@ export enum Config_BluetoothConfig_PairingMode { /** * Describes the enum meshtastic.Config.BluetoothConfig.PairingMode. */ -export const Config_BluetoothConfig_PairingModeSchema: GenEnum = /*@__PURE__*/ +export const Config_BluetoothConfig_PairingModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_config, 0, 6, 0); /** * @generated from message meshtastic.Config.SecurityConfig */ -export type Config_SecurityConfig = Message<"meshtastic.Config.SecurityConfig"> & { - /** - * - * The public key of the user's device. - * Sent out to other nodes on the mesh to allow them to compute a shared secret key. - * - * @generated from field: bytes public_key = 1; - */ - publicKey: Uint8Array; +export type Config_SecurityConfig = + Message<"meshtastic.Config.SecurityConfig"> & { + /** + * + * The public key of the user's device. + * Sent out to other nodes on the mesh to allow them to compute a shared secret key. + * + * @generated from field: bytes public_key = 1; + */ + publicKey: Uint8Array; - /** - * - * The private key of the device. - * Used to create a shared key with a remote device. - * - * @generated from field: bytes private_key = 2; - */ - privateKey: Uint8Array; + /** + * + * The private key of the device. + * Used to create a shared key with a remote device. + * + * @generated from field: bytes private_key = 2; + */ + privateKey: Uint8Array; - /** - * - * The public key authorized to send admin messages to this node. - * - * @generated from field: repeated bytes admin_key = 3; - */ - adminKey: Uint8Array[]; + /** + * + * The public key authorized to send admin messages to this node. + * + * @generated from field: repeated bytes admin_key = 3; + */ + adminKey: Uint8Array[]; - /** - * - * If true, device is considered to be "managed" by a mesh administrator via admin messages - * Device is managed by a mesh administrator. - * - * @generated from field: bool is_managed = 4; - */ - isManaged: boolean; + /** + * + * If true, device is considered to be "managed" by a mesh administrator via admin messages + * Device is managed by a mesh administrator. + * + * @generated from field: bool is_managed = 4; + */ + isManaged: boolean; - /** - * - * Serial Console over the Stream API." - * - * @generated from field: bool serial_enabled = 5; - */ - serialEnabled: boolean; + /** + * + * Serial Console over the Stream API." + * + * @generated from field: bool serial_enabled = 5; + */ + serialEnabled: boolean; - /** - * - * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). - * Output live debug logging over serial or bluetooth is set to true. - * - * @generated from field: bool debug_log_api_enabled = 6; - */ - debugLogApiEnabled: boolean; + /** + * + * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). + * Output live debug logging over serial or bluetooth is set to true. + * + * @generated from field: bool debug_log_api_enabled = 6; + */ + debugLogApiEnabled: boolean; - /** - * - * Allow incoming device control over the insecure legacy admin channel. - * - * @generated from field: bool admin_channel_enabled = 8; - */ - adminChannelEnabled: boolean; -}; + /** + * + * Allow incoming device control over the insecure legacy admin channel. + * + * @generated from field: bool admin_channel_enabled = 8; + */ + adminChannelEnabled: boolean; + }; /** * Describes the message meshtastic.Config.SecurityConfig. * Use `create(Config_SecurityConfigSchema)` to create a new message. */ -export const Config_SecurityConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_SecurityConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 7); /** @@ -2302,13 +2327,12 @@ export const Config_SecurityConfigSchema: GenMessage = /* * * @generated from message meshtastic.Config.SessionkeyConfig */ -export type Config_SessionkeyConfig = Message<"meshtastic.Config.SessionkeyConfig"> & { -}; +export type Config_SessionkeyConfig = + Message<"meshtastic.Config.SessionkeyConfig"> & {}; /** * Describes the message meshtastic.Config.SessionkeyConfig. * Use `create(Config_SessionkeyConfigSchema)` to create a new message. */ -export const Config_SessionkeyConfigSchema: GenMessage = /*@__PURE__*/ +export const Config_SessionkeyConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_config, 0, 8); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/connection_status_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/connection_status_pb.ts index 3768ff67c..03cdf0d18 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/connection_status_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/connection_status_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/connection_status.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -9,51 +9,54 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/connection_status.proto. */ -export const file_meshtastic_connection_status: GenFile = /*@__PURE__*/ - fileDesc("CiJtZXNodGFzdGljL2Nvbm5lY3Rpb25fc3RhdHVzLnByb3RvEgptZXNodGFzdGljIrECChZEZXZpY2VDb25uZWN0aW9uU3RhdHVzEjMKBHdpZmkYASABKAsyIC5tZXNodGFzdGljLldpZmlDb25uZWN0aW9uU3RhdHVzSACIAQESOwoIZXRoZXJuZXQYAiABKAsyJC5tZXNodGFzdGljLkV0aGVybmV0Q29ubmVjdGlvblN0YXR1c0gBiAEBEj0KCWJsdWV0b290aBgDIAEoCzIlLm1lc2h0YXN0aWMuQmx1ZXRvb3RoQ29ubmVjdGlvblN0YXR1c0gCiAEBEjcKBnNlcmlhbBgEIAEoCzIiLm1lc2h0YXN0aWMuU2VyaWFsQ29ubmVjdGlvblN0YXR1c0gDiAEBQgcKBV93aWZpQgsKCV9ldGhlcm5ldEIMCgpfYmx1ZXRvb3RoQgkKB19zZXJpYWwiZwoUV2lmaUNvbm5lY3Rpb25TdGF0dXMSMwoGc3RhdHVzGAEgASgLMiMubWVzaHRhc3RpYy5OZXR3b3JrQ29ubmVjdGlvblN0YXR1cxIMCgRzc2lkGAIgASgJEgwKBHJzc2kYAyABKAUiTwoYRXRoZXJuZXRDb25uZWN0aW9uU3RhdHVzEjMKBnN0YXR1cxgBIAEoCzIjLm1lc2h0YXN0aWMuTmV0d29ya0Nvbm5lY3Rpb25TdGF0dXMiewoXTmV0d29ya0Nvbm5lY3Rpb25TdGF0dXMSEgoKaXBfYWRkcmVzcxgBIAEoBxIUCgxpc19jb25uZWN0ZWQYAiABKAgSGQoRaXNfbXF0dF9jb25uZWN0ZWQYAyABKAgSGwoTaXNfc3lzbG9nX2Nvbm5lY3RlZBgEIAEoCCJMChlCbHVldG9vdGhDb25uZWN0aW9uU3RhdHVzEgsKA3BpbhgBIAEoDRIMCgRyc3NpGAIgASgFEhQKDGlzX2Nvbm5lY3RlZBgDIAEoCCI8ChZTZXJpYWxDb25uZWN0aW9uU3RhdHVzEgwKBGJhdWQYASABKA0SFAoMaXNfY29ubmVjdGVkGAIgASgIQmYKFG9yZy5tZXNodGFzdGljLnByb3RvQhBDb25uU3RhdHVzUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw"); +export const file_meshtastic_connection_status: GenFile /*@__PURE__*/ = + fileDesc( + "CiJtZXNodGFzdGljL2Nvbm5lY3Rpb25fc3RhdHVzLnByb3RvEgptZXNodGFzdGljIrECChZEZXZpY2VDb25uZWN0aW9uU3RhdHVzEjMKBHdpZmkYASABKAsyIC5tZXNodGFzdGljLldpZmlDb25uZWN0aW9uU3RhdHVzSACIAQESOwoIZXRoZXJuZXQYAiABKAsyJC5tZXNodGFzdGljLkV0aGVybmV0Q29ubmVjdGlvblN0YXR1c0gBiAEBEj0KCWJsdWV0b290aBgDIAEoCzIlLm1lc2h0YXN0aWMuQmx1ZXRvb3RoQ29ubmVjdGlvblN0YXR1c0gCiAEBEjcKBnNlcmlhbBgEIAEoCzIiLm1lc2h0YXN0aWMuU2VyaWFsQ29ubmVjdGlvblN0YXR1c0gDiAEBQgcKBV93aWZpQgsKCV9ldGhlcm5ldEIMCgpfYmx1ZXRvb3RoQgkKB19zZXJpYWwiZwoUV2lmaUNvbm5lY3Rpb25TdGF0dXMSMwoGc3RhdHVzGAEgASgLMiMubWVzaHRhc3RpYy5OZXR3b3JrQ29ubmVjdGlvblN0YXR1cxIMCgRzc2lkGAIgASgJEgwKBHJzc2kYAyABKAUiTwoYRXRoZXJuZXRDb25uZWN0aW9uU3RhdHVzEjMKBnN0YXR1cxgBIAEoCzIjLm1lc2h0YXN0aWMuTmV0d29ya0Nvbm5lY3Rpb25TdGF0dXMiewoXTmV0d29ya0Nvbm5lY3Rpb25TdGF0dXMSEgoKaXBfYWRkcmVzcxgBIAEoBxIUCgxpc19jb25uZWN0ZWQYAiABKAgSGQoRaXNfbXF0dF9jb25uZWN0ZWQYAyABKAgSGwoTaXNfc3lzbG9nX2Nvbm5lY3RlZBgEIAEoCCJMChlCbHVldG9vdGhDb25uZWN0aW9uU3RhdHVzEgsKA3BpbhgBIAEoDRIMCgRyc3NpGAIgASgFEhQKDGlzX2Nvbm5lY3RlZBgDIAEoCCI8ChZTZXJpYWxDb25uZWN0aW9uU3RhdHVzEgwKBGJhdWQYASABKA0SFAoMaXNfY29ubmVjdGVkGAIgASgIQmYKFG9yZy5tZXNodGFzdGljLnByb3RvQhBDb25uU3RhdHVzUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", + ); /** * @generated from message meshtastic.DeviceConnectionStatus */ -export type DeviceConnectionStatus = Message<"meshtastic.DeviceConnectionStatus"> & { - /** - * - * WiFi Status - * - * @generated from field: optional meshtastic.WifiConnectionStatus wifi = 1; - */ - wifi?: WifiConnectionStatus | undefined; - - /** - * - * WiFi Status - * - * @generated from field: optional meshtastic.EthernetConnectionStatus ethernet = 2; - */ - ethernet?: EthernetConnectionStatus | undefined; - - /** - * - * Bluetooth Status - * - * @generated from field: optional meshtastic.BluetoothConnectionStatus bluetooth = 3; - */ - bluetooth?: BluetoothConnectionStatus | undefined; - - /** - * - * Serial Status - * - * @generated from field: optional meshtastic.SerialConnectionStatus serial = 4; - */ - serial?: SerialConnectionStatus | undefined; -}; +export type DeviceConnectionStatus = + Message<"meshtastic.DeviceConnectionStatus"> & { + /** + * + * WiFi Status + * + * @generated from field: optional meshtastic.WifiConnectionStatus wifi = 1; + */ + wifi?: WifiConnectionStatus | undefined; + + /** + * + * WiFi Status + * + * @generated from field: optional meshtastic.EthernetConnectionStatus ethernet = 2; + */ + ethernet?: EthernetConnectionStatus | undefined; + + /** + * + * Bluetooth Status + * + * @generated from field: optional meshtastic.BluetoothConnectionStatus bluetooth = 3; + */ + bluetooth?: BluetoothConnectionStatus | undefined; + + /** + * + * Serial Status + * + * @generated from field: optional meshtastic.SerialConnectionStatus serial = 4; + */ + serial?: SerialConnectionStatus | undefined; + }; /** * Describes the message meshtastic.DeviceConnectionStatus. * Use `create(DeviceConnectionStatusSchema)` to create a new message. */ -export const DeviceConnectionStatusSchema: GenMessage = /*@__PURE__*/ +export const DeviceConnectionStatusSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_connection_status, 0); /** @@ -62,37 +65,38 @@ export const DeviceConnectionStatusSchema: GenMessage = * * @generated from message meshtastic.WifiConnectionStatus */ -export type WifiConnectionStatus = Message<"meshtastic.WifiConnectionStatus"> & { - /** - * - * Connection status - * - * @generated from field: meshtastic.NetworkConnectionStatus status = 1; - */ - status?: NetworkConnectionStatus | undefined; - - /** - * - * WiFi access point SSID - * - * @generated from field: string ssid = 2; - */ - ssid: string; - - /** - * - * RSSI of wireless connection - * - * @generated from field: int32 rssi = 3; - */ - rssi: number; -}; +export type WifiConnectionStatus = + Message<"meshtastic.WifiConnectionStatus"> & { + /** + * + * Connection status + * + * @generated from field: meshtastic.NetworkConnectionStatus status = 1; + */ + status?: NetworkConnectionStatus | undefined; + + /** + * + * WiFi access point SSID + * + * @generated from field: string ssid = 2; + */ + ssid: string; + + /** + * + * RSSI of wireless connection + * + * @generated from field: int32 rssi = 3; + */ + rssi: number; + }; /** * Describes the message meshtastic.WifiConnectionStatus. * Use `create(WifiConnectionStatusSchema)` to create a new message. */ -export const WifiConnectionStatusSchema: GenMessage = /*@__PURE__*/ +export const WifiConnectionStatusSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_connection_status, 1); /** @@ -101,21 +105,22 @@ export const WifiConnectionStatusSchema: GenMessage = /*@_ * * @generated from message meshtastic.EthernetConnectionStatus */ -export type EthernetConnectionStatus = Message<"meshtastic.EthernetConnectionStatus"> & { - /** - * - * Connection status - * - * @generated from field: meshtastic.NetworkConnectionStatus status = 1; - */ - status?: NetworkConnectionStatus | undefined; -}; +export type EthernetConnectionStatus = + Message<"meshtastic.EthernetConnectionStatus"> & { + /** + * + * Connection status + * + * @generated from field: meshtastic.NetworkConnectionStatus status = 1; + */ + status?: NetworkConnectionStatus | undefined; + }; /** * Describes the message meshtastic.EthernetConnectionStatus. * Use `create(EthernetConnectionStatusSchema)` to create a new message. */ -export const EthernetConnectionStatusSchema: GenMessage = /*@__PURE__*/ +export const EthernetConnectionStatusSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_connection_status, 2); /** @@ -124,45 +129,46 @@ export const EthernetConnectionStatusSchema: GenMessage & { - /** - * - * IP address of device - * - * @generated from field: fixed32 ip_address = 1; - */ - ipAddress: number; - - /** - * - * Whether the device has an active connection or not - * - * @generated from field: bool is_connected = 2; - */ - isConnected: boolean; - - /** - * - * Whether the device has an active connection to an MQTT broker or not - * - * @generated from field: bool is_mqtt_connected = 3; - */ - isMqttConnected: boolean; - - /** - * - * Whether the device is actively remote syslogging or not - * - * @generated from field: bool is_syslog_connected = 4; - */ - isSyslogConnected: boolean; -}; +export type NetworkConnectionStatus = + Message<"meshtastic.NetworkConnectionStatus"> & { + /** + * + * IP address of device + * + * @generated from field: fixed32 ip_address = 1; + */ + ipAddress: number; + + /** + * + * Whether the device has an active connection or not + * + * @generated from field: bool is_connected = 2; + */ + isConnected: boolean; + + /** + * + * Whether the device has an active connection to an MQTT broker or not + * + * @generated from field: bool is_mqtt_connected = 3; + */ + isMqttConnected: boolean; + + /** + * + * Whether the device is actively remote syslogging or not + * + * @generated from field: bool is_syslog_connected = 4; + */ + isSyslogConnected: boolean; + }; /** * Describes the message meshtastic.NetworkConnectionStatus. * Use `create(NetworkConnectionStatusSchema)` to create a new message. */ -export const NetworkConnectionStatusSchema: GenMessage = /*@__PURE__*/ +export const NetworkConnectionStatusSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_connection_status, 3); /** @@ -171,37 +177,38 @@ export const NetworkConnectionStatusSchema: GenMessage * * @generated from message meshtastic.BluetoothConnectionStatus */ -export type BluetoothConnectionStatus = Message<"meshtastic.BluetoothConnectionStatus"> & { - /** - * - * The pairing PIN for bluetooth - * - * @generated from field: uint32 pin = 1; - */ - pin: number; - - /** - * - * RSSI of bluetooth connection - * - * @generated from field: int32 rssi = 2; - */ - rssi: number; - - /** - * - * Whether the device has an active connection or not - * - * @generated from field: bool is_connected = 3; - */ - isConnected: boolean; -}; +export type BluetoothConnectionStatus = + Message<"meshtastic.BluetoothConnectionStatus"> & { + /** + * + * The pairing PIN for bluetooth + * + * @generated from field: uint32 pin = 1; + */ + pin: number; + + /** + * + * RSSI of bluetooth connection + * + * @generated from field: int32 rssi = 2; + */ + rssi: number; + + /** + * + * Whether the device has an active connection or not + * + * @generated from field: bool is_connected = 3; + */ + isConnected: boolean; + }; /** * Describes the message meshtastic.BluetoothConnectionStatus. * Use `create(BluetoothConnectionStatusSchema)` to create a new message. */ -export const BluetoothConnectionStatusSchema: GenMessage = /*@__PURE__*/ +export const BluetoothConnectionStatusSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_connection_status, 4); /** @@ -210,28 +217,28 @@ export const BluetoothConnectionStatusSchema: GenMessage & { - /** - * - * Serial baud rate - * - * @generated from field: uint32 baud = 1; - */ - baud: number; - - /** - * - * Whether the device has an active connection or not - * - * @generated from field: bool is_connected = 2; - */ - isConnected: boolean; -}; +export type SerialConnectionStatus = + Message<"meshtastic.SerialConnectionStatus"> & { + /** + * + * Serial baud rate + * + * @generated from field: uint32 baud = 1; + */ + baud: number; + + /** + * + * Whether the device has an active connection or not + * + * @generated from field: bool is_connected = 2; + */ + isConnected: boolean; + }; /** * Describes the message meshtastic.SerialConnectionStatus. * Use `create(SerialConnectionStatusSchema)` to create a new message. */ -export const SerialConnectionStatusSchema: GenMessage = /*@__PURE__*/ +export const SerialConnectionStatusSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_connection_status, 5); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/device_ui_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/device_ui_pb.ts index 20fe43447..22e8d692d 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/device_ui_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/device_ui_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/device_ui.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/device_ui.proto. */ -export const file_meshtastic_device_ui: GenFile = /*@__PURE__*/ - fileDesc("ChptZXNodGFzdGljL2RldmljZV91aS5wcm90bxIKbWVzaHRhc3RpYyLABQoORGV2aWNlVUlDb25maWcSDwoHdmVyc2lvbhgBIAEoDRIZChFzY3JlZW5fYnJpZ2h0bmVzcxgCIAEoDRIWCg5zY3JlZW5fdGltZW91dBgDIAEoDRITCgtzY3JlZW5fbG9jaxgEIAEoCBIVCg1zZXR0aW5nc19sb2NrGAUgASgIEhAKCHBpbl9jb2RlGAYgASgNEiAKBXRoZW1lGAcgASgOMhEubWVzaHRhc3RpYy5UaGVtZRIVCg1hbGVydF9lbmFibGVkGAggASgIEhYKDmJhbm5lcl9lbmFibGVkGAkgASgIEhQKDHJpbmdfdG9uZV9pZBgKIAEoDRImCghsYW5ndWFnZRgLIAEoDjIULm1lc2h0YXN0aWMuTGFuZ3VhZ2USKwoLbm9kZV9maWx0ZXIYDCABKAsyFi5tZXNodGFzdGljLk5vZGVGaWx0ZXISMQoObm9kZV9oaWdobGlnaHQYDSABKAsyGS5tZXNodGFzdGljLk5vZGVIaWdobGlnaHQSGAoQY2FsaWJyYXRpb25fZGF0YRgOIAEoDBIhCghtYXBfZGF0YRgPIAEoCzIPLm1lc2h0YXN0aWMuTWFwEi0KDGNvbXBhc3NfbW9kZRgQIAEoDjIXLm1lc2h0YXN0aWMuQ29tcGFzc01vZGUSGAoQc2NyZWVuX3JnYl9jb2xvchgRIAEoDRIbChNpc19jbG9ja2ZhY2VfYW5hbG9nGBIgASgIEkIKCmdwc19mb3JtYXQYEyABKA4yLi5tZXNodGFzdGljLkRldmljZVVJQ29uZmlnLkdwc0Nvb3JkaW5hdGVGb3JtYXQiVgoTR3BzQ29vcmRpbmF0ZUZvcm1hdBIHCgNERUMQABIHCgNETVMQARIHCgNVVE0QAhIICgRNR1JTEAMSBwoDT0xDEAQSCAoET1NHUhAFEgcKA01MUxAGIqcBCgpOb2RlRmlsdGVyEhYKDnVua25vd25fc3dpdGNoGAEgASgIEhYKDm9mZmxpbmVfc3dpdGNoGAIgASgIEhkKEXB1YmxpY19rZXlfc3dpdGNoGAMgASgIEhEKCWhvcHNfYXdheRgEIAEoBRIXCg9wb3NpdGlvbl9zd2l0Y2gYBSABKAgSEQoJbm9kZV9uYW1lGAYgASgJEg8KB2NoYW5uZWwYByABKAUifgoNTm9kZUhpZ2hsaWdodBITCgtjaGF0X3N3aXRjaBgBIAEoCBIXCg9wb3NpdGlvbl9zd2l0Y2gYAiABKAgSGAoQdGVsZW1ldHJ5X3N3aXRjaBgDIAEoCBISCgppYXFfc3dpdGNoGAQgASgIEhEKCW5vZGVfbmFtZRgFIAEoCSI9CghHZW9Qb2ludBIMCgR6b29tGAEgASgFEhAKCGxhdGl0dWRlGAIgASgFEhEKCWxvbmdpdHVkZRgDIAEoBSJMCgNNYXASIgoEaG9tZRgBIAEoCzIULm1lc2h0YXN0aWMuR2VvUG9pbnQSDQoFc3R5bGUYAiABKAkSEgoKZm9sbG93X2dwcxgDIAEoCCo+CgtDb21wYXNzTW9kZRILCgdEWU5BTUlDEAASDgoKRklYRURfUklORxABEhIKDkZSRUVaRV9IRUFESU5HEAIqJQoFVGhlbWUSCAoEREFSSxAAEgkKBUxJR0hUEAESBwoDUkVEEAIqwAIKCExhbmd1YWdlEgsKB0VOR0xJU0gQABIKCgZGUkVOQ0gQARIKCgZHRVJNQU4QAhILCgdJVEFMSUFOEAMSDgoKUE9SVFVHVUVTRRAEEgsKB1NQQU5JU0gQBRILCgdTV0VESVNIEAYSCwoHRklOTklTSBAHEgoKBlBPTElTSBAIEgsKB1RVUktJU0gQCRILCgdTRVJCSUFOEAoSCwoHUlVTU0lBThALEgkKBURVVENIEAwSCQoFR1JFRUsQDRINCglOT1JXRUdJQU4QDhINCglTTE9WRU5JQU4QDxINCglVS1JBSU5JQU4QEBINCglCVUxHQVJJQU4QERIJCgVDWkVDSBASEgoKBkRBTklTSBATEhYKElNJTVBMSUZJRURfQ0hJTkVTRRAeEhcKE1RSQURJVElPTkFMX0NISU5FU0UQH0JkChRvcmcubWVzaHRhc3RpYy5wcm90b0IORGV2aWNlVUlQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"); +export const file_meshtastic_device_ui: GenFile /*@__PURE__*/ = fileDesc( + "ChptZXNodGFzdGljL2RldmljZV91aS5wcm90bxIKbWVzaHRhc3RpYyLABQoORGV2aWNlVUlDb25maWcSDwoHdmVyc2lvbhgBIAEoDRIZChFzY3JlZW5fYnJpZ2h0bmVzcxgCIAEoDRIWCg5zY3JlZW5fdGltZW91dBgDIAEoDRITCgtzY3JlZW5fbG9jaxgEIAEoCBIVCg1zZXR0aW5nc19sb2NrGAUgASgIEhAKCHBpbl9jb2RlGAYgASgNEiAKBXRoZW1lGAcgASgOMhEubWVzaHRhc3RpYy5UaGVtZRIVCg1hbGVydF9lbmFibGVkGAggASgIEhYKDmJhbm5lcl9lbmFibGVkGAkgASgIEhQKDHJpbmdfdG9uZV9pZBgKIAEoDRImCghsYW5ndWFnZRgLIAEoDjIULm1lc2h0YXN0aWMuTGFuZ3VhZ2USKwoLbm9kZV9maWx0ZXIYDCABKAsyFi5tZXNodGFzdGljLk5vZGVGaWx0ZXISMQoObm9kZV9oaWdobGlnaHQYDSABKAsyGS5tZXNodGFzdGljLk5vZGVIaWdobGlnaHQSGAoQY2FsaWJyYXRpb25fZGF0YRgOIAEoDBIhCghtYXBfZGF0YRgPIAEoCzIPLm1lc2h0YXN0aWMuTWFwEi0KDGNvbXBhc3NfbW9kZRgQIAEoDjIXLm1lc2h0YXN0aWMuQ29tcGFzc01vZGUSGAoQc2NyZWVuX3JnYl9jb2xvchgRIAEoDRIbChNpc19jbG9ja2ZhY2VfYW5hbG9nGBIgASgIEkIKCmdwc19mb3JtYXQYEyABKA4yLi5tZXNodGFzdGljLkRldmljZVVJQ29uZmlnLkdwc0Nvb3JkaW5hdGVGb3JtYXQiVgoTR3BzQ29vcmRpbmF0ZUZvcm1hdBIHCgNERUMQABIHCgNETVMQARIHCgNVVE0QAhIICgRNR1JTEAMSBwoDT0xDEAQSCAoET1NHUhAFEgcKA01MUxAGIqcBCgpOb2RlRmlsdGVyEhYKDnVua25vd25fc3dpdGNoGAEgASgIEhYKDm9mZmxpbmVfc3dpdGNoGAIgASgIEhkKEXB1YmxpY19rZXlfc3dpdGNoGAMgASgIEhEKCWhvcHNfYXdheRgEIAEoBRIXCg9wb3NpdGlvbl9zd2l0Y2gYBSABKAgSEQoJbm9kZV9uYW1lGAYgASgJEg8KB2NoYW5uZWwYByABKAUifgoNTm9kZUhpZ2hsaWdodBITCgtjaGF0X3N3aXRjaBgBIAEoCBIXCg9wb3NpdGlvbl9zd2l0Y2gYAiABKAgSGAoQdGVsZW1ldHJ5X3N3aXRjaBgDIAEoCBISCgppYXFfc3dpdGNoGAQgASgIEhEKCW5vZGVfbmFtZRgFIAEoCSI9CghHZW9Qb2ludBIMCgR6b29tGAEgASgFEhAKCGxhdGl0dWRlGAIgASgFEhEKCWxvbmdpdHVkZRgDIAEoBSJMCgNNYXASIgoEaG9tZRgBIAEoCzIULm1lc2h0YXN0aWMuR2VvUG9pbnQSDQoFc3R5bGUYAiABKAkSEgoKZm9sbG93X2dwcxgDIAEoCCo+CgtDb21wYXNzTW9kZRILCgdEWU5BTUlDEAASDgoKRklYRURfUklORxABEhIKDkZSRUVaRV9IRUFESU5HEAIqJQoFVGhlbWUSCAoEREFSSxAAEgkKBUxJR0hUEAESBwoDUkVEEAIqwAIKCExhbmd1YWdlEgsKB0VOR0xJU0gQABIKCgZGUkVOQ0gQARIKCgZHRVJNQU4QAhILCgdJVEFMSUFOEAMSDgoKUE9SVFVHVUVTRRAEEgsKB1NQQU5JU0gQBRILCgdTV0VESVNIEAYSCwoHRklOTklTSBAHEgoKBlBPTElTSBAIEgsKB1RVUktJU0gQCRILCgdTRVJCSUFOEAoSCwoHUlVTU0lBThALEgkKBURVVENIEAwSCQoFR1JFRUsQDRINCglOT1JXRUdJQU4QDhINCglTTE9WRU5JQU4QDxINCglVS1JBSU5JQU4QEBINCglCVUxHQVJJQU4QERIJCgVDWkVDSBASEgoKBkRBTklTSBATEhYKElNJTVBMSUZJRURfQ0hJTkVTRRAeEhcKE1RSQURJVElPTkFMX0NISU5FU0UQH0JkChRvcmcubWVzaHRhc3RpYy5wcm90b0IORGV2aWNlVUlQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", +); /** * @generated from message meshtastic.DeviceUIConfig @@ -163,7 +168,7 @@ export type DeviceUIConfig = Message<"meshtastic.DeviceUIConfig"> & { * Describes the message meshtastic.DeviceUIConfig. * Use `create(DeviceUIConfigSchema)` to create a new message. */ -export const DeviceUIConfigSchema: GenMessage = /*@__PURE__*/ +export const DeviceUIConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_device_ui, 0); /** @@ -241,7 +246,7 @@ export enum DeviceUIConfig_GpsCoordinateFormat { /** * Describes the enum meshtastic.DeviceUIConfig.GpsCoordinateFormat. */ -export const DeviceUIConfig_GpsCoordinateFormatSchema: GenEnum = /*@__PURE__*/ +export const DeviceUIConfig_GpsCoordinateFormatSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_device_ui, 0, 0); /** @@ -309,7 +314,7 @@ export type NodeFilter = Message<"meshtastic.NodeFilter"> & { * Describes the message meshtastic.NodeFilter. * Use `create(NodeFilterSchema)` to create a new message. */ -export const NodeFilterSchema: GenMessage = /*@__PURE__*/ +export const NodeFilterSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_device_ui, 1); /** @@ -361,7 +366,7 @@ export type NodeHighlight = Message<"meshtastic.NodeHighlight"> & { * Describes the message meshtastic.NodeHighlight. * Use `create(NodeHighlightSchema)` to create a new message. */ -export const NodeHighlightSchema: GenMessage = /*@__PURE__*/ +export const NodeHighlightSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_device_ui, 2); /** @@ -397,8 +402,10 @@ export type GeoPoint = Message<"meshtastic.GeoPoint"> & { * Describes the message meshtastic.GeoPoint. * Use `create(GeoPointSchema)` to create a new message. */ -export const GeoPointSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_device_ui, 3); +export const GeoPointSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_device_ui, + 3, +); /** * @generated from message meshtastic.Map @@ -433,8 +440,10 @@ export type Map = Message<"meshtastic.Map"> & { * Describes the message meshtastic.Map. * Use `create(MapSchema)` to create a new message. */ -export const MapSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_device_ui, 4); +export const MapSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_device_ui, + 4, +); /** * @generated from enum meshtastic.CompassMode @@ -468,8 +477,10 @@ export enum CompassMode { /** * Describes the enum meshtastic.CompassMode. */ -export const CompassModeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_device_ui, 0); +export const CompassModeSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_device_ui, + 0, +); /** * @generated from enum meshtastic.Theme @@ -503,8 +514,10 @@ export enum Theme { /** * Describes the enum meshtastic.Theme. */ -export const ThemeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_device_ui, 1); +export const ThemeSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_device_ui, + 1, +); /** * @@ -693,6 +706,7 @@ export enum Language { /** * Describes the enum meshtastic.Language. */ -export const LanguageSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_device_ui, 2); - +export const LanguageSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_device_ui, + 2, +); diff --git a/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_legacy_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_legacy_pb.ts index 34a91fb13..638261b8b 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_legacy_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_legacy_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/deviceonly_legacy.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -14,8 +14,11 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/deviceonly_legacy.proto. */ -export const file_meshtastic_deviceonly_legacy: GenFile = /*@__PURE__*/ - fileDesc("CiJtZXNodGFzdGljL2RldmljZW9ubHlfbGVnYWN5LnByb3RvEgptZXNodGFzdGljItwCChNOb2RlSW5mb0xpdGVfTGVnYWN5EgsKA251bRgBIAEoDRIiCgR1c2VyGAIgASgLMhQubWVzaHRhc3RpYy5Vc2VyTGl0ZRIqCghwb3NpdGlvbhgDIAEoCzIYLm1lc2h0YXN0aWMuUG9zaXRpb25MaXRlEgsKA3NuchgEIAEoAhISCgpsYXN0X2hlYXJkGAUgASgHEjEKDmRldmljZV9tZXRyaWNzGAYgASgLMhkubWVzaHRhc3RpYy5EZXZpY2VNZXRyaWNzEg8KB2NoYW5uZWwYByABKA0SEAoIdmlhX21xdHQYCCABKAgSFgoJaG9wc19hd2F5GAkgASgNSACIAQESEwoLaXNfZmF2b3JpdGUYCiABKAgSEgoKaXNfaWdub3JlZBgLIAEoCBIQCghuZXh0X2hvcBgMIAEoDRIQCghiaXRmaWVsZBgNIAEoDUIMCgpfaG9wc19hd2F5IokBChNOb2RlRGF0YWJhc2VfTGVnYWN5Eg8KB3ZlcnNpb24YASABKA0SYQoFbm9kZXMYAiADKAsyHy5tZXNodGFzdGljLk5vZGVJbmZvTGl0ZV9MZWdhY3lCMZI/LpIBK3N0ZDo6dmVjdG9yPG1lc2h0YXN0aWNfTm9kZUluZm9MaXRlX0xlZ2FjeT5CdAoUb3JnLm1lc2h0YXN0aWMucHJvdG9CEERldmljZU9ubHlMZWdhY3laImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAJI/C8IBCDx2ZWN0b3I+YgZwcm90bzM", [file_meshtastic_deviceonly, file_meshtastic_telemetry, file_nanopb]); +export const file_meshtastic_deviceonly_legacy: GenFile /*@__PURE__*/ = + fileDesc( + "CiJtZXNodGFzdGljL2RldmljZW9ubHlfbGVnYWN5LnByb3RvEgptZXNodGFzdGljItwCChNOb2RlSW5mb0xpdGVfTGVnYWN5EgsKA251bRgBIAEoDRIiCgR1c2VyGAIgASgLMhQubWVzaHRhc3RpYy5Vc2VyTGl0ZRIqCghwb3NpdGlvbhgDIAEoCzIYLm1lc2h0YXN0aWMuUG9zaXRpb25MaXRlEgsKA3NuchgEIAEoAhISCgpsYXN0X2hlYXJkGAUgASgHEjEKDmRldmljZV9tZXRyaWNzGAYgASgLMhkubWVzaHRhc3RpYy5EZXZpY2VNZXRyaWNzEg8KB2NoYW5uZWwYByABKA0SEAoIdmlhX21xdHQYCCABKAgSFgoJaG9wc19hd2F5GAkgASgNSACIAQESEwoLaXNfZmF2b3JpdGUYCiABKAgSEgoKaXNfaWdub3JlZBgLIAEoCBIQCghuZXh0X2hvcBgMIAEoDRIQCghiaXRmaWVsZBgNIAEoDUIMCgpfaG9wc19hd2F5IokBChNOb2RlRGF0YWJhc2VfTGVnYWN5Eg8KB3ZlcnNpb24YASABKA0SYQoFbm9kZXMYAiADKAsyHy5tZXNodGFzdGljLk5vZGVJbmZvTGl0ZV9MZWdhY3lCMZI/LpIBK3N0ZDo6dmVjdG9yPG1lc2h0YXN0aWNfTm9kZUluZm9MaXRlX0xlZ2FjeT5CdAoUb3JnLm1lc2h0YXN0aWMucHJvdG9CEERldmljZU9ubHlMZWdhY3laImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAJI/C8IBCDx2ZWN0b3I+YgZwcm90bzM", + [file_meshtastic_deviceonly, file_meshtastic_telemetry, file_nanopb], + ); /** * @@ -101,7 +104,7 @@ export type NodeInfoLite_Legacy = Message<"meshtastic.NodeInfoLite_Legacy"> & { * Describes the message meshtastic.NodeInfoLite_Legacy. * Use `create(NodeInfoLite_LegacySchema)` to create a new message. */ -export const NodeInfoLite_LegacySchema: GenMessage = /*@__PURE__*/ +export const NodeInfoLite_LegacySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly_legacy, 0); /** @@ -127,6 +130,5 @@ export type NodeDatabase_Legacy = Message<"meshtastic.NodeDatabase_Legacy"> & { * Describes the message meshtastic.NodeDatabase_Legacy. * Use `create(NodeDatabase_LegacySchema)` to create a new message. */ -export const NodeDatabase_LegacySchema: GenMessage = /*@__PURE__*/ +export const NodeDatabase_LegacySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly_legacy, 1); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_pb.ts index 9707782ba..62f7855f8 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/deviceonly_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/deviceonly.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -10,7 +10,15 @@ import type { Config_DeviceConfig_Role } from "./config_pb"; import { file_meshtastic_config } from "./config_pb"; import type { LocalConfig, LocalModuleConfig } from "./localonly_pb"; import { file_meshtastic_localonly } from "./localonly_pb"; -import type { HardwareModel, MeshPacket, MyNodeInfo, NodeRemoteHardwarePin, Position_LocSource, StatusMessage, User } from "./mesh_pb"; +import type { + HardwareModel, + MeshPacket, + MyNodeInfo, + NodeRemoteHardwarePin, + Position_LocSource, + StatusMessage, + User, +} from "./mesh_pb"; import { file_meshtastic_mesh } from "./mesh_pb"; import type { DeviceMetrics, EnvironmentMetrics } from "./telemetry_pb"; import { file_meshtastic_telemetry } from "./telemetry_pb"; @@ -20,8 +28,17 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/deviceonly.proto. */ -export const file_meshtastic_deviceonly: GenFile = /*@__PURE__*/ - fileDesc("ChttZXNodGFzdGljL2RldmljZW9ubHkucHJvdG8SCm1lc2h0YXN0aWMiqAEKDFBvc2l0aW9uTGl0ZRISCgpsYXRpdHVkZV9pGAEgASgPEhMKC2xvbmdpdHVkZV9pGAIgASgPEhAKCGFsdGl0dWRlGAMgASgFEgwKBHRpbWUYBCABKAcSNwoPbG9jYXRpb25fc291cmNlGAUgASgOMh4ubWVzaHRhc3RpYy5Qb3NpdGlvbi5Mb2NTb3VyY2USFgoOcHJlY2lzaW9uX2JpdHMYBiABKA0iggIKCFVzZXJMaXRlEhMKB21hY2FkZHIYASABKAxCAhgBEhEKCWxvbmdfbmFtZRgCIAEoCRISCgpzaG9ydF9uYW1lGAMgASgJEisKCGh3X21vZGVsGAQgASgOMhkubWVzaHRhc3RpYy5IYXJkd2FyZU1vZGVsEhMKC2lzX2xpY2Vuc2VkGAUgASgIEjIKBHJvbGUYBiABKA4yJC5tZXNodGFzdGljLkNvbmZpZy5EZXZpY2VDb25maWcuUm9sZRISCgpwdWJsaWNfa2V5GAcgASgMEhwKD2lzX3VubWVzc2FnYWJsZRgJIAEoCEgAiAEBQhIKEF9pc191bm1lc3NhZ2FibGUiqgMKDE5vZGVJbmZvTGl0ZRILCgNudW0YASABKA0SCwoDc25yGAQgASgCEhIKCmxhc3RfaGVhcmQYBSABKAcSDwoHY2hhbm5lbBgHIAEoDRIWCglob3BzX2F3YXkYCSABKA1IAIgBARIQCghuZXh0X2hvcBgMIAEoDRIQCghiaXRmaWVsZBgNIAEoDRIRCglsb25nX25hbWUYDiABKAkSEgoKc2hvcnRfbmFtZRgPIAEoCRIrCghod19tb2RlbBgQIAEoDjIZLm1lc2h0YXN0aWMuSGFyZHdhcmVNb2RlbBIyCgRyb2xlGBEgASgOMiQubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnLlJvbGUSEgoKcHVibGljX2tleRgSIAEoDBIOCgZzbnJfcTQYEyABKBFCDAoKX2hvcHNfYXdheUoECAIQA0oECAMQBEoECAYQB0oECAgQCUoECAoQC0oECAsQDFIEdXNlclIIcG9zaXRpb25SDmRldmljZV9tZXRyaWNzUgh2aWFfbXF0dFILaXNfZmF2b3JpdGVSCmlzX2lnbm9yZWQi6wIKC0RldmljZVN0YXRlEicKB215X25vZGUYAiABKAsyFi5tZXNodGFzdGljLk15Tm9kZUluZm8SHwoFb3duZXIYAyABKAsyEC5tZXNodGFzdGljLlVzZXISLQoNcmVjZWl2ZV9xdWV1ZRgFIAMoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBIPCgd2ZXJzaW9uGAggASgNEi8KD3J4X3RleHRfbWVzc2FnZRgHIAEoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBITCgdub19zYXZlGAkgASgIQgIYARIZCg1kaWRfZ3BzX3Jlc2V0GAsgASgIQgIYARIrCgtyeF93YXlwb2ludBgMIAEoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBJEChlub2RlX3JlbW90ZV9oYXJkd2FyZV9waW5zGA0gAygLMiEubWVzaHRhc3RpYy5Ob2RlUmVtb3RlSGFyZHdhcmVQaW4iTAoRTm9kZVBvc2l0aW9uRW50cnkSCwoDbnVtGAEgASgNEioKCHBvc2l0aW9uGAIgASgLMhgubWVzaHRhc3RpYy5Qb3NpdGlvbkxpdGUiVAoSTm9kZVRlbGVtZXRyeUVudHJ5EgsKA251bRgBIAEoDRIxCg5kZXZpY2VfbWV0cmljcxgCIAEoCzIZLm1lc2h0YXN0aWMuRGV2aWNlTWV0cmljcyJgChROb2RlRW52aXJvbm1lbnRFbnRyeRILCgNudW0YASABKA0SOwoTZW52aXJvbm1lbnRfbWV0cmljcxgCIAEoCzIeLm1lc2h0YXN0aWMuRW52aXJvbm1lbnRNZXRyaWNzIkkKD05vZGVTdGF0dXNFbnRyeRILCgNudW0YASABKA0SKQoGc3RhdHVzGAIgASgLMhkubWVzaHRhc3RpYy5TdGF0dXNNZXNzYWdlIoMECgxOb2RlRGF0YWJhc2USDwoHdmVyc2lvbhgBIAEoDRJTCgVub2RlcxgCIAMoCzIYLm1lc2h0YXN0aWMuTm9kZUluZm9MaXRlQiqSPyeSASRzdGQ6OnZlY3RvcjxtZXNodGFzdGljX05vZGVJbmZvTGl0ZT4SYQoJcG9zaXRpb25zGAMgAygLMh0ubWVzaHRhc3RpYy5Ob2RlUG9zaXRpb25FbnRyeUIvkj8skgEpc3RkOjp2ZWN0b3I8bWVzaHRhc3RpY19Ob2RlUG9zaXRpb25FbnRyeT4SYwoJdGVsZW1ldHJ5GAQgAygLMh4ubWVzaHRhc3RpYy5Ob2RlVGVsZW1ldHJ5RW50cnlCMJI/LZIBKnN0ZDo6dmVjdG9yPG1lc2h0YXN0aWNfTm9kZVRlbGVtZXRyeUVudHJ5PhJaCgZzdGF0dXMYBSADKAsyGy5tZXNodGFzdGljLk5vZGVTdGF0dXNFbnRyeUItkj8qkgEnc3RkOjp2ZWN0b3I8bWVzaHRhc3RpY19Ob2RlU3RhdHVzRW50cnk+EmkKC2Vudmlyb25tZW50GAYgAygLMiAubWVzaHRhc3RpYy5Ob2RlRW52aXJvbm1lbnRFbnRyeUIykj8vkgEsc3RkOjp2ZWN0b3I8bWVzaHRhc3RpY19Ob2RlRW52aXJvbm1lbnRFbnRyeT4iRQoLQ2hhbm5lbEZpbGUSJQoIY2hhbm5lbHMYASADKAsyEy5tZXNodGFzdGljLkNoYW5uZWwSDwoHdmVyc2lvbhgCIAEoDSLiAQoRQmFja3VwUHJlZmVyZW5jZXMSDwoHdmVyc2lvbhgBIAEoDRIRCgl0aW1lc3RhbXAYAiABKAcSJwoGY29uZmlnGAMgASgLMhcubWVzaHRhc3RpYy5Mb2NhbENvbmZpZxI0Cg1tb2R1bGVfY29uZmlnGAQgASgLMh0ubWVzaHRhc3RpYy5Mb2NhbE1vZHVsZUNvbmZpZxIpCghjaGFubmVscxgFIAEoCzIXLm1lc2h0YXN0aWMuQ2hhbm5lbEZpbGUSHwoFb3duZXIYBiABKAsyEC5tZXNodGFzdGljLlVzZXJCbgoUb3JnLm1lc2h0YXN0aWMucHJvdG9CCkRldmljZU9ubHlaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAJI/C8IBCDx2ZWN0b3I+YgZwcm90bzM", [file_meshtastic_channel, file_meshtastic_config, file_meshtastic_localonly, file_meshtastic_mesh, file_meshtastic_telemetry, file_nanopb]); +export const file_meshtastic_deviceonly: GenFile /*@__PURE__*/ = fileDesc( + "ChttZXNodGFzdGljL2RldmljZW9ubHkucHJvdG8SCm1lc2h0YXN0aWMiqAEKDFBvc2l0aW9uTGl0ZRISCgpsYXRpdHVkZV9pGAEgASgPEhMKC2xvbmdpdHVkZV9pGAIgASgPEhAKCGFsdGl0dWRlGAMgASgFEgwKBHRpbWUYBCABKAcSNwoPbG9jYXRpb25fc291cmNlGAUgASgOMh4ubWVzaHRhc3RpYy5Qb3NpdGlvbi5Mb2NTb3VyY2USFgoOcHJlY2lzaW9uX2JpdHMYBiABKA0iggIKCFVzZXJMaXRlEhMKB21hY2FkZHIYASABKAxCAhgBEhEKCWxvbmdfbmFtZRgCIAEoCRISCgpzaG9ydF9uYW1lGAMgASgJEisKCGh3X21vZGVsGAQgASgOMhkubWVzaHRhc3RpYy5IYXJkd2FyZU1vZGVsEhMKC2lzX2xpY2Vuc2VkGAUgASgIEjIKBHJvbGUYBiABKA4yJC5tZXNodGFzdGljLkNvbmZpZy5EZXZpY2VDb25maWcuUm9sZRISCgpwdWJsaWNfa2V5GAcgASgMEhwKD2lzX3VubWVzc2FnYWJsZRgJIAEoCEgAiAEBQhIKEF9pc191bm1lc3NhZ2FibGUiqgMKDE5vZGVJbmZvTGl0ZRILCgNudW0YASABKA0SCwoDc25yGAQgASgCEhIKCmxhc3RfaGVhcmQYBSABKAcSDwoHY2hhbm5lbBgHIAEoDRIWCglob3BzX2F3YXkYCSABKA1IAIgBARIQCghuZXh0X2hvcBgMIAEoDRIQCghiaXRmaWVsZBgNIAEoDRIRCglsb25nX25hbWUYDiABKAkSEgoKc2hvcnRfbmFtZRgPIAEoCRIrCghod19tb2RlbBgQIAEoDjIZLm1lc2h0YXN0aWMuSGFyZHdhcmVNb2RlbBIyCgRyb2xlGBEgASgOMiQubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnLlJvbGUSEgoKcHVibGljX2tleRgSIAEoDBIOCgZzbnJfcTQYEyABKBFCDAoKX2hvcHNfYXdheUoECAIQA0oECAMQBEoECAYQB0oECAgQCUoECAoQC0oECAsQDFIEdXNlclIIcG9zaXRpb25SDmRldmljZV9tZXRyaWNzUgh2aWFfbXF0dFILaXNfZmF2b3JpdGVSCmlzX2lnbm9yZWQi6wIKC0RldmljZVN0YXRlEicKB215X25vZGUYAiABKAsyFi5tZXNodGFzdGljLk15Tm9kZUluZm8SHwoFb3duZXIYAyABKAsyEC5tZXNodGFzdGljLlVzZXISLQoNcmVjZWl2ZV9xdWV1ZRgFIAMoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBIPCgd2ZXJzaW9uGAggASgNEi8KD3J4X3RleHRfbWVzc2FnZRgHIAEoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBITCgdub19zYXZlGAkgASgIQgIYARIZCg1kaWRfZ3BzX3Jlc2V0GAsgASgIQgIYARIrCgtyeF93YXlwb2ludBgMIAEoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBJEChlub2RlX3JlbW90ZV9oYXJkd2FyZV9waW5zGA0gAygLMiEubWVzaHRhc3RpYy5Ob2RlUmVtb3RlSGFyZHdhcmVQaW4iTAoRTm9kZVBvc2l0aW9uRW50cnkSCwoDbnVtGAEgASgNEioKCHBvc2l0aW9uGAIgASgLMhgubWVzaHRhc3RpYy5Qb3NpdGlvbkxpdGUiVAoSTm9kZVRlbGVtZXRyeUVudHJ5EgsKA251bRgBIAEoDRIxCg5kZXZpY2VfbWV0cmljcxgCIAEoCzIZLm1lc2h0YXN0aWMuRGV2aWNlTWV0cmljcyJgChROb2RlRW52aXJvbm1lbnRFbnRyeRILCgNudW0YASABKA0SOwoTZW52aXJvbm1lbnRfbWV0cmljcxgCIAEoCzIeLm1lc2h0YXN0aWMuRW52aXJvbm1lbnRNZXRyaWNzIkkKD05vZGVTdGF0dXNFbnRyeRILCgNudW0YASABKA0SKQoGc3RhdHVzGAIgASgLMhkubWVzaHRhc3RpYy5TdGF0dXNNZXNzYWdlIoMECgxOb2RlRGF0YWJhc2USDwoHdmVyc2lvbhgBIAEoDRJTCgVub2RlcxgCIAMoCzIYLm1lc2h0YXN0aWMuTm9kZUluZm9MaXRlQiqSPyeSASRzdGQ6OnZlY3RvcjxtZXNodGFzdGljX05vZGVJbmZvTGl0ZT4SYQoJcG9zaXRpb25zGAMgAygLMh0ubWVzaHRhc3RpYy5Ob2RlUG9zaXRpb25FbnRyeUIvkj8skgEpc3RkOjp2ZWN0b3I8bWVzaHRhc3RpY19Ob2RlUG9zaXRpb25FbnRyeT4SYwoJdGVsZW1ldHJ5GAQgAygLMh4ubWVzaHRhc3RpYy5Ob2RlVGVsZW1ldHJ5RW50cnlCMJI/LZIBKnN0ZDo6dmVjdG9yPG1lc2h0YXN0aWNfTm9kZVRlbGVtZXRyeUVudHJ5PhJaCgZzdGF0dXMYBSADKAsyGy5tZXNodGFzdGljLk5vZGVTdGF0dXNFbnRyeUItkj8qkgEnc3RkOjp2ZWN0b3I8bWVzaHRhc3RpY19Ob2RlU3RhdHVzRW50cnk+EmkKC2Vudmlyb25tZW50GAYgAygLMiAubWVzaHRhc3RpYy5Ob2RlRW52aXJvbm1lbnRFbnRyeUIykj8vkgEsc3RkOjp2ZWN0b3I8bWVzaHRhc3RpY19Ob2RlRW52aXJvbm1lbnRFbnRyeT4iRQoLQ2hhbm5lbEZpbGUSJQoIY2hhbm5lbHMYASADKAsyEy5tZXNodGFzdGljLkNoYW5uZWwSDwoHdmVyc2lvbhgCIAEoDSLiAQoRQmFja3VwUHJlZmVyZW5jZXMSDwoHdmVyc2lvbhgBIAEoDRIRCgl0aW1lc3RhbXAYAiABKAcSJwoGY29uZmlnGAMgASgLMhcubWVzaHRhc3RpYy5Mb2NhbENvbmZpZxI0Cg1tb2R1bGVfY29uZmlnGAQgASgLMh0ubWVzaHRhc3RpYy5Mb2NhbE1vZHVsZUNvbmZpZxIpCghjaGFubmVscxgFIAEoCzIXLm1lc2h0YXN0aWMuQ2hhbm5lbEZpbGUSHwoFb3duZXIYBiABKAsyEC5tZXNodGFzdGljLlVzZXJCbgoUb3JnLm1lc2h0YXN0aWMucHJvdG9CCkRldmljZU9ubHlaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAJI/C8IBCDx2ZWN0b3I+YgZwcm90bzM", + [ + file_meshtastic_channel, + file_meshtastic_config, + file_meshtastic_localonly, + file_meshtastic_mesh, + file_meshtastic_telemetry, + file_nanopb, + ], +); /** * @@ -88,7 +105,7 @@ export type PositionLite = Message<"meshtastic.PositionLite"> & { * Describes the message meshtastic.PositionLite. * Use `create(PositionLiteSchema)` to create a new message. */ -export const PositionLiteSchema: GenMessage = /*@__PURE__*/ +export const PositionLiteSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 0); /** @@ -172,8 +189,10 @@ export type UserLite = Message<"meshtastic.UserLite"> & { * Describes the message meshtastic.UserLite. * Use `create(UserLiteSchema)` to create a new message. */ -export const UserLiteSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_deviceonly, 1); +export const UserLiteSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_deviceonly, + 1, +); /** * @generated from message meshtastic.NodeInfoLite @@ -292,7 +311,7 @@ export type NodeInfoLite = Message<"meshtastic.NodeInfoLite"> & { * Describes the message meshtastic.NodeInfoLite. * Use `create(NodeInfoLiteSchema)` to create a new message. */ -export const NodeInfoLiteSchema: GenMessage = /*@__PURE__*/ +export const NodeInfoLiteSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 2); /** @@ -394,7 +413,7 @@ export type DeviceState = Message<"meshtastic.DeviceState"> & { * Describes the message meshtastic.DeviceState. * Use `create(DeviceStateSchema)` to create a new message. */ -export const DeviceStateSchema: GenMessage = /*@__PURE__*/ +export const DeviceStateSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 3); /** @@ -416,7 +435,7 @@ export type NodePositionEntry = Message<"meshtastic.NodePositionEntry"> & { * Describes the message meshtastic.NodePositionEntry. * Use `create(NodePositionEntrySchema)` to create a new message. */ -export const NodePositionEntrySchema: GenMessage = /*@__PURE__*/ +export const NodePositionEntrySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 4); /** @@ -438,29 +457,30 @@ export type NodeTelemetryEntry = Message<"meshtastic.NodeTelemetryEntry"> & { * Describes the message meshtastic.NodeTelemetryEntry. * Use `create(NodeTelemetryEntrySchema)` to create a new message. */ -export const NodeTelemetryEntrySchema: GenMessage = /*@__PURE__*/ +export const NodeTelemetryEntrySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 5); /** * @generated from message meshtastic.NodeEnvironmentEntry */ -export type NodeEnvironmentEntry = Message<"meshtastic.NodeEnvironmentEntry"> & { - /** - * @generated from field: uint32 num = 1; - */ - num: number; - - /** - * @generated from field: meshtastic.EnvironmentMetrics environment_metrics = 2; - */ - environmentMetrics?: EnvironmentMetrics | undefined; -}; +export type NodeEnvironmentEntry = + Message<"meshtastic.NodeEnvironmentEntry"> & { + /** + * @generated from field: uint32 num = 1; + */ + num: number; + + /** + * @generated from field: meshtastic.EnvironmentMetrics environment_metrics = 2; + */ + environmentMetrics?: EnvironmentMetrics | undefined; + }; /** * Describes the message meshtastic.NodeEnvironmentEntry. * Use `create(NodeEnvironmentEntrySchema)` to create a new message. */ -export const NodeEnvironmentEntrySchema: GenMessage = /*@__PURE__*/ +export const NodeEnvironmentEntrySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 6); /** @@ -482,7 +502,7 @@ export type NodeStatusEntry = Message<"meshtastic.NodeStatusEntry"> & { * Describes the message meshtastic.NodeStatusEntry. * Use `create(NodeStatusEntrySchema)` to create a new message. */ -export const NodeStatusEntrySchema: GenMessage = /*@__PURE__*/ +export const NodeStatusEntrySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 7); /** @@ -535,7 +555,7 @@ export type NodeDatabase = Message<"meshtastic.NodeDatabase"> & { * Describes the message meshtastic.NodeDatabase. * Use `create(NodeDatabaseSchema)` to create a new message. */ -export const NodeDatabaseSchema: GenMessage = /*@__PURE__*/ +export const NodeDatabaseSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 8); /** @@ -568,7 +588,7 @@ export type ChannelFile = Message<"meshtastic.ChannelFile"> & { * Describes the message meshtastic.ChannelFile. * Use `create(ChannelFileSchema)` to create a new message. */ -export const ChannelFileSchema: GenMessage = /*@__PURE__*/ +export const ChannelFileSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 9); /** @@ -631,6 +651,5 @@ export type BackupPreferences = Message<"meshtastic.BackupPreferences"> & { * Describes the message meshtastic.BackupPreferences. * Use `create(BackupPreferencesSchema)` to create a new message. */ -export const BackupPreferencesSchema: GenMessage = /*@__PURE__*/ +export const BackupPreferencesSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_deviceonly, 10); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/interdevice_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/interdevice_pb.ts index 1e17a12d9..1bdd3c817 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/interdevice_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/interdevice_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/interdevice.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/interdevice.proto. */ -export const file_meshtastic_interdevice: GenFile = /*@__PURE__*/ - fileDesc("ChxtZXNodGFzdGljL2ludGVyZGV2aWNlLnByb3RvEgptZXNodGFzdGljImoKClNlbnNvckRhdGESJQoEdHlwZRgBIAEoDjIXLm1lc2h0YXN0aWMuTWVzc2FnZVR5cGUSFQoLZmxvYXRfdmFsdWUYAiABKAJIABIWCgx1aW50MzJfdmFsdWUYAyABKA1IAEIGCgRkYXRhIlYKEkludGVyZGV2aWNlTWVzc2FnZRIOCgRubWVhGAEgASgJSAASKAoGc2Vuc29yGAIgASgLMhYubWVzaHRhc3RpYy5TZW5zb3JEYXRhSABCBgoEZGF0YSrVAQoLTWVzc2FnZVR5cGUSBwoDQUNLEAASFQoQQ09MTEVDVF9JTlRFUlZBTBCgARIMCgdCRUVQX09OEKEBEg0KCEJFRVBfT0ZGEKIBEg0KCFNIVVRET1dOEKMBEg0KCFBPV0VSX09OEKQBEg8KClNDRDQxX1RFTVAQsAESEwoOU0NENDFfSFVNSURJVFkQsQESDgoJU0NENDFfQ08yELIBEg8KCkFIVDIwX1RFTVAQswESEwoOQUhUMjBfSFVNSURJVFkQtAESDwoKVFZPQ19JTkRFWBC1AUJnChRvcmcubWVzaHRhc3RpYy5wcm90b0IRSW50ZXJkZXZpY2VQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"); +export const file_meshtastic_interdevice: GenFile /*@__PURE__*/ = fileDesc( + "ChxtZXNodGFzdGljL2ludGVyZGV2aWNlLnByb3RvEgptZXNodGFzdGljImoKClNlbnNvckRhdGESJQoEdHlwZRgBIAEoDjIXLm1lc2h0YXN0aWMuTWVzc2FnZVR5cGUSFQoLZmxvYXRfdmFsdWUYAiABKAJIABIWCgx1aW50MzJfdmFsdWUYAyABKA1IAEIGCgRkYXRhIlYKEkludGVyZGV2aWNlTWVzc2FnZRIOCgRubWVhGAEgASgJSAASKAoGc2Vuc29yGAIgASgLMhYubWVzaHRhc3RpYy5TZW5zb3JEYXRhSABCBgoEZGF0YSrVAQoLTWVzc2FnZVR5cGUSBwoDQUNLEAASFQoQQ09MTEVDVF9JTlRFUlZBTBCgARIMCgdCRUVQX09OEKEBEg0KCEJFRVBfT0ZGEKIBEg0KCFNIVVRET1dOEKMBEg0KCFBPV0VSX09OEKQBEg8KClNDRDQxX1RFTVAQsAESEwoOU0NENDFfSFVNSURJVFkQsQESDgoJU0NENDFfQ08yELIBEg8KCkFIVDIwX1RFTVAQswESEwoOQUhUMjBfSFVNSURJVFkQtAESDwoKVFZPQ19JTkRFWBC1AUJnChRvcmcubWVzaHRhc3RpYy5wcm90b0IRSW50ZXJkZXZpY2VQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", +); /** * @generated from message meshtastic.SensorData @@ -28,26 +33,29 @@ export type SensorData = Message<"meshtastic.SensorData"> & { * * @generated from oneof meshtastic.SensorData.data */ - data: { - /** - * @generated from field: float float_value = 2; - */ - value: number; - case: "floatValue"; - } | { - /** - * @generated from field: uint32 uint32_value = 3; - */ - value: number; - case: "uint32Value"; - } | { case: undefined; value?: undefined }; + data: + | { + /** + * @generated from field: float float_value = 2; + */ + value: number; + case: "floatValue"; + } + | { + /** + * @generated from field: uint32 uint32_value = 3; + */ + value: number; + case: "uint32Value"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.SensorData. * Use `create(SensorDataSchema)` to create a new message. */ -export const SensorDataSchema: GenMessage = /*@__PURE__*/ +export const SensorDataSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_interdevice, 0); /** @@ -59,26 +67,29 @@ export type InterdeviceMessage = Message<"meshtastic.InterdeviceMessage"> & { * * @generated from oneof meshtastic.InterdeviceMessage.data */ - data: { - /** - * @generated from field: string nmea = 1; - */ - value: string; - case: "nmea"; - } | { - /** - * @generated from field: meshtastic.SensorData sensor = 2; - */ - value: SensorData; - case: "sensor"; - } | { case: undefined; value?: undefined }; + data: + | { + /** + * @generated from field: string nmea = 1; + */ + value: string; + case: "nmea"; + } + | { + /** + * @generated from field: meshtastic.SensorData sensor = 2; + */ + value: SensorData; + case: "sensor"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.InterdeviceMessage. * Use `create(InterdeviceMessageSchema)` to create a new message. */ -export const InterdeviceMessageSchema: GenMessage = /*@__PURE__*/ +export const InterdeviceMessageSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_interdevice, 1); /** @@ -155,6 +166,7 @@ export enum MessageType { /** * Describes the enum meshtastic.MessageType. */ -export const MessageTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_interdevice, 0); - +export const MessageTypeSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_interdevice, + 0, +); diff --git a/packages/protobufs/packages/ts/dist/meshtastic/localonly_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/localonly_pb.ts index fceda7044..7f200addb 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/localonly_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/localonly_pb.ts @@ -1,20 +1,48 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/localonly.proto (package meshtastic, syntax proto3) /* eslint-disable */ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Config_BluetoothConfig, Config_DeviceConfig, Config_DisplayConfig, Config_LoRaConfig, Config_NetworkConfig, Config_PositionConfig, Config_PowerConfig, Config_SecurityConfig } from "./config_pb"; +import type { + Config_BluetoothConfig, + Config_DeviceConfig, + Config_DisplayConfig, + Config_LoRaConfig, + Config_NetworkConfig, + Config_PositionConfig, + Config_PowerConfig, + Config_SecurityConfig, +} from "./config_pb"; import { file_meshtastic_config } from "./config_pb"; -import type { ModuleConfig_AmbientLightingConfig, ModuleConfig_AudioConfig, ModuleConfig_CannedMessageConfig, ModuleConfig_DetectionSensorConfig, ModuleConfig_ExternalNotificationConfig, ModuleConfig_MQTTConfig, ModuleConfig_NeighborInfoConfig, ModuleConfig_PaxcounterConfig, ModuleConfig_RangeTestConfig, ModuleConfig_RemoteHardwareConfig, ModuleConfig_SerialConfig, ModuleConfig_StatusMessageConfig, ModuleConfig_StoreForwardConfig, ModuleConfig_TAKConfig, ModuleConfig_TelemetryConfig, ModuleConfig_TrafficManagementConfig } from "./module_config_pb"; +import type { + ModuleConfig_AmbientLightingConfig, + ModuleConfig_AudioConfig, + ModuleConfig_CannedMessageConfig, + ModuleConfig_DetectionSensorConfig, + ModuleConfig_ExternalNotificationConfig, + ModuleConfig_MQTTConfig, + ModuleConfig_NeighborInfoConfig, + ModuleConfig_PaxcounterConfig, + ModuleConfig_RangeTestConfig, + ModuleConfig_RemoteHardwareConfig, + ModuleConfig_SerialConfig, + ModuleConfig_StatusMessageConfig, + ModuleConfig_StoreForwardConfig, + ModuleConfig_TAKConfig, + ModuleConfig_TelemetryConfig, + ModuleConfig_TrafficManagementConfig, +} from "./module_config_pb"; import { file_meshtastic_module_config } from "./module_config_pb"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/localonly.proto. */ -export const file_meshtastic_localonly: GenFile = /*@__PURE__*/ - fileDesc("ChptZXNodGFzdGljL2xvY2Fsb25seS5wcm90bxIKbWVzaHRhc3RpYyKyAwoLTG9jYWxDb25maWcSLwoGZGV2aWNlGAEgASgLMh8ubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnEjMKCHBvc2l0aW9uGAIgASgLMiEubWVzaHRhc3RpYy5Db25maWcuUG9zaXRpb25Db25maWcSLQoFcG93ZXIYAyABKAsyHi5tZXNodGFzdGljLkNvbmZpZy5Qb3dlckNvbmZpZxIxCgduZXR3b3JrGAQgASgLMiAubWVzaHRhc3RpYy5Db25maWcuTmV0d29ya0NvbmZpZxIxCgdkaXNwbGF5GAUgASgLMiAubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZxIrCgRsb3JhGAYgASgLMh0ubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZxI1CglibHVldG9vdGgYByABKAsyIi5tZXNodGFzdGljLkNvbmZpZy5CbHVldG9vdGhDb25maWcSDwoHdmVyc2lvbhgIIAEoDRIzCghzZWN1cml0eRgJIAEoCzIhLm1lc2h0YXN0aWMuQ29uZmlnLlNlY3VyaXR5Q29uZmlnIr8IChFMb2NhbE1vZHVsZUNvbmZpZxIxCgRtcXR0GAEgASgLMiMubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTVFUVENvbmZpZxI1CgZzZXJpYWwYAiABKAsyJS5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5TZXJpYWxDb25maWcSUgoVZXh0ZXJuYWxfbm90aWZpY2F0aW9uGAMgASgLMjMubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuRXh0ZXJuYWxOb3RpZmljYXRpb25Db25maWcSQgoNc3RvcmVfZm9yd2FyZBgEIAEoCzIrLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlN0b3JlRm9yd2FyZENvbmZpZxI8CgpyYW5nZV90ZXN0GAUgASgLMigubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUmFuZ2VUZXN0Q29uZmlnEjsKCXRlbGVtZXRyeRgGIAEoCzIoLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlRlbGVtZXRyeUNvbmZpZxJECg5jYW5uZWRfbWVzc2FnZRgHIAEoCzIsLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkNhbm5lZE1lc3NhZ2VDb25maWcSMwoFYXVkaW8YCSABKAsyJC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5BdWRpb0NvbmZpZxJGCg9yZW1vdGVfaGFyZHdhcmUYCiABKAsyLS5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5SZW1vdGVIYXJkd2FyZUNvbmZpZxJCCg1uZWlnaGJvcl9pbmZvGAsgASgLMisubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTmVpZ2hib3JJbmZvQ29uZmlnEkgKEGFtYmllbnRfbGlnaHRpbmcYDCABKAsyLi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5BbWJpZW50TGlnaHRpbmdDb25maWcSSAoQZGV0ZWN0aW9uX3NlbnNvchgNIAEoCzIuLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkRldGVjdGlvblNlbnNvckNvbmZpZxI9CgpwYXhjb3VudGVyGA4gASgLMikubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUGF4Y291bnRlckNvbmZpZxJDCg1zdGF0dXNtZXNzYWdlGA8gASgLMiwubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuU3RhdHVzTWVzc2FnZUNvbmZpZxJMChJ0cmFmZmljX21hbmFnZW1lbnQYECABKAsyMC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UcmFmZmljTWFuYWdlbWVudENvbmZpZxIvCgN0YWsYESABKAsyIi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UQUtDb25maWcSDwoHdmVyc2lvbhgIIAEoDUJlChRvcmcubWVzaHRhc3RpYy5wcm90b0IPTG9jYWxPbmx5UHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", [file_meshtastic_config, file_meshtastic_module_config]); +export const file_meshtastic_localonly: GenFile /*@__PURE__*/ = fileDesc( + "ChptZXNodGFzdGljL2xvY2Fsb25seS5wcm90bxIKbWVzaHRhc3RpYyKyAwoLTG9jYWxDb25maWcSLwoGZGV2aWNlGAEgASgLMh8ubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnEjMKCHBvc2l0aW9uGAIgASgLMiEubWVzaHRhc3RpYy5Db25maWcuUG9zaXRpb25Db25maWcSLQoFcG93ZXIYAyABKAsyHi5tZXNodGFzdGljLkNvbmZpZy5Qb3dlckNvbmZpZxIxCgduZXR3b3JrGAQgASgLMiAubWVzaHRhc3RpYy5Db25maWcuTmV0d29ya0NvbmZpZxIxCgdkaXNwbGF5GAUgASgLMiAubWVzaHRhc3RpYy5Db25maWcuRGlzcGxheUNvbmZpZxIrCgRsb3JhGAYgASgLMh0ubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZxI1CglibHVldG9vdGgYByABKAsyIi5tZXNodGFzdGljLkNvbmZpZy5CbHVldG9vdGhDb25maWcSDwoHdmVyc2lvbhgIIAEoDRIzCghzZWN1cml0eRgJIAEoCzIhLm1lc2h0YXN0aWMuQ29uZmlnLlNlY3VyaXR5Q29uZmlnIr8IChFMb2NhbE1vZHVsZUNvbmZpZxIxCgRtcXR0GAEgASgLMiMubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTVFUVENvbmZpZxI1CgZzZXJpYWwYAiABKAsyJS5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5TZXJpYWxDb25maWcSUgoVZXh0ZXJuYWxfbm90aWZpY2F0aW9uGAMgASgLMjMubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuRXh0ZXJuYWxOb3RpZmljYXRpb25Db25maWcSQgoNc3RvcmVfZm9yd2FyZBgEIAEoCzIrLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlN0b3JlRm9yd2FyZENvbmZpZxI8CgpyYW5nZV90ZXN0GAUgASgLMigubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUmFuZ2VUZXN0Q29uZmlnEjsKCXRlbGVtZXRyeRgGIAEoCzIoLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlRlbGVtZXRyeUNvbmZpZxJECg5jYW5uZWRfbWVzc2FnZRgHIAEoCzIsLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkNhbm5lZE1lc3NhZ2VDb25maWcSMwoFYXVkaW8YCSABKAsyJC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5BdWRpb0NvbmZpZxJGCg9yZW1vdGVfaGFyZHdhcmUYCiABKAsyLS5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5SZW1vdGVIYXJkd2FyZUNvbmZpZxJCCg1uZWlnaGJvcl9pbmZvGAsgASgLMisubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTmVpZ2hib3JJbmZvQ29uZmlnEkgKEGFtYmllbnRfbGlnaHRpbmcYDCABKAsyLi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5BbWJpZW50TGlnaHRpbmdDb25maWcSSAoQZGV0ZWN0aW9uX3NlbnNvchgNIAEoCzIuLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkRldGVjdGlvblNlbnNvckNvbmZpZxI9CgpwYXhjb3VudGVyGA4gASgLMikubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUGF4Y291bnRlckNvbmZpZxJDCg1zdGF0dXNtZXNzYWdlGA8gASgLMiwubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuU3RhdHVzTWVzc2FnZUNvbmZpZxJMChJ0cmFmZmljX21hbmFnZW1lbnQYECABKAsyMC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UcmFmZmljTWFuYWdlbWVudENvbmZpZxIvCgN0YWsYESABKAsyIi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UQUtDb25maWcSDwoHdmVyc2lvbhgIIAEoDUJlChRvcmcubWVzaHRhc3RpYy5wcm90b0IPTG9jYWxPbmx5UHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", + [file_meshtastic_config, file_meshtastic_module_config], +); /** * @generated from message meshtastic.LocalConfig @@ -99,7 +127,7 @@ export type LocalConfig = Message<"meshtastic.LocalConfig"> & { * Describes the message meshtastic.LocalConfig. * Use `create(LocalConfigSchema)` to create a new message. */ -export const LocalConfigSchema: GenMessage = /*@__PURE__*/ +export const LocalConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_localonly, 0); /** @@ -249,6 +277,5 @@ export type LocalModuleConfig = Message<"meshtastic.LocalModuleConfig"> & { * Describes the message meshtastic.LocalModuleConfig. * Use `create(LocalModuleConfigSchema)` to create a new message. */ -export const LocalModuleConfigSchema: GenMessage = /*@__PURE__*/ +export const LocalModuleConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_localonly, 1); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/mesh_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/mesh_pb.ts index 96681d018..d3b07e65a 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/mesh_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/mesh_pb.ts @@ -1,8 +1,12 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/mesh.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Channel } from "./channel_pb"; import { file_meshtastic_channel } from "./channel_pb"; @@ -23,8 +27,18 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/mesh.proto. */ -export const file_meshtastic_mesh: GenFile = /*@__PURE__*/ - fileDesc("ChVtZXNodGFzdGljL21lc2gucHJvdG8SCm1lc2h0YXN0aWMihwcKCFBvc2l0aW9uEhcKCmxhdGl0dWRlX2kYASABKA9IAIgBARIYCgtsb25naXR1ZGVfaRgCIAEoD0gBiAEBEhUKCGFsdGl0dWRlGAMgASgFSAKIAQESDAoEdGltZRgEIAEoBxI3Cg9sb2NhdGlvbl9zb3VyY2UYBSABKA4yHi5tZXNodGFzdGljLlBvc2l0aW9uLkxvY1NvdXJjZRI3Cg9hbHRpdHVkZV9zb3VyY2UYBiABKA4yHi5tZXNodGFzdGljLlBvc2l0aW9uLkFsdFNvdXJjZRIRCgl0aW1lc3RhbXAYByABKAcSHwoXdGltZXN0YW1wX21pbGxpc19hZGp1c3QYCCABKAUSGQoMYWx0aXR1ZGVfaGFlGAkgASgRSAOIAQESKAobYWx0aXR1ZGVfZ2VvaWRhbF9zZXBhcmF0aW9uGAogASgRSASIAQESDAoEUERPUBgLIAEoDRIMCgRIRE9QGAwgASgNEgwKBFZET1AYDSABKA0SFAoMZ3BzX2FjY3VyYWN5GA4gASgNEhkKDGdyb3VuZF9zcGVlZBgPIAEoDUgFiAEBEhkKDGdyb3VuZF90cmFjaxgQIAEoDUgGiAEBEhMKC2ZpeF9xdWFsaXR5GBEgASgNEhAKCGZpeF90eXBlGBIgASgNEhQKDHNhdHNfaW5fdmlldxgTIAEoDRIRCglzZW5zb3JfaWQYFCABKA0SEwoLbmV4dF91cGRhdGUYFSABKA0SEgoKc2VxX251bWJlchgWIAEoDRIWCg5wcmVjaXNpb25fYml0cxgXIAEoDSJOCglMb2NTb3VyY2USDQoJTE9DX1VOU0VUEAASDgoKTE9DX01BTlVBTBABEhAKDExPQ19JTlRFUk5BTBACEhAKDExPQ19FWFRFUk5BTBADImIKCUFsdFNvdXJjZRINCglBTFRfVU5TRVQQABIOCgpBTFRfTUFOVUFMEAESEAoMQUxUX0lOVEVSTkFMEAISEAoMQUxUX0VYVEVSTkFMEAMSEgoOQUxUX0JBUk9NRVRSSUMQBEINCgtfbGF0aXR1ZGVfaUIOCgxfbG9uZ2l0dWRlX2lCCwoJX2FsdGl0dWRlQg8KDV9hbHRpdHVkZV9oYWVCHgocX2FsdGl0dWRlX2dlb2lkYWxfc2VwYXJhdGlvbkIPCg1fZ3JvdW5kX3NwZWVkQg8KDV9ncm91bmRfdHJhY2siigIKBFVzZXISCgoCaWQYASABKAkSEQoJbG9uZ19uYW1lGAIgASgJEhIKCnNob3J0X25hbWUYAyABKAkSEwoHbWFjYWRkchgEIAEoDEICGAESKwoIaHdfbW9kZWwYBSABKA4yGS5tZXNodGFzdGljLkhhcmR3YXJlTW9kZWwSEwoLaXNfbGljZW5zZWQYBiABKAgSMgoEcm9sZRgHIAEoDjIkLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5Sb2xlEhIKCnB1YmxpY19rZXkYCCABKAwSHAoPaXNfdW5tZXNzYWdhYmxlGAkgASgISACIAQFCEgoQX2lzX3VubWVzc2FnYWJsZSJaCg5Sb3V0ZURpc2NvdmVyeRINCgVyb3V0ZRgBIAMoBxITCgtzbnJfdG93YXJkcxgCIAMoBRISCgpyb3V0ZV9iYWNrGAMgAygHEhAKCHNucl9iYWNrGAQgAygFIpkECgdSb3V0aW5nEjMKDXJvdXRlX3JlcXVlc3QYASABKAsyGi5tZXNodGFzdGljLlJvdXRlRGlzY292ZXJ5SAASMQoLcm91dGVfcmVwbHkYAiABKAsyGi5tZXNodGFzdGljLlJvdXRlRGlzY292ZXJ5SAASMQoMZXJyb3JfcmVhc29uGAMgASgOMhkubWVzaHRhc3RpYy5Sb3V0aW5nLkVycm9ySAAi5wIKBUVycm9yEggKBE5PTkUQABIMCghOT19ST1VURRABEgsKB0dPVF9OQUsQAhILCgdUSU1FT1VUEAMSEAoMTk9fSU5URVJGQUNFEAQSEgoOTUFYX1JFVFJBTlNNSVQQBRIOCgpOT19DSEFOTkVMEAYSDQoJVE9PX0xBUkdFEAcSDwoLTk9fUkVTUE9OU0UQCBIUChBEVVRZX0NZQ0xFX0xJTUlUEAkSDwoLQkFEX1JFUVVFU1QQIBISCg5OT1RfQVVUSE9SSVpFRBAhEg4KClBLSV9GQUlMRUQQIhIWChJQS0lfVU5LTk9XTl9QVUJLRVkQIxIZChVBRE1JTl9CQURfU0VTU0lPTl9LRVkQJBIhCh1BRE1JTl9QVUJMSUNfS0VZX1VOQVVUSE9SSVpFRBAlEhcKE1JBVEVfTElNSVRfRVhDRUVERUQQJhIcChhQS0lfU0VORF9GQUlMX1BVQkxJQ19LRVkQJ0IJCgd2YXJpYW50IuUBCgREYXRhEiQKB3BvcnRudW0YASABKA4yEy5tZXNodGFzdGljLlBvcnROdW0SDwoHcGF5bG9hZBgCIAEoDBIVCg13YW50X3Jlc3BvbnNlGAMgASgIEgwKBGRlc3QYBCABKAcSDgoGc291cmNlGAUgASgHEhIKCnJlcXVlc3RfaWQYBiABKAcSEAoIcmVwbHlfaWQYByABKAcSDQoFZW1vamkYCCABKAcSFQoIYml0ZmllbGQYCSABKA1IAIgBARIYChB4ZWRkc2Ffc2lnbmF0dXJlGAogASgMQgsKCV9iaXRmaWVsZCI+Cg9LZXlWZXJpZmljYXRpb24SDQoFbm9uY2UYASABKAQSDQoFaGFzaDEYAiABKAwSDQoFaGFzaDIYAyABKAwiywMKFFN0b3JlRm9yd2FyZFBsdXNQbHVzEk0KEXNmcHBfbWVzc2FnZV90eXBlGAEgASgOMjIubWVzaHRhc3RpYy5TdG9yZUZvcndhcmRQbHVzUGx1cy5TRlBQX21lc3NhZ2VfdHlwZRIUCgxtZXNzYWdlX2hhc2gYAiABKAwSEwoLY29tbWl0X2hhc2gYAyABKAwSEQoJcm9vdF9oYXNoGAQgASgMEg8KB21lc3NhZ2UYBSABKAwSFwoPZW5jYXBzdWxhdGVkX2lkGAYgASgNEhcKD2VuY2Fwc3VsYXRlZF90bxgHIAEoDRIZChFlbmNhcHN1bGF0ZWRfZnJvbRgIIAEoDRIbChNlbmNhcHN1bGF0ZWRfcnh0aW1lGAkgASgNEhMKC2NoYWluX2NvdW50GAogASgNIpUBChFTRlBQX21lc3NhZ2VfdHlwZRISCg5DQU5PTl9BTk5PVU5DRRAAEg8KC0NIQUlOX1FVRVJZEAESEAoMTElOS19SRVFVRVNUEAMSEAoMTElOS19QUk9WSURFEAQSGgoWTElOS19QUk9WSURFX0ZJUlNUSEFMRhAFEhsKF0xJTktfUFJPVklERV9TRUNPTkRIQUxGEAYi4wIKC1JlbW90ZVNoZWxsEioKAm9wGAEgASgOMh4ubWVzaHRhc3RpYy5SZW1vdGVTaGVsbC5PcENvZGUSEgoKc2Vzc2lvbl9pZBgCIAEoDRILCgNzZXEYAyABKA0SDwoHYWNrX3NlcRgEIAEoDRIPCgdwYXlsb2FkGAUgASgMEgwKBGNvbHMYBiABKA0SDAoEcm93cxgHIAEoDRINCgVmbGFncxgIIAEoDRITCgtsYXN0X3R4X3NlcRgJIAEoDRITCgtsYXN0X3J4X3NlcRgKIAEoDSKPAQoGT3BDb2RlEgwKCE9QX1VOU0VUEAASCAoET1BFThABEgkKBUlOUFVUEAISCgoGUkVTSVpFEAMSCQoFQ0xPU0UQBBIICgRQSU5HEAUSBwoDQUNLEAYSCwoHT1BFTl9PSxBAEgoKBk9VVFBVVBBBEgoKBkNMT1NFRBBCEgkKBUVSUk9SEEMSCAoEUE9ORxBEIrwBCghXYXlwb2ludBIKCgJpZBgBIAEoDRIXCgpsYXRpdHVkZV9pGAIgASgPSACIAQESGAoLbG9uZ2l0dWRlX2kYAyABKA9IAYgBARIOCgZleHBpcmUYBCABKA0SEQoJbG9ja2VkX3RvGAUgASgNEgwKBG5hbWUYBiABKAkSEwoLZGVzY3JpcHRpb24YByABKAkSDAoEaWNvbhgIIAEoB0INCgtfbGF0aXR1ZGVfaUIOCgxfbG9uZ2l0dWRlX2kiHwoNU3RhdHVzTWVzc2FnZRIOCgZzdGF0dXMYASABKAkibAoWTXF0dENsaWVudFByb3h5TWVzc2FnZRINCgV0b3BpYxgBIAEoCRIOCgRkYXRhGAIgASgMSAASDgoEdGV4dBgDIAEoCUgAEhAKCHJldGFpbmVkGAQgASgIQhEKD3BheWxvYWRfdmFyaWFudCLnBwoKTWVzaFBhY2tldBIMCgRmcm9tGAEgASgHEgoKAnRvGAIgASgHEg8KB2NoYW5uZWwYAyABKA0SIwoHZGVjb2RlZBgEIAEoCzIQLm1lc2h0YXN0aWMuRGF0YUgAEhMKCWVuY3J5cHRlZBgFIAEoDEgAEgoKAmlkGAYgASgHEg8KB3J4X3RpbWUYByABKAcSDgoGcnhfc25yGAggASgCEhEKCWhvcF9saW1pdBgJIAEoDRIQCgh3YW50X2FjaxgKIAEoCBIxCghwcmlvcml0eRgLIAEoDjIfLm1lc2h0YXN0aWMuTWVzaFBhY2tldC5Qcmlvcml0eRIPCgdyeF9yc3NpGAwgASgFEjMKB2RlbGF5ZWQYDSABKA4yHi5tZXNodGFzdGljLk1lc2hQYWNrZXQuRGVsYXllZEICGAESEAoIdmlhX21xdHQYDiABKAgSEQoJaG9wX3N0YXJ0GA8gASgNEhIKCnB1YmxpY19rZXkYECABKAwSFQoNcGtpX2VuY3J5cHRlZBgRIAEoCBIQCghuZXh0X2hvcBgSIAEoDRISCgpyZWxheV9ub2RlGBMgASgNEhAKCHR4X2FmdGVyGBQgASgNEkYKE3RyYW5zcG9ydF9tZWNoYW5pc20YFSABKA4yKS5tZXNodGFzdGljLk1lc2hQYWNrZXQuVHJhbnNwb3J0TWVjaGFuaXNtEhUKDXhlZGRzYV9zaWduZWQYFiABKAgifgoIUHJpb3JpdHkSCQoFVU5TRVQQABIHCgNNSU4QARIOCgpCQUNLR1JPVU5EEAoSCwoHREVGQVVMVBBAEgwKCFJFTElBQkxFEEYSDAoIUkVTUE9OU0UQUBIICgRISUdIEGQSCQoFQUxFUlQQbhIHCgNBQ0sQeBIHCgNNQVgQfyJCCgdEZWxheWVkEgwKCE5PX0RFTEFZEAASFQoRREVMQVlFRF9CUk9BRENBU1QQARISCg5ERUxBWUVEX0RJUkVDVBACIuoBChJUcmFuc3BvcnRNZWNoYW5pc20SFgoSVFJBTlNQT1JUX0lOVEVSTkFMEAASEgoOVFJBTlNQT1JUX0xPUkEQARIXChNUUkFOU1BPUlRfTE9SQV9BTFQxEAISFwoTVFJBTlNQT1JUX0xPUkFfQUxUMhADEhcKE1RSQU5TUE9SVF9MT1JBX0FMVDMQBBISCg5UUkFOU1BPUlRfTVFUVBAFEhsKF1RSQU5TUE9SVF9NVUxUSUNBU1RfVURQEAYSEQoNVFJBTlNQT1JUX0FQSRAHEhkKFVRSQU5TUE9SVF9VTklDQVNUX1VEUBAIQhEKD3BheWxvYWRfdmFyaWFudCL0AgoITm9kZUluZm8SCwoDbnVtGAEgASgNEh4KBHVzZXIYAiABKAsyEC5tZXNodGFzdGljLlVzZXISJgoIcG9zaXRpb24YAyABKAsyFC5tZXNodGFzdGljLlBvc2l0aW9uEgsKA3NuchgEIAEoAhISCgpsYXN0X2hlYXJkGAUgASgHEjEKDmRldmljZV9tZXRyaWNzGAYgASgLMhkubWVzaHRhc3RpYy5EZXZpY2VNZXRyaWNzEg8KB2NoYW5uZWwYByABKA0SEAoIdmlhX21xdHQYCCABKAgSFgoJaG9wc19hd2F5GAkgASgNSACIAQESEwoLaXNfZmF2b3JpdGUYCiABKAgSEgoKaXNfaWdub3JlZBgLIAEoCBIgChhpc19rZXlfbWFudWFsbHlfdmVyaWZpZWQYDCABKAgSEAoIaXNfbXV0ZWQYDSABKAgSGQoRaGFzX3hlZGRzYV9zaWduZWQYDiABKAhCDAoKX2hvcHNfYXdheSLBAQoKTXlOb2RlSW5mbxITCgtteV9ub2RlX251bRgBIAEoDRIUCgxyZWJvb3RfY291bnQYCCABKA0SFwoPbWluX2FwcF92ZXJzaW9uGAsgASgNEhEKCWRldmljZV9pZBgMIAEoDBIPCgdwaW9fZW52GA0gASgJEjUKEGZpcm13YXJlX2VkaXRpb24YDiABKA4yGy5tZXNodGFzdGljLkZpcm13YXJlRWRpdGlvbhIUCgxub2RlZGJfY291bnQYDyABKA0iwAEKCUxvZ1JlY29yZBIPCgdtZXNzYWdlGAEgASgJEgwKBHRpbWUYAiABKAcSDgoGc291cmNlGAMgASgJEioKBWxldmVsGAQgASgOMhsubWVzaHRhc3RpYy5Mb2dSZWNvcmQuTGV2ZWwiWAoFTGV2ZWwSCQoFVU5TRVQQABIMCghDUklUSUNBTBAyEgkKBUVSUk9SECgSCwoHV0FSTklORxAeEggKBElORk8QFBIJCgVERUJVRxAKEgkKBVRSQUNFEAUiUAoLUXVldWVTdGF0dXMSCwoDcmVzGAEgASgFEgwKBGZyZWUYAiABKA0SDgoGbWF4bGVuGAMgASgNEhYKDm1lc2hfcGFja2V0X2lkGAQgASgNIrAGCglGcm9tUmFkaW8SCgoCaWQYASABKA0SKAoGcGFja2V0GAIgASgLMhYubWVzaHRhc3RpYy5NZXNoUGFja2V0SAASKQoHbXlfaW5mbxgDIAEoCzIWLm1lc2h0YXN0aWMuTXlOb2RlSW5mb0gAEikKCW5vZGVfaW5mbxgEIAEoCzIULm1lc2h0YXN0aWMuTm9kZUluZm9IABIkCgZjb25maWcYBSABKAsyEi5tZXNodGFzdGljLkNvbmZpZ0gAEisKCmxvZ19yZWNvcmQYBiABKAsyFS5tZXNodGFzdGljLkxvZ1JlY29yZEgAEhwKEmNvbmZpZ19jb21wbGV0ZV9pZBgHIAEoDUgAEhIKCHJlYm9vdGVkGAggASgISAASMAoMbW9kdWxlQ29uZmlnGAkgASgLMhgubWVzaHRhc3RpYy5Nb2R1bGVDb25maWdIABImCgdjaGFubmVsGAogASgLMhMubWVzaHRhc3RpYy5DaGFubmVsSAASLgoLcXVldWVTdGF0dXMYCyABKAsyFy5tZXNodGFzdGljLlF1ZXVlU3RhdHVzSAASKgoMeG1vZGVtUGFja2V0GAwgASgLMhIubWVzaHRhc3RpYy5YTW9kZW1IABIuCghtZXRhZGF0YRgNIAEoCzIaLm1lc2h0YXN0aWMuRGV2aWNlTWV0YWRhdGFIABJEChZtcXR0Q2xpZW50UHJveHlNZXNzYWdlGA4gASgLMiIubWVzaHRhc3RpYy5NcXR0Q2xpZW50UHJveHlNZXNzYWdlSAASKAoIZmlsZUluZm8YDyABKAsyFC5tZXNodGFzdGljLkZpbGVJbmZvSAASPAoSY2xpZW50Tm90aWZpY2F0aW9uGBAgASgLMh4ubWVzaHRhc3RpYy5DbGllbnROb3RpZmljYXRpb25IABI0Cg5kZXZpY2V1aUNvbmZpZxgRIAEoCzIaLm1lc2h0YXN0aWMuRGV2aWNlVUlDb25maWdIABI1Cg9sb2NrZG93bl9zdGF0dXMYEiABKAsyGi5tZXNodGFzdGljLkxvY2tkb3duU3RhdHVzSABCEQoPcGF5bG9hZF92YXJpYW50IpMCCg5Mb2NrZG93blN0YXR1cxIvCgVzdGF0ZRgBIAEoDjIgLm1lc2h0YXN0aWMuTG9ja2Rvd25TdGF0dXMuU3RhdGUSEwoLbG9ja19yZWFzb24YAiABKAkSFwoPYm9vdHNfcmVtYWluaW5nGAMgASgNEhkKEXZhbGlkX3VudGlsX2Vwb2NoGAQgASgNEhcKD2JhY2tvZmZfc2Vjb25kcxgFIAEoDSJuCgVTdGF0ZRIVChFTVEFURV9VTlNQRUNJRklFRBAAEhMKD05FRURTX1BST1ZJU0lPThABEgoKBkxPQ0tFRBACEgwKCFVOTE9DS0VEEAMSEQoNVU5MT0NLX0ZBSUxFRBAEEgwKCERJU0FCTEVEEAUi+gMKEkNsaWVudE5vdGlmaWNhdGlvbhIVCghyZXBseV9pZBgBIAEoDUgBiAEBEgwKBHRpbWUYAiABKAcSKgoFbGV2ZWwYAyABKA4yGy5tZXNodGFzdGljLkxvZ1JlY29yZC5MZXZlbBIPCgdtZXNzYWdlGAQgASgJElEKHmtleV92ZXJpZmljYXRpb25fbnVtYmVyX2luZm9ybRgLIAEoCzInLm1lc2h0YXN0aWMuS2V5VmVyaWZpY2F0aW9uTnVtYmVySW5mb3JtSAASUwofa2V5X3ZlcmlmaWNhdGlvbl9udW1iZXJfcmVxdWVzdBgMIAEoCzIoLm1lc2h0YXN0aWMuS2V5VmVyaWZpY2F0aW9uTnVtYmVyUmVxdWVzdEgAEkIKFmtleV92ZXJpZmljYXRpb25fZmluYWwYDSABKAsyIC5tZXNodGFzdGljLktleVZlcmlmaWNhdGlvbkZpbmFsSAASQAoVZHVwbGljYXRlZF9wdWJsaWNfa2V5GA4gASgLMh8ubWVzaHRhc3RpYy5EdXBsaWNhdGVkUHVibGljS2V5SAASNAoPbG93X2VudHJvcHlfa2V5GA8gASgLMhkubWVzaHRhc3RpYy5Mb3dFbnRyb3B5S2V5SABCEQoPcGF5bG9hZF92YXJpYW50QgsKCV9yZXBseV9pZCJeChtLZXlWZXJpZmljYXRpb25OdW1iZXJJbmZvcm0SDQoFbm9uY2UYASABKAQSFwoPcmVtb3RlX2xvbmduYW1lGAIgASgJEhcKD3NlY3VyaXR5X251bWJlchgDIAEoDSJGChxLZXlWZXJpZmljYXRpb25OdW1iZXJSZXF1ZXN0Eg0KBW5vbmNlGAEgASgEEhcKD3JlbW90ZV9sb25nbmFtZRgCIAEoCSJxChRLZXlWZXJpZmljYXRpb25GaW5hbBINCgVub25jZRgBIAEoBBIXCg9yZW1vdGVfbG9uZ25hbWUYAiABKAkSEAoIaXNTZW5kZXIYAyABKAgSHwoXdmVyaWZpY2F0aW9uX2NoYXJhY3RlcnMYBCABKAkiFQoTRHVwbGljYXRlZFB1YmxpY0tleSIPCg1Mb3dFbnRyb3B5S2V5IjEKCEZpbGVJbmZvEhEKCWZpbGVfbmFtZRgBIAEoCRISCgpzaXplX2J5dGVzGAIgASgNIpQCCgdUb1JhZGlvEigKBnBhY2tldBgBIAEoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldEgAEhgKDndhbnRfY29uZmlnX2lkGAMgASgNSAASFAoKZGlzY29ubmVjdBgEIAEoCEgAEioKDHhtb2RlbVBhY2tldBgFIAEoCzISLm1lc2h0YXN0aWMuWE1vZGVtSAASRAoWbXF0dENsaWVudFByb3h5TWVzc2FnZRgGIAEoCzIiLm1lc2h0YXN0aWMuTXF0dENsaWVudFByb3h5TWVzc2FnZUgAEioKCWhlYXJ0YmVhdBgHIAEoCzIVLm1lc2h0YXN0aWMuSGVhcnRiZWF0SABCEQoPcGF5bG9hZF92YXJpYW50IkAKCkNvbXByZXNzZWQSJAoHcG9ydG51bRgBIAEoDjITLm1lc2h0YXN0aWMuUG9ydE51bRIMCgRkYXRhGAIgASgMIocBCgxOZWlnaGJvckluZm8SDwoHbm9kZV9pZBgBIAEoDRIXCg9sYXN0X3NlbnRfYnlfaWQYAiABKA0SJAocbm9kZV9icm9hZGNhc3RfaW50ZXJ2YWxfc2VjcxgDIAEoDRInCgluZWlnaGJvcnMYBCADKAsyFC5tZXNodGFzdGljLk5laWdoYm9yImQKCE5laWdoYm9yEg8KB25vZGVfaWQYASABKA0SCwoDc25yGAIgASgCEhQKDGxhc3RfcnhfdGltZRgDIAEoBxIkChxub2RlX2Jyb2FkY2FzdF9pbnRlcnZhbF9zZWNzGAQgASgNItcCCg5EZXZpY2VNZXRhZGF0YRIYChBmaXJtd2FyZV92ZXJzaW9uGAEgASgJEhwKFGRldmljZV9zdGF0ZV92ZXJzaW9uGAIgASgNEhMKC2NhblNodXRkb3duGAMgASgIEg8KB2hhc1dpZmkYBCABKAgSFAoMaGFzQmx1ZXRvb3RoGAUgASgIEhMKC2hhc0V0aGVybmV0GAYgASgIEjIKBHJvbGUYByABKA4yJC5tZXNodGFzdGljLkNvbmZpZy5EZXZpY2VDb25maWcuUm9sZRIWCg5wb3NpdGlvbl9mbGFncxgIIAEoDRIrCghod19tb2RlbBgJIAEoDjIZLm1lc2h0YXN0aWMuSGFyZHdhcmVNb2RlbBIZChFoYXNSZW1vdGVIYXJkd2FyZRgKIAEoCBIOCgZoYXNQS0MYCyABKAgSGAoQZXhjbHVkZWRfbW9kdWxlcxgMIAEoDSIaCglIZWFydGJlYXQSDQoFbm9uY2UYASABKA0iVQoVTm9kZVJlbW90ZUhhcmR3YXJlUGluEhAKCG5vZGVfbnVtGAEgASgNEioKA3BpbhgCIAEoCzIdLm1lc2h0YXN0aWMuUmVtb3RlSGFyZHdhcmVQaW4iZQoOQ2h1bmtlZFBheWxvYWQSEgoKcGF5bG9hZF9pZBgBIAEoDRITCgtjaHVua19jb3VudBgCIAEoDRITCgtjaHVua19pbmRleBgDIAEoDRIVCg1wYXlsb2FkX2NodW5rGAQgASgMIh8KDXJlc2VuZF9jaHVua3MSDgoGY2h1bmtzGAEgAygNIqoBChZDaHVua2VkUGF5bG9hZFJlc3BvbnNlEhIKCnBheWxvYWRfaWQYASABKA0SGgoQcmVxdWVzdF90cmFuc2ZlchgCIAEoCEgAEhkKD2FjY2VwdF90cmFuc2ZlchgDIAEoCEgAEjIKDXJlc2VuZF9jaHVua3MYBCABKAsyGS5tZXNodGFzdGljLnJlc2VuZF9jaHVua3NIAEIRCg9wYXlsb2FkX3ZhcmlhbnQqrBUKDUhhcmR3YXJlTW9kZWwSCQoFVU5TRVQQABIMCghUTE9SQV9WMhABEgwKCFRMT1JBX1YxEAISEgoOVExPUkFfVjJfMV8xUDYQAxIJCgVUQkVBTRAEEg8KC0hFTFRFQ19WMl8wEAUSDgoKVEJFQU1fVjBQNxAGEgoKBlRfRUNITxAHEhAKDFRMT1JBX1YxXzFQMxAIEgsKB1JBSzQ2MzEQCRIPCgtIRUxURUNfVjJfMRAKEg0KCUhFTFRFQ19WMRALEhgKFExJTFlHT19UQkVBTV9TM19DT1JFEAwSDAoIUkFLMTEyMDAQDRILCgdOQU5PX0cxEA4SEgoOVExPUkFfVjJfMV8xUDgQDxIPCgtUTE9SQV9UM19TMxAQEhQKEE5BTk9fRzFfRVhQTE9SRVIQERIRCg1OQU5PX0cyX1VMVFJBEBISDQoJTE9SQV9UWVBFEBMSCwoHV0lQSE9ORRAUEg4KCldJT19XTTExMTAQFRILCgdSQUsyNTYwEBYSEwoPSEVMVEVDX0hSVV8zNjAxEBcSGgoWSEVMVEVDX1dJUkVMRVNTX0JSSURHRRAYEg4KClNUQVRJT05fRzEQGRIMCghSQUsxMTMxMBAaEhQKEFNFTlNFTE9SQV9SUDIwNDAQGxIQCgxTRU5TRUxPUkFfUzMQHBINCglDQU5BUllPTkUQHRIPCgtSUDIwNDBfTE9SQRAeEg4KClNUQVRJT05fRzIQHxIRCg1MT1JBX1JFTEFZX1YxECASDwoLVF9FQ0hPX1BMVVMQIRIHCgNQUFIQIhIPCgtHRU5JRUJMT0NLUxAjEhEKDU5SRjUyX1VOS05PV04QJBINCglQT1JURFVJTk8QJRIPCgtBTkRST0lEX1NJTRAmEgoKBkRJWV9WMRAnEhUKEU5SRjUyODQwX1BDQTEwMDU5ECgSCgoGRFJfREVWECkSCwoHTTVTVEFDSxAqEg0KCUhFTFRFQ19WMxArEhEKDUhFTFRFQ19XU0xfVjMQLBITCg9CRVRBRlBWXzI0MDBfVFgQLRIXChNCRVRBRlBWXzkwMF9OQU5PX1RYEC4SDAoIUlBJX1BJQ08QLxIbChdIRUxURUNfV0lSRUxFU1NfVFJBQ0tFUhAwEhkKFUhFTFRFQ19XSVJFTEVTU19QQVBFUhAxEgoKBlRfREVDSxAyEg4KClRfV0FUQ0hfUzMQMxIRCg1QSUNPTVBVVEVSX1MzEDQSDwoLSEVMVEVDX0hUNjIQNRISCg5FQllURV9FU1AzMl9TMxA2EhEKDUVTUDMyX1MzX1BJQ08QNxINCglDSEFUVEVSXzIQOBIeChpIRUxURUNfV0lSRUxFU1NfUEFQRVJfVjFfMBA5EiAKHEhFTFRFQ19XSVJFTEVTU19UUkFDS0VSX1YxXzAQOhILCgdVTlBIT05FEDsSDAoIVERfTE9SQUMQPBITCg9DREVCWVRFX0VPUkFfUzMQPRIPCgtUV0NfTUVTSF9WNBA+EhYKEk5SRjUyX1BST01JQ1JPX0RJWRA/Eh8KG1JBRElPTUFTVEVSXzkwMF9CQU5ESVRfTkFOTxBAEhwKGEhFTFRFQ19DQVBTVUxFX1NFTlNPUl9WMxBBEh0KGUhFTFRFQ19WSVNJT05fTUFTVEVSX1QxOTAQQhIdChlIRUxURUNfVklTSU9OX01BU1RFUl9FMjEzEEMSHQoZSEVMVEVDX1ZJU0lPTl9NQVNURVJfRTI5MBBEEhkKFUhFTFRFQ19NRVNIX05PREVfVDExNBBFEhYKElNFTlNFQ0FQX0lORElDQVRPUhBGEhMKD1RSQUNLRVJfVDEwMDBfRRBHEgsKB1JBSzMxNzIQSBIKCgZXSU9fRTUQSRIaChZSQURJT01BU1RFUl85MDBfQkFORElUEEoSEwoPTUUyNUxTMDFfNFkxMFREEEsSGAoUUlAyMDQwX0ZFQVRIRVJfUkZNOTUQTBIVChFNNVNUQUNLX0NPUkVCQVNJQxBNEhEKDU01U1RBQ0tfQ09SRTIQThINCglSUElfUElDTzIQTxISCg5NNVNUQUNLX0NPUkVTMxBQEhEKDVNFRUVEX1hJQU9fUzMQURILCgdNUzI0U0YxEFISDAoIVExPUkFfQzYQUxIPCgtXSVNNRVNIX1RBUBBUEg0KCVJPVVRBU1RJQxBVEgwKCE1FU0hfVEFCEFYSDAoITUVTSExJTksQVxISCg5YSUFPX05SRjUyX0tJVBBYEhAKDFRISU5LTk9ERV9NMRBZEhAKDFRISU5LTk9ERV9NMhBaEg8KC1RfRVRIX0VMSVRFEFsSFQoRSEVMVEVDX1NFTlNPUl9IVUIQXBINCglNVVpJX0JBU0UQXRIWChJIRUxURUNfTUVTSF9QT0NLRVQQXhIUChBTRUVFRF9TT0xBUl9OT0RFEF8SGAoUTk9NQURTVEFSX01FVEVPUl9QUk8QYBINCglDUk9XUEFORUwQYRILCgdMSU5LXzMyEGISGAoUU0VFRURfV0lPX1RSQUNLRVJfTDEQYxIdChlTRUVFRF9XSU9fVFJBQ0tFUl9MMV9FSU5LEGQSDwoLTVVaSV9SMV9ORU8QZRIOCgpUX0RFQ0tfUFJPEGYSEAoMVF9MT1JBX1BBR0VSEGcSFAoQTTVTVEFDS19SRVNFUlZFRBBoEg8KC1dJU01FU0hfVEFHEGkSCwoHUkFLMzMxMhBqEhAKDFRISU5LTk9ERV9NNRBrEhUKEUhFTFRFQ19NRVNIX1NPTEFSEGwSDwoLVF9FQ0hPX0xJVEUQbRINCglIRUxURUNfVjQQbhIPCgtNNVNUQUNLX0M2TBBvEhkKFU01U1RBQ0tfQ0FSRFBVVEVSX0FEVhBwEh4KGkhFTFRFQ19XSVJFTEVTU19UUkFDS0VSX1YyEHESEQoNVF9XQVRDSF9VTFRSQRByEhAKDFRISU5LTk9ERV9NMxBzEhIKDldJU01FU0hfVEFQX1YyEHQSCwoHUkFLMzQwMRB1EgsKB1JBSzY0MjEQdhIQCgxUSElOS05PREVfTTQQdxIQCgxUSElOS05PREVfTTYQeBISCg5NRVNIU1RJQ0tfMTI2MhB5EhAKDFRCRUFNXzFfV0FUVBB6EhQKEFQ1X1MzX0VQQVBFUl9QUk8QexINCglUQkVBTV9CUEYQfBISCg5NSU5JX0VQQVBFUl9TMxB9EhMKD1RESVNQTEFZX1MzX1BSTxB+EhkKFUhFTFRFQ19NRVNIX05PREVfVDA5NhB/EhgKE1RSQUNLRVJfVDEwMDBfRV9QUk8QgAESEQoMVEhJTktOT0RFX003EIEBEhEKDFRISU5LTk9ERV9NOBCCARIRCgxUSElOS05PREVfTTkQgwESEQoMSEVMVEVDX1Y0X1I4EIQBEhgKE0hFTFRFQ19NRVNIX05PREVfVDEQhQESDwoKU1RBVElPTl9HMxCGARITCg5UX0lNUFVMU0VfUExVUxCHARIQCgtUX0VDSE9fQ0FSRBCIARIZChRTRUVFRF9XSU9fVFJBQ0tFUl9MMhCJARIRCgxDUk9XUEFORUxfUDQQigESGQoUSEVMVEVDX01FU0hfVE9XRVJfVjIQiwESEwoOTUVTSE5PTE9HWV9XMTAQjAESDwoKUFJJVkFURV9IVxD/ASosCglDb25zdGFudHMSCAoEWkVSTxAAEhUKEERBVEFfUEFZTE9BRF9MRU4Q6QEqtAIKEUNyaXRpY2FsRXJyb3JDb2RlEggKBE5PTkUQABIPCgtUWF9XQVRDSERPRxABEhQKEFNMRUVQX0VOVEVSX1dBSVQQAhIMCghOT19SQURJTxADEg8KC1VOU1BFQ0lGSUVEEAQSFQoRVUJMT1hfVU5JVF9GQUlMRUQQBRINCglOT19BWFAxOTIQBhIZChVJTlZBTElEX1JBRElPX1NFVFRJTkcQBxITCg9UUkFOU01JVF9GQUlMRUQQCBIMCghCUk9XTk9VVBAJEhIKDlNYMTI2Ml9GQUlMVVJFEAoSEQoNUkFESU9fU1BJX0JVRxALEiAKHEZMQVNIX0NPUlJVUFRJT05fUkVDT1ZFUkFCTEUQDBIiCh5GTEFTSF9DT1JSVVBUSU9OX1VOUkVDT1ZFUkFCTEUQDSp/Cg9GaXJtd2FyZUVkaXRpb24SCwoHVkFOSUxMQRAAEhEKDVNNQVJUX0NJVElaRU4QARIOCgpPUEVOX1NBVUNFEBASCgoGREVGQ09OEBESDwoLQlVSTklOR19NQU4QEhIOCgpIQU1WRU5USU9OEBMSDwoLRElZX0VESVRJT04QfyqAAwoPRXhjbHVkZWRNb2R1bGVzEhEKDUVYQ0xVREVEX05PTkUQABIPCgtNUVRUX0NPTkZJRxABEhEKDVNFUklBTF9DT05GSUcQAhITCg9FWFROT1RJRl9DT05GSUcQBBIXChNTVE9SRUZPUldBUkRfQ09ORklHEAgSFAoQUkFOR0VURVNUX0NPTkZJRxAQEhQKEFRFTEVNRVRSWV9DT05GSUcQIBIUChBDQU5ORURNU0dfQ09ORklHEEASEQoMQVVESU9fQ09ORklHEIABEhoKFVJFTU9URUhBUkRXQVJFX0NPTkZJRxCAAhIYChNORUlHSEJPUklORk9fQ09ORklHEIAEEhsKFkFNQklFTlRMSUdIVElOR19DT05GSUcQgAgSGwoWREVURUNUSU9OU0VOU09SX0NPTkZJRxCAEBIWChFQQVhDT1VOVEVSX0NPTkZJRxCAIBIVChBCTFVFVE9PVEhfQ09ORklHEIBAEhQKDk5FVFdPUktfQ09ORklHEICAAUJgChRvcmcubWVzaHRhc3RpYy5wcm90b0IKTWVzaFByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", [file_meshtastic_channel, file_meshtastic_config, file_meshtastic_device_ui, file_meshtastic_module_config, file_meshtastic_portnums, file_meshtastic_telemetry, file_meshtastic_xmodem]); +export const file_meshtastic_mesh: GenFile /*@__PURE__*/ = fileDesc( + "ChVtZXNodGFzdGljL21lc2gucHJvdG8SCm1lc2h0YXN0aWMihwcKCFBvc2l0aW9uEhcKCmxhdGl0dWRlX2kYASABKA9IAIgBARIYCgtsb25naXR1ZGVfaRgCIAEoD0gBiAEBEhUKCGFsdGl0dWRlGAMgASgFSAKIAQESDAoEdGltZRgEIAEoBxI3Cg9sb2NhdGlvbl9zb3VyY2UYBSABKA4yHi5tZXNodGFzdGljLlBvc2l0aW9uLkxvY1NvdXJjZRI3Cg9hbHRpdHVkZV9zb3VyY2UYBiABKA4yHi5tZXNodGFzdGljLlBvc2l0aW9uLkFsdFNvdXJjZRIRCgl0aW1lc3RhbXAYByABKAcSHwoXdGltZXN0YW1wX21pbGxpc19hZGp1c3QYCCABKAUSGQoMYWx0aXR1ZGVfaGFlGAkgASgRSAOIAQESKAobYWx0aXR1ZGVfZ2VvaWRhbF9zZXBhcmF0aW9uGAogASgRSASIAQESDAoEUERPUBgLIAEoDRIMCgRIRE9QGAwgASgNEgwKBFZET1AYDSABKA0SFAoMZ3BzX2FjY3VyYWN5GA4gASgNEhkKDGdyb3VuZF9zcGVlZBgPIAEoDUgFiAEBEhkKDGdyb3VuZF90cmFjaxgQIAEoDUgGiAEBEhMKC2ZpeF9xdWFsaXR5GBEgASgNEhAKCGZpeF90eXBlGBIgASgNEhQKDHNhdHNfaW5fdmlldxgTIAEoDRIRCglzZW5zb3JfaWQYFCABKA0SEwoLbmV4dF91cGRhdGUYFSABKA0SEgoKc2VxX251bWJlchgWIAEoDRIWCg5wcmVjaXNpb25fYml0cxgXIAEoDSJOCglMb2NTb3VyY2USDQoJTE9DX1VOU0VUEAASDgoKTE9DX01BTlVBTBABEhAKDExPQ19JTlRFUk5BTBACEhAKDExPQ19FWFRFUk5BTBADImIKCUFsdFNvdXJjZRINCglBTFRfVU5TRVQQABIOCgpBTFRfTUFOVUFMEAESEAoMQUxUX0lOVEVSTkFMEAISEAoMQUxUX0VYVEVSTkFMEAMSEgoOQUxUX0JBUk9NRVRSSUMQBEINCgtfbGF0aXR1ZGVfaUIOCgxfbG9uZ2l0dWRlX2lCCwoJX2FsdGl0dWRlQg8KDV9hbHRpdHVkZV9oYWVCHgocX2FsdGl0dWRlX2dlb2lkYWxfc2VwYXJhdGlvbkIPCg1fZ3JvdW5kX3NwZWVkQg8KDV9ncm91bmRfdHJhY2siigIKBFVzZXISCgoCaWQYASABKAkSEQoJbG9uZ19uYW1lGAIgASgJEhIKCnNob3J0X25hbWUYAyABKAkSEwoHbWFjYWRkchgEIAEoDEICGAESKwoIaHdfbW9kZWwYBSABKA4yGS5tZXNodGFzdGljLkhhcmR3YXJlTW9kZWwSEwoLaXNfbGljZW5zZWQYBiABKAgSMgoEcm9sZRgHIAEoDjIkLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5Sb2xlEhIKCnB1YmxpY19rZXkYCCABKAwSHAoPaXNfdW5tZXNzYWdhYmxlGAkgASgISACIAQFCEgoQX2lzX3VubWVzc2FnYWJsZSJaCg5Sb3V0ZURpc2NvdmVyeRINCgVyb3V0ZRgBIAMoBxITCgtzbnJfdG93YXJkcxgCIAMoBRISCgpyb3V0ZV9iYWNrGAMgAygHEhAKCHNucl9iYWNrGAQgAygFIpkECgdSb3V0aW5nEjMKDXJvdXRlX3JlcXVlc3QYASABKAsyGi5tZXNodGFzdGljLlJvdXRlRGlzY292ZXJ5SAASMQoLcm91dGVfcmVwbHkYAiABKAsyGi5tZXNodGFzdGljLlJvdXRlRGlzY292ZXJ5SAASMQoMZXJyb3JfcmVhc29uGAMgASgOMhkubWVzaHRhc3RpYy5Sb3V0aW5nLkVycm9ySAAi5wIKBUVycm9yEggKBE5PTkUQABIMCghOT19ST1VURRABEgsKB0dPVF9OQUsQAhILCgdUSU1FT1VUEAMSEAoMTk9fSU5URVJGQUNFEAQSEgoOTUFYX1JFVFJBTlNNSVQQBRIOCgpOT19DSEFOTkVMEAYSDQoJVE9PX0xBUkdFEAcSDwoLTk9fUkVTUE9OU0UQCBIUChBEVVRZX0NZQ0xFX0xJTUlUEAkSDwoLQkFEX1JFUVVFU1QQIBISCg5OT1RfQVVUSE9SSVpFRBAhEg4KClBLSV9GQUlMRUQQIhIWChJQS0lfVU5LTk9XTl9QVUJLRVkQIxIZChVBRE1JTl9CQURfU0VTU0lPTl9LRVkQJBIhCh1BRE1JTl9QVUJMSUNfS0VZX1VOQVVUSE9SSVpFRBAlEhcKE1JBVEVfTElNSVRfRVhDRUVERUQQJhIcChhQS0lfU0VORF9GQUlMX1BVQkxJQ19LRVkQJ0IJCgd2YXJpYW50IuUBCgREYXRhEiQKB3BvcnRudW0YASABKA4yEy5tZXNodGFzdGljLlBvcnROdW0SDwoHcGF5bG9hZBgCIAEoDBIVCg13YW50X3Jlc3BvbnNlGAMgASgIEgwKBGRlc3QYBCABKAcSDgoGc291cmNlGAUgASgHEhIKCnJlcXVlc3RfaWQYBiABKAcSEAoIcmVwbHlfaWQYByABKAcSDQoFZW1vamkYCCABKAcSFQoIYml0ZmllbGQYCSABKA1IAIgBARIYChB4ZWRkc2Ffc2lnbmF0dXJlGAogASgMQgsKCV9iaXRmaWVsZCI+Cg9LZXlWZXJpZmljYXRpb24SDQoFbm9uY2UYASABKAQSDQoFaGFzaDEYAiABKAwSDQoFaGFzaDIYAyABKAwiywMKFFN0b3JlRm9yd2FyZFBsdXNQbHVzEk0KEXNmcHBfbWVzc2FnZV90eXBlGAEgASgOMjIubWVzaHRhc3RpYy5TdG9yZUZvcndhcmRQbHVzUGx1cy5TRlBQX21lc3NhZ2VfdHlwZRIUCgxtZXNzYWdlX2hhc2gYAiABKAwSEwoLY29tbWl0X2hhc2gYAyABKAwSEQoJcm9vdF9oYXNoGAQgASgMEg8KB21lc3NhZ2UYBSABKAwSFwoPZW5jYXBzdWxhdGVkX2lkGAYgASgNEhcKD2VuY2Fwc3VsYXRlZF90bxgHIAEoDRIZChFlbmNhcHN1bGF0ZWRfZnJvbRgIIAEoDRIbChNlbmNhcHN1bGF0ZWRfcnh0aW1lGAkgASgNEhMKC2NoYWluX2NvdW50GAogASgNIpUBChFTRlBQX21lc3NhZ2VfdHlwZRISCg5DQU5PTl9BTk5PVU5DRRAAEg8KC0NIQUlOX1FVRVJZEAESEAoMTElOS19SRVFVRVNUEAMSEAoMTElOS19QUk9WSURFEAQSGgoWTElOS19QUk9WSURFX0ZJUlNUSEFMRhAFEhsKF0xJTktfUFJPVklERV9TRUNPTkRIQUxGEAYi4wIKC1JlbW90ZVNoZWxsEioKAm9wGAEgASgOMh4ubWVzaHRhc3RpYy5SZW1vdGVTaGVsbC5PcENvZGUSEgoKc2Vzc2lvbl9pZBgCIAEoDRILCgNzZXEYAyABKA0SDwoHYWNrX3NlcRgEIAEoDRIPCgdwYXlsb2FkGAUgASgMEgwKBGNvbHMYBiABKA0SDAoEcm93cxgHIAEoDRINCgVmbGFncxgIIAEoDRITCgtsYXN0X3R4X3NlcRgJIAEoDRITCgtsYXN0X3J4X3NlcRgKIAEoDSKPAQoGT3BDb2RlEgwKCE9QX1VOU0VUEAASCAoET1BFThABEgkKBUlOUFVUEAISCgoGUkVTSVpFEAMSCQoFQ0xPU0UQBBIICgRQSU5HEAUSBwoDQUNLEAYSCwoHT1BFTl9PSxBAEgoKBk9VVFBVVBBBEgoKBkNMT1NFRBBCEgkKBUVSUk9SEEMSCAoEUE9ORxBEIuoCCghXYXlwb2ludBIKCgJpZBgBIAEoDRIXCgpsYXRpdHVkZV9pGAIgASgPSACIAQESGAoLbG9uZ2l0dWRlX2kYAyABKA9IAYgBARIOCgZleHBpcmUYBCABKA0SEQoJbG9ja2VkX3RvGAUgASgNEgwKBG5hbWUYBiABKAkSEwoLZGVzY3JpcHRpb24YByABKAkSDAoEaWNvbhgIIAEoBxIXCg9nZW9mZW5jZV9yYWRpdXMYCSABKA0SMgoMYm91bmRpbmdfYm94GAogASgLMhcubWVzaHRhc3RpYy5Cb3VuZGluZ0JveEgCiAEBEhcKD25vdGlmeV9vbl9lbnRlchgLIAEoCBIWCg5ub3RpZnlfb25fZXhpdBgMIAEoCBIdChVub3RpZnlfZmF2b3JpdGVzX29ubHkYDSABKAhCDQoLX2xhdGl0dWRlX2lCDgoMX2xvbmdpdHVkZV9pQg8KDV9ib3VuZGluZ19ib3gidQoLQm91bmRpbmdCb3gSGAoQbG9uZ2l0dWRlX3dlc3RfaRgBIAEoDxIYChBsYXRpdHVkZV9zb3V0aF9pGAIgASgPEhgKEGxvbmdpdHVkZV9lYXN0X2kYAyABKA8SGAoQbGF0aXR1ZGVfbm9ydGhfaRgEIAEoDyIfCg1TdGF0dXNNZXNzYWdlEg4KBnN0YXR1cxgBIAEoCSJsChZNcXR0Q2xpZW50UHJveHlNZXNzYWdlEg0KBXRvcGljGAEgASgJEg4KBGRhdGEYAiABKAxIABIOCgR0ZXh0GAMgASgJSAASEAoIcmV0YWluZWQYBCABKAhCEQoPcGF5bG9hZF92YXJpYW50IucHCgpNZXNoUGFja2V0EgwKBGZyb20YASABKAcSCgoCdG8YAiABKAcSDwoHY2hhbm5lbBgDIAEoDRIjCgdkZWNvZGVkGAQgASgLMhAubWVzaHRhc3RpYy5EYXRhSAASEwoJZW5jcnlwdGVkGAUgASgMSAASCgoCaWQYBiABKAcSDwoHcnhfdGltZRgHIAEoBxIOCgZyeF9zbnIYCCABKAISEQoJaG9wX2xpbWl0GAkgASgNEhAKCHdhbnRfYWNrGAogASgIEjEKCHByaW9yaXR5GAsgASgOMh8ubWVzaHRhc3RpYy5NZXNoUGFja2V0LlByaW9yaXR5Eg8KB3J4X3Jzc2kYDCABKAUSMwoHZGVsYXllZBgNIAEoDjIeLm1lc2h0YXN0aWMuTWVzaFBhY2tldC5EZWxheWVkQgIYARIQCgh2aWFfbXF0dBgOIAEoCBIRCglob3Bfc3RhcnQYDyABKA0SEgoKcHVibGljX2tleRgQIAEoDBIVCg1wa2lfZW5jcnlwdGVkGBEgASgIEhAKCG5leHRfaG9wGBIgASgNEhIKCnJlbGF5X25vZGUYEyABKA0SEAoIdHhfYWZ0ZXIYFCABKA0SRgoTdHJhbnNwb3J0X21lY2hhbmlzbRgVIAEoDjIpLm1lc2h0YXN0aWMuTWVzaFBhY2tldC5UcmFuc3BvcnRNZWNoYW5pc20SFQoNeGVkZHNhX3NpZ25lZBgWIAEoCCJ+CghQcmlvcml0eRIJCgVVTlNFVBAAEgcKA01JThABEg4KCkJBQ0tHUk9VTkQQChILCgdERUZBVUxUEEASDAoIUkVMSUFCTEUQRhIMCghSRVNQT05TRRBQEggKBEhJR0gQZBIJCgVBTEVSVBBuEgcKA0FDSxB4EgcKA01BWBB/IkIKB0RlbGF5ZWQSDAoITk9fREVMQVkQABIVChFERUxBWUVEX0JST0FEQ0FTVBABEhIKDkRFTEFZRURfRElSRUNUEAIi6gEKElRyYW5zcG9ydE1lY2hhbmlzbRIWChJUUkFOU1BPUlRfSU5URVJOQUwQABISCg5UUkFOU1BPUlRfTE9SQRABEhcKE1RSQU5TUE9SVF9MT1JBX0FMVDEQAhIXChNUUkFOU1BPUlRfTE9SQV9BTFQyEAMSFwoTVFJBTlNQT1JUX0xPUkFfQUxUMxAEEhIKDlRSQU5TUE9SVF9NUVRUEAUSGwoXVFJBTlNQT1JUX01VTFRJQ0FTVF9VRFAQBhIRCg1UUkFOU1BPUlRfQVBJEAcSGQoVVFJBTlNQT1JUX1VOSUNBU1RfVURQEAhCEQoPcGF5bG9hZF92YXJpYW50IvQCCghOb2RlSW5mbxILCgNudW0YASABKA0SHgoEdXNlchgCIAEoCzIQLm1lc2h0YXN0aWMuVXNlchImCghwb3NpdGlvbhgDIAEoCzIULm1lc2h0YXN0aWMuUG9zaXRpb24SCwoDc25yGAQgASgCEhIKCmxhc3RfaGVhcmQYBSABKAcSMQoOZGV2aWNlX21ldHJpY3MYBiABKAsyGS5tZXNodGFzdGljLkRldmljZU1ldHJpY3MSDwoHY2hhbm5lbBgHIAEoDRIQCgh2aWFfbXF0dBgIIAEoCBIWCglob3BzX2F3YXkYCSABKA1IAIgBARITCgtpc19mYXZvcml0ZRgKIAEoCBISCgppc19pZ25vcmVkGAsgASgIEiAKGGlzX2tleV9tYW51YWxseV92ZXJpZmllZBgMIAEoCBIQCghpc19tdXRlZBgNIAEoCBIZChFoYXNfeGVkZHNhX3NpZ25lZBgOIAEoCEIMCgpfaG9wc19hd2F5IsEBCgpNeU5vZGVJbmZvEhMKC215X25vZGVfbnVtGAEgASgNEhQKDHJlYm9vdF9jb3VudBgIIAEoDRIXCg9taW5fYXBwX3ZlcnNpb24YCyABKA0SEQoJZGV2aWNlX2lkGAwgASgMEg8KB3Bpb19lbnYYDSABKAkSNQoQZmlybXdhcmVfZWRpdGlvbhgOIAEoDjIbLm1lc2h0YXN0aWMuRmlybXdhcmVFZGl0aW9uEhQKDG5vZGVkYl9jb3VudBgPIAEoDSLAAQoJTG9nUmVjb3JkEg8KB21lc3NhZ2UYASABKAkSDAoEdGltZRgCIAEoBxIOCgZzb3VyY2UYAyABKAkSKgoFbGV2ZWwYBCABKA4yGy5tZXNodGFzdGljLkxvZ1JlY29yZC5MZXZlbCJYCgVMZXZlbBIJCgVVTlNFVBAAEgwKCENSSVRJQ0FMEDISCQoFRVJST1IQKBILCgdXQVJOSU5HEB4SCAoESU5GTxAUEgkKBURFQlVHEAoSCQoFVFJBQ0UQBSJQCgtRdWV1ZVN0YXR1cxILCgNyZXMYASABKAUSDAoEZnJlZRgCIAEoDRIOCgZtYXhsZW4YAyABKA0SFgoObWVzaF9wYWNrZXRfaWQYBCABKA0isAYKCUZyb21SYWRpbxIKCgJpZBgBIAEoDRIoCgZwYWNrZXQYAiABKAsyFi5tZXNodGFzdGljLk1lc2hQYWNrZXRIABIpCgdteV9pbmZvGAMgASgLMhYubWVzaHRhc3RpYy5NeU5vZGVJbmZvSAASKQoJbm9kZV9pbmZvGAQgASgLMhQubWVzaHRhc3RpYy5Ob2RlSW5mb0gAEiQKBmNvbmZpZxgFIAEoCzISLm1lc2h0YXN0aWMuQ29uZmlnSAASKwoKbG9nX3JlY29yZBgGIAEoCzIVLm1lc2h0YXN0aWMuTG9nUmVjb3JkSAASHAoSY29uZmlnX2NvbXBsZXRlX2lkGAcgASgNSAASEgoIcmVib290ZWQYCCABKAhIABIwCgxtb2R1bGVDb25maWcYCSABKAsyGC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZ0gAEiYKB2NoYW5uZWwYCiABKAsyEy5tZXNodGFzdGljLkNoYW5uZWxIABIuCgtxdWV1ZVN0YXR1cxgLIAEoCzIXLm1lc2h0YXN0aWMuUXVldWVTdGF0dXNIABIqCgx4bW9kZW1QYWNrZXQYDCABKAsyEi5tZXNodGFzdGljLlhNb2RlbUgAEi4KCG1ldGFkYXRhGA0gASgLMhoubWVzaHRhc3RpYy5EZXZpY2VNZXRhZGF0YUgAEkQKFm1xdHRDbGllbnRQcm94eU1lc3NhZ2UYDiABKAsyIi5tZXNodGFzdGljLk1xdHRDbGllbnRQcm94eU1lc3NhZ2VIABIoCghmaWxlSW5mbxgPIAEoCzIULm1lc2h0YXN0aWMuRmlsZUluZm9IABI8ChJjbGllbnROb3RpZmljYXRpb24YECABKAsyHi5tZXNodGFzdGljLkNsaWVudE5vdGlmaWNhdGlvbkgAEjQKDmRldmljZXVpQ29uZmlnGBEgASgLMhoubWVzaHRhc3RpYy5EZXZpY2VVSUNvbmZpZ0gAEjUKD2xvY2tkb3duX3N0YXR1cxgSIAEoCzIaLm1lc2h0YXN0aWMuTG9ja2Rvd25TdGF0dXNIAEIRCg9wYXlsb2FkX3ZhcmlhbnQikwIKDkxvY2tkb3duU3RhdHVzEi8KBXN0YXRlGAEgASgOMiAubWVzaHRhc3RpYy5Mb2NrZG93blN0YXR1cy5TdGF0ZRITCgtsb2NrX3JlYXNvbhgCIAEoCRIXCg9ib290c19yZW1haW5pbmcYAyABKA0SGQoRdmFsaWRfdW50aWxfZXBvY2gYBCABKA0SFwoPYmFja29mZl9zZWNvbmRzGAUgASgNIm4KBVN0YXRlEhUKEVNUQVRFX1VOU1BFQ0lGSUVEEAASEwoPTkVFRFNfUFJPVklTSU9OEAESCgoGTE9DS0VEEAISDAoIVU5MT0NLRUQQAxIRCg1VTkxPQ0tfRkFJTEVEEAQSDAoIRElTQUJMRUQQBSL6AwoSQ2xpZW50Tm90aWZpY2F0aW9uEhUKCHJlcGx5X2lkGAEgASgNSAGIAQESDAoEdGltZRgCIAEoBxIqCgVsZXZlbBgDIAEoDjIbLm1lc2h0YXN0aWMuTG9nUmVjb3JkLkxldmVsEg8KB21lc3NhZ2UYBCABKAkSUQoea2V5X3ZlcmlmaWNhdGlvbl9udW1iZXJfaW5mb3JtGAsgASgLMicubWVzaHRhc3RpYy5LZXlWZXJpZmljYXRpb25OdW1iZXJJbmZvcm1IABJTCh9rZXlfdmVyaWZpY2F0aW9uX251bWJlcl9yZXF1ZXN0GAwgASgLMigubWVzaHRhc3RpYy5LZXlWZXJpZmljYXRpb25OdW1iZXJSZXF1ZXN0SAASQgoWa2V5X3ZlcmlmaWNhdGlvbl9maW5hbBgNIAEoCzIgLm1lc2h0YXN0aWMuS2V5VmVyaWZpY2F0aW9uRmluYWxIABJAChVkdXBsaWNhdGVkX3B1YmxpY19rZXkYDiABKAsyHy5tZXNodGFzdGljLkR1cGxpY2F0ZWRQdWJsaWNLZXlIABI0Cg9sb3dfZW50cm9weV9rZXkYDyABKAsyGS5tZXNodGFzdGljLkxvd0VudHJvcHlLZXlIAEIRCg9wYXlsb2FkX3ZhcmlhbnRCCwoJX3JlcGx5X2lkIl4KG0tleVZlcmlmaWNhdGlvbk51bWJlckluZm9ybRINCgVub25jZRgBIAEoBBIXCg9yZW1vdGVfbG9uZ25hbWUYAiABKAkSFwoPc2VjdXJpdHlfbnVtYmVyGAMgASgNIkYKHEtleVZlcmlmaWNhdGlvbk51bWJlclJlcXVlc3QSDQoFbm9uY2UYASABKAQSFwoPcmVtb3RlX2xvbmduYW1lGAIgASgJInEKFEtleVZlcmlmaWNhdGlvbkZpbmFsEg0KBW5vbmNlGAEgASgEEhcKD3JlbW90ZV9sb25nbmFtZRgCIAEoCRIQCghpc1NlbmRlchgDIAEoCBIfChd2ZXJpZmljYXRpb25fY2hhcmFjdGVycxgEIAEoCSIVChNEdXBsaWNhdGVkUHVibGljS2V5Ig8KDUxvd0VudHJvcHlLZXkiMQoIRmlsZUluZm8SEQoJZmlsZV9uYW1lGAEgASgJEhIKCnNpemVfYnl0ZXMYAiABKA0ilAIKB1RvUmFkaW8SKAoGcGFja2V0GAEgASgLMhYubWVzaHRhc3RpYy5NZXNoUGFja2V0SAASGAoOd2FudF9jb25maWdfaWQYAyABKA1IABIUCgpkaXNjb25uZWN0GAQgASgISAASKgoMeG1vZGVtUGFja2V0GAUgASgLMhIubWVzaHRhc3RpYy5YTW9kZW1IABJEChZtcXR0Q2xpZW50UHJveHlNZXNzYWdlGAYgASgLMiIubWVzaHRhc3RpYy5NcXR0Q2xpZW50UHJveHlNZXNzYWdlSAASKgoJaGVhcnRiZWF0GAcgASgLMhUubWVzaHRhc3RpYy5IZWFydGJlYXRIAEIRCg9wYXlsb2FkX3ZhcmlhbnQiQAoKQ29tcHJlc3NlZBIkCgdwb3J0bnVtGAEgASgOMhMubWVzaHRhc3RpYy5Qb3J0TnVtEgwKBGRhdGEYAiABKAwihwEKDE5laWdoYm9ySW5mbxIPCgdub2RlX2lkGAEgASgNEhcKD2xhc3Rfc2VudF9ieV9pZBgCIAEoDRIkChxub2RlX2Jyb2FkY2FzdF9pbnRlcnZhbF9zZWNzGAMgASgNEicKCW5laWdoYm9ycxgEIAMoCzIULm1lc2h0YXN0aWMuTmVpZ2hib3IiZAoITmVpZ2hib3ISDwoHbm9kZV9pZBgBIAEoDRILCgNzbnIYAiABKAISFAoMbGFzdF9yeF90aW1lGAMgASgHEiQKHG5vZGVfYnJvYWRjYXN0X2ludGVydmFsX3NlY3MYBCABKA0i1wIKDkRldmljZU1ldGFkYXRhEhgKEGZpcm13YXJlX3ZlcnNpb24YASABKAkSHAoUZGV2aWNlX3N0YXRlX3ZlcnNpb24YAiABKA0SEwoLY2FuU2h1dGRvd24YAyABKAgSDwoHaGFzV2lmaRgEIAEoCBIUCgxoYXNCbHVldG9vdGgYBSABKAgSEwoLaGFzRXRoZXJuZXQYBiABKAgSMgoEcm9sZRgHIAEoDjIkLm1lc2h0YXN0aWMuQ29uZmlnLkRldmljZUNvbmZpZy5Sb2xlEhYKDnBvc2l0aW9uX2ZsYWdzGAggASgNEisKCGh3X21vZGVsGAkgASgOMhkubWVzaHRhc3RpYy5IYXJkd2FyZU1vZGVsEhkKEWhhc1JlbW90ZUhhcmR3YXJlGAogASgIEg4KBmhhc1BLQxgLIAEoCBIYChBleGNsdWRlZF9tb2R1bGVzGAwgASgNIhoKCUhlYXJ0YmVhdBINCgVub25jZRgBIAEoDSJVChVOb2RlUmVtb3RlSGFyZHdhcmVQaW4SEAoIbm9kZV9udW0YASABKA0SKgoDcGluGAIgASgLMh0ubWVzaHRhc3RpYy5SZW1vdGVIYXJkd2FyZVBpbiJlCg5DaHVua2VkUGF5bG9hZBISCgpwYXlsb2FkX2lkGAEgASgNEhMKC2NodW5rX2NvdW50GAIgASgNEhMKC2NodW5rX2luZGV4GAMgASgNEhUKDXBheWxvYWRfY2h1bmsYBCABKAwiHwoNcmVzZW5kX2NodW5rcxIOCgZjaHVua3MYASADKA0iqgEKFkNodW5rZWRQYXlsb2FkUmVzcG9uc2USEgoKcGF5bG9hZF9pZBgBIAEoDRIaChByZXF1ZXN0X3RyYW5zZmVyGAIgASgISAASGQoPYWNjZXB0X3RyYW5zZmVyGAMgASgISAASMgoNcmVzZW5kX2NodW5rcxgEIAEoCzIZLm1lc2h0YXN0aWMucmVzZW5kX2NodW5rc0gAQhEKD3BheWxvYWRfdmFyaWFudCqsFQoNSGFyZHdhcmVNb2RlbBIJCgVVTlNFVBAAEgwKCFRMT1JBX1YyEAESDAoIVExPUkFfVjEQAhISCg5UTE9SQV9WMl8xXzFQNhADEgkKBVRCRUFNEAQSDwoLSEVMVEVDX1YyXzAQBRIOCgpUQkVBTV9WMFA3EAYSCgoGVF9FQ0hPEAcSEAoMVExPUkFfVjFfMVAzEAgSCwoHUkFLNDYzMRAJEg8KC0hFTFRFQ19WMl8xEAoSDQoJSEVMVEVDX1YxEAsSGAoUTElMWUdPX1RCRUFNX1MzX0NPUkUQDBIMCghSQUsxMTIwMBANEgsKB05BTk9fRzEQDhISCg5UTE9SQV9WMl8xXzFQOBAPEg8KC1RMT1JBX1QzX1MzEBASFAoQTkFOT19HMV9FWFBMT1JFUhAREhEKDU5BTk9fRzJfVUxUUkEQEhINCglMT1JBX1RZUEUQExILCgdXSVBIT05FEBQSDgoKV0lPX1dNMTExMBAVEgsKB1JBSzI1NjAQFhITCg9IRUxURUNfSFJVXzM2MDEQFxIaChZIRUxURUNfV0lSRUxFU1NfQlJJREdFEBgSDgoKU1RBVElPTl9HMRAZEgwKCFJBSzExMzEwEBoSFAoQU0VOU0VMT1JBX1JQMjA0MBAbEhAKDFNFTlNFTE9SQV9TMxAcEg0KCUNBTkFSWU9ORRAdEg8KC1JQMjA0MF9MT1JBEB4SDgoKU1RBVElPTl9HMhAfEhEKDUxPUkFfUkVMQVlfVjEQIBIPCgtUX0VDSE9fUExVUxAhEgcKA1BQUhAiEg8KC0dFTklFQkxPQ0tTECMSEQoNTlJGNTJfVU5LTk9XThAkEg0KCVBPUlREVUlOTxAlEg8KC0FORFJPSURfU0lNECYSCgoGRElZX1YxECcSFQoRTlJGNTI4NDBfUENBMTAwNTkQKBIKCgZEUl9ERVYQKRILCgdNNVNUQUNLECoSDQoJSEVMVEVDX1YzECsSEQoNSEVMVEVDX1dTTF9WMxAsEhMKD0JFVEFGUFZfMjQwMF9UWBAtEhcKE0JFVEFGUFZfOTAwX05BTk9fVFgQLhIMCghSUElfUElDTxAvEhsKF0hFTFRFQ19XSVJFTEVTU19UUkFDS0VSEDASGQoVSEVMVEVDX1dJUkVMRVNTX1BBUEVSEDESCgoGVF9ERUNLEDISDgoKVF9XQVRDSF9TMxAzEhEKDVBJQ09NUFVURVJfUzMQNBIPCgtIRUxURUNfSFQ2MhA1EhIKDkVCWVRFX0VTUDMyX1MzEDYSEQoNRVNQMzJfUzNfUElDTxA3Eg0KCUNIQVRURVJfMhA4Eh4KGkhFTFRFQ19XSVJFTEVTU19QQVBFUl9WMV8wEDkSIAocSEVMVEVDX1dJUkVMRVNTX1RSQUNLRVJfVjFfMBA6EgsKB1VOUEhPTkUQOxIMCghURF9MT1JBQxA8EhMKD0NERUJZVEVfRU9SQV9TMxA9Eg8KC1RXQ19NRVNIX1Y0ED4SFgoSTlJGNTJfUFJPTUlDUk9fRElZED8SHwobUkFESU9NQVNURVJfOTAwX0JBTkRJVF9OQU5PEEASHAoYSEVMVEVDX0NBUFNVTEVfU0VOU09SX1YzEEESHQoZSEVMVEVDX1ZJU0lPTl9NQVNURVJfVDE5MBBCEh0KGUhFTFRFQ19WSVNJT05fTUFTVEVSX0UyMTMQQxIdChlIRUxURUNfVklTSU9OX01BU1RFUl9FMjkwEEQSGQoVSEVMVEVDX01FU0hfTk9ERV9UMTE0EEUSFgoSU0VOU0VDQVBfSU5ESUNBVE9SEEYSEwoPVFJBQ0tFUl9UMTAwMF9FEEcSCwoHUkFLMzE3MhBIEgoKBldJT19FNRBJEhoKFlJBRElPTUFTVEVSXzkwMF9CQU5ESVQQShITCg9NRTI1TFMwMV80WTEwVEQQSxIYChRSUDIwNDBfRkVBVEhFUl9SRk05NRBMEhUKEU01U1RBQ0tfQ09SRUJBU0lDEE0SEQoNTTVTVEFDS19DT1JFMhBOEg0KCVJQSV9QSUNPMhBPEhIKDk01U1RBQ0tfQ09SRVMzEFASEQoNU0VFRURfWElBT19TMxBREgsKB01TMjRTRjEQUhIMCghUTE9SQV9DNhBTEg8KC1dJU01FU0hfVEFQEFQSDQoJUk9VVEFTVElDEFUSDAoITUVTSF9UQUIQVhIMCghNRVNITElOSxBXEhIKDlhJQU9fTlJGNTJfS0lUEFgSEAoMVEhJTktOT0RFX00xEFkSEAoMVEhJTktOT0RFX00yEFoSDwoLVF9FVEhfRUxJVEUQWxIVChFIRUxURUNfU0VOU09SX0hVQhBcEg0KCU1VWklfQkFTRRBdEhYKEkhFTFRFQ19NRVNIX1BPQ0tFVBBeEhQKEFNFRUVEX1NPTEFSX05PREUQXxIYChROT01BRFNUQVJfTUVURU9SX1BSTxBgEg0KCUNST1dQQU5FTBBhEgsKB0xJTktfMzIQYhIYChRTRUVFRF9XSU9fVFJBQ0tFUl9MMRBjEh0KGVNFRUVEX1dJT19UUkFDS0VSX0wxX0VJTksQZBIPCgtNVVpJX1IxX05FTxBlEg4KClRfREVDS19QUk8QZhIQCgxUX0xPUkFfUEFHRVIQZxIUChBNNVNUQUNLX1JFU0VSVkVEEGgSDwoLV0lTTUVTSF9UQUcQaRILCgdSQUszMzEyEGoSEAoMVEhJTktOT0RFX001EGsSFQoRSEVMVEVDX01FU0hfU09MQVIQbBIPCgtUX0VDSE9fTElURRBtEg0KCUhFTFRFQ19WNBBuEg8KC001U1RBQ0tfQzZMEG8SGQoVTTVTVEFDS19DQVJEUFVURVJfQURWEHASHgoaSEVMVEVDX1dJUkVMRVNTX1RSQUNLRVJfVjIQcRIRCg1UX1dBVENIX1VMVFJBEHISEAoMVEhJTktOT0RFX00zEHMSEgoOV0lTTUVTSF9UQVBfVjIQdBILCgdSQUszNDAxEHUSCwoHUkFLNjQyMRB2EhAKDFRISU5LTk9ERV9NNBB3EhAKDFRISU5LTk9ERV9NNhB4EhIKDk1FU0hTVElDS18xMjYyEHkSEAoMVEJFQU1fMV9XQVRUEHoSFAoQVDVfUzNfRVBBUEVSX1BSTxB7Eg0KCVRCRUFNX0JQRhB8EhIKDk1JTklfRVBBUEVSX1MzEH0SEwoPVERJU1BMQVlfUzNfUFJPEH4SGQoVSEVMVEVDX01FU0hfTk9ERV9UMDk2EH8SGAoTVFJBQ0tFUl9UMTAwMF9FX1BSTxCAARIRCgxUSElOS05PREVfTTcQgQESEQoMVEhJTktOT0RFX004EIIBEhEKDFRISU5LTk9ERV9NORCDARIRCgxIRUxURUNfVjRfUjgQhAESGAoTSEVMVEVDX01FU0hfTk9ERV9UMRCFARIPCgpTVEFUSU9OX0czEIYBEhMKDlRfSU1QVUxTRV9QTFVTEIcBEhAKC1RfRUNIT19DQVJEEIgBEhkKFFNFRUVEX1dJT19UUkFDS0VSX0wyEIkBEhEKDENST1dQQU5FTF9QNBCKARIZChRIRUxURUNfTUVTSF9UT1dFUl9WMhCLARITCg5NRVNITk9MT0dZX1cxMBCMARIPCgpQUklWQVRFX0hXEP8BKiwKCUNvbnN0YW50cxIICgRaRVJPEAASFQoQREFUQV9QQVlMT0FEX0xFThDpASq0AgoRQ3JpdGljYWxFcnJvckNvZGUSCAoETk9ORRAAEg8KC1RYX1dBVENIRE9HEAESFAoQU0xFRVBfRU5URVJfV0FJVBACEgwKCE5PX1JBRElPEAMSDwoLVU5TUEVDSUZJRUQQBBIVChFVQkxPWF9VTklUX0ZBSUxFRBAFEg0KCU5PX0FYUDE5MhAGEhkKFUlOVkFMSURfUkFESU9fU0VUVElORxAHEhMKD1RSQU5TTUlUX0ZBSUxFRBAIEgwKCEJST1dOT1VUEAkSEgoOU1gxMjYyX0ZBSUxVUkUQChIRCg1SQURJT19TUElfQlVHEAsSIAocRkxBU0hfQ09SUlVQVElPTl9SRUNPVkVSQUJMRRAMEiIKHkZMQVNIX0NPUlJVUFRJT05fVU5SRUNPVkVSQUJMRRANKn8KD0Zpcm13YXJlRWRpdGlvbhILCgdWQU5JTExBEAASEQoNU01BUlRfQ0lUSVpFThABEg4KCk9QRU5fU0FVQ0UQEBIKCgZERUZDT04QERIPCgtCVVJOSU5HX01BThASEg4KCkhBTVZFTlRJT04QExIPCgtESVlfRURJVElPThB/KoADCg9FeGNsdWRlZE1vZHVsZXMSEQoNRVhDTFVERURfTk9ORRAAEg8KC01RVFRfQ09ORklHEAESEQoNU0VSSUFMX0NPTkZJRxACEhMKD0VYVE5PVElGX0NPTkZJRxAEEhcKE1NUT1JFRk9SV0FSRF9DT05GSUcQCBIUChBSQU5HRVRFU1RfQ09ORklHEBASFAoQVEVMRU1FVFJZX0NPTkZJRxAgEhQKEENBTk5FRE1TR19DT05GSUcQQBIRCgxBVURJT19DT05GSUcQgAESGgoVUkVNT1RFSEFSRFdBUkVfQ09ORklHEIACEhgKE05FSUdIQk9SSU5GT19DT05GSUcQgAQSGwoWQU1CSUVOVExJR0hUSU5HX0NPTkZJRxCACBIbChZERVRFQ1RJT05TRU5TT1JfQ09ORklHEIAQEhYKEVBBWENPVU5URVJfQ09ORklHEIAgEhUKEEJMVUVUT09USF9DT05GSUcQgEASFAoOTkVUV09SS19DT05GSUcQgIABQmAKFG9yZy5tZXNodGFzdGljLnByb3RvQgpNZXNoUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", + [ + file_meshtastic_channel, + file_meshtastic_config, + file_meshtastic_device_ui, + file_meshtastic_module_config, + file_meshtastic_portnums, + file_meshtastic_telemetry, + file_meshtastic_xmodem, + ], +); /** * @@ -241,8 +255,10 @@ export type Position = Message<"meshtastic.Position"> & { * Describes the message meshtastic.Position. * Use `create(PositionSchema)` to create a new message. */ -export const PositionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 0); +export const PositionSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 0, +); /** * @@ -287,7 +303,7 @@ export enum Position_LocSource { /** * Describes the enum meshtastic.Position.LocSource. */ -export const Position_LocSourceSchema: GenEnum = /*@__PURE__*/ +export const Position_LocSourceSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 0, 0); /** @@ -342,7 +358,7 @@ export enum Position_AltSource { /** * Describes the enum meshtastic.Position.AltSource. */ -export const Position_AltSourceSchema: GenEnum = /*@__PURE__*/ +export const Position_AltSourceSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 0, 1); /** @@ -464,8 +480,10 @@ export type User = Message<"meshtastic.User"> & { * Describes the message meshtastic.User. * Use `create(UserSchema)` to create a new message. */ -export const UserSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 1); +export const UserSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 1, +); /** * @@ -511,7 +529,7 @@ export type RouteDiscovery = Message<"meshtastic.RouteDiscovery"> & { * Describes the message meshtastic.RouteDiscovery. * Use `create(RouteDiscoverySchema)` to create a new message. */ -export const RouteDiscoverySchema: GenMessage = /*@__PURE__*/ +export const RouteDiscoverySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_mesh, 2); /** @@ -524,43 +542,49 @@ export type Routing = Message<"meshtastic.Routing"> & { /** * @generated from oneof meshtastic.Routing.variant */ - variant: { - /** - * - * A route request going from the requester - * - * @generated from field: meshtastic.RouteDiscovery route_request = 1; - */ - value: RouteDiscovery; - case: "routeRequest"; - } | { - /** - * - * A route reply - * - * @generated from field: meshtastic.RouteDiscovery route_reply = 2; - */ - value: RouteDiscovery; - case: "routeReply"; - } | { - /** - * - * A failure in delivering a message (usually used for routing control messages, but might be provided - * in addition to ack.fail_id to provide details on the type of failure). - * - * @generated from field: meshtastic.Routing.Error error_reason = 3; - */ - value: Routing_Error; - case: "errorReason"; - } | { case: undefined; value?: undefined }; + variant: + | { + /** + * + * A route request going from the requester + * + * @generated from field: meshtastic.RouteDiscovery route_request = 1; + */ + value: RouteDiscovery; + case: "routeRequest"; + } + | { + /** + * + * A route reply + * + * @generated from field: meshtastic.RouteDiscovery route_reply = 2; + */ + value: RouteDiscovery; + case: "routeReply"; + } + | { + /** + * + * A failure in delivering a message (usually used for routing control messages, but might be provided + * in addition to ack.fail_id to provide details on the type of failure). + * + * @generated from field: meshtastic.Routing.Error error_reason = 3; + */ + value: Routing_Error; + case: "errorReason"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.Routing. * Use `create(RoutingSchema)` to create a new message. */ -export const RoutingSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 3); +export const RoutingSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 3, +); /** * @@ -722,7 +746,7 @@ export enum Routing_Error { /** * Describes the enum meshtastic.Routing.Error. */ -export const Routing_ErrorSchema: GenEnum = /*@__PURE__*/ +export const Routing_ErrorSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 3, 0); /** @@ -829,8 +853,10 @@ export type Data = Message<"meshtastic.Data"> & { * Describes the message meshtastic.Data. * Use `create(DataSchema)` to create a new message. */ -export const DataSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 4); +export const DataSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 4, +); /** * @@ -869,7 +895,7 @@ export type KeyVerification = Message<"meshtastic.KeyVerification"> & { * Describes the message meshtastic.KeyVerification. * Use `create(KeyVerificationSchema)` to create a new message. */ -export const KeyVerificationSchema: GenMessage = /*@__PURE__*/ +export const KeyVerificationSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_mesh, 5); /** @@ -878,93 +904,94 @@ export const KeyVerificationSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.StoreForwardPlusPlus */ -export type StoreForwardPlusPlus = Message<"meshtastic.StoreForwardPlusPlus"> & { - /** - * - * Which message type is this - * - * @generated from field: meshtastic.StoreForwardPlusPlus.SFPP_message_type sfpp_message_type = 1; - */ - sfppMessageType: StoreForwardPlusPlus_SFPP_message_type; +export type StoreForwardPlusPlus = + Message<"meshtastic.StoreForwardPlusPlus"> & { + /** + * + * Which message type is this + * + * @generated from field: meshtastic.StoreForwardPlusPlus.SFPP_message_type sfpp_message_type = 1; + */ + sfppMessageType: StoreForwardPlusPlus_SFPP_message_type; - /** - * - * The hash of the specific message - * - * @generated from field: bytes message_hash = 2; - */ - messageHash: Uint8Array; + /** + * + * The hash of the specific message + * + * @generated from field: bytes message_hash = 2; + */ + messageHash: Uint8Array; - /** - * - * The hash of a link on a chain - * - * @generated from field: bytes commit_hash = 3; - */ - commitHash: Uint8Array; + /** + * + * The hash of a link on a chain + * + * @generated from field: bytes commit_hash = 3; + */ + commitHash: Uint8Array; - /** - * - * the root hash of a chain - * - * @generated from field: bytes root_hash = 4; - */ - rootHash: Uint8Array; + /** + * + * the root hash of a chain + * + * @generated from field: bytes root_hash = 4; + */ + rootHash: Uint8Array; - /** - * - * The encrypted bytes from a message - * - * @generated from field: bytes message = 5; - */ - message: Uint8Array; + /** + * + * The encrypted bytes from a message + * + * @generated from field: bytes message = 5; + */ + message: Uint8Array; - /** - * - * Message ID of the contained message - * - * @generated from field: uint32 encapsulated_id = 6; - */ - encapsulatedId: number; + /** + * + * Message ID of the contained message + * + * @generated from field: uint32 encapsulated_id = 6; + */ + encapsulatedId: number; - /** - * - * Destination of the contained message - * - * @generated from field: uint32 encapsulated_to = 7; - */ - encapsulatedTo: number; + /** + * + * Destination of the contained message + * + * @generated from field: uint32 encapsulated_to = 7; + */ + encapsulatedTo: number; - /** - * - * Sender of the contained message - * - * @generated from field: uint32 encapsulated_from = 8; - */ - encapsulatedFrom: number; + /** + * + * Sender of the contained message + * + * @generated from field: uint32 encapsulated_from = 8; + */ + encapsulatedFrom: number; - /** - * - * The receive time of the message in question - * - * @generated from field: uint32 encapsulated_rxtime = 9; - */ - encapsulatedRxtime: number; + /** + * + * The receive time of the message in question + * + * @generated from field: uint32 encapsulated_rxtime = 9; + */ + encapsulatedRxtime: number; - /** - * - * Used in a LINK_REQUEST to specify the message X spots back from head - * - * @generated from field: uint32 chain_count = 10; - */ - chainCount: number; -}; + /** + * + * Used in a LINK_REQUEST to specify the message X spots back from head + * + * @generated from field: uint32 chain_count = 10; + */ + chainCount: number; + }; /** * Describes the message meshtastic.StoreForwardPlusPlus. * Use `create(StoreForwardPlusPlusSchema)` to create a new message. */ -export const StoreForwardPlusPlusSchema: GenMessage = /*@__PURE__*/ +export const StoreForwardPlusPlusSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_mesh, 6); /** @@ -1026,7 +1053,7 @@ export enum StoreForwardPlusPlus_SFPP_message_type { /** * Describes the enum meshtastic.StoreForwardPlusPlus.SFPP_message_type. */ -export const StoreForwardPlusPlus_SFPP_message_typeSchema: GenEnum = /*@__PURE__*/ +export const StoreForwardPlusPlus_SFPP_message_typeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 6, 0); /** @@ -1121,7 +1148,7 @@ export type RemoteShell = Message<"meshtastic.RemoteShell"> & { * Describes the message meshtastic.RemoteShell. * Use `create(RemoteShellSchema)` to create a new message. */ -export const RemoteShellSchema: GenMessage = /*@__PURE__*/ +export const RemoteShellSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_mesh, 7); /** @@ -1202,7 +1229,7 @@ export enum RemoteShell_OpCode { /** * Describes the enum meshtastic.RemoteShell.OpCode. */ -export const RemoteShell_OpCodeSchema: GenEnum = /*@__PURE__*/ +export const RemoteShell_OpCodeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 7, 0); /** @@ -1276,14 +1303,106 @@ export type Waypoint = Message<"meshtastic.Waypoint"> & { * @generated from field: fixed32 icon = 8; */ icon: number; + + /** + * + * Geofence circle radius in meters around (latitude_i, longitude_i). + * 0 disables the circular geofence. + * + * @generated from field: uint32 geofence_radius = 9; + */ + geofenceRadius: number; + + /** + * + * Optional axis-aligned rectangular geofence (WSEN order). + * A point is inside the geofence if it falls inside the circle OR the box. + * + * @generated from field: optional meshtastic.BoundingBox bounding_box = 10; + */ + boundingBox?: BoundingBox | undefined; + + /** + * + * When true, receivers alert on nodes crossing outside -> inside. + * + * @generated from field: bool notify_on_enter = 11; + */ + notifyOnEnter: boolean; + + /** + * + * When true, receivers alert on nodes crossing inside -> outside. + * + * @generated from field: bool notify_on_exit = 12; + */ + notifyOnExit: boolean; + + /** + * + * When true, suppress alerts for nodes not marked as favorite locally. + * + * @generated from field: bool notify_favorites_only = 13; + */ + notifyFavoritesOnly: boolean; }; /** * Describes the message meshtastic.Waypoint. * Use `create(WaypointSchema)` to create a new message. */ -export const WaypointSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 8); +export const WaypointSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 8, +); + +/** + * + * Axis-aligned rectangular region in the same 1e-7 degree encoding as + * Position. Field order matches GeoJSON bbox (west, south, east, north). + * + * @generated from message meshtastic.BoundingBox + */ +export type BoundingBox = Message<"meshtastic.BoundingBox"> & { + /** + * + * West edge longitude (1e-7 degrees). + * + * @generated from field: sfixed32 longitude_west_i = 1; + */ + longitudeWestI: number; + + /** + * + * South edge latitude (1e-7 degrees). + * + * @generated from field: sfixed32 latitude_south_i = 2; + */ + latitudeSouthI: number; + + /** + * + * East edge longitude (1e-7 degrees). + * + * @generated from field: sfixed32 longitude_east_i = 3; + */ + longitudeEastI: number; + + /** + * + * North edge latitude (1e-7 degrees). + * + * @generated from field: sfixed32 latitude_north_i = 4; + */ + latitudeNorthI: number; +}; + +/** + * Describes the message meshtastic.BoundingBox. + * Use `create(BoundingBoxSchema)` to create a new message. + */ +export const BoundingBoxSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 9); /** * @@ -1302,8 +1421,8 @@ export type StatusMessage = Message<"meshtastic.StatusMessage"> & { * Describes the message meshtastic.StatusMessage. * Use `create(StatusMessageSchema)` to create a new message. */ -export const StatusMessageSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 9); +export const StatusMessageSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 10); /** * @@ -1311,56 +1430,60 @@ export const StatusMessageSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.MqttClientProxyMessage */ -export type MqttClientProxyMessage = Message<"meshtastic.MqttClientProxyMessage"> & { - /** - * - * The MQTT topic this message will be sent /received on - * - * @generated from field: string topic = 1; - */ - topic: string; - - /** - * - * The actual service envelope payload or text for mqtt pub / sub - * - * @generated from oneof meshtastic.MqttClientProxyMessage.payload_variant - */ - payloadVariant: { +export type MqttClientProxyMessage = + Message<"meshtastic.MqttClientProxyMessage"> & { /** * - * Bytes + * The MQTT topic this message will be sent /received on * - * @generated from field: bytes data = 2; + * @generated from field: string topic = 1; */ - value: Uint8Array; - case: "data"; - } | { + topic: string; + /** * - * Text + * The actual service envelope payload or text for mqtt pub / sub * - * @generated from field: string text = 3; + * @generated from oneof meshtastic.MqttClientProxyMessage.payload_variant */ - value: string; - case: "text"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * + * Bytes + * + * @generated from field: bytes data = 2; + */ + value: Uint8Array; + case: "data"; + } + | { + /** + * + * Text + * + * @generated from field: string text = 3; + */ + value: string; + case: "text"; + } + | { case: undefined; value?: undefined }; - /** - * - * Whether the message should be retained (or not) - * - * @generated from field: bool retained = 4; - */ - retained: boolean; -}; + /** + * + * Whether the message should be retained (or not) + * + * @generated from field: bool retained = 4; + */ + retained: boolean; + }; /** * Describes the message meshtastic.MqttClientProxyMessage. * Use `create(MqttClientProxyMessageSchema)` to create a new message. */ -export const MqttClientProxyMessageSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 10); +export const MqttClientProxyMessageSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 11); /** * @@ -1410,25 +1533,28 @@ export type MeshPacket = Message<"meshtastic.MeshPacket"> & { /** * @generated from oneof meshtastic.MeshPacket.payload_variant */ - payloadVariant: { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.Data decoded = 4; - */ - value: Data; - case: "decoded"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: bytes encrypted = 5; - */ - value: Uint8Array; - case: "encrypted"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.Data decoded = 4; + */ + value: Data; + case: "decoded"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: bytes encrypted = 5; + */ + value: Uint8Array; + case: "encrypted"; + } + | { case: undefined; value?: undefined }; /** * @@ -1601,8 +1727,8 @@ export type MeshPacket = Message<"meshtastic.MeshPacket"> & { * Describes the message meshtastic.MeshPacket. * Use `create(MeshPacketSchema)` to create a new message. */ -export const MeshPacketSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 11); +export const MeshPacketSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 12); /** * @@ -1716,8 +1842,8 @@ export enum MeshPacket_Priority { /** * Describes the enum meshtastic.MeshPacket.Priority. */ -export const MeshPacket_PrioritySchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_mesh, 11, 0); +export const MeshPacket_PrioritySchema: GenEnum /*@__PURE__*/ = + enumDesc(file_meshtastic_mesh, 12, 0); /** * @@ -1754,8 +1880,8 @@ export enum MeshPacket_Delayed { /** * Describes the enum meshtastic.MeshPacket.Delayed. */ -export const MeshPacket_DelayedSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_mesh, 11, 1); +export const MeshPacket_DelayedSchema: GenEnum /*@__PURE__*/ = + enumDesc(file_meshtastic_mesh, 12, 1); /** * @@ -1840,8 +1966,8 @@ export enum MeshPacket_TransportMechanism { /** * Describes the enum meshtastic.MeshPacket.TransportMechanism. */ -export const MeshPacket_TransportMechanismSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_mesh, 11, 2); +export const MeshPacket_TransportMechanismSchema: GenEnum /*@__PURE__*/ = + enumDesc(file_meshtastic_mesh, 12, 2); /** * @@ -1991,8 +2117,10 @@ export type NodeInfo = Message<"meshtastic.NodeInfo"> & { * Describes the message meshtastic.NodeInfo. * Use `create(NodeInfoSchema)` to create a new message. */ -export const NodeInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 12); +export const NodeInfoSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 13, +); /** * @@ -2068,8 +2196,8 @@ export type MyNodeInfo = Message<"meshtastic.MyNodeInfo"> & { * Describes the message meshtastic.MyNodeInfo. * Use `create(MyNodeInfoSchema)` to create a new message. */ -export const MyNodeInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 13); +export const MyNodeInfoSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 14); /** * @@ -2119,8 +2247,10 @@ export type LogRecord = Message<"meshtastic.LogRecord"> & { * Describes the message meshtastic.LogRecord. * Use `create(LogRecordSchema)` to create a new message. */ -export const LogRecordSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 14); +export const LogRecordSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 15, +); /** * @@ -2189,36 +2319,36 @@ export enum LogRecord_Level { /** * Describes the enum meshtastic.LogRecord.Level. */ -export const LogRecord_LevelSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_mesh, 14, 0); +export const LogRecord_LevelSchema: GenEnum /*@__PURE__*/ = + enumDesc(file_meshtastic_mesh, 15, 0); /** * @generated from message meshtastic.QueueStatus */ export type QueueStatus = Message<"meshtastic.QueueStatus"> & { /** - * Last attempt to queue status, ErrorCode + * Last attempt to queue status, ErrorCode * * @generated from field: int32 res = 1; */ res: number; /** - * Free entries in the outgoing queue + * Free entries in the outgoing queue * * @generated from field: uint32 free = 2; */ free: number; /** - * Maximum entries in the outgoing queue + * Maximum entries in the outgoing queue * * @generated from field: uint32 maxlen = 3; */ maxlen: number; /** - * What was mesh packet id that generated this response? + * What was mesh packet id that generated this response? * * @generated from field: uint32 mesh_packet_id = 4; */ @@ -2229,8 +2359,8 @@ export type QueueStatus = Message<"meshtastic.QueueStatus"> & { * Describes the message meshtastic.QueueStatus. * Use `create(QueueStatusSchema)` to create a new message. */ -export const QueueStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 15); +export const QueueStatusSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 16); /** * @@ -2257,180 +2387,200 @@ export type FromRadio = Message<"meshtastic.FromRadio"> & { * * @generated from oneof meshtastic.FromRadio.payload_variant */ - payloadVariant: { - /** - * - * Log levels, chosen to match python logging conventions. - * - * @generated from field: meshtastic.MeshPacket packet = 2; - */ - value: MeshPacket; - case: "packet"; - } | { - /** - * - * Tells the phone what our node number is, can be -1 if we've not yet joined a mesh. - * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. - * - * @generated from field: meshtastic.MyNodeInfo my_info = 3; - */ - value: MyNodeInfo; - case: "myInfo"; - } | { - /** - * - * One packet is sent for each node in the on radio DB - * starts over with the first node in our DB - * - * @generated from field: meshtastic.NodeInfo node_info = 4; - */ - value: NodeInfo; - case: "nodeInfo"; - } | { - /** - * - * Include a part of the config (was: RadioConfig radio) - * - * @generated from field: meshtastic.Config config = 5; - */ - value: Config; - case: "config"; - } | { - /** - * - * Set to send debug console output over our protobuf stream - * - * @generated from field: meshtastic.LogRecord log_record = 6; - */ - value: LogRecord; - case: "logRecord"; - } | { - /** - * - * Sent as true once the device has finished sending all of the responses to want_config - * recipient should check if this ID matches our original request nonce, if - * not, it means your config responses haven't started yet. - * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. - * - * @generated from field: uint32 config_complete_id = 7; - */ - value: number; - case: "configCompleteId"; - } | { - /** - * - * Sent to tell clients the radio has just rebooted. - * Set to true if present. - * Not used on all transports, currently just used for the serial console. - * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. - * - * @generated from field: bool rebooted = 8; - */ - value: boolean; - case: "rebooted"; - } | { - /** - * - * Include module config - * - * @generated from field: meshtastic.ModuleConfig moduleConfig = 9; - */ - value: ModuleConfig; - case: "moduleConfig"; - } | { - /** - * - * One packet is sent for each channel - * - * @generated from field: meshtastic.Channel channel = 10; - */ - value: Channel; - case: "channel"; - } | { - /** - * - * Queue status info - * - * @generated from field: meshtastic.QueueStatus queueStatus = 11; - */ - value: QueueStatus; - case: "queueStatus"; - } | { - /** - * - * File Transfer Chunk - * - * @generated from field: meshtastic.XModem xmodemPacket = 12; - */ - value: XModem; - case: "xmodemPacket"; - } | { - /** - * - * Device metadata message - * - * @generated from field: meshtastic.DeviceMetadata metadata = 13; - */ - value: DeviceMetadata; - case: "metadata"; - } | { - /** - * - * MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT) - * - * @generated from field: meshtastic.MqttClientProxyMessage mqttClientProxyMessage = 14; - */ - value: MqttClientProxyMessage; - case: "mqttClientProxyMessage"; - } | { - /** - * - * File system manifest messages - * - * @generated from field: meshtastic.FileInfo fileInfo = 15; - */ - value: FileInfo; - case: "fileInfo"; - } | { - /** - * - * Notification message to the client - * - * @generated from field: meshtastic.ClientNotification clientNotification = 16; - */ - value: ClientNotification; - case: "clientNotification"; - } | { - /** - * - * Persistent data for device-ui - * - * @generated from field: meshtastic.DeviceUIConfig deviceuiConfig = 17; - */ - value: DeviceUIConfig; - case: "deviceuiConfig"; - } | { - /** - * - * Lockdown state notification for hardened firmware builds. - * Sent post-config (so unauthorized clients learn they must - * provision/unlock) and after each LockdownAuth admin command - * to report success or failure. Replaces the earlier scheme of - * encoding state as magic-string prefixes inside ClientNotification. - * - * @generated from field: meshtastic.LockdownStatus lockdown_status = 18; - */ - value: LockdownStatus; - case: "lockdownStatus"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * + * Log levels, chosen to match python logging conventions. + * + * @generated from field: meshtastic.MeshPacket packet = 2; + */ + value: MeshPacket; + case: "packet"; + } + | { + /** + * + * Tells the phone what our node number is, can be -1 if we've not yet joined a mesh. + * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. + * + * @generated from field: meshtastic.MyNodeInfo my_info = 3; + */ + value: MyNodeInfo; + case: "myInfo"; + } + | { + /** + * + * One packet is sent for each node in the on radio DB + * starts over with the first node in our DB + * + * @generated from field: meshtastic.NodeInfo node_info = 4; + */ + value: NodeInfo; + case: "nodeInfo"; + } + | { + /** + * + * Include a part of the config (was: RadioConfig radio) + * + * @generated from field: meshtastic.Config config = 5; + */ + value: Config; + case: "config"; + } + | { + /** + * + * Set to send debug console output over our protobuf stream + * + * @generated from field: meshtastic.LogRecord log_record = 6; + */ + value: LogRecord; + case: "logRecord"; + } + | { + /** + * + * Sent as true once the device has finished sending all of the responses to want_config + * recipient should check if this ID matches our original request nonce, if + * not, it means your config responses haven't started yet. + * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. + * + * @generated from field: uint32 config_complete_id = 7; + */ + value: number; + case: "configCompleteId"; + } + | { + /** + * + * Sent to tell clients the radio has just rebooted. + * Set to true if present. + * Not used on all transports, currently just used for the serial console. + * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. + * + * @generated from field: bool rebooted = 8; + */ + value: boolean; + case: "rebooted"; + } + | { + /** + * + * Include module config + * + * @generated from field: meshtastic.ModuleConfig moduleConfig = 9; + */ + value: ModuleConfig; + case: "moduleConfig"; + } + | { + /** + * + * One packet is sent for each channel + * + * @generated from field: meshtastic.Channel channel = 10; + */ + value: Channel; + case: "channel"; + } + | { + /** + * + * Queue status info + * + * @generated from field: meshtastic.QueueStatus queueStatus = 11; + */ + value: QueueStatus; + case: "queueStatus"; + } + | { + /** + * + * File Transfer Chunk + * + * @generated from field: meshtastic.XModem xmodemPacket = 12; + */ + value: XModem; + case: "xmodemPacket"; + } + | { + /** + * + * Device metadata message + * + * @generated from field: meshtastic.DeviceMetadata metadata = 13; + */ + value: DeviceMetadata; + case: "metadata"; + } + | { + /** + * + * MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT) + * + * @generated from field: meshtastic.MqttClientProxyMessage mqttClientProxyMessage = 14; + */ + value: MqttClientProxyMessage; + case: "mqttClientProxyMessage"; + } + | { + /** + * + * File system manifest messages + * + * @generated from field: meshtastic.FileInfo fileInfo = 15; + */ + value: FileInfo; + case: "fileInfo"; + } + | { + /** + * + * Notification message to the client + * + * @generated from field: meshtastic.ClientNotification clientNotification = 16; + */ + value: ClientNotification; + case: "clientNotification"; + } + | { + /** + * + * Persistent data for device-ui + * + * @generated from field: meshtastic.DeviceUIConfig deviceuiConfig = 17; + */ + value: DeviceUIConfig; + case: "deviceuiConfig"; + } + | { + /** + * + * Lockdown state notification for hardened firmware builds. + * Sent post-config (so unauthorized clients learn they must + * provision/unlock) and after each LockdownAuth admin command + * to report success or failure. Replaces the earlier scheme of + * encoding state as magic-string prefixes inside ClientNotification. + * + * @generated from field: meshtastic.LockdownStatus lockdown_status = 18; + */ + value: LockdownStatus; + case: "lockdownStatus"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.FromRadio. * Use `create(FromRadioSchema)` to create a new message. */ -export const FromRadioSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 16); +export const FromRadioSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 17, +); /** * @@ -2443,7 +2593,7 @@ export const FromRadioSchema: GenMessage = /*@__PURE__*/ */ export type LockdownStatus = Message<"meshtastic.LockdownStatus"> & { /** - * Current lockdown state being reported. + * Current lockdown state being reported. * * @generated from field: meshtastic.LockdownStatus.State state = 1; */ @@ -2501,15 +2651,15 @@ export type LockdownStatus = Message<"meshtastic.LockdownStatus"> & { * Describes the message meshtastic.LockdownStatus. * Use `create(LockdownStatusSchema)` to create a new message. */ -export const LockdownStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 17); +export const LockdownStatusSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 18); /** * @generated from enum meshtastic.LockdownStatus.State */ export enum LockdownStatus_State { /** - * Default; should not be sent. + * Default; should not be sent. * * @generated from enum value: STATE_UNSPECIFIED = 0; */ @@ -2570,8 +2720,8 @@ export enum LockdownStatus_State { /** * Describes the enum meshtastic.LockdownStatus.State. */ -export const LockdownStatus_StateSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_mesh, 17, 0); +export const LockdownStatus_StateSchema: GenEnum /*@__PURE__*/ = + enumDesc(file_meshtastic_mesh, 18, 0); /** * @@ -2618,152 +2768,160 @@ export type ClientNotification = Message<"meshtastic.ClientNotification"> & { /** * @generated from oneof meshtastic.ClientNotification.payload_variant */ - payloadVariant: { - /** - * @generated from field: meshtastic.KeyVerificationNumberInform key_verification_number_inform = 11; - */ - value: KeyVerificationNumberInform; - case: "keyVerificationNumberInform"; - } | { - /** - * @generated from field: meshtastic.KeyVerificationNumberRequest key_verification_number_request = 12; - */ - value: KeyVerificationNumberRequest; - case: "keyVerificationNumberRequest"; - } | { - /** - * @generated from field: meshtastic.KeyVerificationFinal key_verification_final = 13; - */ - value: KeyVerificationFinal; - case: "keyVerificationFinal"; - } | { - /** - * @generated from field: meshtastic.DuplicatedPublicKey duplicated_public_key = 14; - */ - value: DuplicatedPublicKey; - case: "duplicatedPublicKey"; - } | { - /** - * @generated from field: meshtastic.LowEntropyKey low_entropy_key = 15; - */ - value: LowEntropyKey; - case: "lowEntropyKey"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * @generated from field: meshtastic.KeyVerificationNumberInform key_verification_number_inform = 11; + */ + value: KeyVerificationNumberInform; + case: "keyVerificationNumberInform"; + } + | { + /** + * @generated from field: meshtastic.KeyVerificationNumberRequest key_verification_number_request = 12; + */ + value: KeyVerificationNumberRequest; + case: "keyVerificationNumberRequest"; + } + | { + /** + * @generated from field: meshtastic.KeyVerificationFinal key_verification_final = 13; + */ + value: KeyVerificationFinal; + case: "keyVerificationFinal"; + } + | { + /** + * @generated from field: meshtastic.DuplicatedPublicKey duplicated_public_key = 14; + */ + value: DuplicatedPublicKey; + case: "duplicatedPublicKey"; + } + | { + /** + * @generated from field: meshtastic.LowEntropyKey low_entropy_key = 15; + */ + value: LowEntropyKey; + case: "lowEntropyKey"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.ClientNotification. * Use `create(ClientNotificationSchema)` to create a new message. */ -export const ClientNotificationSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 18); +export const ClientNotificationSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 19); /** * @generated from message meshtastic.KeyVerificationNumberInform */ -export type KeyVerificationNumberInform = Message<"meshtastic.KeyVerificationNumberInform"> & { - /** - * @generated from field: uint64 nonce = 1; - */ - nonce: bigint; +export type KeyVerificationNumberInform = + Message<"meshtastic.KeyVerificationNumberInform"> & { + /** + * @generated from field: uint64 nonce = 1; + */ + nonce: bigint; - /** - * @generated from field: string remote_longname = 2; - */ - remoteLongname: string; + /** + * @generated from field: string remote_longname = 2; + */ + remoteLongname: string; - /** - * @generated from field: uint32 security_number = 3; - */ - securityNumber: number; -}; + /** + * @generated from field: uint32 security_number = 3; + */ + securityNumber: number; + }; /** * Describes the message meshtastic.KeyVerificationNumberInform. * Use `create(KeyVerificationNumberInformSchema)` to create a new message. */ -export const KeyVerificationNumberInformSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 19); +export const KeyVerificationNumberInformSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 20); /** * @generated from message meshtastic.KeyVerificationNumberRequest */ -export type KeyVerificationNumberRequest = Message<"meshtastic.KeyVerificationNumberRequest"> & { - /** - * @generated from field: uint64 nonce = 1; - */ - nonce: bigint; +export type KeyVerificationNumberRequest = + Message<"meshtastic.KeyVerificationNumberRequest"> & { + /** + * @generated from field: uint64 nonce = 1; + */ + nonce: bigint; - /** - * @generated from field: string remote_longname = 2; - */ - remoteLongname: string; -}; + /** + * @generated from field: string remote_longname = 2; + */ + remoteLongname: string; + }; /** * Describes the message meshtastic.KeyVerificationNumberRequest. * Use `create(KeyVerificationNumberRequestSchema)` to create a new message. */ -export const KeyVerificationNumberRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 20); +export const KeyVerificationNumberRequestSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 21); /** * @generated from message meshtastic.KeyVerificationFinal */ -export type KeyVerificationFinal = Message<"meshtastic.KeyVerificationFinal"> & { - /** - * @generated from field: uint64 nonce = 1; - */ - nonce: bigint; +export type KeyVerificationFinal = + Message<"meshtastic.KeyVerificationFinal"> & { + /** + * @generated from field: uint64 nonce = 1; + */ + nonce: bigint; - /** - * @generated from field: string remote_longname = 2; - */ - remoteLongname: string; + /** + * @generated from field: string remote_longname = 2; + */ + remoteLongname: string; - /** - * @generated from field: bool isSender = 3; - */ - isSender: boolean; + /** + * @generated from field: bool isSender = 3; + */ + isSender: boolean; - /** - * @generated from field: string verification_characters = 4; - */ - verificationCharacters: string; -}; + /** + * @generated from field: string verification_characters = 4; + */ + verificationCharacters: string; + }; /** * Describes the message meshtastic.KeyVerificationFinal. * Use `create(KeyVerificationFinalSchema)` to create a new message. */ -export const KeyVerificationFinalSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 21); +export const KeyVerificationFinalSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 22); /** * @generated from message meshtastic.DuplicatedPublicKey */ -export type DuplicatedPublicKey = Message<"meshtastic.DuplicatedPublicKey"> & { -}; +export type DuplicatedPublicKey = + Message<"meshtastic.DuplicatedPublicKey"> & {}; /** * Describes the message meshtastic.DuplicatedPublicKey. * Use `create(DuplicatedPublicKeySchema)` to create a new message. */ -export const DuplicatedPublicKeySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 22); +export const DuplicatedPublicKeySchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 23); /** * @generated from message meshtastic.LowEntropyKey */ -export type LowEntropyKey = Message<"meshtastic.LowEntropyKey"> & { -}; +export type LowEntropyKey = Message<"meshtastic.LowEntropyKey"> & {}; /** * Describes the message meshtastic.LowEntropyKey. * Use `create(LowEntropyKeySchema)` to create a new message. */ -export const LowEntropyKeySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 23); +export const LowEntropyKeySchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 24); /** * @@ -2793,8 +2951,10 @@ export type FileInfo = Message<"meshtastic.FileInfo"> & { * Describes the message meshtastic.FileInfo. * Use `create(FileInfoSchema)` to create a new message. */ -export const FileInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 24); +export const FileInfoSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 25, +); /** * @@ -2810,75 +2970,84 @@ export type ToRadio = Message<"meshtastic.ToRadio"> & { * * @generated from oneof meshtastic.ToRadio.payload_variant */ - payloadVariant: { - /** - * - * Send this packet on the mesh - * - * @generated from field: meshtastic.MeshPacket packet = 1; - */ - value: MeshPacket; - case: "packet"; - } | { - /** - * - * Phone wants radio to send full node db to the phone, This is - * typically the first packet sent to the radio when the phone gets a - * bluetooth connection. The radio will respond by sending back a - * MyNodeInfo, a owner, a radio config and a series of - * FromRadio.node_infos, and config_complete - * the integer you write into this field will be reported back in the - * config_complete_id response this allows clients to never be confused by - * a stale old partially sent config. - * - * @generated from field: uint32 want_config_id = 3; - */ - value: number; - case: "wantConfigId"; - } | { - /** - * - * Tell API server we are disconnecting now. - * This is useful for serial links where there is no hardware/protocol based notification that the client has dropped the link. - * (Sending this message is optional for clients) - * - * @generated from field: bool disconnect = 4; - */ - value: boolean; - case: "disconnect"; - } | { - /** - * @generated from field: meshtastic.XModem xmodemPacket = 5; - */ - value: XModem; - case: "xmodemPacket"; - } | { - /** - * - * MQTT Client Proxy Message (for client / phone subscribed to MQTT sending to device) - * - * @generated from field: meshtastic.MqttClientProxyMessage mqttClientProxyMessage = 6; - */ - value: MqttClientProxyMessage; - case: "mqttClientProxyMessage"; - } | { - /** - * - * Heartbeat message (used to keep the device connection awake on serial) - * - * @generated from field: meshtastic.Heartbeat heartbeat = 7; - */ - value: Heartbeat; - case: "heartbeat"; - } | { case: undefined; value?: undefined }; + payloadVariant: + | { + /** + * + * Send this packet on the mesh + * + * @generated from field: meshtastic.MeshPacket packet = 1; + */ + value: MeshPacket; + case: "packet"; + } + | { + /** + * + * Phone wants radio to send full node db to the phone, This is + * typically the first packet sent to the radio when the phone gets a + * bluetooth connection. The radio will respond by sending back a + * MyNodeInfo, a owner, a radio config and a series of + * FromRadio.node_infos, and config_complete + * the integer you write into this field will be reported back in the + * config_complete_id response this allows clients to never be confused by + * a stale old partially sent config. + * + * @generated from field: uint32 want_config_id = 3; + */ + value: number; + case: "wantConfigId"; + } + | { + /** + * + * Tell API server we are disconnecting now. + * This is useful for serial links where there is no hardware/protocol based notification that the client has dropped the link. + * (Sending this message is optional for clients) + * + * @generated from field: bool disconnect = 4; + */ + value: boolean; + case: "disconnect"; + } + | { + /** + * @generated from field: meshtastic.XModem xmodemPacket = 5; + */ + value: XModem; + case: "xmodemPacket"; + } + | { + /** + * + * MQTT Client Proxy Message (for client / phone subscribed to MQTT sending to device) + * + * @generated from field: meshtastic.MqttClientProxyMessage mqttClientProxyMessage = 6; + */ + value: MqttClientProxyMessage; + case: "mqttClientProxyMessage"; + } + | { + /** + * + * Heartbeat message (used to keep the device connection awake on serial) + * + * @generated from field: meshtastic.Heartbeat heartbeat = 7; + */ + value: Heartbeat; + case: "heartbeat"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.ToRadio. * Use `create(ToRadioSchema)` to create a new message. */ -export const ToRadioSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 25); +export const ToRadioSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 26, +); /** * @@ -2908,8 +3077,8 @@ export type Compressed = Message<"meshtastic.Compressed"> & { * Describes the message meshtastic.Compressed. * Use `create(CompressedSchema)` to create a new message. */ -export const CompressedSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 26); +export const CompressedSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 27); /** * @@ -2955,8 +3124,8 @@ export type NeighborInfo = Message<"meshtastic.NeighborInfo"> & { * Describes the message meshtastic.NeighborInfo. * Use `create(NeighborInfoSchema)` to create a new message. */ -export const NeighborInfoSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 27); +export const NeighborInfoSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 28); /** * @@ -3004,8 +3173,10 @@ export type Neighbor = Message<"meshtastic.Neighbor"> & { * Describes the message meshtastic.Neighbor. * Use `create(NeighborSchema)` to create a new message. */ -export const NeighborSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 28); +export const NeighborSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 29, +); /** * @@ -3116,8 +3287,8 @@ export type DeviceMetadata = Message<"meshtastic.DeviceMetadata"> & { * Describes the message meshtastic.DeviceMetadata. * Use `create(DeviceMetadataSchema)` to create a new message. */ -export const DeviceMetadataSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 29); +export const DeviceMetadataSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 30); /** * @@ -3140,8 +3311,10 @@ export type Heartbeat = Message<"meshtastic.Heartbeat"> & { * Describes the message meshtastic.Heartbeat. * Use `create(HeartbeatSchema)` to create a new message. */ -export const HeartbeatSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 30); +export const HeartbeatSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mesh, + 31, +); /** * @@ -3149,30 +3322,31 @@ export const HeartbeatSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.NodeRemoteHardwarePin */ -export type NodeRemoteHardwarePin = Message<"meshtastic.NodeRemoteHardwarePin"> & { - /** - * - * The node_num exposing the available gpio pin - * - * @generated from field: uint32 node_num = 1; - */ - nodeNum: number; +export type NodeRemoteHardwarePin = + Message<"meshtastic.NodeRemoteHardwarePin"> & { + /** + * + * The node_num exposing the available gpio pin + * + * @generated from field: uint32 node_num = 1; + */ + nodeNum: number; - /** - * - * The the available gpio pin for usage with RemoteHardware module - * - * @generated from field: meshtastic.RemoteHardwarePin pin = 2; - */ - pin?: RemoteHardwarePin | undefined; -}; + /** + * + * The the available gpio pin for usage with RemoteHardware module + * + * @generated from field: meshtastic.RemoteHardwarePin pin = 2; + */ + pin?: RemoteHardwarePin | undefined; + }; /** * Describes the message meshtastic.NodeRemoteHardwarePin. * Use `create(NodeRemoteHardwarePinSchema)` to create a new message. */ -export const NodeRemoteHardwarePinSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 31); +export const NodeRemoteHardwarePinSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 32); /** * @generated from message meshtastic.ChunkedPayload @@ -3215,8 +3389,8 @@ export type ChunkedPayload = Message<"meshtastic.ChunkedPayload"> & { * Describes the message meshtastic.ChunkedPayload. * Use `create(ChunkedPayloadSchema)` to create a new message. */ -export const ChunkedPayloadSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 32); +export const ChunkedPayloadSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 33); /** * @@ -3235,8 +3409,8 @@ export type resend_chunks = Message<"meshtastic.resend_chunks"> & { * Describes the message meshtastic.resend_chunks. * Use `create(resend_chunksSchema)` to create a new message. */ -export const resend_chunksSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 33); +export const resend_chunksSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 34); /** * @@ -3244,54 +3418,59 @@ export const resend_chunksSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.ChunkedPayloadResponse */ -export type ChunkedPayloadResponse = Message<"meshtastic.ChunkedPayloadResponse"> & { - /** - * - * The ID of the entire payload - * - * @generated from field: uint32 payload_id = 1; - */ - payloadId: number; - - /** - * @generated from oneof meshtastic.ChunkedPayloadResponse.payload_variant - */ - payloadVariant: { +export type ChunkedPayloadResponse = + Message<"meshtastic.ChunkedPayloadResponse"> & { /** * - * Request to transfer chunked payload + * The ID of the entire payload * - * @generated from field: bool request_transfer = 2; + * @generated from field: uint32 payload_id = 1; */ - value: boolean; - case: "requestTransfer"; - } | { - /** - * - * Accept the transfer chunked payload - * - * @generated from field: bool accept_transfer = 3; - */ - value: boolean; - case: "acceptTransfer"; - } | { + payloadId: number; + /** - * - * Request missing indexes in the chunked payload - * - * @generated from field: meshtastic.resend_chunks resend_chunks = 4; + * @generated from oneof meshtastic.ChunkedPayloadResponse.payload_variant */ - value: resend_chunks; - case: "resendChunks"; - } | { case: undefined; value?: undefined }; -}; + payloadVariant: + | { + /** + * + * Request to transfer chunked payload + * + * @generated from field: bool request_transfer = 2; + */ + value: boolean; + case: "requestTransfer"; + } + | { + /** + * + * Accept the transfer chunked payload + * + * @generated from field: bool accept_transfer = 3; + */ + value: boolean; + case: "acceptTransfer"; + } + | { + /** + * + * Request missing indexes in the chunked payload + * + * @generated from field: meshtastic.resend_chunks resend_chunks = 4; + */ + value: resend_chunks; + case: "resendChunks"; + } + | { case: undefined; value?: undefined }; + }; /** * Describes the message meshtastic.ChunkedPayloadResponse. * Use `create(ChunkedPayloadResponseSchema)` to create a new message. */ -export const ChunkedPayloadResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mesh, 34); +export const ChunkedPayloadResponseSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_mesh, 35); /** * @@ -3944,7 +4123,7 @@ export enum HardwareModel { RP2040_FEATHER_RFM95 = 76, /** - * M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ + * M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ * * @generated from enum value: M5STACK_COREBASIC = 77; */ @@ -3956,14 +4135,14 @@ export enum HardwareModel { M5STACK_CORE2 = 78, /** - * Pico2 with Waveshare Hat, same as Pico + * Pico2 with Waveshare Hat, same as Pico * * @generated from enum value: RPI_PICO2 = 79; */ RPI_PICO2 = 79, /** - * M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ + * M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/ * * @generated from enum value: M5STACK_CORES3 = 80; */ @@ -4465,7 +4644,7 @@ export enum HardwareModel { /** * Describes the enum meshtastic.HardwareModel. */ -export const HardwareModelSchema: GenEnum = /*@__PURE__*/ +export const HardwareModelSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 0); /** @@ -4498,8 +4677,10 @@ export enum Constants { /** * Describes the enum meshtastic.Constants. */ -export const ConstantsSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_mesh, 1); +export const ConstantsSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_mesh, + 1, +); /** * @@ -4594,7 +4775,7 @@ export enum CriticalErrorCode { BROWNOUT = 9, /** - * Selftest of SX1262 radio chip failed + * Selftest of SX1262 radio chip failed * * @generated from enum value: SX1262_FAILURE = 10; */ @@ -4632,7 +4813,7 @@ export enum CriticalErrorCode { /** * Describes the enum meshtastic.CriticalErrorCode. */ -export const CriticalErrorCodeSchema: GenEnum = /*@__PURE__*/ +export const CriticalErrorCodeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 2); /** @@ -4703,7 +4884,7 @@ export enum FirmwareEdition { /** * Describes the enum meshtastic.FirmwareEdition. */ -export const FirmwareEditionSchema: GenEnum = /*@__PURE__*/ +export const FirmwareEditionSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 3); /** @@ -4847,6 +5028,5 @@ export enum ExcludedModules { /** * Describes the enum meshtastic.ExcludedModules. */ -export const ExcludedModulesSchema: GenEnum = /*@__PURE__*/ +export const ExcludedModulesSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_mesh, 4); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/module_config_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/module_config_pb.ts index abc15ab48..ad3ec24c3 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/module_config_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/module_config_pb.ts @@ -1,8 +1,12 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/module_config.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { MemberRole, Team } from "./atak_pb"; import { file_meshtastic_atak } from "./atak_pb"; @@ -11,8 +15,10 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/module_config.proto. */ -export const file_meshtastic_module_config: GenFile = /*@__PURE__*/ - fileDesc("Ch5tZXNodGFzdGljL21vZHVsZV9jb25maWcucHJvdG8SCm1lc2h0YXN0aWMiky0KDE1vZHVsZUNvbmZpZxIzCgRtcXR0GAEgASgLMiMubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTVFUVENvbmZpZ0gAEjcKBnNlcmlhbBgCIAEoCzIlLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlNlcmlhbENvbmZpZ0gAElQKFWV4dGVybmFsX25vdGlmaWNhdGlvbhgDIAEoCzIzLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkV4dGVybmFsTm90aWZpY2F0aW9uQ29uZmlnSAASRAoNc3RvcmVfZm9yd2FyZBgEIAEoCzIrLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlN0b3JlRm9yd2FyZENvbmZpZ0gAEj4KCnJhbmdlX3Rlc3QYBSABKAsyKC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5SYW5nZVRlc3RDb25maWdIABI9Cgl0ZWxlbWV0cnkYBiABKAsyKC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UZWxlbWV0cnlDb25maWdIABJGCg5jYW5uZWRfbWVzc2FnZRgHIAEoCzIsLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkNhbm5lZE1lc3NhZ2VDb25maWdIABI1CgVhdWRpbxgIIAEoCzIkLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkF1ZGlvQ29uZmlnSAASSAoPcmVtb3RlX2hhcmR3YXJlGAkgASgLMi0ubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUmVtb3RlSGFyZHdhcmVDb25maWdIABJECg1uZWlnaGJvcl9pbmZvGAogASgLMisubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTmVpZ2hib3JJbmZvQ29uZmlnSAASSgoQYW1iaWVudF9saWdodGluZxgLIAEoCzIuLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkFtYmllbnRMaWdodGluZ0NvbmZpZ0gAEkoKEGRldGVjdGlvbl9zZW5zb3IYDCABKAsyLi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5EZXRlY3Rpb25TZW5zb3JDb25maWdIABI/CgpwYXhjb3VudGVyGA0gASgLMikubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUGF4Y291bnRlckNvbmZpZ0gAEkUKDXN0YXR1c21lc3NhZ2UYDiABKAsyLC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5TdGF0dXNNZXNzYWdlQ29uZmlnSAASTgoSdHJhZmZpY19tYW5hZ2VtZW50GA8gASgLMjAubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuVHJhZmZpY01hbmFnZW1lbnRDb25maWdIABIxCgN0YWsYECABKAsyIi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UQUtDb25maWdIABq0AgoKTVFUVENvbmZpZxIPCgdlbmFibGVkGAEgASgIEg8KB2FkZHJlc3MYAiABKAkSEAoIdXNlcm5hbWUYAyABKAkSEAoIcGFzc3dvcmQYBCABKAkSGgoSZW5jcnlwdGlvbl9lbmFibGVkGAUgASgIEhgKDGpzb25fZW5hYmxlZBgGIAEoCEICGAESEwoLdGxzX2VuYWJsZWQYByABKAgSDAoEcm9vdBgIIAEoCRIfChdwcm94eV90b19jbGllbnRfZW5hYmxlZBgJIAEoCBIdChVtYXBfcmVwb3J0aW5nX2VuYWJsZWQYCiABKAgSRwoTbWFwX3JlcG9ydF9zZXR0aW5ncxgLIAEoCzIqLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLk1hcFJlcG9ydFNldHRpbmdzGm4KEU1hcFJlcG9ydFNldHRpbmdzEh0KFXB1Ymxpc2hfaW50ZXJ2YWxfc2VjcxgBIAEoDRIaChJwb3NpdGlvbl9wcmVjaXNpb24YAiABKA0SHgoWc2hvdWxkX3JlcG9ydF9sb2NhdGlvbhgDIAEoCBqCAQoUUmVtb3RlSGFyZHdhcmVDb25maWcSDwoHZW5hYmxlZBgBIAEoCBIiChphbGxvd191bmRlZmluZWRfcGluX2FjY2VzcxgCIAEoCBI1Cg5hdmFpbGFibGVfcGlucxgDIAMoCzIdLm1lc2h0YXN0aWMuUmVtb3RlSGFyZHdhcmVQaW4aWgoSTmVpZ2hib3JJbmZvQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSFwoPdXBkYXRlX2ludGVydmFsGAIgASgNEhoKEnRyYW5zbWl0X292ZXJfbG9yYRgDIAEoCBqXAwoVRGV0ZWN0aW9uU2Vuc29yQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSHgoWbWluaW11bV9icm9hZGNhc3Rfc2VjcxgCIAEoDRIcChRzdGF0ZV9icm9hZGNhc3Rfc2VjcxgDIAEoDRIRCglzZW5kX2JlbGwYBCABKAgSDAoEbmFtZRgFIAEoCRITCgttb25pdG9yX3BpbhgGIAEoDRJaChZkZXRlY3Rpb25fdHJpZ2dlcl90eXBlGAcgASgOMjoubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuRGV0ZWN0aW9uU2Vuc29yQ29uZmlnLlRyaWdnZXJUeXBlEhIKCnVzZV9wdWxsdXAYCCABKAgiiAEKC1RyaWdnZXJUeXBlEg0KCUxPR0lDX0xPVxAAEg4KCkxPR0lDX0hJR0gQARIQCgxGQUxMSU5HX0VER0UQAhIPCgtSSVNJTkdfRURHRRADEhoKFkVJVEhFUl9FREdFX0FDVElWRV9MT1cQBBIbChdFSVRIRVJfRURHRV9BQ1RJVkVfSElHSBAFGuQCCgtBdWRpb0NvbmZpZxIWCg5jb2RlYzJfZW5hYmxlZBgBIAEoCBIPCgdwdHRfcGluGAIgASgNEkAKB2JpdHJhdGUYAyABKA4yLy5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5BdWRpb0NvbmZpZy5BdWRpb19CYXVkEg4KBmkyc193cxgEIAEoDRIOCgZpMnNfc2QYBSABKA0SDwoHaTJzX2RpbhgGIAEoDRIPCgdpMnNfc2NrGAcgASgNIqcBCgpBdWRpb19CYXVkEhIKDkNPREVDMl9ERUZBVUxUEAASDwoLQ09ERUMyXzMyMDAQARIPCgtDT0RFQzJfMjQwMBACEg8KC0NPREVDMl8xNjAwEAMSDwoLQ09ERUMyXzE0MDAQBBIPCgtDT0RFQzJfMTMwMBAFEg8KC0NPREVDMl8xMjAwEAYSDgoKQ09ERUMyXzcwMBAHEg8KC0NPREVDMl83MDBCEAgadgoQUGF4Y291bnRlckNvbmZpZxIPCgdlbmFibGVkGAEgASgIEiIKGnBheGNvdW50ZXJfdXBkYXRlX2ludGVydmFsGAIgASgNEhYKDndpZmlfdGhyZXNob2xkGAMgASgFEhUKDWJsZV90aHJlc2hvbGQYBCABKAUa0wMKF1RyYWZmaWNNYW5hZ2VtZW50Q29uZmlnEg8KB2VuYWJsZWQYASABKAgSHgoWcG9zaXRpb25fZGVkdXBfZW5hYmxlZBgCIAEoCBIfChdwb3NpdGlvbl9wcmVjaXNpb25fYml0cxgDIAEoDRIiChpwb3NpdGlvbl9taW5faW50ZXJ2YWxfc2VjcxgEIAEoDRIgChhub2RlaW5mb19kaXJlY3RfcmVzcG9uc2UYBSABKAgSKQohbm9kZWluZm9fZGlyZWN0X3Jlc3BvbnNlX21heF9ob3BzGAYgASgNEhoKEnJhdGVfbGltaXRfZW5hYmxlZBgHIAEoCBIeChZyYXRlX2xpbWl0X3dpbmRvd19zZWNzGAggASgNEh4KFnJhdGVfbGltaXRfbWF4X3BhY2tldHMYCSABKA0SHAoUZHJvcF91bmtub3duX2VuYWJsZWQYCiABKAgSIAoYdW5rbm93bl9wYWNrZXRfdGhyZXNob2xkGAsgASgNEh0KFWV4aGF1c3RfaG9wX3RlbGVtZXRyeRgMIAEoCBIcChRleGhhdXN0X2hvcF9wb3NpdGlvbhgNIAEoCBIcChRyb3V0ZXJfcHJlc2VydmVfaG9wcxgOIAEoCBqjBQoMU2VyaWFsQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSDAoEZWNobxgCIAEoCBILCgNyeGQYAyABKA0SCwoDdHhkGAQgASgNEj8KBGJhdWQYBSABKA4yMS5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5TZXJpYWxDb25maWcuU2VyaWFsX0JhdWQSDwoHdGltZW91dBgGIAEoDRI/CgRtb2RlGAcgASgOMjEubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuU2VyaWFsQ29uZmlnLlNlcmlhbF9Nb2RlEiQKHG92ZXJyaWRlX2NvbnNvbGVfc2VyaWFsX3BvcnQYCCABKAgiigIKC1NlcmlhbF9CYXVkEhAKDEJBVURfREVGQVVMVBAAEgwKCEJBVURfMTEwEAESDAoIQkFVRF8zMDAQAhIMCghCQVVEXzYwMBADEg0KCUJBVURfMTIwMBAEEg0KCUJBVURfMjQwMBAFEg0KCUJBVURfNDgwMBAGEg0KCUJBVURfOTYwMBAHEg4KCkJBVURfMTkyMDAQCBIOCgpCQVVEXzM4NDAwEAkSDgoKQkFVRF81NzYwMBAKEg8KC0JBVURfMTE1MjAwEAsSDwoLQkFVRF8yMzA0MDAQDBIPCgtCQVVEXzQ2MDgwMBANEg8KC0JBVURfNTc2MDAwEA4SDwoLQkFVRF85MjE2MDAQDyKTAQoLU2VyaWFsX01vZGUSCwoHREVGQVVMVBAAEgoKBlNJTVBMRRABEgkKBVBST1RPEAISCwoHVEVYVE1TRxADEggKBE5NRUEQBBILCgdDQUxUT1BPEAUSCAoEV1M4NRAGEg0KCVZFX0RJUkVDVBAHEg0KCU1TX0NPTkZJRxAIEgcKA0xPRxAJEgsKB0xPR1RFWFQQChrpAgoaRXh0ZXJuYWxOb3RpZmljYXRpb25Db25maWcSDwoHZW5hYmxlZBgBIAEoCBIRCglvdXRwdXRfbXMYAiABKA0SDgoGb3V0cHV0GAMgASgNEhQKDG91dHB1dF92aWJyYRgIIAEoDRIVCg1vdXRwdXRfYnV6emVyGAkgASgNEg4KBmFjdGl2ZRgEIAEoCBIVCg1hbGVydF9tZXNzYWdlGAUgASgIEhsKE2FsZXJ0X21lc3NhZ2VfdmlicmEYCiABKAgSHAoUYWxlcnRfbWVzc2FnZV9idXp6ZXIYCyABKAgSEgoKYWxlcnRfYmVsbBgGIAEoCBIYChBhbGVydF9iZWxsX3ZpYnJhGAwgASgIEhkKEWFsZXJ0X2JlbGxfYnV6emVyGA0gASgIEg8KB3VzZV9wd20YByABKAgSEwoLbmFnX3RpbWVvdXQYDiABKA0SGQoRdXNlX2kyc19hc19idXp6ZXIYDyABKAgalwEKElN0b3JlRm9yd2FyZENvbmZpZxIPCgdlbmFibGVkGAEgASgIEhEKCWhlYXJ0YmVhdBgCIAEoCBIPCgdyZWNvcmRzGAMgASgNEhoKEmhpc3RvcnlfcmV0dXJuX21heBgEIAEoDRIdChVoaXN0b3J5X3JldHVybl93aW5kb3cYBSABKA0SEQoJaXNfc2VydmVyGAYgASgIGlkKD1JhbmdlVGVzdENvbmZpZxIPCgdlbmFibGVkGAEgASgIEg4KBnNlbmRlchgCIAEoDRIMCgRzYXZlGAMgASgIEhcKD2NsZWFyX29uX3JlYm9vdBgEIAEoCBqPBAoPVGVsZW1ldHJ5Q29uZmlnEh4KFmRldmljZV91cGRhdGVfaW50ZXJ2YWwYASABKA0SIwobZW52aXJvbm1lbnRfdXBkYXRlX2ludGVydmFsGAIgASgNEicKH2Vudmlyb25tZW50X21lYXN1cmVtZW50X2VuYWJsZWQYAyABKAgSIgoaZW52aXJvbm1lbnRfc2NyZWVuX2VuYWJsZWQYBCABKAgSJgoeZW52aXJvbm1lbnRfZGlzcGxheV9mYWhyZW5oZWl0GAUgASgIEhsKE2Fpcl9xdWFsaXR5X2VuYWJsZWQYBiABKAgSHAoUYWlyX3F1YWxpdHlfaW50ZXJ2YWwYByABKA0SIQoZcG93ZXJfbWVhc3VyZW1lbnRfZW5hYmxlZBgIIAEoCBIdChVwb3dlcl91cGRhdGVfaW50ZXJ2YWwYCSABKA0SHAoUcG93ZXJfc2NyZWVuX2VuYWJsZWQYCiABKAgSIgoaaGVhbHRoX21lYXN1cmVtZW50X2VuYWJsZWQYCyABKAgSHgoWaGVhbHRoX3VwZGF0ZV9pbnRlcnZhbBgMIAEoDRIdChVoZWFsdGhfc2NyZWVuX2VuYWJsZWQYDSABKAgSIAoYZGV2aWNlX3RlbGVtZXRyeV9lbmFibGVkGA4gASgIEiIKGmFpcl9xdWFsaXR5X3NjcmVlbl9lbmFibGVkGA8gASgIGt4EChNDYW5uZWRNZXNzYWdlQ29uZmlnEhcKD3JvdGFyeTFfZW5hYmxlZBgBIAEoCBIZChFpbnB1dGJyb2tlcl9waW5fYRgCIAEoDRIZChFpbnB1dGJyb2tlcl9waW5fYhgDIAEoDRIdChVpbnB1dGJyb2tlcl9waW5fcHJlc3MYBCABKA0SWQoUaW5wdXRicm9rZXJfZXZlbnRfY3cYBSABKA4yOy5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5DYW5uZWRNZXNzYWdlQ29uZmlnLklucHV0RXZlbnRDaGFyEloKFWlucHV0YnJva2VyX2V2ZW50X2NjdxgGIAEoDjI7Lm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkNhbm5lZE1lc3NhZ2VDb25maWcuSW5wdXRFdmVudENoYXISXAoXaW5wdXRicm9rZXJfZXZlbnRfcHJlc3MYByABKA4yOy5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5DYW5uZWRNZXNzYWdlQ29uZmlnLklucHV0RXZlbnRDaGFyEhcKD3VwZG93bjFfZW5hYmxlZBgIIAEoCBITCgdlbmFibGVkGAkgASgIQgIYARIeChJhbGxvd19pbnB1dF9zb3VyY2UYCiABKAlCAhgBEhEKCXNlbmRfYmVsbBgLIAEoCCJjCg5JbnB1dEV2ZW50Q2hhchIICgROT05FEAASBgoCVVAQERIICgRET1dOEBISCAoETEVGVBATEgkKBVJJR0hUEBQSCgoGU0VMRUNUEAoSCAoEQkFDSxAbEgoKBkNBTkNFTBAYGmUKFUFtYmllbnRMaWdodGluZ0NvbmZpZxIRCglsZWRfc3RhdGUYASABKAgSDwoHY3VycmVudBgCIAEoDRILCgNyZWQYAyABKA0SDQoFZ3JlZW4YBCABKA0SDAoEYmx1ZRgFIAEoDRoqChNTdGF0dXNNZXNzYWdlQ29uZmlnEhMKC25vZGVfc3RhdHVzGAEgASgJGlEKCVRBS0NvbmZpZxIeCgR0ZWFtGAEgASgOMhAubWVzaHRhc3RpYy5UZWFtEiQKBHJvbGUYAiABKA4yFi5tZXNodGFzdGljLk1lbWJlclJvbGVCEQoPcGF5bG9hZF92YXJpYW50ImQKEVJlbW90ZUhhcmR3YXJlUGluEhAKCGdwaW9fcGluGAEgASgNEgwKBG5hbWUYAiABKAkSLwoEdHlwZRgDIAEoDjIhLm1lc2h0YXN0aWMuUmVtb3RlSGFyZHdhcmVQaW5UeXBlKkkKFVJlbW90ZUhhcmR3YXJlUGluVHlwZRILCgdVTktOT1dOEAASEAoMRElHSVRBTF9SRUFEEAESEQoNRElHSVRBTF9XUklURRACQmgKFG9yZy5tZXNodGFzdGljLnByb3RvQhJNb2R1bGVDb25maWdQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", [file_meshtastic_atak]); +export const file_meshtastic_module_config: GenFile /*@__PURE__*/ = fileDesc( + "Ch5tZXNodGFzdGljL21vZHVsZV9jb25maWcucHJvdG8SCm1lc2h0YXN0aWMiky0KDE1vZHVsZUNvbmZpZxIzCgRtcXR0GAEgASgLMiMubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTVFUVENvbmZpZ0gAEjcKBnNlcmlhbBgCIAEoCzIlLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlNlcmlhbENvbmZpZ0gAElQKFWV4dGVybmFsX25vdGlmaWNhdGlvbhgDIAEoCzIzLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkV4dGVybmFsTm90aWZpY2F0aW9uQ29uZmlnSAASRAoNc3RvcmVfZm9yd2FyZBgEIAEoCzIrLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLlN0b3JlRm9yd2FyZENvbmZpZ0gAEj4KCnJhbmdlX3Rlc3QYBSABKAsyKC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5SYW5nZVRlc3RDb25maWdIABI9Cgl0ZWxlbWV0cnkYBiABKAsyKC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UZWxlbWV0cnlDb25maWdIABJGCg5jYW5uZWRfbWVzc2FnZRgHIAEoCzIsLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkNhbm5lZE1lc3NhZ2VDb25maWdIABI1CgVhdWRpbxgIIAEoCzIkLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkF1ZGlvQ29uZmlnSAASSAoPcmVtb3RlX2hhcmR3YXJlGAkgASgLMi0ubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUmVtb3RlSGFyZHdhcmVDb25maWdIABJECg1uZWlnaGJvcl9pbmZvGAogASgLMisubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuTmVpZ2hib3JJbmZvQ29uZmlnSAASSgoQYW1iaWVudF9saWdodGluZxgLIAEoCzIuLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkFtYmllbnRMaWdodGluZ0NvbmZpZ0gAEkoKEGRldGVjdGlvbl9zZW5zb3IYDCABKAsyLi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5EZXRlY3Rpb25TZW5zb3JDb25maWdIABI/CgpwYXhjb3VudGVyGA0gASgLMikubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuUGF4Y291bnRlckNvbmZpZ0gAEkUKDXN0YXR1c21lc3NhZ2UYDiABKAsyLC5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5TdGF0dXNNZXNzYWdlQ29uZmlnSAASTgoSdHJhZmZpY19tYW5hZ2VtZW50GA8gASgLMjAubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuVHJhZmZpY01hbmFnZW1lbnRDb25maWdIABIxCgN0YWsYECABKAsyIi5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5UQUtDb25maWdIABq0AgoKTVFUVENvbmZpZxIPCgdlbmFibGVkGAEgASgIEg8KB2FkZHJlc3MYAiABKAkSEAoIdXNlcm5hbWUYAyABKAkSEAoIcGFzc3dvcmQYBCABKAkSGgoSZW5jcnlwdGlvbl9lbmFibGVkGAUgASgIEhgKDGpzb25fZW5hYmxlZBgGIAEoCEICGAESEwoLdGxzX2VuYWJsZWQYByABKAgSDAoEcm9vdBgIIAEoCRIfChdwcm94eV90b19jbGllbnRfZW5hYmxlZBgJIAEoCBIdChVtYXBfcmVwb3J0aW5nX2VuYWJsZWQYCiABKAgSRwoTbWFwX3JlcG9ydF9zZXR0aW5ncxgLIAEoCzIqLm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLk1hcFJlcG9ydFNldHRpbmdzGm4KEU1hcFJlcG9ydFNldHRpbmdzEh0KFXB1Ymxpc2hfaW50ZXJ2YWxfc2VjcxgBIAEoDRIaChJwb3NpdGlvbl9wcmVjaXNpb24YAiABKA0SHgoWc2hvdWxkX3JlcG9ydF9sb2NhdGlvbhgDIAEoCBqCAQoUUmVtb3RlSGFyZHdhcmVDb25maWcSDwoHZW5hYmxlZBgBIAEoCBIiChphbGxvd191bmRlZmluZWRfcGluX2FjY2VzcxgCIAEoCBI1Cg5hdmFpbGFibGVfcGlucxgDIAMoCzIdLm1lc2h0YXN0aWMuUmVtb3RlSGFyZHdhcmVQaW4aWgoSTmVpZ2hib3JJbmZvQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSFwoPdXBkYXRlX2ludGVydmFsGAIgASgNEhoKEnRyYW5zbWl0X292ZXJfbG9yYRgDIAEoCBqXAwoVRGV0ZWN0aW9uU2Vuc29yQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSHgoWbWluaW11bV9icm9hZGNhc3Rfc2VjcxgCIAEoDRIcChRzdGF0ZV9icm9hZGNhc3Rfc2VjcxgDIAEoDRIRCglzZW5kX2JlbGwYBCABKAgSDAoEbmFtZRgFIAEoCRITCgttb25pdG9yX3BpbhgGIAEoDRJaChZkZXRlY3Rpb25fdHJpZ2dlcl90eXBlGAcgASgOMjoubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuRGV0ZWN0aW9uU2Vuc29yQ29uZmlnLlRyaWdnZXJUeXBlEhIKCnVzZV9wdWxsdXAYCCABKAgiiAEKC1RyaWdnZXJUeXBlEg0KCUxPR0lDX0xPVxAAEg4KCkxPR0lDX0hJR0gQARIQCgxGQUxMSU5HX0VER0UQAhIPCgtSSVNJTkdfRURHRRADEhoKFkVJVEhFUl9FREdFX0FDVElWRV9MT1cQBBIbChdFSVRIRVJfRURHRV9BQ1RJVkVfSElHSBAFGuQCCgtBdWRpb0NvbmZpZxIWCg5jb2RlYzJfZW5hYmxlZBgBIAEoCBIPCgdwdHRfcGluGAIgASgNEkAKB2JpdHJhdGUYAyABKA4yLy5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5BdWRpb0NvbmZpZy5BdWRpb19CYXVkEg4KBmkyc193cxgEIAEoDRIOCgZpMnNfc2QYBSABKA0SDwoHaTJzX2RpbhgGIAEoDRIPCgdpMnNfc2NrGAcgASgNIqcBCgpBdWRpb19CYXVkEhIKDkNPREVDMl9ERUZBVUxUEAASDwoLQ09ERUMyXzMyMDAQARIPCgtDT0RFQzJfMjQwMBACEg8KC0NPREVDMl8xNjAwEAMSDwoLQ09ERUMyXzE0MDAQBBIPCgtDT0RFQzJfMTMwMBAFEg8KC0NPREVDMl8xMjAwEAYSDgoKQ09ERUMyXzcwMBAHEg8KC0NPREVDMl83MDBCEAgadgoQUGF4Y291bnRlckNvbmZpZxIPCgdlbmFibGVkGAEgASgIEiIKGnBheGNvdW50ZXJfdXBkYXRlX2ludGVydmFsGAIgASgNEhYKDndpZmlfdGhyZXNob2xkGAMgASgFEhUKDWJsZV90aHJlc2hvbGQYBCABKAUa0wMKF1RyYWZmaWNNYW5hZ2VtZW50Q29uZmlnEg8KB2VuYWJsZWQYASABKAgSHgoWcG9zaXRpb25fZGVkdXBfZW5hYmxlZBgCIAEoCBIfChdwb3NpdGlvbl9wcmVjaXNpb25fYml0cxgDIAEoDRIiChpwb3NpdGlvbl9taW5faW50ZXJ2YWxfc2VjcxgEIAEoDRIgChhub2RlaW5mb19kaXJlY3RfcmVzcG9uc2UYBSABKAgSKQohbm9kZWluZm9fZGlyZWN0X3Jlc3BvbnNlX21heF9ob3BzGAYgASgNEhoKEnJhdGVfbGltaXRfZW5hYmxlZBgHIAEoCBIeChZyYXRlX2xpbWl0X3dpbmRvd19zZWNzGAggASgNEh4KFnJhdGVfbGltaXRfbWF4X3BhY2tldHMYCSABKA0SHAoUZHJvcF91bmtub3duX2VuYWJsZWQYCiABKAgSIAoYdW5rbm93bl9wYWNrZXRfdGhyZXNob2xkGAsgASgNEh0KFWV4aGF1c3RfaG9wX3RlbGVtZXRyeRgMIAEoCBIcChRleGhhdXN0X2hvcF9wb3NpdGlvbhgNIAEoCBIcChRyb3V0ZXJfcHJlc2VydmVfaG9wcxgOIAEoCBqjBQoMU2VyaWFsQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSDAoEZWNobxgCIAEoCBILCgNyeGQYAyABKA0SCwoDdHhkGAQgASgNEj8KBGJhdWQYBSABKA4yMS5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5TZXJpYWxDb25maWcuU2VyaWFsX0JhdWQSDwoHdGltZW91dBgGIAEoDRI/CgRtb2RlGAcgASgOMjEubWVzaHRhc3RpYy5Nb2R1bGVDb25maWcuU2VyaWFsQ29uZmlnLlNlcmlhbF9Nb2RlEiQKHG92ZXJyaWRlX2NvbnNvbGVfc2VyaWFsX3BvcnQYCCABKAgiigIKC1NlcmlhbF9CYXVkEhAKDEJBVURfREVGQVVMVBAAEgwKCEJBVURfMTEwEAESDAoIQkFVRF8zMDAQAhIMCghCQVVEXzYwMBADEg0KCUJBVURfMTIwMBAEEg0KCUJBVURfMjQwMBAFEg0KCUJBVURfNDgwMBAGEg0KCUJBVURfOTYwMBAHEg4KCkJBVURfMTkyMDAQCBIOCgpCQVVEXzM4NDAwEAkSDgoKQkFVRF81NzYwMBAKEg8KC0JBVURfMTE1MjAwEAsSDwoLQkFVRF8yMzA0MDAQDBIPCgtCQVVEXzQ2MDgwMBANEg8KC0JBVURfNTc2MDAwEA4SDwoLQkFVRF85MjE2MDAQDyKTAQoLU2VyaWFsX01vZGUSCwoHREVGQVVMVBAAEgoKBlNJTVBMRRABEgkKBVBST1RPEAISCwoHVEVYVE1TRxADEggKBE5NRUEQBBILCgdDQUxUT1BPEAUSCAoEV1M4NRAGEg0KCVZFX0RJUkVDVBAHEg0KCU1TX0NPTkZJRxAIEgcKA0xPRxAJEgsKB0xPR1RFWFQQChrpAgoaRXh0ZXJuYWxOb3RpZmljYXRpb25Db25maWcSDwoHZW5hYmxlZBgBIAEoCBIRCglvdXRwdXRfbXMYAiABKA0SDgoGb3V0cHV0GAMgASgNEhQKDG91dHB1dF92aWJyYRgIIAEoDRIVCg1vdXRwdXRfYnV6emVyGAkgASgNEg4KBmFjdGl2ZRgEIAEoCBIVCg1hbGVydF9tZXNzYWdlGAUgASgIEhsKE2FsZXJ0X21lc3NhZ2VfdmlicmEYCiABKAgSHAoUYWxlcnRfbWVzc2FnZV9idXp6ZXIYCyABKAgSEgoKYWxlcnRfYmVsbBgGIAEoCBIYChBhbGVydF9iZWxsX3ZpYnJhGAwgASgIEhkKEWFsZXJ0X2JlbGxfYnV6emVyGA0gASgIEg8KB3VzZV9wd20YByABKAgSEwoLbmFnX3RpbWVvdXQYDiABKA0SGQoRdXNlX2kyc19hc19idXp6ZXIYDyABKAgalwEKElN0b3JlRm9yd2FyZENvbmZpZxIPCgdlbmFibGVkGAEgASgIEhEKCWhlYXJ0YmVhdBgCIAEoCBIPCgdyZWNvcmRzGAMgASgNEhoKEmhpc3RvcnlfcmV0dXJuX21heBgEIAEoDRIdChVoaXN0b3J5X3JldHVybl93aW5kb3cYBSABKA0SEQoJaXNfc2VydmVyGAYgASgIGlkKD1JhbmdlVGVzdENvbmZpZxIPCgdlbmFibGVkGAEgASgIEg4KBnNlbmRlchgCIAEoDRIMCgRzYXZlGAMgASgIEhcKD2NsZWFyX29uX3JlYm9vdBgEIAEoCBqPBAoPVGVsZW1ldHJ5Q29uZmlnEh4KFmRldmljZV91cGRhdGVfaW50ZXJ2YWwYASABKA0SIwobZW52aXJvbm1lbnRfdXBkYXRlX2ludGVydmFsGAIgASgNEicKH2Vudmlyb25tZW50X21lYXN1cmVtZW50X2VuYWJsZWQYAyABKAgSIgoaZW52aXJvbm1lbnRfc2NyZWVuX2VuYWJsZWQYBCABKAgSJgoeZW52aXJvbm1lbnRfZGlzcGxheV9mYWhyZW5oZWl0GAUgASgIEhsKE2Fpcl9xdWFsaXR5X2VuYWJsZWQYBiABKAgSHAoUYWlyX3F1YWxpdHlfaW50ZXJ2YWwYByABKA0SIQoZcG93ZXJfbWVhc3VyZW1lbnRfZW5hYmxlZBgIIAEoCBIdChVwb3dlcl91cGRhdGVfaW50ZXJ2YWwYCSABKA0SHAoUcG93ZXJfc2NyZWVuX2VuYWJsZWQYCiABKAgSIgoaaGVhbHRoX21lYXN1cmVtZW50X2VuYWJsZWQYCyABKAgSHgoWaGVhbHRoX3VwZGF0ZV9pbnRlcnZhbBgMIAEoDRIdChVoZWFsdGhfc2NyZWVuX2VuYWJsZWQYDSABKAgSIAoYZGV2aWNlX3RlbGVtZXRyeV9lbmFibGVkGA4gASgIEiIKGmFpcl9xdWFsaXR5X3NjcmVlbl9lbmFibGVkGA8gASgIGt4EChNDYW5uZWRNZXNzYWdlQ29uZmlnEhcKD3JvdGFyeTFfZW5hYmxlZBgBIAEoCBIZChFpbnB1dGJyb2tlcl9waW5fYRgCIAEoDRIZChFpbnB1dGJyb2tlcl9waW5fYhgDIAEoDRIdChVpbnB1dGJyb2tlcl9waW5fcHJlc3MYBCABKA0SWQoUaW5wdXRicm9rZXJfZXZlbnRfY3cYBSABKA4yOy5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5DYW5uZWRNZXNzYWdlQ29uZmlnLklucHV0RXZlbnRDaGFyEloKFWlucHV0YnJva2VyX2V2ZW50X2NjdxgGIAEoDjI7Lm1lc2h0YXN0aWMuTW9kdWxlQ29uZmlnLkNhbm5lZE1lc3NhZ2VDb25maWcuSW5wdXRFdmVudENoYXISXAoXaW5wdXRicm9rZXJfZXZlbnRfcHJlc3MYByABKA4yOy5tZXNodGFzdGljLk1vZHVsZUNvbmZpZy5DYW5uZWRNZXNzYWdlQ29uZmlnLklucHV0RXZlbnRDaGFyEhcKD3VwZG93bjFfZW5hYmxlZBgIIAEoCBITCgdlbmFibGVkGAkgASgIQgIYARIeChJhbGxvd19pbnB1dF9zb3VyY2UYCiABKAlCAhgBEhEKCXNlbmRfYmVsbBgLIAEoCCJjCg5JbnB1dEV2ZW50Q2hhchIICgROT05FEAASBgoCVVAQERIICgRET1dOEBISCAoETEVGVBATEgkKBVJJR0hUEBQSCgoGU0VMRUNUEAoSCAoEQkFDSxAbEgoKBkNBTkNFTBAYGmUKFUFtYmllbnRMaWdodGluZ0NvbmZpZxIRCglsZWRfc3RhdGUYASABKAgSDwoHY3VycmVudBgCIAEoDRILCgNyZWQYAyABKA0SDQoFZ3JlZW4YBCABKA0SDAoEYmx1ZRgFIAEoDRoqChNTdGF0dXNNZXNzYWdlQ29uZmlnEhMKC25vZGVfc3RhdHVzGAEgASgJGlEKCVRBS0NvbmZpZxIeCgR0ZWFtGAEgASgOMhAubWVzaHRhc3RpYy5UZWFtEiQKBHJvbGUYAiABKA4yFi5tZXNodGFzdGljLk1lbWJlclJvbGVCEQoPcGF5bG9hZF92YXJpYW50ImQKEVJlbW90ZUhhcmR3YXJlUGluEhAKCGdwaW9fcGluGAEgASgNEgwKBG5hbWUYAiABKAkSLwoEdHlwZRgDIAEoDjIhLm1lc2h0YXN0aWMuUmVtb3RlSGFyZHdhcmVQaW5UeXBlKkkKFVJlbW90ZUhhcmR3YXJlUGluVHlwZRILCgdVTktOT1dOEAASEAoMRElHSVRBTF9SRUFEEAESEQoNRElHSVRBTF9XUklURRACQmgKFG9yZy5tZXNodGFzdGljLnByb3RvQhJNb2R1bGVDb25maWdQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", + [file_meshtastic_atak], +); /** * @@ -27,272 +33,290 @@ export type ModuleConfig = Message<"meshtastic.ModuleConfig"> & { * * @generated from oneof meshtastic.ModuleConfig.payload_variant */ - payloadVariant: { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.ModuleConfig.MQTTConfig mqtt = 1; - */ - value: ModuleConfig_MQTTConfig; - case: "mqtt"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.ModuleConfig.SerialConfig serial = 2; - */ - value: ModuleConfig_SerialConfig; - case: "serial"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.ModuleConfig.ExternalNotificationConfig external_notification = 3; - */ - value: ModuleConfig_ExternalNotificationConfig; - case: "externalNotification"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.ModuleConfig.StoreForwardConfig store_forward = 4; - */ - value: ModuleConfig_StoreForwardConfig; - case: "storeForward"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.ModuleConfig.RangeTestConfig range_test = 5; - */ - value: ModuleConfig_RangeTestConfig; - case: "rangeTest"; - } | { + payloadVariant: + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.MQTTConfig mqtt = 1; + */ + value: ModuleConfig_MQTTConfig; + case: "mqtt"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.SerialConfig serial = 2; + */ + value: ModuleConfig_SerialConfig; + case: "serial"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.ExternalNotificationConfig external_notification = 3; + */ + value: ModuleConfig_ExternalNotificationConfig; + case: "externalNotification"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.StoreForwardConfig store_forward = 4; + */ + value: ModuleConfig_StoreForwardConfig; + case: "storeForward"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.RangeTestConfig range_test = 5; + */ + value: ModuleConfig_RangeTestConfig; + case: "rangeTest"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.TelemetryConfig telemetry = 6; + */ + value: ModuleConfig_TelemetryConfig; + case: "telemetry"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig canned_message = 7; + */ + value: ModuleConfig_CannedMessageConfig; + case: "cannedMessage"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.AudioConfig audio = 8; + */ + value: ModuleConfig_AudioConfig; + case: "audio"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.RemoteHardwareConfig remote_hardware = 9; + */ + value: ModuleConfig_RemoteHardwareConfig; + case: "remoteHardware"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.NeighborInfoConfig neighbor_info = 10; + */ + value: ModuleConfig_NeighborInfoConfig; + case: "neighborInfo"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.AmbientLightingConfig ambient_lighting = 11; + */ + value: ModuleConfig_AmbientLightingConfig; + case: "ambientLighting"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.DetectionSensorConfig detection_sensor = 12; + */ + value: ModuleConfig_DetectionSensorConfig; + case: "detectionSensor"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.PaxcounterConfig paxcounter = 13; + */ + value: ModuleConfig_PaxcounterConfig; + case: "paxcounter"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.ModuleConfig.StatusMessageConfig statusmessage = 14; + */ + value: ModuleConfig_StatusMessageConfig; + case: "statusmessage"; + } + | { + /** + * + * Traffic management module config for mesh network optimization + * + * @generated from field: meshtastic.ModuleConfig.TrafficManagementConfig traffic_management = 15; + */ + value: ModuleConfig_TrafficManagementConfig; + case: "trafficManagement"; + } + | { + /** + * + * TAK team/role configuration for TAK_TRACKER + * + * @generated from field: meshtastic.ModuleConfig.TAKConfig tak = 16; + */ + value: ModuleConfig_TAKConfig; + case: "tak"; + } + | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message meshtastic.ModuleConfig. + * Use `create(ModuleConfigSchema)` to create a new message. + */ +export const ModuleConfigSchema: GenMessage /*@__PURE__*/ = + messageDesc(file_meshtastic_module_config, 0); + +/** + * + * MQTT Client Config + * + * @generated from message meshtastic.ModuleConfig.MQTTConfig + */ +export type ModuleConfig_MQTTConfig = + Message<"meshtastic.ModuleConfig.MQTTConfig"> & { /** * - * TODO: REPLACE + * If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as + * is_uplink_enabled or is_downlink_enabled. * - * @generated from field: meshtastic.ModuleConfig.TelemetryConfig telemetry = 6; + * @generated from field: bool enabled = 1; */ - value: ModuleConfig_TelemetryConfig; - case: "telemetry"; - } | { + enabled: boolean; + /** * - * TODO: REPLACE + * The server to use for our MQTT global message gateway feature. + * If not set, the default server will be used * - * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig canned_message = 7; + * @generated from field: string address = 2; */ - value: ModuleConfig_CannedMessageConfig; - case: "cannedMessage"; - } | { + address: string; + /** * - * TODO: REPLACE + * MQTT username to use (most useful for a custom MQTT server). + * If using a custom server, this will be honoured even if empty. + * If using the default server, this will only be honoured if set, otherwise the device will use the default username * - * @generated from field: meshtastic.ModuleConfig.AudioConfig audio = 8; + * @generated from field: string username = 3; */ - value: ModuleConfig_AudioConfig; - case: "audio"; - } | { + username: string; + /** * - * TODO: REPLACE + * MQTT password to use (most useful for a custom MQTT server). + * If using a custom server, this will be honoured even if empty. + * If using the default server, this will only be honoured if set, otherwise the device will use the default password * - * @generated from field: meshtastic.ModuleConfig.RemoteHardwareConfig remote_hardware = 9; + * @generated from field: string password = 4; */ - value: ModuleConfig_RemoteHardwareConfig; - case: "remoteHardware"; - } | { + password: string; + /** * - * TODO: REPLACE + * Whether to send encrypted or decrypted packets to MQTT. + * This parameter is only honoured if you also set server + * (the default official mqtt.meshtastic.org server can handle encrypted packets) + * Decrypted packets may be useful for external systems that want to consume meshtastic packets * - * @generated from field: meshtastic.ModuleConfig.NeighborInfoConfig neighbor_info = 10; + * @generated from field: bool encryption_enabled = 5; */ - value: ModuleConfig_NeighborInfoConfig; - case: "neighborInfo"; - } | { + encryptionEnabled: boolean; + /** * - * TODO: REPLACE + * Deprecated: JSON packet support on MQTT was removed, and this field is ignored. * - * @generated from field: meshtastic.ModuleConfig.AmbientLightingConfig ambient_lighting = 11; + * @generated from field: bool json_enabled = 6 [deprecated = true]; + * @deprecated */ - value: ModuleConfig_AmbientLightingConfig; - case: "ambientLighting"; - } | { + jsonEnabled: boolean; + /** * - * TODO: REPLACE + * If true, we attempt to establish a secure connection using TLS * - * @generated from field: meshtastic.ModuleConfig.DetectionSensorConfig detection_sensor = 12; + * @generated from field: bool tls_enabled = 7; */ - value: ModuleConfig_DetectionSensorConfig; - case: "detectionSensor"; - } | { + tlsEnabled: boolean; + /** * - * TODO: REPLACE + * The root topic to use for MQTT messages. Default is "msh". + * This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs * - * @generated from field: meshtastic.ModuleConfig.PaxcounterConfig paxcounter = 13; + * @generated from field: string root = 8; */ - value: ModuleConfig_PaxcounterConfig; - case: "paxcounter"; - } | { + root: string; + /** * - * TODO: REPLACE + * If true, we can use the connected phone / client to proxy messages to MQTT instead of a direct connection * - * @generated from field: meshtastic.ModuleConfig.StatusMessageConfig statusmessage = 14; + * @generated from field: bool proxy_to_client_enabled = 9; */ - value: ModuleConfig_StatusMessageConfig; - case: "statusmessage"; - } | { + proxyToClientEnabled: boolean; + /** * - * Traffic management module config for mesh network optimization + * If true, we will periodically report unencrypted information about our node to a map via MQTT * - * @generated from field: meshtastic.ModuleConfig.TrafficManagementConfig traffic_management = 15; + * @generated from field: bool map_reporting_enabled = 10; */ - value: ModuleConfig_TrafficManagementConfig; - case: "trafficManagement"; - } | { + mapReportingEnabled: boolean; + /** * - * TAK team/role configuration for TAK_TRACKER + * Settings for reporting information about our node to a map via MQTT * - * @generated from field: meshtastic.ModuleConfig.TAKConfig tak = 16; + * @generated from field: meshtastic.ModuleConfig.MapReportSettings map_report_settings = 11; */ - value: ModuleConfig_TAKConfig; - case: "tak"; - } | { case: undefined; value?: undefined }; -}; - -/** - * Describes the message meshtastic.ModuleConfig. - * Use `create(ModuleConfigSchema)` to create a new message. - */ -export const ModuleConfigSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_module_config, 0); - -/** - * - * MQTT Client Config - * - * @generated from message meshtastic.ModuleConfig.MQTTConfig - */ -export type ModuleConfig_MQTTConfig = Message<"meshtastic.ModuleConfig.MQTTConfig"> & { - /** - * - * If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as - * is_uplink_enabled or is_downlink_enabled. - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; - - /** - * - * The server to use for our MQTT global message gateway feature. - * If not set, the default server will be used - * - * @generated from field: string address = 2; - */ - address: string; - - /** - * - * MQTT username to use (most useful for a custom MQTT server). - * If using a custom server, this will be honoured even if empty. - * If using the default server, this will only be honoured if set, otherwise the device will use the default username - * - * @generated from field: string username = 3; - */ - username: string; - - /** - * - * MQTT password to use (most useful for a custom MQTT server). - * If using a custom server, this will be honoured even if empty. - * If using the default server, this will only be honoured if set, otherwise the device will use the default password - * - * @generated from field: string password = 4; - */ - password: string; - - /** - * - * Whether to send encrypted or decrypted packets to MQTT. - * This parameter is only honoured if you also set server - * (the default official mqtt.meshtastic.org server can handle encrypted packets) - * Decrypted packets may be useful for external systems that want to consume meshtastic packets - * - * @generated from field: bool encryption_enabled = 5; - */ - encryptionEnabled: boolean; - - /** - * - * Deprecated: JSON packet support on MQTT was removed, and this field is ignored. - * - * @generated from field: bool json_enabled = 6 [deprecated = true]; - * @deprecated - */ - jsonEnabled: boolean; - - /** - * - * If true, we attempt to establish a secure connection using TLS - * - * @generated from field: bool tls_enabled = 7; - */ - tlsEnabled: boolean; - - /** - * - * The root topic to use for MQTT messages. Default is "msh". - * This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs - * - * @generated from field: string root = 8; - */ - root: string; - - /** - * - * If true, we can use the connected phone / client to proxy messages to MQTT instead of a direct connection - * - * @generated from field: bool proxy_to_client_enabled = 9; - */ - proxyToClientEnabled: boolean; - - /** - * - * If true, we will periodically report unencrypted information about our node to a map via MQTT - * - * @generated from field: bool map_reporting_enabled = 10; - */ - mapReportingEnabled: boolean; - - /** - * - * Settings for reporting information about our node to a map via MQTT - * - * @generated from field: meshtastic.ModuleConfig.MapReportSettings map_report_settings = 11; - */ - mapReportSettings?: ModuleConfig_MapReportSettings | undefined; -}; + mapReportSettings?: ModuleConfig_MapReportSettings | undefined; + }; /** * Describes the message meshtastic.ModuleConfig.MQTTConfig. * Use `create(ModuleConfig_MQTTConfigSchema)` to create a new message. */ -export const ModuleConfig_MQTTConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_MQTTConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 0); /** @@ -301,37 +325,38 @@ export const ModuleConfig_MQTTConfigSchema: GenMessage * * @generated from message meshtastic.ModuleConfig.MapReportSettings */ -export type ModuleConfig_MapReportSettings = Message<"meshtastic.ModuleConfig.MapReportSettings"> & { - /** - * - * How often we should report our info to the map (in seconds) - * - * @generated from field: uint32 publish_interval_secs = 1; - */ - publishIntervalSecs: number; +export type ModuleConfig_MapReportSettings = + Message<"meshtastic.ModuleConfig.MapReportSettings"> & { + /** + * + * How often we should report our info to the map (in seconds) + * + * @generated from field: uint32 publish_interval_secs = 1; + */ + publishIntervalSecs: number; - /** - * - * Bits of precision for the location sent (default of 32 is full precision). - * - * @generated from field: uint32 position_precision = 2; - */ - positionPrecision: number; + /** + * + * Bits of precision for the location sent (default of 32 is full precision). + * + * @generated from field: uint32 position_precision = 2; + */ + positionPrecision: number; - /** - * - * Whether we have opted-in to report our location to the map - * - * @generated from field: bool should_report_location = 3; - */ - shouldReportLocation: boolean; -}; + /** + * + * Whether we have opted-in to report our location to the map + * + * @generated from field: bool should_report_location = 3; + */ + shouldReportLocation: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.MapReportSettings. * Use `create(ModuleConfig_MapReportSettingsSchema)` to create a new message. */ -export const ModuleConfig_MapReportSettingsSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_MapReportSettingsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 1); /** @@ -340,37 +365,38 @@ export const ModuleConfig_MapReportSettingsSchema: GenMessage & { - /** - * - * Whether the Module is enabled - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_RemoteHardwareConfig = + Message<"meshtastic.ModuleConfig.RemoteHardwareConfig"> & { + /** + * + * Whether the Module is enabled + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * Whether the Module allows consumers to read / write to pins not defined in available_pins - * - * @generated from field: bool allow_undefined_pin_access = 2; - */ - allowUndefinedPinAccess: boolean; + /** + * + * Whether the Module allows consumers to read / write to pins not defined in available_pins + * + * @generated from field: bool allow_undefined_pin_access = 2; + */ + allowUndefinedPinAccess: boolean; - /** - * - * Exposes the available pins to the mesh for reading and writing - * - * @generated from field: repeated meshtastic.RemoteHardwarePin available_pins = 3; - */ - availablePins: RemoteHardwarePin[]; -}; + /** + * + * Exposes the available pins to the mesh for reading and writing + * + * @generated from field: repeated meshtastic.RemoteHardwarePin available_pins = 3; + */ + availablePins: RemoteHardwarePin[]; + }; /** * Describes the message meshtastic.ModuleConfig.RemoteHardwareConfig. * Use `create(ModuleConfig_RemoteHardwareConfigSchema)` to create a new message. */ -export const ModuleConfig_RemoteHardwareConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_RemoteHardwareConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 2); /** @@ -379,39 +405,40 @@ export const ModuleConfig_RemoteHardwareConfigSchema: GenMessage & { - /** - * - * Whether the Module is enabled - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_NeighborInfoConfig = + Message<"meshtastic.ModuleConfig.NeighborInfoConfig"> & { + /** + * + * Whether the Module is enabled + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * Interval in seconds of how often we should try to send our - * Neighbor Info (minimum is 14400, i.e., 4 hours) - * - * @generated from field: uint32 update_interval = 2; - */ - updateInterval: number; + /** + * + * Interval in seconds of how often we should try to send our + * Neighbor Info (minimum is 14400, i.e., 4 hours) + * + * @generated from field: uint32 update_interval = 2; + */ + updateInterval: number; - /** - * - * Whether in addition to sending it to MQTT and the PhoneAPI, our NeighborInfo should be transmitted over LoRa. - * Note that this is not available on a channel with default key and name. - * - * @generated from field: bool transmit_over_lora = 3; - */ - transmitOverLora: boolean; -}; + /** + * + * Whether in addition to sending it to MQTT and the PhoneAPI, our NeighborInfo should be transmitted over LoRa. + * Note that this is not available on a channel with default key and name. + * + * @generated from field: bool transmit_over_lora = 3; + */ + transmitOverLora: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.NeighborInfoConfig. * Use `create(ModuleConfig_NeighborInfoConfigSchema)` to create a new message. */ -export const ModuleConfig_NeighborInfoConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_NeighborInfoConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 3); /** @@ -420,85 +447,86 @@ export const ModuleConfig_NeighborInfoConfigSchema: GenMessage & { - /** - * - * Whether the Module is enabled - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_DetectionSensorConfig = + Message<"meshtastic.ModuleConfig.DetectionSensorConfig"> & { + /** + * + * Whether the Module is enabled + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * Interval in seconds of how often we can send a message to the mesh when a - * trigger event is detected - * - * @generated from field: uint32 minimum_broadcast_secs = 2; - */ - minimumBroadcastSecs: number; + /** + * + * Interval in seconds of how often we can send a message to the mesh when a + * trigger event is detected + * + * @generated from field: uint32 minimum_broadcast_secs = 2; + */ + minimumBroadcastSecs: number; - /** - * - * Interval in seconds of how often we should send a message to the mesh - * with the current state regardless of trigger events When set to 0, only - * trigger events will be broadcasted Works as a sort of status heartbeat - * for peace of mind - * - * @generated from field: uint32 state_broadcast_secs = 3; - */ - stateBroadcastSecs: number; + /** + * + * Interval in seconds of how often we should send a message to the mesh + * with the current state regardless of trigger events When set to 0, only + * trigger events will be broadcasted Works as a sort of status heartbeat + * for peace of mind + * + * @generated from field: uint32 state_broadcast_secs = 3; + */ + stateBroadcastSecs: number; - /** - * - * Send ASCII bell with alert message - * Useful for triggering ext. notification on bell - * - * @generated from field: bool send_bell = 4; - */ - sendBell: boolean; + /** + * + * Send ASCII bell with alert message + * Useful for triggering ext. notification on bell + * + * @generated from field: bool send_bell = 4; + */ + sendBell: boolean; - /** - * - * Friendly name used to format message sent to mesh - * Example: A name "Motion" would result in a message "Motion detected" - * Maximum length of 20 characters - * - * @generated from field: string name = 5; - */ - name: string; + /** + * + * Friendly name used to format message sent to mesh + * Example: A name "Motion" would result in a message "Motion detected" + * Maximum length of 20 characters + * + * @generated from field: string name = 5; + */ + name: string; - /** - * - * GPIO pin to monitor for state changes - * - * @generated from field: uint32 monitor_pin = 6; - */ - monitorPin: number; + /** + * + * GPIO pin to monitor for state changes + * + * @generated from field: uint32 monitor_pin = 6; + */ + monitorPin: number; - /** - * - * The type of trigger event to be used - * - * @generated from field: meshtastic.ModuleConfig.DetectionSensorConfig.TriggerType detection_trigger_type = 7; - */ - detectionTriggerType: ModuleConfig_DetectionSensorConfig_TriggerType; + /** + * + * The type of trigger event to be used + * + * @generated from field: meshtastic.ModuleConfig.DetectionSensorConfig.TriggerType detection_trigger_type = 7; + */ + detectionTriggerType: ModuleConfig_DetectionSensorConfig_TriggerType; - /** - * - * Whether or not use INPUT_PULLUP mode for GPIO pin - * Only applicable if the board uses pull-up resistors on the pin - * - * @generated from field: bool use_pullup = 8; - */ - usePullup: boolean; -}; + /** + * + * Whether or not use INPUT_PULLUP mode for GPIO pin + * Only applicable if the board uses pull-up resistors on the pin + * + * @generated from field: bool use_pullup = 8; + */ + usePullup: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.DetectionSensorConfig. * Use `create(ModuleConfig_DetectionSensorConfigSchema)` to create a new message. */ -export const ModuleConfig_DetectionSensorConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_DetectionSensorConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 4); /** @@ -553,7 +581,7 @@ export enum ModuleConfig_DetectionSensorConfig_TriggerType { /** * Describes the enum meshtastic.ModuleConfig.DetectionSensorConfig.TriggerType. */ -export const ModuleConfig_DetectionSensorConfig_TriggerTypeSchema: GenEnum = /*@__PURE__*/ +export const ModuleConfig_DetectionSensorConfig_TriggerTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_module_config, 0, 4, 0); /** @@ -562,69 +590,70 @@ export const ModuleConfig_DetectionSensorConfig_TriggerTypeSchema: GenEnum & { - /** - * - * Whether Audio is enabled - * - * @generated from field: bool codec2_enabled = 1; - */ - codec2Enabled: boolean; +export type ModuleConfig_AudioConfig = + Message<"meshtastic.ModuleConfig.AudioConfig"> & { + /** + * + * Whether Audio is enabled + * + * @generated from field: bool codec2_enabled = 1; + */ + codec2Enabled: boolean; - /** - * - * PTT Pin - * - * @generated from field: uint32 ptt_pin = 2; - */ - pttPin: number; + /** + * + * PTT Pin + * + * @generated from field: uint32 ptt_pin = 2; + */ + pttPin: number; - /** - * - * The audio sample rate to use for codec2 - * - * @generated from field: meshtastic.ModuleConfig.AudioConfig.Audio_Baud bitrate = 3; - */ - bitrate: ModuleConfig_AudioConfig_Audio_Baud; + /** + * + * The audio sample rate to use for codec2 + * + * @generated from field: meshtastic.ModuleConfig.AudioConfig.Audio_Baud bitrate = 3; + */ + bitrate: ModuleConfig_AudioConfig_Audio_Baud; - /** - * - * I2S Word Select - * - * @generated from field: uint32 i2s_ws = 4; - */ - i2sWs: number; + /** + * + * I2S Word Select + * + * @generated from field: uint32 i2s_ws = 4; + */ + i2sWs: number; - /** - * - * I2S Data IN - * - * @generated from field: uint32 i2s_sd = 5; - */ - i2sSd: number; + /** + * + * I2S Data IN + * + * @generated from field: uint32 i2s_sd = 5; + */ + i2sSd: number; - /** - * - * I2S Data OUT - * - * @generated from field: uint32 i2s_din = 6; - */ - i2sDin: number; + /** + * + * I2S Data OUT + * + * @generated from field: uint32 i2s_din = 6; + */ + i2sDin: number; - /** - * - * I2S Clock - * - * @generated from field: uint32 i2s_sck = 7; - */ - i2sSck: number; -}; + /** + * + * I2S Clock + * + * @generated from field: uint32 i2s_sck = 7; + */ + i2sSck: number; + }; /** * Describes the message meshtastic.ModuleConfig.AudioConfig. * Use `create(ModuleConfig_AudioConfigSchema)` to create a new message. */ -export const ModuleConfig_AudioConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_AudioConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 5); /** @@ -683,7 +712,7 @@ export enum ModuleConfig_AudioConfig_Audio_Baud { /** * Describes the enum meshtastic.ModuleConfig.AudioConfig.Audio_Baud. */ -export const ModuleConfig_AudioConfig_Audio_BaudSchema: GenEnum = /*@__PURE__*/ +export const ModuleConfig_AudioConfig_Audio_BaudSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_module_config, 0, 5, 0); /** @@ -692,42 +721,43 @@ export const ModuleConfig_AudioConfig_Audio_BaudSchema: GenEnum & { - /** - * - * Enable the Paxcounter Module - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_PaxcounterConfig = + Message<"meshtastic.ModuleConfig.PaxcounterConfig"> & { + /** + * + * Enable the Paxcounter Module + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * @generated from field: uint32 paxcounter_update_interval = 2; - */ - paxcounterUpdateInterval: number; + /** + * @generated from field: uint32 paxcounter_update_interval = 2; + */ + paxcounterUpdateInterval: number; - /** - * - * WiFi RSSI threshold. Defaults to -80 - * - * @generated from field: int32 wifi_threshold = 3; - */ - wifiThreshold: number; + /** + * + * WiFi RSSI threshold. Defaults to -80 + * + * @generated from field: int32 wifi_threshold = 3; + */ + wifiThreshold: number; - /** - * - * BLE RSSI threshold. Defaults to -80 - * - * @generated from field: int32 ble_threshold = 4; - */ - bleThreshold: number; -}; + /** + * + * BLE RSSI threshold. Defaults to -80 + * + * @generated from field: int32 ble_threshold = 4; + */ + bleThreshold: number; + }; /** * Describes the message meshtastic.ModuleConfig.PaxcounterConfig. * Use `create(ModuleConfig_PaxcounterConfigSchema)` to create a new message. */ -export const ModuleConfig_PaxcounterConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_PaxcounterConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 6); /** @@ -737,125 +767,126 @@ export const ModuleConfig_PaxcounterConfigSchema: GenMessage & { - /** - * - * Master enable for traffic management module - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_TrafficManagementConfig = + Message<"meshtastic.ModuleConfig.TrafficManagementConfig"> & { + /** + * + * Master enable for traffic management module + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * Enable position deduplication to drop redundant position broadcasts - * - * @generated from field: bool position_dedup_enabled = 2; - */ - positionDedupEnabled: boolean; + /** + * + * Enable position deduplication to drop redundant position broadcasts + * + * @generated from field: bool position_dedup_enabled = 2; + */ + positionDedupEnabled: boolean; - /** - * - * Number of bits of precision for position deduplication (0-32) - * - * @generated from field: uint32 position_precision_bits = 3; - */ - positionPrecisionBits: number; + /** + * + * Number of bits of precision for position deduplication (0-32) + * + * @generated from field: uint32 position_precision_bits = 3; + */ + positionPrecisionBits: number; - /** - * - * Minimum interval in seconds between position updates from the same node - * - * @generated from field: uint32 position_min_interval_secs = 4; - */ - positionMinIntervalSecs: number; + /** + * + * Minimum interval in seconds between position updates from the same node + * + * @generated from field: uint32 position_min_interval_secs = 4; + */ + positionMinIntervalSecs: number; - /** - * - * Enable direct response to NodeInfo requests from local cache - * - * @generated from field: bool nodeinfo_direct_response = 5; - */ - nodeinfoDirectResponse: boolean; + /** + * + * Enable direct response to NodeInfo requests from local cache + * + * @generated from field: bool nodeinfo_direct_response = 5; + */ + nodeinfoDirectResponse: boolean; - /** - * - * Minimum hop distance from requestor before responding to NodeInfo requests - * - * @generated from field: uint32 nodeinfo_direct_response_max_hops = 6; - */ - nodeinfoDirectResponseMaxHops: number; + /** + * + * Minimum hop distance from requestor before responding to NodeInfo requests + * + * @generated from field: uint32 nodeinfo_direct_response_max_hops = 6; + */ + nodeinfoDirectResponseMaxHops: number; - /** - * - * Enable per-node rate limiting to throttle chatty nodes - * - * @generated from field: bool rate_limit_enabled = 7; - */ - rateLimitEnabled: boolean; + /** + * + * Enable per-node rate limiting to throttle chatty nodes + * + * @generated from field: bool rate_limit_enabled = 7; + */ + rateLimitEnabled: boolean; - /** - * - * Time window in seconds for rate limiting calculations - * - * @generated from field: uint32 rate_limit_window_secs = 8; - */ - rateLimitWindowSecs: number; + /** + * + * Time window in seconds for rate limiting calculations + * + * @generated from field: uint32 rate_limit_window_secs = 8; + */ + rateLimitWindowSecs: number; - /** - * - * Maximum packets allowed per node within the rate limit window - * - * @generated from field: uint32 rate_limit_max_packets = 9; - */ - rateLimitMaxPackets: number; + /** + * + * Maximum packets allowed per node within the rate limit window + * + * @generated from field: uint32 rate_limit_max_packets = 9; + */ + rateLimitMaxPackets: number; - /** - * - * Enable dropping of unknown/undecryptable packets per rate_limit_window_secs - * - * @generated from field: bool drop_unknown_enabled = 10; - */ - dropUnknownEnabled: boolean; + /** + * + * Enable dropping of unknown/undecryptable packets per rate_limit_window_secs + * + * @generated from field: bool drop_unknown_enabled = 10; + */ + dropUnknownEnabled: boolean; - /** - * - * Number of unknown packets before dropping from a node - * - * @generated from field: uint32 unknown_packet_threshold = 11; - */ - unknownPacketThreshold: number; + /** + * + * Number of unknown packets before dropping from a node + * + * @generated from field: uint32 unknown_packet_threshold = 11; + */ + unknownPacketThreshold: number; - /** - * - * Set hop_limit to 0 for relayed telemetry broadcasts (own packets unaffected) - * - * @generated from field: bool exhaust_hop_telemetry = 12; - */ - exhaustHopTelemetry: boolean; + /** + * + * Set hop_limit to 0 for relayed telemetry broadcasts (own packets unaffected) + * + * @generated from field: bool exhaust_hop_telemetry = 12; + */ + exhaustHopTelemetry: boolean; - /** - * - * Set hop_limit to 0 for relayed position broadcasts (own packets unaffected) - * - * @generated from field: bool exhaust_hop_position = 13; - */ - exhaustHopPosition: boolean; + /** + * + * Set hop_limit to 0 for relayed position broadcasts (own packets unaffected) + * + * @generated from field: bool exhaust_hop_position = 13; + */ + exhaustHopPosition: boolean; - /** - * - * Preserve hop_limit for router-to-router traffic - * - * @generated from field: bool router_preserve_hops = 14; - */ - routerPreserveHops: boolean; -}; + /** + * + * Preserve hop_limit for router-to-router traffic + * + * @generated from field: bool router_preserve_hops = 14; + */ + routerPreserveHops: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.TrafficManagementConfig. * Use `create(ModuleConfig_TrafficManagementConfigSchema)` to create a new message. */ -export const ModuleConfig_TrafficManagementConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_TrafficManagementConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 7); /** @@ -864,79 +895,80 @@ export const ModuleConfig_TrafficManagementConfigSchema: GenMessage & { - /** - * - * Preferences for the SerialModule - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_SerialConfig = + Message<"meshtastic.ModuleConfig.SerialConfig"> & { + /** + * + * Preferences for the SerialModule + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * TODO: REPLACE - * - * @generated from field: bool echo = 2; - */ - echo: boolean; + /** + * + * TODO: REPLACE + * + * @generated from field: bool echo = 2; + */ + echo: boolean; - /** - * - * RX pin (should match Arduino gpio pin number) - * - * @generated from field: uint32 rxd = 3; - */ - rxd: number; + /** + * + * RX pin (should match Arduino gpio pin number) + * + * @generated from field: uint32 rxd = 3; + */ + rxd: number; - /** - * - * TX pin (should match Arduino gpio pin number) - * - * @generated from field: uint32 txd = 4; - */ - txd: number; + /** + * + * TX pin (should match Arduino gpio pin number) + * + * @generated from field: uint32 txd = 4; + */ + txd: number; - /** - * - * Serial baud rate - * - * @generated from field: meshtastic.ModuleConfig.SerialConfig.Serial_Baud baud = 5; - */ - baud: ModuleConfig_SerialConfig_Serial_Baud; + /** + * + * Serial baud rate + * + * @generated from field: meshtastic.ModuleConfig.SerialConfig.Serial_Baud baud = 5; + */ + baud: ModuleConfig_SerialConfig_Serial_Baud; - /** - * - * TODO: REPLACE - * - * @generated from field: uint32 timeout = 6; - */ - timeout: number; + /** + * + * TODO: REPLACE + * + * @generated from field: uint32 timeout = 6; + */ + timeout: number; - /** - * - * Mode for serial module operation - * - * @generated from field: meshtastic.ModuleConfig.SerialConfig.Serial_Mode mode = 7; - */ - mode: ModuleConfig_SerialConfig_Serial_Mode; + /** + * + * Mode for serial module operation + * + * @generated from field: meshtastic.ModuleConfig.SerialConfig.Serial_Mode mode = 7; + */ + mode: ModuleConfig_SerialConfig_Serial_Mode; - /** - * - * Overrides the platform's defacto Serial port instance to use with Serial module config settings - * This is currently only usable in output modes like NMEA / CalTopo and may behave strangely or not work at all in other modes - * Existing logging over the Serial Console will still be present - * - * @generated from field: bool override_console_serial_port = 8; - */ - overrideConsoleSerialPort: boolean; -}; + /** + * + * Overrides the platform's defacto Serial port instance to use with Serial module config settings + * This is currently only usable in output modes like NMEA / CalTopo and may behave strangely or not work at all in other modes + * Existing logging over the Serial Console will still be present + * + * @generated from field: bool override_console_serial_port = 8; + */ + overrideConsoleSerialPort: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.SerialConfig. * Use `create(ModuleConfig_SerialConfigSchema)` to create a new message. */ -export const ModuleConfig_SerialConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_SerialConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 8); /** @@ -1030,7 +1062,7 @@ export enum ModuleConfig_SerialConfig_Serial_Baud { /** * Describes the enum meshtastic.ModuleConfig.SerialConfig.Serial_Baud. */ -export const ModuleConfig_SerialConfig_Serial_BaudSchema: GenEnum = /*@__PURE__*/ +export const ModuleConfig_SerialConfig_Serial_BaudSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_module_config, 0, 8, 0); /** @@ -1115,7 +1147,7 @@ export enum ModuleConfig_SerialConfig_Serial_Mode { /** * Describes the enum meshtastic.ModuleConfig.SerialConfig.Serial_Mode. */ -export const ModuleConfig_SerialConfig_Serial_ModeSchema: GenEnum = /*@__PURE__*/ +export const ModuleConfig_SerialConfig_Serial_ModeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_module_config, 0, 8, 1); /** @@ -1124,144 +1156,145 @@ export const ModuleConfig_SerialConfig_Serial_ModeSchema: GenEnum & { - /** - * - * Enable the ExternalNotificationModule - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_ExternalNotificationConfig = + Message<"meshtastic.ModuleConfig.ExternalNotificationConfig"> & { + /** + * + * Enable the ExternalNotificationModule + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * When using in On/Off mode, keep the output on for this many - * milliseconds. Default 1000ms (1 second). - * - * @generated from field: uint32 output_ms = 2; - */ - outputMs: number; + /** + * + * When using in On/Off mode, keep the output on for this many + * milliseconds. Default 1000ms (1 second). + * + * @generated from field: uint32 output_ms = 2; + */ + outputMs: number; - /** - * - * Define the output pin GPIO setting Defaults to - * EXT_NOTIFY_OUT if set for the board. - * In standalone devices this pin should drive the LED to match the UI. - * - * @generated from field: uint32 output = 3; - */ - output: number; + /** + * + * Define the output pin GPIO setting Defaults to + * EXT_NOTIFY_OUT if set for the board. + * In standalone devices this pin should drive the LED to match the UI. + * + * @generated from field: uint32 output = 3; + */ + output: number; - /** - * - * Optional: Define a secondary output pin for a vibra motor - * This is used in standalone devices to match the UI. - * - * @generated from field: uint32 output_vibra = 8; - */ - outputVibra: number; + /** + * + * Optional: Define a secondary output pin for a vibra motor + * This is used in standalone devices to match the UI. + * + * @generated from field: uint32 output_vibra = 8; + */ + outputVibra: number; - /** - * - * Optional: Define a tertiary output pin for an active buzzer - * This is used in standalone devices to to match the UI. - * - * @generated from field: uint32 output_buzzer = 9; - */ - outputBuzzer: number; + /** + * + * Optional: Define a tertiary output pin for an active buzzer + * This is used in standalone devices to to match the UI. + * + * @generated from field: uint32 output_buzzer = 9; + */ + outputBuzzer: number; - /** - * - * IF this is true, the 'output' Pin will be pulled active high, false - * means active low. - * - * @generated from field: bool active = 4; - */ - active: boolean; + /** + * + * IF this is true, the 'output' Pin will be pulled active high, false + * means active low. + * + * @generated from field: bool active = 4; + */ + active: boolean; - /** - * - * True: Alert when a text message arrives (output) - * - * @generated from field: bool alert_message = 5; - */ - alertMessage: boolean; + /** + * + * True: Alert when a text message arrives (output) + * + * @generated from field: bool alert_message = 5; + */ + alertMessage: boolean; - /** - * - * True: Alert when a text message arrives (output_vibra) - * - * @generated from field: bool alert_message_vibra = 10; - */ - alertMessageVibra: boolean; + /** + * + * True: Alert when a text message arrives (output_vibra) + * + * @generated from field: bool alert_message_vibra = 10; + */ + alertMessageVibra: boolean; - /** - * - * True: Alert when a text message arrives (output_buzzer) - * - * @generated from field: bool alert_message_buzzer = 11; - */ - alertMessageBuzzer: boolean; + /** + * + * True: Alert when a text message arrives (output_buzzer) + * + * @generated from field: bool alert_message_buzzer = 11; + */ + alertMessageBuzzer: boolean; - /** - * - * True: Alert when the bell character is received (output) - * - * @generated from field: bool alert_bell = 6; - */ - alertBell: boolean; + /** + * + * True: Alert when the bell character is received (output) + * + * @generated from field: bool alert_bell = 6; + */ + alertBell: boolean; - /** - * - * True: Alert when the bell character is received (output_vibra) - * - * @generated from field: bool alert_bell_vibra = 12; - */ - alertBellVibra: boolean; + /** + * + * True: Alert when the bell character is received (output_vibra) + * + * @generated from field: bool alert_bell_vibra = 12; + */ + alertBellVibra: boolean; - /** - * - * True: Alert when the bell character is received (output_buzzer) - * - * @generated from field: bool alert_bell_buzzer = 13; - */ - alertBellBuzzer: boolean; + /** + * + * True: Alert when the bell character is received (output_buzzer) + * + * @generated from field: bool alert_bell_buzzer = 13; + */ + alertBellBuzzer: boolean; - /** - * - * use a PWM output instead of a simple on/off output. This will ignore - * the 'output', 'output_ms' and 'active' settings and use the - * device.buzzer_gpio instead. - * - * @generated from field: bool use_pwm = 7; - */ - usePwm: boolean; + /** + * + * use a PWM output instead of a simple on/off output. This will ignore + * the 'output', 'output_ms' and 'active' settings and use the + * device.buzzer_gpio instead. + * + * @generated from field: bool use_pwm = 7; + */ + usePwm: boolean; - /** - * - * The notification will toggle with 'output_ms' for this time of seconds. - * Default is 0 which means don't repeat at all. 60 would mean blink - * and/or beep for 60 seconds - * - * @generated from field: uint32 nag_timeout = 14; - */ - nagTimeout: number; + /** + * + * The notification will toggle with 'output_ms' for this time of seconds. + * Default is 0 which means don't repeat at all. 60 would mean blink + * and/or beep for 60 seconds + * + * @generated from field: uint32 nag_timeout = 14; + */ + nagTimeout: number; - /** - * - * When true, enables devices with native I2S audio output to use the RTTTL over speaker like a buzzer - * T-Watch S3 and T-Deck for example have this capability - * - * @generated from field: bool use_i2s_as_buzzer = 15; - */ - useI2sAsBuzzer: boolean; -}; + /** + * + * When true, enables devices with native I2S audio output to use the RTTTL over speaker like a buzzer + * T-Watch S3 and T-Deck for example have this capability + * + * @generated from field: bool use_i2s_as_buzzer = 15; + */ + useI2sAsBuzzer: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.ExternalNotificationConfig. * Use `create(ModuleConfig_ExternalNotificationConfigSchema)` to create a new message. */ -export const ModuleConfig_ExternalNotificationConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_ExternalNotificationConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 9); /** @@ -1270,61 +1303,62 @@ export const ModuleConfig_ExternalNotificationConfigSchema: GenMessage & { - /** - * - * Enable the Store and Forward Module - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_StoreForwardConfig = + Message<"meshtastic.ModuleConfig.StoreForwardConfig"> & { + /** + * + * Enable the Store and Forward Module + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * TODO: REPLACE - * - * @generated from field: bool heartbeat = 2; - */ - heartbeat: boolean; + /** + * + * TODO: REPLACE + * + * @generated from field: bool heartbeat = 2; + */ + heartbeat: boolean; - /** - * - * TODO: REPLACE - * - * @generated from field: uint32 records = 3; - */ - records: number; + /** + * + * TODO: REPLACE + * + * @generated from field: uint32 records = 3; + */ + records: number; - /** - * - * TODO: REPLACE - * - * @generated from field: uint32 history_return_max = 4; - */ - historyReturnMax: number; + /** + * + * TODO: REPLACE + * + * @generated from field: uint32 history_return_max = 4; + */ + historyReturnMax: number; - /** - * - * TODO: REPLACE - * - * @generated from field: uint32 history_return_window = 5; - */ - historyReturnWindow: number; + /** + * + * TODO: REPLACE + * + * @generated from field: uint32 history_return_window = 5; + */ + historyReturnWindow: number; - /** - * - * Set to true to let this node act as a server that stores received messages and resends them upon request. - * - * @generated from field: bool is_server = 6; - */ - isServer: boolean; -}; + /** + * + * Set to true to let this node act as a server that stores received messages and resends them upon request. + * + * @generated from field: bool is_server = 6; + */ + isServer: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.StoreForwardConfig. * Use `create(ModuleConfig_StoreForwardConfigSchema)` to create a new message. */ -export const ModuleConfig_StoreForwardConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_StoreForwardConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 10); /** @@ -1333,47 +1367,48 @@ export const ModuleConfig_StoreForwardConfigSchema: GenMessage & { - /** - * - * Enable the Range Test Module - * - * @generated from field: bool enabled = 1; - */ - enabled: boolean; +export type ModuleConfig_RangeTestConfig = + Message<"meshtastic.ModuleConfig.RangeTestConfig"> & { + /** + * + * Enable the Range Test Module + * + * @generated from field: bool enabled = 1; + */ + enabled: boolean; - /** - * - * Send out range test messages from this node - * - * @generated from field: uint32 sender = 2; - */ - sender: number; + /** + * + * Send out range test messages from this node + * + * @generated from field: uint32 sender = 2; + */ + sender: number; - /** - * - * Bool value indicating that this node should save a RangeTest.csv file. - * ESP32 Only - * - * @generated from field: bool save = 3; - */ - save: boolean; + /** + * + * Bool value indicating that this node should save a RangeTest.csv file. + * ESP32 Only + * + * @generated from field: bool save = 3; + */ + save: boolean; - /** - * - * Bool indicating that the node should cleanup / destroy it's RangeTest.csv file. - * ESP32 Only - * - * @generated from field: bool clear_on_reboot = 4; - */ - clearOnReboot: boolean; -}; + /** + * + * Bool indicating that the node should cleanup / destroy it's RangeTest.csv file. + * ESP32 Only + * + * @generated from field: bool clear_on_reboot = 4; + */ + clearOnReboot: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.RangeTestConfig. * Use `create(ModuleConfig_RangeTestConfigSchema)` to create a new message. */ -export const ModuleConfig_RangeTestConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_RangeTestConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 11); /** @@ -1382,138 +1417,139 @@ export const ModuleConfig_RangeTestConfigSchema: GenMessage & { - /** - * - * Interval in seconds of how often we should try to send our - * device metrics to the mesh - * - * @generated from field: uint32 device_update_interval = 1; - */ - deviceUpdateInterval: number; +export type ModuleConfig_TelemetryConfig = + Message<"meshtastic.ModuleConfig.TelemetryConfig"> & { + /** + * + * Interval in seconds of how often we should try to send our + * device metrics to the mesh + * + * @generated from field: uint32 device_update_interval = 1; + */ + deviceUpdateInterval: number; - /** - * @generated from field: uint32 environment_update_interval = 2; - */ - environmentUpdateInterval: number; + /** + * @generated from field: uint32 environment_update_interval = 2; + */ + environmentUpdateInterval: number; - /** - * - * Preferences for the Telemetry Module (Environment) - * Enable/Disable the telemetry measurement module measurement collection - * - * @generated from field: bool environment_measurement_enabled = 3; - */ - environmentMeasurementEnabled: boolean; + /** + * + * Preferences for the Telemetry Module (Environment) + * Enable/Disable the telemetry measurement module measurement collection + * + * @generated from field: bool environment_measurement_enabled = 3; + */ + environmentMeasurementEnabled: boolean; - /** - * - * Enable/Disable the telemetry measurement module on-device display - * - * @generated from field: bool environment_screen_enabled = 4; - */ - environmentScreenEnabled: boolean; + /** + * + * Enable/Disable the telemetry measurement module on-device display + * + * @generated from field: bool environment_screen_enabled = 4; + */ + environmentScreenEnabled: boolean; - /** - * - * We'll always read the sensor in Celsius, but sometimes we might want to - * display the results in Fahrenheit as a "user preference". - * - * @generated from field: bool environment_display_fahrenheit = 5; - */ - environmentDisplayFahrenheit: boolean; + /** + * + * We'll always read the sensor in Celsius, but sometimes we might want to + * display the results in Fahrenheit as a "user preference". + * + * @generated from field: bool environment_display_fahrenheit = 5; + */ + environmentDisplayFahrenheit: boolean; - /** - * - * Enable/Disable the air quality metrics - * - * @generated from field: bool air_quality_enabled = 6; - */ - airQualityEnabled: boolean; + /** + * + * Enable/Disable the air quality metrics + * + * @generated from field: bool air_quality_enabled = 6; + */ + airQualityEnabled: boolean; - /** - * - * Interval in seconds of how often we should try to send our - * air quality metrics to the mesh - * - * @generated from field: uint32 air_quality_interval = 7; - */ - airQualityInterval: number; + /** + * + * Interval in seconds of how often we should try to send our + * air quality metrics to the mesh + * + * @generated from field: uint32 air_quality_interval = 7; + */ + airQualityInterval: number; - /** - * - * Enable/disable Power metrics - * - * @generated from field: bool power_measurement_enabled = 8; - */ - powerMeasurementEnabled: boolean; + /** + * + * Enable/disable Power metrics + * + * @generated from field: bool power_measurement_enabled = 8; + */ + powerMeasurementEnabled: boolean; - /** - * - * Interval in seconds of how often we should try to send our - * power metrics to the mesh - * - * @generated from field: uint32 power_update_interval = 9; - */ - powerUpdateInterval: number; + /** + * + * Interval in seconds of how often we should try to send our + * power metrics to the mesh + * + * @generated from field: uint32 power_update_interval = 9; + */ + powerUpdateInterval: number; - /** - * - * Enable/Disable the power measurement module on-device display - * - * @generated from field: bool power_screen_enabled = 10; - */ - powerScreenEnabled: boolean; + /** + * + * Enable/Disable the power measurement module on-device display + * + * @generated from field: bool power_screen_enabled = 10; + */ + powerScreenEnabled: boolean; - /** - * - * Preferences for the (Health) Telemetry Module - * Enable/Disable the telemetry measurement module measurement collection - * - * @generated from field: bool health_measurement_enabled = 11; - */ - healthMeasurementEnabled: boolean; + /** + * + * Preferences for the (Health) Telemetry Module + * Enable/Disable the telemetry measurement module measurement collection + * + * @generated from field: bool health_measurement_enabled = 11; + */ + healthMeasurementEnabled: boolean; - /** - * - * Interval in seconds of how often we should try to send our - * health metrics to the mesh - * - * @generated from field: uint32 health_update_interval = 12; - */ - healthUpdateInterval: number; + /** + * + * Interval in seconds of how often we should try to send our + * health metrics to the mesh + * + * @generated from field: uint32 health_update_interval = 12; + */ + healthUpdateInterval: number; - /** - * - * Enable/Disable the health telemetry module on-device display - * - * @generated from field: bool health_screen_enabled = 13; - */ - healthScreenEnabled: boolean; + /** + * + * Enable/Disable the health telemetry module on-device display + * + * @generated from field: bool health_screen_enabled = 13; + */ + healthScreenEnabled: boolean; - /** - * - * Enable/Disable the device telemetry module to send metrics to the mesh - * Note: We will still send telemtry to the connected phone / client every minute over the API - * - * @generated from field: bool device_telemetry_enabled = 14; - */ - deviceTelemetryEnabled: boolean; + /** + * + * Enable/Disable the device telemetry module to send metrics to the mesh + * Note: We will still send telemtry to the connected phone / client every minute over the API + * + * @generated from field: bool device_telemetry_enabled = 14; + */ + deviceTelemetryEnabled: boolean; - /** - * - * Enable/Disable the air quality telemetry measurement module on-device display - * - * @generated from field: bool air_quality_screen_enabled = 15; - */ - airQualityScreenEnabled: boolean; -}; + /** + * + * Enable/Disable the air quality telemetry measurement module on-device display + * + * @generated from field: bool air_quality_screen_enabled = 15; + */ + airQualityScreenEnabled: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.TelemetryConfig. * Use `create(ModuleConfig_TelemetryConfigSchema)` to create a new message. */ -export const ModuleConfig_TelemetryConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_TelemetryConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 12); /** @@ -1522,105 +1558,106 @@ export const ModuleConfig_TelemetryConfigSchema: GenMessage & { - /** - * - * Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating. - * - * @generated from field: bool rotary1_enabled = 1; - */ - rotary1Enabled: boolean; +export type ModuleConfig_CannedMessageConfig = + Message<"meshtastic.ModuleConfig.CannedMessageConfig"> & { + /** + * + * Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating. + * + * @generated from field: bool rotary1_enabled = 1; + */ + rotary1Enabled: boolean; - /** - * - * GPIO pin for rotary encoder A port. - * - * @generated from field: uint32 inputbroker_pin_a = 2; - */ - inputbrokerPinA: number; + /** + * + * GPIO pin for rotary encoder A port. + * + * @generated from field: uint32 inputbroker_pin_a = 2; + */ + inputbrokerPinA: number; - /** - * - * GPIO pin for rotary encoder B port. - * - * @generated from field: uint32 inputbroker_pin_b = 3; - */ - inputbrokerPinB: number; + /** + * + * GPIO pin for rotary encoder B port. + * + * @generated from field: uint32 inputbroker_pin_b = 3; + */ + inputbrokerPinB: number; - /** - * - * GPIO pin for rotary encoder Press port. - * - * @generated from field: uint32 inputbroker_pin_press = 4; - */ - inputbrokerPinPress: number; + /** + * + * GPIO pin for rotary encoder Press port. + * + * @generated from field: uint32 inputbroker_pin_press = 4; + */ + inputbrokerPinPress: number; - /** - * - * Generate input event on CW of this kind. - * - * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar inputbroker_event_cw = 5; - */ - inputbrokerEventCw: ModuleConfig_CannedMessageConfig_InputEventChar; + /** + * + * Generate input event on CW of this kind. + * + * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar inputbroker_event_cw = 5; + */ + inputbrokerEventCw: ModuleConfig_CannedMessageConfig_InputEventChar; - /** - * - * Generate input event on CCW of this kind. - * - * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar inputbroker_event_ccw = 6; - */ - inputbrokerEventCcw: ModuleConfig_CannedMessageConfig_InputEventChar; + /** + * + * Generate input event on CCW of this kind. + * + * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar inputbroker_event_ccw = 6; + */ + inputbrokerEventCcw: ModuleConfig_CannedMessageConfig_InputEventChar; - /** - * - * Generate input event on Press of this kind. - * - * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar inputbroker_event_press = 7; - */ - inputbrokerEventPress: ModuleConfig_CannedMessageConfig_InputEventChar; + /** + * + * Generate input event on Press of this kind. + * + * @generated from field: meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar inputbroker_event_press = 7; + */ + inputbrokerEventPress: ModuleConfig_CannedMessageConfig_InputEventChar; - /** - * - * Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker. - * - * @generated from field: bool updown1_enabled = 8; - */ - updown1Enabled: boolean; + /** + * + * Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker. + * + * @generated from field: bool updown1_enabled = 8; + */ + updown1Enabled: boolean; - /** - * - * Enable/disable CannedMessageModule. - * - * @generated from field: bool enabled = 9 [deprecated = true]; - * @deprecated - */ - enabled: boolean; + /** + * + * Enable/disable CannedMessageModule. + * + * @generated from field: bool enabled = 9 [deprecated = true]; + * @deprecated + */ + enabled: boolean; - /** - * - * Input event origin accepted by the canned message module. - * Can be e.g. "rotEnc1", "upDownEnc1", "scanAndSelect", "cardkb", "serialkb", or keyword "_any" - * - * @generated from field: string allow_input_source = 10 [deprecated = true]; - * @deprecated - */ - allowInputSource: string; + /** + * + * Input event origin accepted by the canned message module. + * Can be e.g. "rotEnc1", "upDownEnc1", "scanAndSelect", "cardkb", "serialkb", or keyword "_any" + * + * @generated from field: string allow_input_source = 10 [deprecated = true]; + * @deprecated + */ + allowInputSource: string; - /** - * - * CannedMessageModule also sends a bell character with the messages. - * ExternalNotificationModule can benefit from this feature. - * - * @generated from field: bool send_bell = 11; - */ - sendBell: boolean; -}; + /** + * + * CannedMessageModule also sends a bell character with the messages. + * ExternalNotificationModule can benefit from this feature. + * + * @generated from field: bool send_bell = 11; + */ + sendBell: boolean; + }; /** * Describes the message meshtastic.ModuleConfig.CannedMessageConfig. * Use `create(ModuleConfig_CannedMessageConfigSchema)` to create a new message. */ -export const ModuleConfig_CannedMessageConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_CannedMessageConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 13); /** @@ -1698,7 +1735,7 @@ export enum ModuleConfig_CannedMessageConfig_InputEventChar { /** * Describes the enum meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar. */ -export const ModuleConfig_CannedMessageConfig_InputEventCharSchema: GenEnum = /*@__PURE__*/ +export const ModuleConfig_CannedMessageConfig_InputEventCharSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_module_config, 0, 13, 0); /** @@ -1708,53 +1745,54 @@ export const ModuleConfig_CannedMessageConfig_InputEventCharSchema: GenEnum & { - /** - * - * Sets LED to on or off. - * - * @generated from field: bool led_state = 1; - */ - ledState: boolean; +export type ModuleConfig_AmbientLightingConfig = + Message<"meshtastic.ModuleConfig.AmbientLightingConfig"> & { + /** + * + * Sets LED to on or off. + * + * @generated from field: bool led_state = 1; + */ + ledState: boolean; - /** - * - * Sets the current for the LED output. Default is 10. - * - * @generated from field: uint32 current = 2; - */ - current: number; + /** + * + * Sets the current for the LED output. Default is 10. + * + * @generated from field: uint32 current = 2; + */ + current: number; - /** - * - * Sets the red LED level. Values are 0-255. - * - * @generated from field: uint32 red = 3; - */ - red: number; + /** + * + * Sets the red LED level. Values are 0-255. + * + * @generated from field: uint32 red = 3; + */ + red: number; - /** - * - * Sets the green LED level. Values are 0-255. - * - * @generated from field: uint32 green = 4; - */ - green: number; + /** + * + * Sets the green LED level. Values are 0-255. + * + * @generated from field: uint32 green = 4; + */ + green: number; - /** - * - * Sets the blue LED level. Values are 0-255. - * - * @generated from field: uint32 blue = 5; - */ - blue: number; -}; + /** + * + * Sets the blue LED level. Values are 0-255. + * + * @generated from field: uint32 blue = 5; + */ + blue: number; + }; /** * Describes the message meshtastic.ModuleConfig.AmbientLightingConfig. * Use `create(ModuleConfig_AmbientLightingConfigSchema)` to create a new message. */ -export const ModuleConfig_AmbientLightingConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_AmbientLightingConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 14); /** @@ -1763,21 +1801,22 @@ export const ModuleConfig_AmbientLightingConfigSchema: GenMessage & { - /** - * - * The actual status string - * - * @generated from field: string node_status = 1; - */ - nodeStatus: string; -}; +export type ModuleConfig_StatusMessageConfig = + Message<"meshtastic.ModuleConfig.StatusMessageConfig"> & { + /** + * + * The actual status string + * + * @generated from field: string node_status = 1; + */ + nodeStatus: string; + }; /** * Describes the message meshtastic.ModuleConfig.StatusMessageConfig. * Use `create(ModuleConfig_StatusMessageConfigSchema)` to create a new message. */ -export const ModuleConfig_StatusMessageConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_StatusMessageConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 15); /** @@ -1786,31 +1825,32 @@ export const ModuleConfig_StatusMessageConfigSchema: GenMessage & { - /** - * - * Team color. - * Default Unspecifed_Color -> firmware uses Cyan - * - * @generated from field: meshtastic.Team team = 1; - */ - team: Team; +export type ModuleConfig_TAKConfig = + Message<"meshtastic.ModuleConfig.TAKConfig"> & { + /** + * + * Team color. + * Default Unspecifed_Color -> firmware uses Cyan + * + * @generated from field: meshtastic.Team team = 1; + */ + team: Team; - /** - * - * Member role. - * Default Unspecifed -> firmware uses TeamMember - * - * @generated from field: meshtastic.MemberRole role = 2; - */ - role: MemberRole; -}; + /** + * + * Member role. + * Default Unspecifed -> firmware uses TeamMember + * + * @generated from field: meshtastic.MemberRole role = 2; + */ + role: MemberRole; + }; /** * Describes the message meshtastic.ModuleConfig.TAKConfig. * Use `create(ModuleConfig_TAKConfigSchema)` to create a new message. */ -export const ModuleConfig_TAKConfigSchema: GenMessage = /*@__PURE__*/ +export const ModuleConfig_TAKConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 0, 16); /** @@ -1849,7 +1889,7 @@ export type RemoteHardwarePin = Message<"meshtastic.RemoteHardwarePin"> & { * Describes the message meshtastic.RemoteHardwarePin. * Use `create(RemoteHardwarePinSchema)` to create a new message. */ -export const RemoteHardwarePinSchema: GenMessage = /*@__PURE__*/ +export const RemoteHardwarePinSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_module_config, 1); /** @@ -1884,6 +1924,5 @@ export enum RemoteHardwarePinType { /** * Describes the enum meshtastic.RemoteHardwarePinType. */ -export const RemoteHardwarePinTypeSchema: GenEnum = /*@__PURE__*/ +export const RemoteHardwarePinTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_module_config, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/mqtt_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/mqtt_pb.ts index 36170b687..7887eb28c 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/mqtt_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/mqtt_pb.ts @@ -1,10 +1,14 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/mqtt.proto (package meshtastic, syntax proto3) /* eslint-disable */ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; -import type { Config_DeviceConfig_Role, Config_LoRaConfig_ModemPreset, Config_LoRaConfig_RegionCode } from "./config_pb"; +import type { + Config_DeviceConfig_Role, + Config_LoRaConfig_ModemPreset, + Config_LoRaConfig_RegionCode, +} from "./config_pb"; import { file_meshtastic_config } from "./config_pb"; import type { HardwareModel, MeshPacket } from "./mesh_pb"; import { file_meshtastic_mesh } from "./mesh_pb"; @@ -13,8 +17,10 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/mqtt.proto. */ -export const file_meshtastic_mqtt: GenFile = /*@__PURE__*/ - fileDesc("ChVtZXNodGFzdGljL21xdHQucHJvdG8SCm1lc2h0YXN0aWMiYQoPU2VydmljZUVudmVsb3BlEiYKBnBhY2tldBgBIAEoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBISCgpjaGFubmVsX2lkGAIgASgJEhIKCmdhdGV3YXlfaWQYAyABKAki3wMKCU1hcFJlcG9ydBIRCglsb25nX25hbWUYASABKAkSEgoKc2hvcnRfbmFtZRgCIAEoCRIyCgRyb2xlGAMgASgOMiQubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnLlJvbGUSKwoIaHdfbW9kZWwYBCABKA4yGS5tZXNodGFzdGljLkhhcmR3YXJlTW9kZWwSGAoQZmlybXdhcmVfdmVyc2lvbhgFIAEoCRI4CgZyZWdpb24YBiABKA4yKC5tZXNodGFzdGljLkNvbmZpZy5Mb1JhQ29uZmlnLlJlZ2lvbkNvZGUSPwoMbW9kZW1fcHJlc2V0GAcgASgOMikubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZy5Nb2RlbVByZXNldBIbChNoYXNfZGVmYXVsdF9jaGFubmVsGAggASgIEhIKCmxhdGl0dWRlX2kYCSABKA8SEwoLbG9uZ2l0dWRlX2kYCiABKA8SEAoIYWx0aXR1ZGUYCyABKAUSGgoScG9zaXRpb25fcHJlY2lzaW9uGAwgASgNEh4KFm51bV9vbmxpbmVfbG9jYWxfbm9kZXMYDSABKA0SIQoZaGFzX29wdGVkX3JlcG9ydF9sb2NhdGlvbhgOIAEoCEJgChRvcmcubWVzaHRhc3RpYy5wcm90b0IKTVFUVFByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", [file_meshtastic_config, file_meshtastic_mesh]); +export const file_meshtastic_mqtt: GenFile /*@__PURE__*/ = fileDesc( + "ChVtZXNodGFzdGljL21xdHQucHJvdG8SCm1lc2h0YXN0aWMiYQoPU2VydmljZUVudmVsb3BlEiYKBnBhY2tldBgBIAEoCzIWLm1lc2h0YXN0aWMuTWVzaFBhY2tldBISCgpjaGFubmVsX2lkGAIgASgJEhIKCmdhdGV3YXlfaWQYAyABKAki3wMKCU1hcFJlcG9ydBIRCglsb25nX25hbWUYASABKAkSEgoKc2hvcnRfbmFtZRgCIAEoCRIyCgRyb2xlGAMgASgOMiQubWVzaHRhc3RpYy5Db25maWcuRGV2aWNlQ29uZmlnLlJvbGUSKwoIaHdfbW9kZWwYBCABKA4yGS5tZXNodGFzdGljLkhhcmR3YXJlTW9kZWwSGAoQZmlybXdhcmVfdmVyc2lvbhgFIAEoCRI4CgZyZWdpb24YBiABKA4yKC5tZXNodGFzdGljLkNvbmZpZy5Mb1JhQ29uZmlnLlJlZ2lvbkNvZGUSPwoMbW9kZW1fcHJlc2V0GAcgASgOMikubWVzaHRhc3RpYy5Db25maWcuTG9SYUNvbmZpZy5Nb2RlbVByZXNldBIbChNoYXNfZGVmYXVsdF9jaGFubmVsGAggASgIEhIKCmxhdGl0dWRlX2kYCSABKA8SEwoLbG9uZ2l0dWRlX2kYCiABKA8SEAoIYWx0aXR1ZGUYCyABKAUSGgoScG9zaXRpb25fcHJlY2lzaW9uGAwgASgNEh4KFm51bV9vbmxpbmVfbG9jYWxfbm9kZXMYDSABKA0SIQoZaGFzX29wdGVkX3JlcG9ydF9sb2NhdGlvbhgOIAEoCEJgChRvcmcubWVzaHRhc3RpYy5wcm90b0IKTVFUVFByb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", + [file_meshtastic_config, file_meshtastic_mesh], +); /** * @@ -54,7 +60,7 @@ export type ServiceEnvelope = Message<"meshtastic.ServiceEnvelope"> & { * Describes the message meshtastic.ServiceEnvelope. * Use `create(ServiceEnvelopeSchema)` to create a new message. */ -export const ServiceEnvelopeSchema: GenMessage = /*@__PURE__*/ +export const ServiceEnvelopeSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_mqtt, 0); /** @@ -184,6 +190,7 @@ export type MapReport = Message<"meshtastic.MapReport"> & { * Describes the message meshtastic.MapReport. * Use `create(MapReportSchema)` to create a new message. */ -export const MapReportSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_mqtt, 1); - +export const MapReportSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_mqtt, + 1, +); diff --git a/packages/protobufs/packages/ts/dist/meshtastic/paxcount_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/paxcount_pb.ts index f0ecbade7..2bd12fbd0 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/paxcount_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/paxcount_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/paxcount.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -9,8 +9,9 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/paxcount.proto. */ -export const file_meshtastic_paxcount: GenFile = /*@__PURE__*/ - fileDesc("ChltZXNodGFzdGljL3BheGNvdW50LnByb3RvEgptZXNodGFzdGljIjUKCFBheGNvdW50EgwKBHdpZmkYASABKA0SCwoDYmxlGAIgASgNEg4KBnVwdGltZRgDIAEoDUJkChRvcmcubWVzaHRhc3RpYy5wcm90b0IOUGF4Y291bnRQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"); +export const file_meshtastic_paxcount: GenFile /*@__PURE__*/ = fileDesc( + "ChltZXNodGFzdGljL3BheGNvdW50LnByb3RvEgptZXNodGFzdGljIjUKCFBheGNvdW50EgwKBHdpZmkYASABKA0SCwoDYmxlGAIgASgNEg4KBnVwdGltZRgDIAEoDUJkChRvcmcubWVzaHRhc3RpYy5wcm90b0IOUGF4Y291bnRQcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", +); /** * @@ -48,6 +49,7 @@ export type Paxcount = Message<"meshtastic.Paxcount"> & { * Describes the message meshtastic.Paxcount. * Use `create(PaxcountSchema)` to create a new message. */ -export const PaxcountSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_paxcount, 0); - +export const PaxcountSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_paxcount, + 0, +); diff --git a/packages/protobufs/packages/ts/dist/meshtastic/portnums_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/portnums_pb.ts index b3be2ba74..672552bc4 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/portnums_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/portnums_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/portnums.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -8,8 +8,9 @@ import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv2"; /** * Describes the file meshtastic/portnums.proto. */ -export const file_meshtastic_portnums: GenFile = /*@__PURE__*/ - fileDesc("ChltZXNodGFzdGljL3BvcnRudW1zLnByb3RvEgptZXNodGFzdGljKv0FCgdQb3J0TnVtEg8KC1VOS05PV05fQVBQEAASFAoQVEVYVF9NRVNTQUdFX0FQUBABEhcKE1JFTU9URV9IQVJEV0FSRV9BUFAQAhIQCgxQT1NJVElPTl9BUFAQAxIQCgxOT0RFSU5GT19BUFAQBBIPCgtST1VUSU5HX0FQUBAFEg0KCUFETUlOX0FQUBAGEh8KG1RFWFRfTUVTU0FHRV9DT01QUkVTU0VEX0FQUBAHEhAKDFdBWVBPSU5UX0FQUBAIEg0KCUFVRElPX0FQUBAJEhgKFERFVEVDVElPTl9TRU5TT1JfQVBQEAoSDQoJQUxFUlRfQVBQEAsSGAoUS0VZX1ZFUklGSUNBVElPTl9BUFAQDBIUChBSRU1PVEVfU0hFTExfQVBQEA0SDQoJUkVQTFlfQVBQECASEQoNSVBfVFVOTkVMX0FQUBAhEhIKDlBBWENPVU5URVJfQVBQECISHgoaU1RPUkVfRk9SV0FSRF9QTFVTUExVU19BUFAQIxITCg9OT0RFX1NUQVRVU19BUFAQJBIOCgpTRVJJQUxfQVBQEEASFQoRU1RPUkVfRk9SV0FSRF9BUFAQQRISCg5SQU5HRV9URVNUX0FQUBBCEhEKDVRFTEVNRVRSWV9BUFAQQxILCgdaUFNfQVBQEEQSEQoNU0lNVUxBVE9SX0FQUBBFEhIKDlRSQUNFUk9VVEVfQVBQEEYSFAoQTkVJR0hCT1JJTkZPX0FQUBBHEg8KC0FUQUtfUExVR0lOEEgSEgoOTUFQX1JFUE9SVF9BUFAQSRITCg9QT1dFUlNUUkVTU19BUFAQShISCg5MT1JBV0FOX0JSSURHRRBLEhgKFFJFVElDVUxVTV9UVU5ORUxfQVBQEEwSDwoLQ0FZRU5ORV9BUFAQTRISCg5BVEFLX1BMVUdJTl9WMhBOEhIKDkdST1VQQUxBUk1fQVBQEHASEAoLUFJJVkFURV9BUFAQgAISEwoOQVRBS19GT1JXQVJERVIQgQISCAoDTUFYEP8DQl4KFG9yZy5tZXNodGFzdGljLnByb3RvQghQb3J0bnVtc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM"); +export const file_meshtastic_portnums: GenFile /*@__PURE__*/ = fileDesc( + "ChltZXNodGFzdGljL3BvcnRudW1zLnByb3RvEgptZXNodGFzdGljKv0FCgdQb3J0TnVtEg8KC1VOS05PV05fQVBQEAASFAoQVEVYVF9NRVNTQUdFX0FQUBABEhcKE1JFTU9URV9IQVJEV0FSRV9BUFAQAhIQCgxQT1NJVElPTl9BUFAQAxIQCgxOT0RFSU5GT19BUFAQBBIPCgtST1VUSU5HX0FQUBAFEg0KCUFETUlOX0FQUBAGEh8KG1RFWFRfTUVTU0FHRV9DT01QUkVTU0VEX0FQUBAHEhAKDFdBWVBPSU5UX0FQUBAIEg0KCUFVRElPX0FQUBAJEhgKFERFVEVDVElPTl9TRU5TT1JfQVBQEAoSDQoJQUxFUlRfQVBQEAsSGAoUS0VZX1ZFUklGSUNBVElPTl9BUFAQDBIUChBSRU1PVEVfU0hFTExfQVBQEA0SDQoJUkVQTFlfQVBQECASEQoNSVBfVFVOTkVMX0FQUBAhEhIKDlBBWENPVU5URVJfQVBQECISHgoaU1RPUkVfRk9SV0FSRF9QTFVTUExVU19BUFAQIxITCg9OT0RFX1NUQVRVU19BUFAQJBIOCgpTRVJJQUxfQVBQEEASFQoRU1RPUkVfRk9SV0FSRF9BUFAQQRISCg5SQU5HRV9URVNUX0FQUBBCEhEKDVRFTEVNRVRSWV9BUFAQQxILCgdaUFNfQVBQEEQSEQoNU0lNVUxBVE9SX0FQUBBFEhIKDlRSQUNFUk9VVEVfQVBQEEYSFAoQTkVJR0hCT1JJTkZPX0FQUBBHEg8KC0FUQUtfUExVR0lOEEgSEgoOTUFQX1JFUE9SVF9BUFAQSRITCg9QT1dFUlNUUkVTU19BUFAQShISCg5MT1JBV0FOX0JSSURHRRBLEhgKFFJFVElDVUxVTV9UVU5ORUxfQVBQEEwSDwoLQ0FZRU5ORV9BUFAQTRISCg5BVEFLX1BMVUdJTl9WMhBOEhIKDkdST1VQQUxBUk1fQVBQEHASEAoLUFJJVkFURV9BUFAQgAISEwoOQVRBS19GT1JXQVJERVIQgQISCAoDTUFYEP8DQl4KFG9yZy5tZXNodGFzdGljLnByb3RvQghQb3J0bnVtc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", +); /** * @@ -407,6 +408,7 @@ export enum PortNum { /** * Describes the enum meshtastic.PortNum. */ -export const PortNumSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_meshtastic_portnums, 0); - +export const PortNumSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_meshtastic_portnums, + 0, +); diff --git a/packages/protobufs/packages/ts/dist/meshtastic/powermon_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/powermon_pb.ts index 5a22ce628..b21c89cee 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/powermon_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/powermon_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/powermon.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/powermon.proto. */ -export const file_meshtastic_powermon: GenFile = /*@__PURE__*/ - fileDesc("ChltZXNodGFzdGljL3Bvd2VybW9uLnByb3RvEgptZXNodGFzdGljIuABCghQb3dlck1vbiLTAQoFU3RhdGUSCAoETm9uZRAAEhEKDUNQVV9EZWVwU2xlZXAQARISCg5DUFVfTGlnaHRTbGVlcBACEgwKCFZleHQxX09uEAQSDQoJTG9yYV9SWE9uEAgSDQoJTG9yYV9UWE9uEBASEQoNTG9yYV9SWEFjdGl2ZRAgEgkKBUJUX09uEEASCwoGTEVEX09uEIABEg4KCVNjcmVlbl9PbhCAAhITCg5TY3JlZW5fRHJhd2luZxCABBIMCgdXaWZpX09uEIAIEg8KCkdQU19BY3RpdmUQgBAi/wIKElBvd2VyU3RyZXNzTWVzc2FnZRIyCgNjbWQYASABKA4yJS5tZXNodGFzdGljLlBvd2VyU3RyZXNzTWVzc2FnZS5PcGNvZGUSEwoLbnVtX3NlY29uZHMYAiABKAIinwIKBk9wY29kZRIJCgVVTlNFVBAAEg4KClBSSU5UX0lORk8QARIPCgtGT1JDRV9RVUlFVBACEg0KCUVORF9RVUlFVBADEg0KCVNDUkVFTl9PThAQEg4KClNDUkVFTl9PRkYQERIMCghDUFVfSURMRRAgEhEKDUNQVV9ERUVQU0xFRVAQIRIOCgpDUFVfRlVMTE9OECISCgoGTEVEX09OEDASCwoHTEVEX09GRhAxEgwKCExPUkFfT0ZGEEASCwoHTE9SQV9UWBBBEgsKB0xPUkFfUlgQQhIKCgZCVF9PRkYQUBIJCgVCVF9PThBREgwKCFdJRklfT0ZGEGASCwoHV0lGSV9PThBhEgsKB0dQU19PRkYQcBIKCgZHUFNfT04QcUJkChRvcmcubWVzaHRhc3RpYy5wcm90b0IOUG93ZXJNb25Qcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"); +export const file_meshtastic_powermon: GenFile /*@__PURE__*/ = fileDesc( + "ChltZXNodGFzdGljL3Bvd2VybW9uLnByb3RvEgptZXNodGFzdGljIuABCghQb3dlck1vbiLTAQoFU3RhdGUSCAoETm9uZRAAEhEKDUNQVV9EZWVwU2xlZXAQARISCg5DUFVfTGlnaHRTbGVlcBACEgwKCFZleHQxX09uEAQSDQoJTG9yYV9SWE9uEAgSDQoJTG9yYV9UWE9uEBASEQoNTG9yYV9SWEFjdGl2ZRAgEgkKBUJUX09uEEASCwoGTEVEX09uEIABEg4KCVNjcmVlbl9PbhCAAhITCg5TY3JlZW5fRHJhd2luZxCABBIMCgdXaWZpX09uEIAIEg8KCkdQU19BY3RpdmUQgBAi/wIKElBvd2VyU3RyZXNzTWVzc2FnZRIyCgNjbWQYASABKA4yJS5tZXNodGFzdGljLlBvd2VyU3RyZXNzTWVzc2FnZS5PcGNvZGUSEwoLbnVtX3NlY29uZHMYAiABKAIinwIKBk9wY29kZRIJCgVVTlNFVBAAEg4KClBSSU5UX0lORk8QARIPCgtGT1JDRV9RVUlFVBACEg0KCUVORF9RVUlFVBADEg0KCVNDUkVFTl9PThAQEg4KClNDUkVFTl9PRkYQERIMCghDUFVfSURMRRAgEhEKDUNQVV9ERUVQU0xFRVAQIRIOCgpDUFVfRlVMTE9OECISCgoGTEVEX09OEDASCwoHTEVEX09GRhAxEgwKCExPUkFfT0ZGEEASCwoHTE9SQV9UWBBBEgsKB0xPUkFfUlgQQhIKCgZCVF9PRkYQUBIJCgVCVF9PThBREgwKCFdJRklfT0ZGEGASCwoHV0lGSV9PThBhEgsKB0dQU19PRkYQcBIKCgZHUFNfT04QcUJkChRvcmcubWVzaHRhc3RpYy5wcm90b0IOUG93ZXJNb25Qcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", +); /** * Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs). @@ -18,15 +23,16 @@ export const file_meshtastic_powermon: GenFile = /*@__PURE__*/ * * @generated from message meshtastic.PowerMon */ -export type PowerMon = Message<"meshtastic.PowerMon"> & { -}; +export type PowerMon = Message<"meshtastic.PowerMon"> & {}; /** * Describes the message meshtastic.PowerMon. * Use `create(PowerMonSchema)` to create a new message. */ -export const PowerMonSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_powermon, 0); +export const PowerMonSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_powermon, + 0, +); /** * Any significant power changing event in meshtastic should be tagged with a powermon state transition. @@ -118,7 +124,7 @@ export enum PowerMon_State { /** * Describes the enum meshtastic.PowerMon.State. */ -export const PowerMon_StateSchema: GenEnum = /*@__PURE__*/ +export const PowerMon_StateSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_powermon, 0, 0); /** @@ -146,7 +152,7 @@ export type PowerStressMessage = Message<"meshtastic.PowerStressMessage"> & { * Describes the message meshtastic.PowerStressMessage. * Use `create(PowerStressMessageSchema)` to create a new message. */ -export const PowerStressMessageSchema: GenMessage = /*@__PURE__*/ +export const PowerStressMessageSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_powermon, 1); /** @@ -303,6 +309,5 @@ export enum PowerStressMessage_Opcode { /** * Describes the enum meshtastic.PowerStressMessage.Opcode. */ -export const PowerStressMessage_OpcodeSchema: GenEnum = /*@__PURE__*/ +export const PowerStressMessage_OpcodeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_powermon, 1, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/remote_hardware_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/remote_hardware_pb.ts index f7639e8d5..986770bf4 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/remote_hardware_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/remote_hardware_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/remote_hardware.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/remote_hardware.proto. */ -export const file_meshtastic_remote_hardware: GenFile = /*@__PURE__*/ - fileDesc("CiBtZXNodGFzdGljL3JlbW90ZV9oYXJkd2FyZS5wcm90bxIKbWVzaHRhc3RpYyLWAQoPSGFyZHdhcmVNZXNzYWdlEi4KBHR5cGUYASABKA4yIC5tZXNodGFzdGljLkhhcmR3YXJlTWVzc2FnZS5UeXBlEhEKCWdwaW9fbWFzaxgCIAEoBBISCgpncGlvX3ZhbHVlGAMgASgEImwKBFR5cGUSCQoFVU5TRVQQABIPCgtXUklURV9HUElPUxABEg8KC1dBVENIX0dQSU9TEAISEQoNR1BJT1NfQ0hBTkdFRBADEg4KClJFQURfR1BJT1MQBBIUChBSRUFEX0dQSU9TX1JFUExZEAVCZAoUb3JnLm1lc2h0YXN0aWMucHJvdG9CDlJlbW90ZUhhcmR3YXJlWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw"); +export const file_meshtastic_remote_hardware: GenFile /*@__PURE__*/ = fileDesc( + "CiBtZXNodGFzdGljL3JlbW90ZV9oYXJkd2FyZS5wcm90bxIKbWVzaHRhc3RpYyLWAQoPSGFyZHdhcmVNZXNzYWdlEi4KBHR5cGUYASABKA4yIC5tZXNodGFzdGljLkhhcmR3YXJlTWVzc2FnZS5UeXBlEhEKCWdwaW9fbWFzaxgCIAEoBBISCgpncGlvX3ZhbHVlGAMgASgEImwKBFR5cGUSCQoFVU5TRVQQABIPCgtXUklURV9HUElPUxABEg8KC1dBVENIX0dQSU9TEAISEQoNR1BJT1NfQ0hBTkdFRBADEg4KClJFQURfR1BJT1MQBBIUChBSRUFEX0dQSU9TX1JFUExZEAVCZAoUb3JnLm1lc2h0YXN0aWMucHJvdG9CDlJlbW90ZUhhcmR3YXJlWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", +); /** * @@ -57,7 +62,7 @@ export type HardwareMessage = Message<"meshtastic.HardwareMessage"> & { * Describes the message meshtastic.HardwareMessage. * Use `create(HardwareMessageSchema)` to create a new message. */ -export const HardwareMessageSchema: GenMessage = /*@__PURE__*/ +export const HardwareMessageSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_remote_hardware, 0); /** @@ -121,6 +126,5 @@ export enum HardwareMessage_Type { /** * Describes the enum meshtastic.HardwareMessage.Type. */ -export const HardwareMessage_TypeSchema: GenEnum = /*@__PURE__*/ +export const HardwareMessage_TypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_remote_hardware, 0, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/rtttl_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/rtttl_pb.ts index b67a39e02..554aca569 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/rtttl_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/rtttl_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/rtttl.proto (package meshtastic, syntax proto3) /* eslint-disable */ @@ -9,8 +9,9 @@ import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/rtttl.proto. */ -export const file_meshtastic_rtttl: GenFile = /*@__PURE__*/ - fileDesc("ChZtZXNodGFzdGljL3J0dHRsLnByb3RvEgptZXNodGFzdGljIh8KC1JUVFRMQ29uZmlnEhAKCHJpbmd0b25lGAEgASgJQmcKFG9yZy5tZXNodGFzdGljLnByb3RvQhFSVFRUTENvbmZpZ1Byb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM"); +export const file_meshtastic_rtttl: GenFile /*@__PURE__*/ = fileDesc( + "ChZtZXNodGFzdGljL3J0dHRsLnByb3RvEgptZXNodGFzdGljIh8KC1JUVFRMQ29uZmlnEhAKCHJpbmd0b25lGAEgASgJQmcKFG9yZy5tZXNodGFzdGljLnByb3RvQhFSVFRUTENvbmZpZ1Byb3Rvc1oiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZKoCFE1lc2h0YXN0aWMuUHJvdG9idWZzugIAYgZwcm90bzM", +); /** * @@ -32,6 +33,5 @@ export type RTTTLConfig = Message<"meshtastic.RTTTLConfig"> & { * Describes the message meshtastic.RTTTLConfig. * Use `create(RTTTLConfigSchema)` to create a new message. */ -export const RTTTLConfigSchema: GenMessage = /*@__PURE__*/ +export const RTTTLConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_rtttl, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/serial_hal_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/serial_hal_pb.ts index ba489f190..650dc2653 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/serial_hal_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/serial_hal_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/serial_hal.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/serial_hal.proto. */ -export const file_meshtastic_serial_hal: GenFile = /*@__PURE__*/ - fileDesc("ChttZXNodGFzdGljL3NlcmlhbF9oYWwucHJvdG8SCm1lc2h0YXN0aWMiogIKEFNlcmlhbEhhbENvbW1hbmQSFgoOdHJhbnNhY3Rpb25faWQYASABKA0SLwoEdHlwZRgCIAEoDjIhLm1lc2h0YXN0aWMuU2VyaWFsSGFsQ29tbWFuZC5UeXBlEgsKA3BpbhgDIAEoDRINCgV2YWx1ZRgEIAEoDRIMCgRtb2RlGAUgASgNEgwKBGRhdGEYBiABKAwijAEKBFR5cGUSCQoFVU5TRVQQABIMCghQSU5fTU9ERRABEhEKDURJR0lUQUxfV1JJVEUQAhIQCgxESUdJVEFMX1JFQUQQAxIUChBBVFRBQ0hfSU5URVJSVVBUEAQSFAoQREVUQUNIX0lOVEVSUlVQVBAFEhAKDFNQSV9UUkFOU0ZFUhAGEggKBE5PT1AQByLMAQoRU2VyaWFsSGFsUmVzcG9uc2USFgoOdHJhbnNhY3Rpb25faWQYASABKA0SNAoGcmVzdWx0GAIgASgOMiQubWVzaHRhc3RpYy5TZXJpYWxIYWxSZXNwb25zZS5SZXN1bHQSDQoFdmFsdWUYAyABKA0SDAoEZGF0YRgEIAEoDBINCgVlcnJvchgFIAEoCSI9CgZSZXN1bHQSBgoCT0sQABIJCgVFUlJPUhABEg8KC0JBRF9SRVFVRVNUEAISDwoLVU5TVVBQT1JURUQQA0JfChRvcmcubWVzaHRhc3RpYy5wcm90b0IJU2VyaWFsSGFsWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw"); +export const file_meshtastic_serial_hal: GenFile /*@__PURE__*/ = fileDesc( + "ChttZXNodGFzdGljL3NlcmlhbF9oYWwucHJvdG8SCm1lc2h0YXN0aWMiogIKEFNlcmlhbEhhbENvbW1hbmQSFgoOdHJhbnNhY3Rpb25faWQYASABKA0SLwoEdHlwZRgCIAEoDjIhLm1lc2h0YXN0aWMuU2VyaWFsSGFsQ29tbWFuZC5UeXBlEgsKA3BpbhgDIAEoDRINCgV2YWx1ZRgEIAEoDRIMCgRtb2RlGAUgASgNEgwKBGRhdGEYBiABKAwijAEKBFR5cGUSCQoFVU5TRVQQABIMCghQSU5fTU9ERRABEhEKDURJR0lUQUxfV1JJVEUQAhIQCgxESUdJVEFMX1JFQUQQAxIUChBBVFRBQ0hfSU5URVJSVVBUEAQSFAoQREVUQUNIX0lOVEVSUlVQVBAFEhAKDFNQSV9UUkFOU0ZFUhAGEggKBE5PT1AQByLMAQoRU2VyaWFsSGFsUmVzcG9uc2USFgoOdHJhbnNhY3Rpb25faWQYASABKA0SNAoGcmVzdWx0GAIgASgOMiQubWVzaHRhc3RpYy5TZXJpYWxIYWxSZXNwb25zZS5SZXN1bHQSDQoFdmFsdWUYAyABKA0SDAoEZGF0YRgEIAEoDBINCgVlcnJvchgFIAEoCSI9CgZSZXN1bHQSBgoCT0sQABIJCgVFUlJPUhABEg8KC0JBRF9SRVFVRVNUEAISDwoLVU5TVVBQT1JURUQQA0JfChRvcmcubWVzaHRhc3RpYy5wcm90b0IJU2VyaWFsSGFsWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", +); /** * @generated from message meshtastic.SerialHalCommand @@ -54,7 +59,7 @@ export type SerialHalCommand = Message<"meshtastic.SerialHalCommand"> & { * Describes the message meshtastic.SerialHalCommand. * Use `create(SerialHalCommandSchema)` to create a new message. */ -export const SerialHalCommandSchema: GenMessage = /*@__PURE__*/ +export const SerialHalCommandSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_serial_hal, 0); /** @@ -105,7 +110,7 @@ export enum SerialHalCommand_Type { /** * Describes the enum meshtastic.SerialHalCommand.Type. */ -export const SerialHalCommand_TypeSchema: GenEnum = /*@__PURE__*/ +export const SerialHalCommand_TypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_serial_hal, 0, 0); /** @@ -152,7 +157,7 @@ export type SerialHalResponse = Message<"meshtastic.SerialHalResponse"> & { * Describes the message meshtastic.SerialHalResponse. * Use `create(SerialHalResponseSchema)` to create a new message. */ -export const SerialHalResponseSchema: GenMessage = /*@__PURE__*/ +export const SerialHalResponseSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_serial_hal, 1); /** @@ -183,6 +188,5 @@ export enum SerialHalResponse_Result { /** * Describes the enum meshtastic.SerialHalResponse.Result. */ -export const SerialHalResponse_ResultSchema: GenEnum = /*@__PURE__*/ +export const SerialHalResponse_ResultSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_serial_hal, 1, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/storeforward_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/storeforward_pb.ts index 71040b285..7c10d229b 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/storeforward_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/storeforward_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/storeforward.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/storeforward.proto. */ -export const file_meshtastic_storeforward: GenFile = /*@__PURE__*/ - fileDesc("Ch1tZXNodGFzdGljL3N0b3JlZm9yd2FyZC5wcm90bxIKbWVzaHRhc3RpYyKcBwoPU3RvcmVBbmRGb3J3YXJkEjcKAnJyGAEgASgOMisubWVzaHRhc3RpYy5TdG9yZUFuZEZvcndhcmQuUmVxdWVzdFJlc3BvbnNlEjcKBXN0YXRzGAIgASgLMiYubWVzaHRhc3RpYy5TdG9yZUFuZEZvcndhcmQuU3RhdGlzdGljc0gAEjYKB2hpc3RvcnkYAyABKAsyIy5tZXNodGFzdGljLlN0b3JlQW5kRm9yd2FyZC5IaXN0b3J5SAASOgoJaGVhcnRiZWF0GAQgASgLMiUubWVzaHRhc3RpYy5TdG9yZUFuZEZvcndhcmQuSGVhcnRiZWF0SAASDgoEdGV4dBgFIAEoDEgAGs0BCgpTdGF0aXN0aWNzEhYKDm1lc3NhZ2VzX3RvdGFsGAEgASgNEhYKDm1lc3NhZ2VzX3NhdmVkGAIgASgNEhQKDG1lc3NhZ2VzX21heBgDIAEoDRIPCgd1cF90aW1lGAQgASgNEhAKCHJlcXVlc3RzGAUgASgNEhgKEHJlcXVlc3RzX2hpc3RvcnkYBiABKA0SEQoJaGVhcnRiZWF0GAcgASgIEhIKCnJldHVybl9tYXgYCCABKA0SFQoNcmV0dXJuX3dpbmRvdxgJIAEoDRpJCgdIaXN0b3J5EhgKEGhpc3RvcnlfbWVzc2FnZXMYASABKA0SDgoGd2luZG93GAIgASgNEhQKDGxhc3RfcmVxdWVzdBgDIAEoDRouCglIZWFydGJlYXQSDgoGcGVyaW9kGAEgASgNEhEKCXNlY29uZGFyeRgCIAEoDSK8AgoPUmVxdWVzdFJlc3BvbnNlEgkKBVVOU0VUEAASEAoMUk9VVEVSX0VSUk9SEAESFAoQUk9VVEVSX0hFQVJUQkVBVBACEg8KC1JPVVRFUl9QSU5HEAMSDwoLUk9VVEVSX1BPTkcQBBIPCgtST1VURVJfQlVTWRAFEhIKDlJPVVRFUl9ISVNUT1JZEAYSEAoMUk9VVEVSX1NUQVRTEAcSFgoSUk9VVEVSX1RFWFRfRElSRUNUEAgSGQoVUk9VVEVSX1RFWFRfQlJPQURDQVNUEAkSEAoMQ0xJRU5UX0VSUk9SEEASEgoOQ0xJRU5UX0hJU1RPUlkQQRIQCgxDTElFTlRfU1RBVFMQQhIPCgtDTElFTlRfUElORxBDEg8KC0NMSUVOVF9QT05HEEQSEAoMQ0xJRU5UX0FCT1JUEGpCCQoHdmFyaWFudEJrChRvcmcubWVzaHRhc3RpYy5wcm90b0IVU3RvcmVBbmRGb3J3YXJkUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw"); +export const file_meshtastic_storeforward: GenFile /*@__PURE__*/ = fileDesc( + "Ch1tZXNodGFzdGljL3N0b3JlZm9yd2FyZC5wcm90bxIKbWVzaHRhc3RpYyKcBwoPU3RvcmVBbmRGb3J3YXJkEjcKAnJyGAEgASgOMisubWVzaHRhc3RpYy5TdG9yZUFuZEZvcndhcmQuUmVxdWVzdFJlc3BvbnNlEjcKBXN0YXRzGAIgASgLMiYubWVzaHRhc3RpYy5TdG9yZUFuZEZvcndhcmQuU3RhdGlzdGljc0gAEjYKB2hpc3RvcnkYAyABKAsyIy5tZXNodGFzdGljLlN0b3JlQW5kRm9yd2FyZC5IaXN0b3J5SAASOgoJaGVhcnRiZWF0GAQgASgLMiUubWVzaHRhc3RpYy5TdG9yZUFuZEZvcndhcmQuSGVhcnRiZWF0SAASDgoEdGV4dBgFIAEoDEgAGs0BCgpTdGF0aXN0aWNzEhYKDm1lc3NhZ2VzX3RvdGFsGAEgASgNEhYKDm1lc3NhZ2VzX3NhdmVkGAIgASgNEhQKDG1lc3NhZ2VzX21heBgDIAEoDRIPCgd1cF90aW1lGAQgASgNEhAKCHJlcXVlc3RzGAUgASgNEhgKEHJlcXVlc3RzX2hpc3RvcnkYBiABKA0SEQoJaGVhcnRiZWF0GAcgASgIEhIKCnJldHVybl9tYXgYCCABKA0SFQoNcmV0dXJuX3dpbmRvdxgJIAEoDRpJCgdIaXN0b3J5EhgKEGhpc3RvcnlfbWVzc2FnZXMYASABKA0SDgoGd2luZG93GAIgASgNEhQKDGxhc3RfcmVxdWVzdBgDIAEoDRouCglIZWFydGJlYXQSDgoGcGVyaW9kGAEgASgNEhEKCXNlY29uZGFyeRgCIAEoDSK8AgoPUmVxdWVzdFJlc3BvbnNlEgkKBVVOU0VUEAASEAoMUk9VVEVSX0VSUk9SEAESFAoQUk9VVEVSX0hFQVJUQkVBVBACEg8KC1JPVVRFUl9QSU5HEAMSDwoLUk9VVEVSX1BPTkcQBBIPCgtST1VURVJfQlVTWRAFEhIKDlJPVVRFUl9ISVNUT1JZEAYSEAoMUk9VVEVSX1NUQVRTEAcSFgoSUk9VVEVSX1RFWFRfRElSRUNUEAgSGQoVUk9VVEVSX1RFWFRfQlJPQURDQVNUEAkSEAoMQ0xJRU5UX0VSUk9SEEASEgoOQ0xJRU5UX0hJU1RPUlkQQRIQCgxDTElFTlRfU1RBVFMQQhIPCgtDTElFTlRfUElORxBDEg8KC0NMSUVOVF9QT05HEEQSEAoMQ0xJRU5UX0FCT1JUEGpCCQoHdmFyaWFudEJrChRvcmcubWVzaHRhc3RpYy5wcm90b0IVU3RvcmVBbmRGb3J3YXJkUHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", +); /** * @@ -33,50 +38,55 @@ export type StoreAndForward = Message<"meshtastic.StoreAndForward"> & { * * @generated from oneof meshtastic.StoreAndForward.variant */ - variant: { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.StoreAndForward.Statistics stats = 2; - */ - value: StoreAndForward_Statistics; - case: "stats"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.StoreAndForward.History history = 3; - */ - value: StoreAndForward_History; - case: "history"; - } | { - /** - * - * TODO: REPLACE - * - * @generated from field: meshtastic.StoreAndForward.Heartbeat heartbeat = 4; - */ - value: StoreAndForward_Heartbeat; - case: "heartbeat"; - } | { - /** - * - * Text from history message. - * - * @generated from field: bytes text = 5; - */ - value: Uint8Array; - case: "text"; - } | { case: undefined; value?: undefined }; + variant: + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.StoreAndForward.Statistics stats = 2; + */ + value: StoreAndForward_Statistics; + case: "stats"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.StoreAndForward.History history = 3; + */ + value: StoreAndForward_History; + case: "history"; + } + | { + /** + * + * TODO: REPLACE + * + * @generated from field: meshtastic.StoreAndForward.Heartbeat heartbeat = 4; + */ + value: StoreAndForward_Heartbeat; + case: "heartbeat"; + } + | { + /** + * + * Text from history message. + * + * @generated from field: bytes text = 5; + */ + value: Uint8Array; + case: "text"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.StoreAndForward. * Use `create(StoreAndForwardSchema)` to create a new message. */ -export const StoreAndForwardSchema: GenMessage = /*@__PURE__*/ +export const StoreAndForwardSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_storeforward, 0); /** @@ -85,85 +95,86 @@ export const StoreAndForwardSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.StoreAndForward.Statistics */ -export type StoreAndForward_Statistics = Message<"meshtastic.StoreAndForward.Statistics"> & { - /** - * - * Number of messages we have ever seen - * - * @generated from field: uint32 messages_total = 1; - */ - messagesTotal: number; +export type StoreAndForward_Statistics = + Message<"meshtastic.StoreAndForward.Statistics"> & { + /** + * + * Number of messages we have ever seen + * + * @generated from field: uint32 messages_total = 1; + */ + messagesTotal: number; - /** - * - * Number of messages we have currently saved our history. - * - * @generated from field: uint32 messages_saved = 2; - */ - messagesSaved: number; + /** + * + * Number of messages we have currently saved our history. + * + * @generated from field: uint32 messages_saved = 2; + */ + messagesSaved: number; - /** - * - * Maximum number of messages we will save - * - * @generated from field: uint32 messages_max = 3; - */ - messagesMax: number; + /** + * + * Maximum number of messages we will save + * + * @generated from field: uint32 messages_max = 3; + */ + messagesMax: number; - /** - * - * Router uptime in seconds - * - * @generated from field: uint32 up_time = 4; - */ - upTime: number; + /** + * + * Router uptime in seconds + * + * @generated from field: uint32 up_time = 4; + */ + upTime: number; - /** - * - * Number of times any client sent a request to the S&F. - * - * @generated from field: uint32 requests = 5; - */ - requests: number; + /** + * + * Number of times any client sent a request to the S&F. + * + * @generated from field: uint32 requests = 5; + */ + requests: number; - /** - * - * Number of times the history was requested. - * - * @generated from field: uint32 requests_history = 6; - */ - requestsHistory: number; + /** + * + * Number of times the history was requested. + * + * @generated from field: uint32 requests_history = 6; + */ + requestsHistory: number; - /** - * - * Is the heartbeat enabled on the server? - * - * @generated from field: bool heartbeat = 7; - */ - heartbeat: boolean; + /** + * + * Is the heartbeat enabled on the server? + * + * @generated from field: bool heartbeat = 7; + */ + heartbeat: boolean; - /** - * - * Maximum number of messages the server will return. - * - * @generated from field: uint32 return_max = 8; - */ - returnMax: number; + /** + * + * Maximum number of messages the server will return. + * + * @generated from field: uint32 return_max = 8; + */ + returnMax: number; - /** - * - * Maximum history window in minutes the server will return messages from. - * - * @generated from field: uint32 return_window = 9; - */ - returnWindow: number; -}; + /** + * + * Maximum history window in minutes the server will return messages from. + * + * @generated from field: uint32 return_window = 9; + */ + returnWindow: number; + }; /** * Describes the message meshtastic.StoreAndForward.Statistics. * Use `create(StoreAndForward_StatisticsSchema)` to create a new message. */ -export const StoreAndForward_StatisticsSchema: GenMessage = /*@__PURE__*/ +export const StoreAndForward_StatisticsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_storeforward, 0, 0); /** @@ -172,38 +183,39 @@ export const StoreAndForward_StatisticsSchema: GenMessage & { - /** - * - * Number of that will be sent to the client - * - * @generated from field: uint32 history_messages = 1; - */ - historyMessages: number; +export type StoreAndForward_History = + Message<"meshtastic.StoreAndForward.History"> & { + /** + * + * Number of that will be sent to the client + * + * @generated from field: uint32 history_messages = 1; + */ + historyMessages: number; - /** - * - * The window of messages that was used to filter the history client requested - * - * @generated from field: uint32 window = 2; - */ - window: number; + /** + * + * The window of messages that was used to filter the history client requested + * + * @generated from field: uint32 window = 2; + */ + window: number; - /** - * - * Index in the packet history of the last message sent in a previous request to the server. - * Will be sent to the client before sending the history and can be set in a subsequent request to avoid getting packets the server already sent to the client. - * - * @generated from field: uint32 last_request = 3; - */ - lastRequest: number; -}; + /** + * + * Index in the packet history of the last message sent in a previous request to the server. + * Will be sent to the client before sending the history and can be set in a subsequent request to avoid getting packets the server already sent to the client. + * + * @generated from field: uint32 last_request = 3; + */ + lastRequest: number; + }; /** * Describes the message meshtastic.StoreAndForward.History. * Use `create(StoreAndForward_HistorySchema)` to create a new message. */ -export const StoreAndForward_HistorySchema: GenMessage = /*@__PURE__*/ +export const StoreAndForward_HistorySchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_storeforward, 0, 1); /** @@ -212,29 +224,30 @@ export const StoreAndForward_HistorySchema: GenMessage * * @generated from message meshtastic.StoreAndForward.Heartbeat */ -export type StoreAndForward_Heartbeat = Message<"meshtastic.StoreAndForward.Heartbeat"> & { - /** - * - * Period in seconds that the heartbeat is sent out that will be sent to the client - * - * @generated from field: uint32 period = 1; - */ - period: number; +export type StoreAndForward_Heartbeat = + Message<"meshtastic.StoreAndForward.Heartbeat"> & { + /** + * + * Period in seconds that the heartbeat is sent out that will be sent to the client + * + * @generated from field: uint32 period = 1; + */ + period: number; - /** - * - * If set, this is not the primary Store & Forward router on the mesh - * - * @generated from field: uint32 secondary = 2; - */ - secondary: number; -}; + /** + * + * If set, this is not the primary Store & Forward router on the mesh + * + * @generated from field: uint32 secondary = 2; + */ + secondary: number; + }; /** * Describes the message meshtastic.StoreAndForward.Heartbeat. * Use `create(StoreAndForward_HeartbeatSchema)` to create a new message. */ -export const StoreAndForward_HeartbeatSchema: GenMessage = /*@__PURE__*/ +export const StoreAndForward_HeartbeatSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_storeforward, 0, 2); /** @@ -379,6 +392,5 @@ export enum StoreAndForward_RequestResponse { /** * Describes the enum meshtastic.StoreAndForward.RequestResponse. */ -export const StoreAndForward_RequestResponseSchema: GenEnum = /*@__PURE__*/ +export const StoreAndForward_RequestResponseSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_storeforward, 0, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/telemetry_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/telemetry_pb.ts index 0a3048f3a..fb3c4af50 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/telemetry_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/telemetry_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/telemetry.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/telemetry.proto. */ -export const file_meshtastic_telemetry: GenFile = /*@__PURE__*/ - fileDesc("ChptZXNodGFzdGljL3RlbGVtZXRyeS5wcm90bxIKbWVzaHRhc3RpYyLzAQoNRGV2aWNlTWV0cmljcxIaCg1iYXR0ZXJ5X2xldmVsGAEgASgNSACIAQESFAoHdm9sdGFnZRgCIAEoAkgBiAEBEiAKE2NoYW5uZWxfdXRpbGl6YXRpb24YAyABKAJIAogBARIYCgthaXJfdXRpbF90eBgEIAEoAkgDiAEBEhsKDnVwdGltZV9zZWNvbmRzGAUgASgNSASIAQFCEAoOX2JhdHRlcnlfbGV2ZWxCCgoIX3ZvbHRhZ2VCFgoUX2NoYW5uZWxfdXRpbGl6YXRpb25CDgoMX2Fpcl91dGlsX3R4QhEKD191cHRpbWVfc2Vjb25kcyKgBwoSRW52aXJvbm1lbnRNZXRyaWNzEhgKC3RlbXBlcmF0dXJlGAEgASgCSACIAQESHgoRcmVsYXRpdmVfaHVtaWRpdHkYAiABKAJIAYgBARIgChNiYXJvbWV0cmljX3ByZXNzdXJlGAMgASgCSAKIAQESGwoOZ2FzX3Jlc2lzdGFuY2UYBCABKAJIA4gBARIUCgd2b2x0YWdlGAUgASgCSASIAQESFAoHY3VycmVudBgGIAEoAkgFiAEBEhAKA2lhcRgHIAEoDUgGiAEBEhUKCGRpc3RhbmNlGAggASgCSAeIAQESEAoDbHV4GAkgASgCSAiIAQESFgoJd2hpdGVfbHV4GAogASgCSAmIAQESEwoGaXJfbHV4GAsgASgCSAqIAQESEwoGdXZfbHV4GAwgASgCSAuIAQESGwoOd2luZF9kaXJlY3Rpb24YDSABKA1IDIgBARIXCgp3aW5kX3NwZWVkGA4gASgCSA2IAQESEwoGd2VpZ2h0GA8gASgCSA6IAQESFgoJd2luZF9ndXN0GBAgASgCSA+IAQESFgoJd2luZF9sdWxsGBEgASgCSBCIAQESFgoJcmFkaWF0aW9uGBIgASgCSBGIAQESGAoLcmFpbmZhbGxfMWgYEyABKAJIEogBARIZCgxyYWluZmFsbF8yNGgYFCABKAJIE4gBARIaCg1zb2lsX21vaXN0dXJlGBUgASgNSBSIAQESHQoQc29pbF90ZW1wZXJhdHVyZRgWIAEoAkgViAEBEhwKFG9uZV93aXJlX3RlbXBlcmF0dXJlGBcgAygCQg4KDF90ZW1wZXJhdHVyZUIUChJfcmVsYXRpdmVfaHVtaWRpdHlCFgoUX2Jhcm9tZXRyaWNfcHJlc3N1cmVCEQoPX2dhc19yZXNpc3RhbmNlQgoKCF92b2x0YWdlQgoKCF9jdXJyZW50QgYKBF9pYXFCCwoJX2Rpc3RhbmNlQgYKBF9sdXhCDAoKX3doaXRlX2x1eEIJCgdfaXJfbHV4QgkKB191dl9sdXhCEQoPX3dpbmRfZGlyZWN0aW9uQg0KC193aW5kX3NwZWVkQgkKB193ZWlnaHRCDAoKX3dpbmRfZ3VzdEIMCgpfd2luZF9sdWxsQgwKCl9yYWRpYXRpb25CDgoMX3JhaW5mYWxsXzFoQg8KDV9yYWluZmFsbF8yNGhCEAoOX3NvaWxfbW9pc3R1cmVCEwoRX3NvaWxfdGVtcGVyYXR1cmUirgUKDFBvd2VyTWV0cmljcxIYCgtjaDFfdm9sdGFnZRgBIAEoAkgAiAEBEhgKC2NoMV9jdXJyZW50GAIgASgCSAGIAQESGAoLY2gyX3ZvbHRhZ2UYAyABKAJIAogBARIYCgtjaDJfY3VycmVudBgEIAEoAkgDiAEBEhgKC2NoM192b2x0YWdlGAUgASgCSASIAQESGAoLY2gzX2N1cnJlbnQYBiABKAJIBYgBARIYCgtjaDRfdm9sdGFnZRgHIAEoAkgGiAEBEhgKC2NoNF9jdXJyZW50GAggASgCSAeIAQESGAoLY2g1X3ZvbHRhZ2UYCSABKAJICIgBARIYCgtjaDVfY3VycmVudBgKIAEoAkgJiAEBEhgKC2NoNl92b2x0YWdlGAsgASgCSAqIAQESGAoLY2g2X2N1cnJlbnQYDCABKAJIC4gBARIYCgtjaDdfdm9sdGFnZRgNIAEoAkgMiAEBEhgKC2NoN19jdXJyZW50GA4gASgCSA2IAQESGAoLY2g4X3ZvbHRhZ2UYDyABKAJIDogBARIYCgtjaDhfY3VycmVudBgQIAEoAkgPiAEBQg4KDF9jaDFfdm9sdGFnZUIOCgxfY2gxX2N1cnJlbnRCDgoMX2NoMl92b2x0YWdlQg4KDF9jaDJfY3VycmVudEIOCgxfY2gzX3ZvbHRhZ2VCDgoMX2NoM19jdXJyZW50Qg4KDF9jaDRfdm9sdGFnZUIOCgxfY2g0X2N1cnJlbnRCDgoMX2NoNV92b2x0YWdlQg4KDF9jaDVfY3VycmVudEIOCgxfY2g2X3ZvbHRhZ2VCDgoMX2NoNl9jdXJyZW50Qg4KDF9jaDdfdm9sdGFnZUIOCgxfY2g3X2N1cnJlbnRCDgoMX2NoOF92b2x0YWdlQg4KDF9jaDhfY3VycmVudCKxCQoRQWlyUXVhbGl0eU1ldHJpY3MSGgoNcG0xMF9zdGFuZGFyZBgBIAEoDUgAiAEBEhoKDXBtMjVfc3RhbmRhcmQYAiABKA1IAYgBARIbCg5wbTEwMF9zdGFuZGFyZBgDIAEoDUgCiAEBEh8KEnBtMTBfZW52aXJvbm1lbnRhbBgEIAEoDUgDiAEBEh8KEnBtMjVfZW52aXJvbm1lbnRhbBgFIAEoDUgEiAEBEiAKE3BtMTAwX2Vudmlyb25tZW50YWwYBiABKA1IBYgBARIbCg5wYXJ0aWNsZXNfMDN1bRgHIAEoDUgGiAEBEhsKDnBhcnRpY2xlc18wNXVtGAggASgNSAeIAQESGwoOcGFydGljbGVzXzEwdW0YCSABKA1ICIgBARIbCg5wYXJ0aWNsZXNfMjV1bRgKIAEoDUgJiAEBEhsKDnBhcnRpY2xlc181MHVtGAsgASgNSAqIAQESHAoPcGFydGljbGVzXzEwMHVtGAwgASgNSAuIAQESEAoDY28yGA0gASgNSAyIAQESHAoPY28yX3RlbXBlcmF0dXJlGA4gASgCSA2IAQESGQoMY28yX2h1bWlkaXR5GA8gASgCSA6IAQESHgoRZm9ybV9mb3JtYWxkZWh5ZGUYECABKAJID4gBARIaCg1mb3JtX2h1bWlkaXR5GBEgASgCSBCIAQESHQoQZm9ybV90ZW1wZXJhdHVyZRgSIAEoAkgRiAEBEhoKDXBtNDBfc3RhbmRhcmQYEyABKA1IEogBARIbCg5wYXJ0aWNsZXNfNDB1bRgUIAEoDUgTiAEBEhsKDnBtX3RlbXBlcmF0dXJlGBUgASgCSBSIAQESGAoLcG1faHVtaWRpdHkYFiABKAJIFYgBARIXCgpwbV92b2NfaWR4GBcgASgCSBaIAQESFwoKcG1fbm94X2lkeBgYIAEoAkgXiAEBEhoKDXBhcnRpY2xlc190cHMYGSABKAJIGIgBAUIQCg5fcG0xMF9zdGFuZGFyZEIQCg5fcG0yNV9zdGFuZGFyZEIRCg9fcG0xMDBfc3RhbmRhcmRCFQoTX3BtMTBfZW52aXJvbm1lbnRhbEIVChNfcG0yNV9lbnZpcm9ubWVudGFsQhYKFF9wbTEwMF9lbnZpcm9ubWVudGFsQhEKD19wYXJ0aWNsZXNfMDN1bUIRCg9fcGFydGljbGVzXzA1dW1CEQoPX3BhcnRpY2xlc18xMHVtQhEKD19wYXJ0aWNsZXNfMjV1bUIRCg9fcGFydGljbGVzXzUwdW1CEgoQX3BhcnRpY2xlc18xMDB1bUIGCgRfY28yQhIKEF9jbzJfdGVtcGVyYXR1cmVCDwoNX2NvMl9odW1pZGl0eUIUChJfZm9ybV9mb3JtYWxkZWh5ZGVCEAoOX2Zvcm1faHVtaWRpdHlCEwoRX2Zvcm1fdGVtcGVyYXR1cmVCEAoOX3BtNDBfc3RhbmRhcmRCEQoPX3BhcnRpY2xlc180MHVtQhEKD19wbV90ZW1wZXJhdHVyZUIOCgxfcG1faHVtaWRpdHlCDQoLX3BtX3ZvY19pZHhCDQoLX3BtX25veF9pZHhCEAoOX3BhcnRpY2xlc190cHMi/wIKCkxvY2FsU3RhdHMSFgoOdXB0aW1lX3NlY29uZHMYASABKA0SGwoTY2hhbm5lbF91dGlsaXphdGlvbhgCIAEoAhITCgthaXJfdXRpbF90eBgDIAEoAhIWCg5udW1fcGFja2V0c190eBgEIAEoDRIWCg5udW1fcGFja2V0c19yeBgFIAEoDRIaChJudW1fcGFja2V0c19yeF9iYWQYBiABKA0SGAoQbnVtX29ubGluZV9ub2RlcxgHIAEoDRIXCg9udW1fdG90YWxfbm9kZXMYCCABKA0SEwoLbnVtX3J4X2R1cGUYCSABKA0SFAoMbnVtX3R4X3JlbGF5GAogASgNEh0KFW51bV90eF9yZWxheV9jYW5jZWxlZBgLIAEoDRIYChBoZWFwX3RvdGFsX2J5dGVzGAwgASgNEhcKD2hlYXBfZnJlZV9ieXRlcxgNIAEoDRIWCg5udW1fdHhfZHJvcHBlZBgOIAEoDRITCgtub2lzZV9mbG9vchgPIAEoBSLkAQoWVHJhZmZpY01hbmFnZW1lbnRTdGF0cxIZChFwYWNrZXRzX2luc3BlY3RlZBgBIAEoDRIcChRwb3NpdGlvbl9kZWR1cF9kcm9wcxgCIAEoDRIbChNub2RlaW5mb19jYWNoZV9oaXRzGAMgASgNEhgKEHJhdGVfbGltaXRfZHJvcHMYBCABKA0SHAoUdW5rbm93bl9wYWNrZXRfZHJvcHMYBSABKA0SHQoVaG9wX2V4aGF1c3RlZF9wYWNrZXRzGAYgASgNEh0KFXJvdXRlcl9ob3BzX3ByZXNlcnZlZBgHIAEoDSJ7Cg1IZWFsdGhNZXRyaWNzEhYKCWhlYXJ0X2JwbRgBIAEoDUgAiAEBEhEKBHNwTzIYAiABKA1IAYgBARIYCgt0ZW1wZXJhdHVyZRgDIAEoAkgCiAEBQgwKCl9oZWFydF9icG1CBwoFX3NwTzJCDgoMX3RlbXBlcmF0dXJlIpECCgtIb3N0TWV0cmljcxIWCg51cHRpbWVfc2Vjb25kcxgBIAEoDRIVCg1mcmVlbWVtX2J5dGVzGAIgASgEEhcKD2Rpc2tmcmVlMV9ieXRlcxgDIAEoBBIcCg9kaXNrZnJlZTJfYnl0ZXMYBCABKARIAIgBARIcCg9kaXNrZnJlZTNfYnl0ZXMYBSABKARIAYgBARINCgVsb2FkMRgGIAEoDRINCgVsb2FkNRgHIAEoDRIOCgZsb2FkMTUYCCABKA0SGAoLdXNlcl9zdHJpbmcYCSABKAlIAogBAUISChBfZGlza2ZyZWUyX2J5dGVzQhIKEF9kaXNrZnJlZTNfYnl0ZXNCDgoMX3VzZXJfc3RyaW5nIuYDCglUZWxlbWV0cnkSDAoEdGltZRgBIAEoBxIzCg5kZXZpY2VfbWV0cmljcxgCIAEoCzIZLm1lc2h0YXN0aWMuRGV2aWNlTWV0cmljc0gAEj0KE2Vudmlyb25tZW50X21ldHJpY3MYAyABKAsyHi5tZXNodGFzdGljLkVudmlyb25tZW50TWV0cmljc0gAEjwKE2Fpcl9xdWFsaXR5X21ldHJpY3MYBCABKAsyHS5tZXNodGFzdGljLkFpclF1YWxpdHlNZXRyaWNzSAASMQoNcG93ZXJfbWV0cmljcxgFIAEoCzIYLm1lc2h0YXN0aWMuUG93ZXJNZXRyaWNzSAASLQoLbG9jYWxfc3RhdHMYBiABKAsyFi5tZXNodGFzdGljLkxvY2FsU3RhdHNIABIzCg5oZWFsdGhfbWV0cmljcxgHIAEoCzIZLm1lc2h0YXN0aWMuSGVhbHRoTWV0cmljc0gAEi8KDGhvc3RfbWV0cmljcxgIIAEoCzIXLm1lc2h0YXN0aWMuSG9zdE1ldHJpY3NIABJGChh0cmFmZmljX21hbmFnZW1lbnRfc3RhdHMYCSABKAsyIi5tZXNodGFzdGljLlRyYWZmaWNNYW5hZ2VtZW50U3RhdHNIAEIJCgd2YXJpYW50Ij4KDU5hdTc4MDJDb25maWcSEgoKemVyb09mZnNldBgBIAEoBRIZChFjYWxpYnJhdGlvbkZhY3RvchgCIAEoAiLwAQoKU0VONVhTdGF0ZRIaChJsYXN0X2NsZWFuaW5nX3RpbWUYASABKA0SGwoTbGFzdF9jbGVhbmluZ192YWxpZBgCIAEoCBIVCg1vbmVfc2hvdF9tb2RlGAMgASgIEhsKDnZvY19zdGF0ZV90aW1lGAQgASgNSACIAQESHAoPdm9jX3N0YXRlX3ZhbGlkGAUgASgISAGIAQESHAoPdm9jX3N0YXRlX2FycmF5GAYgASgGSAKIAQFCEQoPX3ZvY19zdGF0ZV90aW1lQhIKEF92b2Nfc3RhdGVfdmFsaWRCEgoQX3ZvY19zdGF0ZV9hcnJheSrcBQoTVGVsZW1ldHJ5U2Vuc29yVHlwZRIQCgxTRU5TT1JfVU5TRVQQABIKCgZCTUUyODAQARIKCgZCTUU2ODAQAhILCgdNQ1A5ODA4EAMSCgoGSU5BMjYwEAQSCgoGSU5BMjE5EAUSCgoGQk1QMjgwEAYSCQoFU0hUQzMQBxIJCgVMUFMyMhAIEgsKB1FNQzYzMTAQCRILCgdRTUk4NjU4EAoSDAoIUU1DNTg4M0wQCxIJCgVTSFQzMRAMEgwKCFBNU0EwMDNJEA0SCwoHSU5BMzIyMRAOEgoKBkJNUDA4NRAPEgwKCFJDV0w5NjIwEBASCQoFU0hUNFgQERIMCghWRU1MNzcwMBASEgwKCE1MWDkwNjMyEBMSCwoHT1BUMzAwMRAUEgwKCExUUjM5MFVWEBUSDgoKVFNMMjU5MTFGThAWEgkKBUFIVDEwEBcSEAoMREZST0JPVF9MQVJLEBgSCwoHTkFVNzgwMhAZEgoKBkJNUDNYWBAaEgwKCElDTTIwOTQ4EBsSDAoITUFYMTcwNDgQHBIRCg1DVVNUT01fU0VOU09SEB0SDAoITUFYMzAxMDIQHhIMCghNTFg5MDYxNBAfEgkKBVNDRDRYECASCwoHUkFEU0VOUxAhEgoKBklOQTIyNhAiEhAKDERGUk9CT1RfUkFJThAjEgoKBkRQUzMxMBAkEgwKCFJBSzEyMDM1ECUSDAoITUFYMTcyNjEQJhILCgdQQ1QyMDc1ECcSCwoHQURTMVgxNRAoEg8KC0FEUzFYMTVfQUxUECkSCQoFU0ZBMzAQKhIJCgVTRU41WBArEgsKB1RTTDI1NjEQLBIKCgZCSDE3NTAQLRILCgdIREMxMDgwEC4SCQoFU0hUMjEQLxIJCgVTVEMzMRAwEgkKBVNDRDMwEDESCQoFU0hUWFgQMhIKCgZEUzI0OFgQMxINCglNTUM1OTgzTUEQNBINCglJQ000MjYwN1AQNUJlChRvcmcubWVzaHRhc3RpYy5wcm90b0IPVGVsZW1ldHJ5UHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw"); +export const file_meshtastic_telemetry: GenFile /*@__PURE__*/ = fileDesc( + "ChptZXNodGFzdGljL3RlbGVtZXRyeS5wcm90bxIKbWVzaHRhc3RpYyLzAQoNRGV2aWNlTWV0cmljcxIaCg1iYXR0ZXJ5X2xldmVsGAEgASgNSACIAQESFAoHdm9sdGFnZRgCIAEoAkgBiAEBEiAKE2NoYW5uZWxfdXRpbGl6YXRpb24YAyABKAJIAogBARIYCgthaXJfdXRpbF90eBgEIAEoAkgDiAEBEhsKDnVwdGltZV9zZWNvbmRzGAUgASgNSASIAQFCEAoOX2JhdHRlcnlfbGV2ZWxCCgoIX3ZvbHRhZ2VCFgoUX2NoYW5uZWxfdXRpbGl6YXRpb25CDgoMX2Fpcl91dGlsX3R4QhEKD191cHRpbWVfc2Vjb25kcyKgBwoSRW52aXJvbm1lbnRNZXRyaWNzEhgKC3RlbXBlcmF0dXJlGAEgASgCSACIAQESHgoRcmVsYXRpdmVfaHVtaWRpdHkYAiABKAJIAYgBARIgChNiYXJvbWV0cmljX3ByZXNzdXJlGAMgASgCSAKIAQESGwoOZ2FzX3Jlc2lzdGFuY2UYBCABKAJIA4gBARIUCgd2b2x0YWdlGAUgASgCSASIAQESFAoHY3VycmVudBgGIAEoAkgFiAEBEhAKA2lhcRgHIAEoDUgGiAEBEhUKCGRpc3RhbmNlGAggASgCSAeIAQESEAoDbHV4GAkgASgCSAiIAQESFgoJd2hpdGVfbHV4GAogASgCSAmIAQESEwoGaXJfbHV4GAsgASgCSAqIAQESEwoGdXZfbHV4GAwgASgCSAuIAQESGwoOd2luZF9kaXJlY3Rpb24YDSABKA1IDIgBARIXCgp3aW5kX3NwZWVkGA4gASgCSA2IAQESEwoGd2VpZ2h0GA8gASgCSA6IAQESFgoJd2luZF9ndXN0GBAgASgCSA+IAQESFgoJd2luZF9sdWxsGBEgASgCSBCIAQESFgoJcmFkaWF0aW9uGBIgASgCSBGIAQESGAoLcmFpbmZhbGxfMWgYEyABKAJIEogBARIZCgxyYWluZmFsbF8yNGgYFCABKAJIE4gBARIaCg1zb2lsX21vaXN0dXJlGBUgASgNSBSIAQESHQoQc29pbF90ZW1wZXJhdHVyZRgWIAEoAkgViAEBEhwKFG9uZV93aXJlX3RlbXBlcmF0dXJlGBcgAygCQg4KDF90ZW1wZXJhdHVyZUIUChJfcmVsYXRpdmVfaHVtaWRpdHlCFgoUX2Jhcm9tZXRyaWNfcHJlc3N1cmVCEQoPX2dhc19yZXNpc3RhbmNlQgoKCF92b2x0YWdlQgoKCF9jdXJyZW50QgYKBF9pYXFCCwoJX2Rpc3RhbmNlQgYKBF9sdXhCDAoKX3doaXRlX2x1eEIJCgdfaXJfbHV4QgkKB191dl9sdXhCEQoPX3dpbmRfZGlyZWN0aW9uQg0KC193aW5kX3NwZWVkQgkKB193ZWlnaHRCDAoKX3dpbmRfZ3VzdEIMCgpfd2luZF9sdWxsQgwKCl9yYWRpYXRpb25CDgoMX3JhaW5mYWxsXzFoQg8KDV9yYWluZmFsbF8yNGhCEAoOX3NvaWxfbW9pc3R1cmVCEwoRX3NvaWxfdGVtcGVyYXR1cmUirgUKDFBvd2VyTWV0cmljcxIYCgtjaDFfdm9sdGFnZRgBIAEoAkgAiAEBEhgKC2NoMV9jdXJyZW50GAIgASgCSAGIAQESGAoLY2gyX3ZvbHRhZ2UYAyABKAJIAogBARIYCgtjaDJfY3VycmVudBgEIAEoAkgDiAEBEhgKC2NoM192b2x0YWdlGAUgASgCSASIAQESGAoLY2gzX2N1cnJlbnQYBiABKAJIBYgBARIYCgtjaDRfdm9sdGFnZRgHIAEoAkgGiAEBEhgKC2NoNF9jdXJyZW50GAggASgCSAeIAQESGAoLY2g1X3ZvbHRhZ2UYCSABKAJICIgBARIYCgtjaDVfY3VycmVudBgKIAEoAkgJiAEBEhgKC2NoNl92b2x0YWdlGAsgASgCSAqIAQESGAoLY2g2X2N1cnJlbnQYDCABKAJIC4gBARIYCgtjaDdfdm9sdGFnZRgNIAEoAkgMiAEBEhgKC2NoN19jdXJyZW50GA4gASgCSA2IAQESGAoLY2g4X3ZvbHRhZ2UYDyABKAJIDogBARIYCgtjaDhfY3VycmVudBgQIAEoAkgPiAEBQg4KDF9jaDFfdm9sdGFnZUIOCgxfY2gxX2N1cnJlbnRCDgoMX2NoMl92b2x0YWdlQg4KDF9jaDJfY3VycmVudEIOCgxfY2gzX3ZvbHRhZ2VCDgoMX2NoM19jdXJyZW50Qg4KDF9jaDRfdm9sdGFnZUIOCgxfY2g0X2N1cnJlbnRCDgoMX2NoNV92b2x0YWdlQg4KDF9jaDVfY3VycmVudEIOCgxfY2g2X3ZvbHRhZ2VCDgoMX2NoNl9jdXJyZW50Qg4KDF9jaDdfdm9sdGFnZUIOCgxfY2g3X2N1cnJlbnRCDgoMX2NoOF92b2x0YWdlQg4KDF9jaDhfY3VycmVudCKxCQoRQWlyUXVhbGl0eU1ldHJpY3MSGgoNcG0xMF9zdGFuZGFyZBgBIAEoDUgAiAEBEhoKDXBtMjVfc3RhbmRhcmQYAiABKA1IAYgBARIbCg5wbTEwMF9zdGFuZGFyZBgDIAEoDUgCiAEBEh8KEnBtMTBfZW52aXJvbm1lbnRhbBgEIAEoDUgDiAEBEh8KEnBtMjVfZW52aXJvbm1lbnRhbBgFIAEoDUgEiAEBEiAKE3BtMTAwX2Vudmlyb25tZW50YWwYBiABKA1IBYgBARIbCg5wYXJ0aWNsZXNfMDN1bRgHIAEoDUgGiAEBEhsKDnBhcnRpY2xlc18wNXVtGAggASgNSAeIAQESGwoOcGFydGljbGVzXzEwdW0YCSABKA1ICIgBARIbCg5wYXJ0aWNsZXNfMjV1bRgKIAEoDUgJiAEBEhsKDnBhcnRpY2xlc181MHVtGAsgASgNSAqIAQESHAoPcGFydGljbGVzXzEwMHVtGAwgASgNSAuIAQESEAoDY28yGA0gASgNSAyIAQESHAoPY28yX3RlbXBlcmF0dXJlGA4gASgCSA2IAQESGQoMY28yX2h1bWlkaXR5GA8gASgCSA6IAQESHgoRZm9ybV9mb3JtYWxkZWh5ZGUYECABKAJID4gBARIaCg1mb3JtX2h1bWlkaXR5GBEgASgCSBCIAQESHQoQZm9ybV90ZW1wZXJhdHVyZRgSIAEoAkgRiAEBEhoKDXBtNDBfc3RhbmRhcmQYEyABKA1IEogBARIbCg5wYXJ0aWNsZXNfNDB1bRgUIAEoDUgTiAEBEhsKDnBtX3RlbXBlcmF0dXJlGBUgASgCSBSIAQESGAoLcG1faHVtaWRpdHkYFiABKAJIFYgBARIXCgpwbV92b2NfaWR4GBcgASgCSBaIAQESFwoKcG1fbm94X2lkeBgYIAEoAkgXiAEBEhoKDXBhcnRpY2xlc190cHMYGSABKAJIGIgBAUIQCg5fcG0xMF9zdGFuZGFyZEIQCg5fcG0yNV9zdGFuZGFyZEIRCg9fcG0xMDBfc3RhbmRhcmRCFQoTX3BtMTBfZW52aXJvbm1lbnRhbEIVChNfcG0yNV9lbnZpcm9ubWVudGFsQhYKFF9wbTEwMF9lbnZpcm9ubWVudGFsQhEKD19wYXJ0aWNsZXNfMDN1bUIRCg9fcGFydGljbGVzXzA1dW1CEQoPX3BhcnRpY2xlc18xMHVtQhEKD19wYXJ0aWNsZXNfMjV1bUIRCg9fcGFydGljbGVzXzUwdW1CEgoQX3BhcnRpY2xlc18xMDB1bUIGCgRfY28yQhIKEF9jbzJfdGVtcGVyYXR1cmVCDwoNX2NvMl9odW1pZGl0eUIUChJfZm9ybV9mb3JtYWxkZWh5ZGVCEAoOX2Zvcm1faHVtaWRpdHlCEwoRX2Zvcm1fdGVtcGVyYXR1cmVCEAoOX3BtNDBfc3RhbmRhcmRCEQoPX3BhcnRpY2xlc180MHVtQhEKD19wbV90ZW1wZXJhdHVyZUIOCgxfcG1faHVtaWRpdHlCDQoLX3BtX3ZvY19pZHhCDQoLX3BtX25veF9pZHhCEAoOX3BhcnRpY2xlc190cHMi/wIKCkxvY2FsU3RhdHMSFgoOdXB0aW1lX3NlY29uZHMYASABKA0SGwoTY2hhbm5lbF91dGlsaXphdGlvbhgCIAEoAhITCgthaXJfdXRpbF90eBgDIAEoAhIWCg5udW1fcGFja2V0c190eBgEIAEoDRIWCg5udW1fcGFja2V0c19yeBgFIAEoDRIaChJudW1fcGFja2V0c19yeF9iYWQYBiABKA0SGAoQbnVtX29ubGluZV9ub2RlcxgHIAEoDRIXCg9udW1fdG90YWxfbm9kZXMYCCABKA0SEwoLbnVtX3J4X2R1cGUYCSABKA0SFAoMbnVtX3R4X3JlbGF5GAogASgNEh0KFW51bV90eF9yZWxheV9jYW5jZWxlZBgLIAEoDRIYChBoZWFwX3RvdGFsX2J5dGVzGAwgASgNEhcKD2hlYXBfZnJlZV9ieXRlcxgNIAEoDRIWCg5udW1fdHhfZHJvcHBlZBgOIAEoDRITCgtub2lzZV9mbG9vchgPIAEoBSLkAQoWVHJhZmZpY01hbmFnZW1lbnRTdGF0cxIZChFwYWNrZXRzX2luc3BlY3RlZBgBIAEoDRIcChRwb3NpdGlvbl9kZWR1cF9kcm9wcxgCIAEoDRIbChNub2RlaW5mb19jYWNoZV9oaXRzGAMgASgNEhgKEHJhdGVfbGltaXRfZHJvcHMYBCABKA0SHAoUdW5rbm93bl9wYWNrZXRfZHJvcHMYBSABKA0SHQoVaG9wX2V4aGF1c3RlZF9wYWNrZXRzGAYgASgNEh0KFXJvdXRlcl9ob3BzX3ByZXNlcnZlZBgHIAEoDSJ7Cg1IZWFsdGhNZXRyaWNzEhYKCWhlYXJ0X2JwbRgBIAEoDUgAiAEBEhEKBHNwTzIYAiABKA1IAYgBARIYCgt0ZW1wZXJhdHVyZRgDIAEoAkgCiAEBQgwKCl9oZWFydF9icG1CBwoFX3NwTzJCDgoMX3RlbXBlcmF0dXJlIpECCgtIb3N0TWV0cmljcxIWCg51cHRpbWVfc2Vjb25kcxgBIAEoDRIVCg1mcmVlbWVtX2J5dGVzGAIgASgEEhcKD2Rpc2tmcmVlMV9ieXRlcxgDIAEoBBIcCg9kaXNrZnJlZTJfYnl0ZXMYBCABKARIAIgBARIcCg9kaXNrZnJlZTNfYnl0ZXMYBSABKARIAYgBARINCgVsb2FkMRgGIAEoDRINCgVsb2FkNRgHIAEoDRIOCgZsb2FkMTUYCCABKA0SGAoLdXNlcl9zdHJpbmcYCSABKAlIAogBAUISChBfZGlza2ZyZWUyX2J5dGVzQhIKEF9kaXNrZnJlZTNfYnl0ZXNCDgoMX3VzZXJfc3RyaW5nIuYDCglUZWxlbWV0cnkSDAoEdGltZRgBIAEoBxIzCg5kZXZpY2VfbWV0cmljcxgCIAEoCzIZLm1lc2h0YXN0aWMuRGV2aWNlTWV0cmljc0gAEj0KE2Vudmlyb25tZW50X21ldHJpY3MYAyABKAsyHi5tZXNodGFzdGljLkVudmlyb25tZW50TWV0cmljc0gAEjwKE2Fpcl9xdWFsaXR5X21ldHJpY3MYBCABKAsyHS5tZXNodGFzdGljLkFpclF1YWxpdHlNZXRyaWNzSAASMQoNcG93ZXJfbWV0cmljcxgFIAEoCzIYLm1lc2h0YXN0aWMuUG93ZXJNZXRyaWNzSAASLQoLbG9jYWxfc3RhdHMYBiABKAsyFi5tZXNodGFzdGljLkxvY2FsU3RhdHNIABIzCg5oZWFsdGhfbWV0cmljcxgHIAEoCzIZLm1lc2h0YXN0aWMuSGVhbHRoTWV0cmljc0gAEi8KDGhvc3RfbWV0cmljcxgIIAEoCzIXLm1lc2h0YXN0aWMuSG9zdE1ldHJpY3NIABJGChh0cmFmZmljX21hbmFnZW1lbnRfc3RhdHMYCSABKAsyIi5tZXNodGFzdGljLlRyYWZmaWNNYW5hZ2VtZW50U3RhdHNIAEIJCgd2YXJpYW50Ij4KDU5hdTc4MDJDb25maWcSEgoKemVyb09mZnNldBgBIAEoBRIZChFjYWxpYnJhdGlvbkZhY3RvchgCIAEoAiLwAQoKU0VONVhTdGF0ZRIaChJsYXN0X2NsZWFuaW5nX3RpbWUYASABKA0SGwoTbGFzdF9jbGVhbmluZ192YWxpZBgCIAEoCBIVCg1vbmVfc2hvdF9tb2RlGAMgASgIEhsKDnZvY19zdGF0ZV90aW1lGAQgASgNSACIAQESHAoPdm9jX3N0YXRlX3ZhbGlkGAUgASgISAGIAQESHAoPdm9jX3N0YXRlX2FycmF5GAYgASgGSAKIAQFCEQoPX3ZvY19zdGF0ZV90aW1lQhIKEF92b2Nfc3RhdGVfdmFsaWRCEgoQX3ZvY19zdGF0ZV9hcnJheSrcBQoTVGVsZW1ldHJ5U2Vuc29yVHlwZRIQCgxTRU5TT1JfVU5TRVQQABIKCgZCTUUyODAQARIKCgZCTUU2ODAQAhILCgdNQ1A5ODA4EAMSCgoGSU5BMjYwEAQSCgoGSU5BMjE5EAUSCgoGQk1QMjgwEAYSCQoFU0hUQzMQBxIJCgVMUFMyMhAIEgsKB1FNQzYzMTAQCRILCgdRTUk4NjU4EAoSDAoIUU1DNTg4M0wQCxIJCgVTSFQzMRAMEgwKCFBNU0EwMDNJEA0SCwoHSU5BMzIyMRAOEgoKBkJNUDA4NRAPEgwKCFJDV0w5NjIwEBASCQoFU0hUNFgQERIMCghWRU1MNzcwMBASEgwKCE1MWDkwNjMyEBMSCwoHT1BUMzAwMRAUEgwKCExUUjM5MFVWEBUSDgoKVFNMMjU5MTFGThAWEgkKBUFIVDEwEBcSEAoMREZST0JPVF9MQVJLEBgSCwoHTkFVNzgwMhAZEgoKBkJNUDNYWBAaEgwKCElDTTIwOTQ4EBsSDAoITUFYMTcwNDgQHBIRCg1DVVNUT01fU0VOU09SEB0SDAoITUFYMzAxMDIQHhIMCghNTFg5MDYxNBAfEgkKBVNDRDRYECASCwoHUkFEU0VOUxAhEgoKBklOQTIyNhAiEhAKDERGUk9CT1RfUkFJThAjEgoKBkRQUzMxMBAkEgwKCFJBSzEyMDM1ECUSDAoITUFYMTcyNjEQJhILCgdQQ1QyMDc1ECcSCwoHQURTMVgxNRAoEg8KC0FEUzFYMTVfQUxUECkSCQoFU0ZBMzAQKhIJCgVTRU41WBArEgsKB1RTTDI1NjEQLBIKCgZCSDE3NTAQLRILCgdIREMxMDgwEC4SCQoFU0hUMjEQLxIJCgVTVEMzMRAwEgkKBVNDRDMwEDESCQoFU0hUWFgQMhIKCgZEUzI0OFgQMxINCglNTUM1OTgzTUEQNBINCglJQ000MjYwN1AQNUJlChRvcmcubWVzaHRhc3RpYy5wcm90b0IPVGVsZW1ldHJ5UHJvdG9zWiJnaXRodWIuY29tL21lc2h0YXN0aWMvZ28vZ2VuZXJhdGVkqgIUTWVzaHRhc3RpYy5Qcm90b2J1ZnO6AgBiBnByb3RvMw", +); /** * @@ -64,7 +69,7 @@ export type DeviceMetrics = Message<"meshtastic.DeviceMetrics"> & { * Describes the message meshtastic.DeviceMetrics. * Use `create(DeviceMetricsSchema)` to create a new message. */ -export const DeviceMetricsSchema: GenMessage = /*@__PURE__*/ +export const DeviceMetricsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 0); /** @@ -265,7 +270,7 @@ export type EnvironmentMetrics = Message<"meshtastic.EnvironmentMetrics"> & { * Describes the message meshtastic.EnvironmentMetrics. * Use `create(EnvironmentMetricsSchema)` to create a new message. */ -export const EnvironmentMetricsSchema: GenMessage = /*@__PURE__*/ +export const EnvironmentMetricsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 1); /** @@ -408,7 +413,7 @@ export type PowerMetrics = Message<"meshtastic.PowerMetrics"> & { * Describes the message meshtastic.PowerMetrics. * Use `create(PowerMetricsSchema)` to create a new message. */ -export const PowerMetricsSchema: GenMessage = /*@__PURE__*/ +export const PowerMetricsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 2); /** @@ -623,7 +628,7 @@ export type AirQualityMetrics = Message<"meshtastic.AirQualityMetrics"> & { * Describes the message meshtastic.AirQualityMetrics. * Use `create(AirQualityMetricsSchema)` to create a new message. */ -export const AirQualityMetricsSchema: GenMessage = /*@__PURE__*/ +export const AirQualityMetricsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 3); /** @@ -760,7 +765,7 @@ export type LocalStats = Message<"meshtastic.LocalStats"> & { * Describes the message meshtastic.LocalStats. * Use `create(LocalStatsSchema)` to create a new message. */ -export const LocalStatsSchema: GenMessage = /*@__PURE__*/ +export const LocalStatsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 4); /** @@ -769,69 +774,70 @@ export const LocalStatsSchema: GenMessage = /*@__PURE__*/ * * @generated from message meshtastic.TrafficManagementStats */ -export type TrafficManagementStats = Message<"meshtastic.TrafficManagementStats"> & { - /** - * - * Total number of packets inspected by traffic management - * - * @generated from field: uint32 packets_inspected = 1; - */ - packetsInspected: number; +export type TrafficManagementStats = + Message<"meshtastic.TrafficManagementStats"> & { + /** + * + * Total number of packets inspected by traffic management + * + * @generated from field: uint32 packets_inspected = 1; + */ + packetsInspected: number; - /** - * - * Number of position packets dropped due to deduplication - * - * @generated from field: uint32 position_dedup_drops = 2; - */ - positionDedupDrops: number; + /** + * + * Number of position packets dropped due to deduplication + * + * @generated from field: uint32 position_dedup_drops = 2; + */ + positionDedupDrops: number; - /** - * - * Number of NodeInfo requests answered from cache - * - * @generated from field: uint32 nodeinfo_cache_hits = 3; - */ - nodeinfoCacheHits: number; + /** + * + * Number of NodeInfo requests answered from cache + * + * @generated from field: uint32 nodeinfo_cache_hits = 3; + */ + nodeinfoCacheHits: number; - /** - * - * Number of packets dropped due to rate limiting - * - * @generated from field: uint32 rate_limit_drops = 4; - */ - rateLimitDrops: number; + /** + * + * Number of packets dropped due to rate limiting + * + * @generated from field: uint32 rate_limit_drops = 4; + */ + rateLimitDrops: number; - /** - * - * Number of unknown/undecryptable packets dropped - * - * @generated from field: uint32 unknown_packet_drops = 5; - */ - unknownPacketDrops: number; + /** + * + * Number of unknown/undecryptable packets dropped + * + * @generated from field: uint32 unknown_packet_drops = 5; + */ + unknownPacketDrops: number; - /** - * - * Number of packets with hop_limit exhausted for local-only broadcast - * - * @generated from field: uint32 hop_exhausted_packets = 6; - */ - hopExhaustedPackets: number; + /** + * + * Number of packets with hop_limit exhausted for local-only broadcast + * + * @generated from field: uint32 hop_exhausted_packets = 6; + */ + hopExhaustedPackets: number; - /** - * - * Number of times router hop preservation was applied - * - * @generated from field: uint32 router_hops_preserved = 7; - */ - routerHopsPreserved: number; -}; + /** + * + * Number of times router hop preservation was applied + * + * @generated from field: uint32 router_hops_preserved = 7; + */ + routerHopsPreserved: number; + }; /** * Describes the message meshtastic.TrafficManagementStats. * Use `create(TrafficManagementStatsSchema)` to create a new message. */ -export const TrafficManagementStatsSchema: GenMessage = /*@__PURE__*/ +export const TrafficManagementStatsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 5); /** @@ -870,7 +876,7 @@ export type HealthMetrics = Message<"meshtastic.HealthMetrics"> & { * Describes the message meshtastic.HealthMetrics. * Use `create(HealthMetricsSchema)` to create a new message. */ -export const HealthMetricsSchema: GenMessage = /*@__PURE__*/ +export const HealthMetricsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 6); /** @@ -958,7 +964,7 @@ export type HostMetrics = Message<"meshtastic.HostMetrics"> & { * Describes the message meshtastic.HostMetrics. * Use `create(HostMetricsSchema)` to create a new message. */ -export const HostMetricsSchema: GenMessage = /*@__PURE__*/ +export const HostMetricsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 7); /** @@ -979,87 +985,98 @@ export type Telemetry = Message<"meshtastic.Telemetry"> & { /** * @generated from oneof meshtastic.Telemetry.variant */ - variant: { - /** - * - * Key native device metrics such as battery level - * - * @generated from field: meshtastic.DeviceMetrics device_metrics = 2; - */ - value: DeviceMetrics; - case: "deviceMetrics"; - } | { - /** - * - * Weather station or other environmental metrics - * - * @generated from field: meshtastic.EnvironmentMetrics environment_metrics = 3; - */ - value: EnvironmentMetrics; - case: "environmentMetrics"; - } | { - /** - * - * Air quality metrics - * - * @generated from field: meshtastic.AirQualityMetrics air_quality_metrics = 4; - */ - value: AirQualityMetrics; - case: "airQualityMetrics"; - } | { - /** - * - * Power Metrics - * - * @generated from field: meshtastic.PowerMetrics power_metrics = 5; - */ - value: PowerMetrics; - case: "powerMetrics"; - } | { - /** - * - * Local device mesh statistics - * - * @generated from field: meshtastic.LocalStats local_stats = 6; - */ - value: LocalStats; - case: "localStats"; - } | { - /** - * - * Health telemetry metrics - * - * @generated from field: meshtastic.HealthMetrics health_metrics = 7; - */ - value: HealthMetrics; - case: "healthMetrics"; - } | { - /** - * - * Linux host metrics - * - * @generated from field: meshtastic.HostMetrics host_metrics = 8; - */ - value: HostMetrics; - case: "hostMetrics"; - } | { - /** - * - * Traffic management statistics - * - * @generated from field: meshtastic.TrafficManagementStats traffic_management_stats = 9; - */ - value: TrafficManagementStats; - case: "trafficManagementStats"; - } | { case: undefined; value?: undefined }; + variant: + | { + /** + * + * Key native device metrics such as battery level + * + * @generated from field: meshtastic.DeviceMetrics device_metrics = 2; + */ + value: DeviceMetrics; + case: "deviceMetrics"; + } + | { + /** + * + * Weather station or other environmental metrics + * + * @generated from field: meshtastic.EnvironmentMetrics environment_metrics = 3; + */ + value: EnvironmentMetrics; + case: "environmentMetrics"; + } + | { + /** + * + * Air quality metrics + * + * @generated from field: meshtastic.AirQualityMetrics air_quality_metrics = 4; + */ + value: AirQualityMetrics; + case: "airQualityMetrics"; + } + | { + /** + * + * Power Metrics + * + * @generated from field: meshtastic.PowerMetrics power_metrics = 5; + */ + value: PowerMetrics; + case: "powerMetrics"; + } + | { + /** + * + * Local device mesh statistics + * + * @generated from field: meshtastic.LocalStats local_stats = 6; + */ + value: LocalStats; + case: "localStats"; + } + | { + /** + * + * Health telemetry metrics + * + * @generated from field: meshtastic.HealthMetrics health_metrics = 7; + */ + value: HealthMetrics; + case: "healthMetrics"; + } + | { + /** + * + * Linux host metrics + * + * @generated from field: meshtastic.HostMetrics host_metrics = 8; + */ + value: HostMetrics; + case: "hostMetrics"; + } + | { + /** + * + * Traffic management statistics + * + * @generated from field: meshtastic.TrafficManagementStats traffic_management_stats = 9; + */ + value: TrafficManagementStats; + case: "trafficManagementStats"; + } + | { case: undefined; value?: undefined }; }; /** * Describes the message meshtastic.Telemetry. * Use `create(TelemetrySchema)` to create a new message. */ -export const TelemetrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_telemetry, 8); +export const TelemetrySchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_telemetry, + 8, +); /** * @@ -1089,7 +1106,7 @@ export type Nau7802Config = Message<"meshtastic.Nau7802Config"> & { * Describes the message meshtastic.Nau7802Config. * Use `create(Nau7802ConfigSchema)` to create a new message. */ -export const Nau7802ConfigSchema: GenMessage = /*@__PURE__*/ +export const Nau7802ConfigSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 9); /** @@ -1152,7 +1169,7 @@ export type SEN5XState = Message<"meshtastic.SEN5XState"> & { * Describes the message meshtastic.SEN5XState. * Use `create(SEN5XStateSchema)` to create a new message. */ -export const SEN5XStateSchema: GenMessage = /*@__PURE__*/ +export const SEN5XStateSchema: GenMessage /*@__PURE__*/ = messageDesc(file_meshtastic_telemetry, 10); /** @@ -1598,6 +1615,5 @@ export enum TelemetrySensorType { /** * Describes the enum meshtastic.TelemetrySensorType. */ -export const TelemetrySensorTypeSchema: GenEnum = /*@__PURE__*/ +export const TelemetrySensorTypeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_telemetry, 0); - diff --git a/packages/protobufs/packages/ts/dist/meshtastic/xmodem_pb.ts b/packages/protobufs/packages/ts/dist/meshtastic/xmodem_pb.ts index 05da5dde8..44c1fddb1 100644 --- a/packages/protobufs/packages/ts/dist/meshtastic/xmodem_pb.ts +++ b/packages/protobufs/packages/ts/dist/meshtastic/xmodem_pb.ts @@ -1,16 +1,21 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file meshtastic/xmodem.proto (package meshtastic, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file meshtastic/xmodem.proto. */ -export const file_meshtastic_xmodem: GenFile = /*@__PURE__*/ - fileDesc("ChdtZXNodGFzdGljL3htb2RlbS5wcm90bxIKbWVzaHRhc3RpYyK2AQoGWE1vZGVtEisKB2NvbnRyb2wYASABKA4yGi5tZXNodGFzdGljLlhNb2RlbS5Db250cm9sEgsKA3NlcRgCIAEoDRINCgVjcmMxNhgDIAEoDRIOCgZidWZmZXIYBCABKAwiUwoHQ29udHJvbBIHCgNOVUwQABIHCgNTT0gQARIHCgNTVFgQAhIHCgNFT1QQBBIHCgNBQ0sQBhIHCgNOQUsQFRIHCgNDQU4QGBIJCgVDVFJMWhAaQmIKFG9yZy5tZXNodGFzdGljLnByb3RvQgxYbW9kZW1Qcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z"); +export const file_meshtastic_xmodem: GenFile /*@__PURE__*/ = fileDesc( + "ChdtZXNodGFzdGljL3htb2RlbS5wcm90bxIKbWVzaHRhc3RpYyK2AQoGWE1vZGVtEisKB2NvbnRyb2wYASABKA4yGi5tZXNodGFzdGljLlhNb2RlbS5Db250cm9sEgsKA3NlcRgCIAEoDRINCgVjcmMxNhgDIAEoDRIOCgZidWZmZXIYBCABKAwiUwoHQ29udHJvbBIHCgNOVUwQABIHCgNTT0gQARIHCgNTVFgQAhIHCgNFT1QQBBIHCgNBQ0sQBhIHCgNOQUsQFRIHCgNDQU4QGBIJCgVDVFJMWhAaQmIKFG9yZy5tZXNodGFzdGljLnByb3RvQgxYbW9kZW1Qcm90b3NaImdpdGh1Yi5jb20vbWVzaHRhc3RpYy9nby9nZW5lcmF0ZWSqAhRNZXNodGFzdGljLlByb3RvYnVmc7oCAGIGcHJvdG8z", +); /** * @generated from message meshtastic.XModem @@ -41,8 +46,10 @@ export type XModem = Message<"meshtastic.XModem"> & { * Describes the message meshtastic.XModem. * Use `create(XModemSchema)` to create a new message. */ -export const XModemSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_meshtastic_xmodem, 0); +export const XModemSchema: GenMessage /*@__PURE__*/ = messageDesc( + file_meshtastic_xmodem, + 0, +); /** * @generated from enum meshtastic.XModem.Control @@ -92,6 +99,5 @@ export enum XModem_Control { /** * Describes the enum meshtastic.XModem.Control. */ -export const XModem_ControlSchema: GenEnum = /*@__PURE__*/ +export const XModem_ControlSchema: GenEnum /*@__PURE__*/ = enumDesc(file_meshtastic_xmodem, 0, 0); - diff --git a/packages/protobufs/packages/ts/dist/nanopb_pb.ts b/packages/protobufs/packages/ts/dist/nanopb_pb.ts index db50405e8..218ffdc38 100644 --- a/packages/protobufs/packages/ts/dist/nanopb_pb.ts +++ b/packages/protobufs/packages/ts/dist/nanopb_pb.ts @@ -5,21 +5,39 @@ // These are used by nanopb to generate statically allocable structures // for memory-limited environments. -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts" +// @generated by protoc-gen-es v2.12.1 with parameter "target=ts" // @generated from file nanopb.proto (syntax proto2) /* eslint-disable */ -import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; -import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; -import type { EnumOptions, FieldDescriptorProto_Type, FieldOptions, FileOptions, MessageOptions } from "@bufbuild/protobuf/wkt"; +import type { + GenEnum, + GenExtension, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv2"; +import { + enumDesc, + extDesc, + fileDesc, + messageDesc, +} from "@bufbuild/protobuf/codegenv2"; +import type { + EnumOptions, + FieldDescriptorProto_Type, + FieldOptions, + FileOptions, + MessageOptions, +} from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file nanopb.proto. */ -export const file_nanopb: GenFile = /*@__PURE__*/ - fileDesc("CgxuYW5vcGIucHJvdG8ipAcKDU5hbm9QQk9wdGlvbnMSEAoIbWF4X3NpemUYASABKAUSEgoKbWF4X2xlbmd0aBgOIAEoBRIRCgltYXhfY291bnQYAiABKAUSJgoIaW50X3NpemUYByABKA4yCC5JbnRTaXplOgpJU19ERUZBVUxUEiQKBHR5cGUYAyABKA4yCi5GaWVsZFR5cGU6CkZUX0RFRkFVTFQSGAoKbG9uZ19uYW1lcxgEIAEoCDoEdHJ1ZRIcCg1wYWNrZWRfc3RydWN0GAUgASgIOgVmYWxzZRIaCgtwYWNrZWRfZW51bRgKIAEoCDoFZmFsc2USGwoMc2tpcF9tZXNzYWdlGAYgASgIOgVmYWxzZRIYCglub191bmlvbnMYCCABKAg6BWZhbHNlEg0KBW1zZ2lkGAkgASgNEh4KD2Fub255bW91c19vbmVvZhgLIAEoCDoFZmFsc2USFQoGcHJvdG8zGAwgASgIOgVmYWxzZRIjChRwcm90bzNfc2luZ3VsYXJfbXNncxgVIAEoCDoFZmFsc2USHQoOZW51bV90b19zdHJpbmcYDSABKAg6BWZhbHNlEhsKDGZpeGVkX2xlbmd0aBgPIAEoCDoFZmFsc2USGgoLZml4ZWRfY291bnQYECABKAg6BWZhbHNlEh4KD3N1Ym1zZ19jYWxsYmFjaxgWIAEoCDoFZmFsc2USLwoMbWFuZ2xlX25hbWVzGBEgASgOMhEuVHlwZW5hbWVNYW5nbGluZzoGTV9OT05FEigKEWNhbGxiYWNrX2RhdGF0eXBlGBIgASgJOg1wYl9jYWxsYmFja190EjQKEWNhbGxiYWNrX2Z1bmN0aW9uGBMgASgJOhlwYl9kZWZhdWx0X2ZpZWxkX2NhbGxiYWNrEjAKDmRlc2NyaXB0b3JzaXplGBQgASgOMg8uRGVzY3JpcHRvclNpemU6B0RTX0FVVE8SGgoLZGVmYXVsdF9oYXMYFyABKAg6BWZhbHNlEg8KB2luY2x1ZGUYGCADKAkSDwoHZXhjbHVkZRgaIAMoCRIPCgdwYWNrYWdlGBkgASgJEkEKDXR5cGVfb3ZlcnJpZGUYGyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIZCgtzb3J0X2J5X3RhZxgcIAEoCDoEdHJ1ZRIuCg1mYWxsYmFja190eXBlGB0gASgOMgouRmllbGRUeXBlOgtGVF9DQUxMQkFDSyppCglGaWVsZFR5cGUSDgoKRlRfREVGQVVMVBAAEg8KC0ZUX0NBTExCQUNLEAESDgoKRlRfUE9JTlRFUhAEEg0KCUZUX1NUQVRJQxACEg0KCUZUX0lHTk9SRRADEg0KCUZUX0lOTElORRAFKkQKB0ludFNpemUSDgoKSVNfREVGQVVMVBAAEggKBElTXzgQCBIJCgVJU18xNhAQEgkKBUlTXzMyECASCQoFSVNfNjQQQCpaChBUeXBlbmFtZU1hbmdsaW5nEgoKBk1fTk9ORRAAEhMKD01fU1RSSVBfUEFDS0FHRRABEg0KCU1fRkxBVFRFThACEhYKEk1fUEFDS0FHRV9JTklUSUFMUxADKkUKDkRlc2NyaXB0b3JTaXplEgsKB0RTX0FVVE8QABIICgREU18xEAESCAoERFNfMhACEggKBERTXzQQBBIICgREU184EAg6VAoObmFub3BiX2ZpbGVvcHQSHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMY8gcgASgLMg4uTmFub1BCT3B0aW9uc1INbmFub3BiRmlsZW9wdDpVCg1uYW5vcGJfbXNnb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGPIHIAEoCzIOLk5hbm9QQk9wdGlvbnNSDG5hbm9wYk1zZ29wdDpUCg5uYW5vcGJfZW51bW9wdBIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9ucxjyByABKAsyDi5OYW5vUEJPcHRpb25zUg1uYW5vcGJFbnVtb3B0OkYKBm5hbm9wYhIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY8gcgASgLMg4uTmFub1BCT3B0aW9uc1IGbmFub3BiQj4KGGZpLmthcHNpLmtvdGkuanBhLm5hbm9wYloiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZA", [file_google_protobuf_descriptor]); +export const file_nanopb: GenFile /*@__PURE__*/ = fileDesc( + "CgxuYW5vcGIucHJvdG8ipAcKDU5hbm9QQk9wdGlvbnMSEAoIbWF4X3NpemUYASABKAUSEgoKbWF4X2xlbmd0aBgOIAEoBRIRCgltYXhfY291bnQYAiABKAUSJgoIaW50X3NpemUYByABKA4yCC5JbnRTaXplOgpJU19ERUZBVUxUEiQKBHR5cGUYAyABKA4yCi5GaWVsZFR5cGU6CkZUX0RFRkFVTFQSGAoKbG9uZ19uYW1lcxgEIAEoCDoEdHJ1ZRIcCg1wYWNrZWRfc3RydWN0GAUgASgIOgVmYWxzZRIaCgtwYWNrZWRfZW51bRgKIAEoCDoFZmFsc2USGwoMc2tpcF9tZXNzYWdlGAYgASgIOgVmYWxzZRIYCglub191bmlvbnMYCCABKAg6BWZhbHNlEg0KBW1zZ2lkGAkgASgNEh4KD2Fub255bW91c19vbmVvZhgLIAEoCDoFZmFsc2USFQoGcHJvdG8zGAwgASgIOgVmYWxzZRIjChRwcm90bzNfc2luZ3VsYXJfbXNncxgVIAEoCDoFZmFsc2USHQoOZW51bV90b19zdHJpbmcYDSABKAg6BWZhbHNlEhsKDGZpeGVkX2xlbmd0aBgPIAEoCDoFZmFsc2USGgoLZml4ZWRfY291bnQYECABKAg6BWZhbHNlEh4KD3N1Ym1zZ19jYWxsYmFjaxgWIAEoCDoFZmFsc2USLwoMbWFuZ2xlX25hbWVzGBEgASgOMhEuVHlwZW5hbWVNYW5nbGluZzoGTV9OT05FEigKEWNhbGxiYWNrX2RhdGF0eXBlGBIgASgJOg1wYl9jYWxsYmFja190EjQKEWNhbGxiYWNrX2Z1bmN0aW9uGBMgASgJOhlwYl9kZWZhdWx0X2ZpZWxkX2NhbGxiYWNrEjAKDmRlc2NyaXB0b3JzaXplGBQgASgOMg8uRGVzY3JpcHRvclNpemU6B0RTX0FVVE8SGgoLZGVmYXVsdF9oYXMYFyABKAg6BWZhbHNlEg8KB2luY2x1ZGUYGCADKAkSDwoHZXhjbHVkZRgaIAMoCRIPCgdwYWNrYWdlGBkgASgJEkEKDXR5cGVfb3ZlcnJpZGUYGyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIZCgtzb3J0X2J5X3RhZxgcIAEoCDoEdHJ1ZRIuCg1mYWxsYmFja190eXBlGB0gASgOMgouRmllbGRUeXBlOgtGVF9DQUxMQkFDSyppCglGaWVsZFR5cGUSDgoKRlRfREVGQVVMVBAAEg8KC0ZUX0NBTExCQUNLEAESDgoKRlRfUE9JTlRFUhAEEg0KCUZUX1NUQVRJQxACEg0KCUZUX0lHTk9SRRADEg0KCUZUX0lOTElORRAFKkQKB0ludFNpemUSDgoKSVNfREVGQVVMVBAAEggKBElTXzgQCBIJCgVJU18xNhAQEgkKBUlTXzMyECASCQoFSVNfNjQQQCpaChBUeXBlbmFtZU1hbmdsaW5nEgoKBk1fTk9ORRAAEhMKD01fU1RSSVBfUEFDS0FHRRABEg0KCU1fRkxBVFRFThACEhYKEk1fUEFDS0FHRV9JTklUSUFMUxADKkUKDkRlc2NyaXB0b3JTaXplEgsKB0RTX0FVVE8QABIICgREU18xEAESCAoERFNfMhACEggKBERTXzQQBBIICgREU184EAg6VAoObmFub3BiX2ZpbGVvcHQSHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMY8gcgASgLMg4uTmFub1BCT3B0aW9uc1INbmFub3BiRmlsZW9wdDpVCg1uYW5vcGJfbXNnb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGPIHIAEoCzIOLk5hbm9QQk9wdGlvbnNSDG5hbm9wYk1zZ29wdDpUCg5uYW5vcGJfZW51bW9wdBIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9ucxjyByABKAsyDi5OYW5vUEJPcHRpb25zUg1uYW5vcGJFbnVtb3B0OkYKBm5hbm9wYhIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY8gcgASgLMg4uTmFub1BCT3B0aW9uc1IGbmFub3BiQj4KGGZpLmthcHNpLmtvdGkuanBhLm5hbm9wYloiZ2l0aHViLmNvbS9tZXNodGFzdGljL2dvL2dlbmVyYXRlZA", + [file_google_protobuf_descriptor], +); /** * This is the inner options message, which basically defines options for @@ -258,7 +276,7 @@ export type NanoPBOptions = Message<"NanoPBOptions"> & { * Describes the message NanoPBOptions. * Use `create(NanoPBOptionsSchema)` to create a new message. */ -export const NanoPBOptionsSchema: GenMessage = /*@__PURE__*/ +export const NanoPBOptionsSchema: GenMessage /*@__PURE__*/ = messageDesc(file_nanopb, 0); /** @@ -311,8 +329,10 @@ export enum FieldType { /** * Describes the enum FieldType. */ -export const FieldTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_nanopb, 0); +export const FieldTypeSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_nanopb, + 0, +); /** * @generated from enum IntSize @@ -349,8 +369,10 @@ export enum IntSize { /** * Describes the enum IntSize. */ -export const IntSizeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_nanopb, 1); +export const IntSizeSchema: GenEnum /*@__PURE__*/ = enumDesc( + file_nanopb, + 1, +); /** * @generated from enum TypenameMangling @@ -388,7 +410,7 @@ export enum TypenameMangling { /** * Describes the enum TypenameMangling. */ -export const TypenameManglingSchema: GenEnum = /*@__PURE__*/ +export const TypenameManglingSchema: GenEnum /*@__PURE__*/ = enumDesc(file_nanopb, 2); /** @@ -434,30 +456,35 @@ export enum DescriptorSize { /** * Describes the enum DescriptorSize. */ -export const DescriptorSizeSchema: GenEnum = /*@__PURE__*/ +export const DescriptorSizeSchema: GenEnum /*@__PURE__*/ = enumDesc(file_nanopb, 3); /** * @generated from extension: optional NanoPBOptions nanopb_fileopt = 1010; */ -export const nanopb_fileopt: GenExtension = /*@__PURE__*/ - extDesc(file_nanopb, 0); +export const nanopb_fileopt: GenExtension< + FileOptions, + NanoPBOptions +> /*@__PURE__*/ = extDesc(file_nanopb, 0); /** * @generated from extension: optional NanoPBOptions nanopb_msgopt = 1010; */ -export const nanopb_msgopt: GenExtension = /*@__PURE__*/ - extDesc(file_nanopb, 1); +export const nanopb_msgopt: GenExtension< + MessageOptions, + NanoPBOptions +> /*@__PURE__*/ = extDesc(file_nanopb, 1); /** * @generated from extension: optional NanoPBOptions nanopb_enumopt = 1010; */ -export const nanopb_enumopt: GenExtension = /*@__PURE__*/ - extDesc(file_nanopb, 2); +export const nanopb_enumopt: GenExtension< + EnumOptions, + NanoPBOptions +> /*@__PURE__*/ = extDesc(file_nanopb, 2); /** * @generated from extension: optional NanoPBOptions nanopb = 1010; */ -export const nanopb: GenExtension = /*@__PURE__*/ +export const nanopb: GenExtension /*@__PURE__*/ = extDesc(file_nanopb, 3); - diff --git a/packages/protobufs/packages/ts/mod.ts b/packages/protobufs/packages/ts/mod.ts index d244b2173..da948940c 100644 --- a/packages/protobufs/packages/ts/mod.ts +++ b/packages/protobufs/packages/ts/mod.ts @@ -6,6 +6,10 @@ export * as Channel from "./dist/meshtastic/channel_pb.ts"; export * as ClientOnly from "./dist/meshtastic/clientonly_pb.ts"; export * as Config from "./dist/meshtastic/config_pb.ts"; export * as ConnectionStatus from "./dist/meshtastic/connection_status_pb.ts"; +export * as DeviceUi from "./dist/meshtastic/device_ui_pb.ts"; +export * as DeviceOnly from "./dist/meshtastic/deviceonly_pb.ts"; +export * as DeviceOnlyLegacy from "./dist/meshtastic/deviceonly_legacy_pb.ts"; +export * as InterDevice from "./dist/meshtastic/interdevice_pb.ts"; export * as LocalOnly from "./dist/meshtastic/localonly_pb.ts"; export * as Mesh from "./dist/meshtastic/mesh_pb.ts"; export * as ModuleConfig from "./dist/meshtastic/module_config_pb.ts"; @@ -15,6 +19,7 @@ export * as Portnums from "./dist/meshtastic/portnums_pb.ts"; export * as PowerMon from "./dist/meshtastic/powermon_pb.ts"; export * as RemoteHardware from "./dist/meshtastic/remote_hardware_pb.ts"; export * as Rtttl from "./dist/meshtastic/rtttl_pb.ts"; +export * as SerialHal from "./dist/meshtastic/serial_hal_pb.ts"; export * as StoreForward from "./dist/meshtastic/storeforward_pb.ts"; export * as Telemetry from "./dist/meshtastic/telemetry_pb.ts"; export * as Xmodem from "./dist/meshtastic/xmodem_pb.ts"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e371a398..140a107fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@meshtastic/protobufs': workspace:* + importers: .: @@ -326,6 +329,9 @@ importers: specifier: ^2.12.1 version: 2.12.1 devDependencies: + '@bufbuild/buf': + specifier: ^1.71.0 + version: 1.71.0 '@bufbuild/protoc-gen-es': specifier: ^2.12.1 version: 2.12.1(@bufbuild/protobuf@2.12.1) @@ -339,8 +345,8 @@ importers: specifier: ^2.12.1 version: 2.12.1 '@meshtastic/protobufs': - specifier: jsr:^2.7.18 - version: '@jsr/meshtastic__protobufs@2.7.20' + specifier: workspace:* + version: link:../protobufs '@preact/signals-core': specifier: ^1.14.4 version: 1.14.4 @@ -1078,6 +1084,53 @@ packages: resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true + '@bufbuild/buf-darwin-arm64@1.71.0': + resolution: {integrity: sha512-qZ7xZQyen/jOKFPVs3dlN9pMA56PI4YEo3r4/9ixtiH9gyFgfowR31axsocUgXGThjiN8mvOA8WfpG2tvaSvsw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@bufbuild/buf-darwin-x64@1.71.0': + resolution: {integrity: sha512-2w95pc3X+z06/J66i6uNzA8QPuVOpbPrwyb6tkK0AcJFNvKPVYr4BxVC2koyImrQ3rxY1n9q8qviWMjSvq9fOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@bufbuild/buf-linux-aarch64@1.71.0': + resolution: {integrity: sha512-dwxErryMI3MRwtP/IgfdrqEjiAmVpttGhmO3xihiJIV2EAXt9J5yjzHhEDvnSgQ6nmNjEvO5QczcIaQjZEwF6A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@bufbuild/buf-linux-armv7@1.71.0': + resolution: {integrity: sha512-pfc+Qexm5C59VeRUjVmEvxkCXT5QbMR1R/CUtcSlk+spOFVwna0bSpkqIsky3kkHfzxiNSOsz3iki9/pAVX+CA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@bufbuild/buf-linux-x64@1.71.0': + resolution: {integrity: sha512-Y7jLxr3wpMkpQSqZU/MrDmDSCkF4GxvhIL7wnNdSRpkhYAY6TPRHN+5nNgV7jp6mQ0zQSYh0MGxBeMgt/UVdmQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@bufbuild/buf-win32-arm64@1.71.0': + resolution: {integrity: sha512-UrxtD99zLE1qImtQC/W3a9cuj0/kB53B1bK38kmCMRFow939FhdZtqTRjbnZWauRi/pzAsjDyPCvnTa2XKT8Cg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@bufbuild/buf-win32-x64@1.71.0': + resolution: {integrity: sha512-+npiOimJ7ggeLul3KFwSlOjZnAZYwt3el64dJ3nJQMnui0avyvsRmU02o1bZI5yUnBvhcnTWdEbfRXUnkkVtgQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@bufbuild/buf@1.71.0': + resolution: {integrity: sha512-GDcjBCwLgHT/4nX4YSnYatZ7sDZDpHV6dxQvoT2/P6gKvV23O6hl8NryzLIRKmeau0FRXpQKHVy1dMfnBSpy+w==} + engines: {node: '>=12'} + hasBin: true + '@bufbuild/protobuf@2.12.1': resolution: {integrity: sha512-BvAMfS6LrgZiryOAZ4pBYucu4wG/Ei/9o9DZ9akbREnMLbPJiom2i8b9C8IsKErQoiKqVhrerzt3kOT/RrzLHg==} @@ -7176,6 +7229,37 @@ snapshots: dependencies: css-tree: 3.2.1 + '@bufbuild/buf-darwin-arm64@1.71.0': + optional: true + + '@bufbuild/buf-darwin-x64@1.71.0': + optional: true + + '@bufbuild/buf-linux-aarch64@1.71.0': + optional: true + + '@bufbuild/buf-linux-armv7@1.71.0': + optional: true + + '@bufbuild/buf-linux-x64@1.71.0': + optional: true + + '@bufbuild/buf-win32-arm64@1.71.0': + optional: true + + '@bufbuild/buf-win32-x64@1.71.0': + optional: true + + '@bufbuild/buf@1.71.0': + optionalDependencies: + '@bufbuild/buf-darwin-arm64': 1.71.0 + '@bufbuild/buf-darwin-x64': 1.71.0 + '@bufbuild/buf-linux-aarch64': 1.71.0 + '@bufbuild/buf-linux-armv7': 1.71.0 + '@bufbuild/buf-linux-x64': 1.71.0 + '@bufbuild/buf-win32-arm64': 1.71.0 + '@bufbuild/buf-win32-x64': 1.71.0 + '@bufbuild/protobuf@2.12.1': {} '@bufbuild/protoc-gen-es@2.12.1(@bufbuild/protobuf@2.12.1)': diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 799971dd7..8c1801452 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ allowBuilds: + "@bufbuild/buf": true "@serialport/bindings-cpp": false "@tailwindcss/oxide": false "core-js": false @@ -7,3 +8,5 @@ minimumReleaseAge: 2880 # package dependency library must be at least 2 days old packages: - "packages/*" - "apps/*" +overrides: + "@meshtastic/protobufs": "workspace:*"