@flightpath/flightpath 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,111 @@
1
+ # Flightpath
2
+
3
+ Go platform exposing a gRPC API to control a drone.
4
+
5
+ ## Architecture
6
+
7
+ ![architecture](./assets/flightpath-architecture.png)
8
+
9
+ ## Project Structure
10
+ ```
11
+ flightpath/
12
+ ├── cmd/
13
+ │ └── server/
14
+ │ └── main.go # Server entry point
15
+ ├── examples/ # API usage examples
16
+ │ └── message_monitor.go
17
+ ├── gen/ # Generated files
18
+ │ ├── go/flightpath
19
+ │ | ├── action_pb.go
20
+ │ | ├── connection_pb.go
21
+ │ | └── telemetry_pb.go
22
+ │ └── ts/flightpath
23
+ │ ├── action_pb.go
24
+ │ ├── connection_pb.go
25
+ │ └── telemetry_pb.go
26
+ ├── internal/
27
+ │ ├── config/
28
+ │ │ ├── config.go # Configuration structure
29
+ │ │ └── loader.go # Configuration loader
30
+ │ ├── mavlink/
31
+ │ │ └── mavlink_connector.go # Drone interface using MAVLink
32
+ │ ├── middleware/
33
+ │ │ ├── cors.go # CORS middleware
34
+ │ │ ├── logging.go # Request logging
35
+ │ │ └── recovery.go # Panic recovery
36
+ │ ├── server/
37
+ │ │ └── server.go # Represents the flightpath server
38
+ │ └── services/
39
+ │ ├── context.go # Shared context for all services (config, logger, etc.)
40
+ │ ├── action.go # Handles drone actions
41
+ │ ├── connection.go # Handles drone connection
42
+ │ └── telemetry.go # Handles drone telemetry
43
+ ├── proto/
44
+ │ └── flightpath/
45
+ │ ├── action.proto # Drone actions
46
+ │ ├── connection.proto # Drone connection
47
+ │ └── telemetry.proto # Drone telemetry
48
+ ├── go.mod
49
+ └── go.sum
50
+ ```
51
+
52
+ ## Quick Start
53
+
54
+ ### Prerequisites
55
+
56
+ ```bash
57
+ # 1. Clone repository
58
+ git clone https://github.com/flightpath-dev/flightpath
59
+ cd flightpath
60
+
61
+ # 2. Install dependencies
62
+ go mod tidy
63
+ ```
64
+
65
+ ### Run with a PX4 SITL
66
+
67
+ ```bash
68
+ # 1. Start a PX4 SITL
69
+ See [PX4 SITL Setup](docs/px4-sitl-setup.md)
70
+
71
+ # 2. Run server
72
+ go run cmd/server/main.go
73
+
74
+ # 3. Monitor messages from the SITL
75
+ go run examples/monitor_heartbeat_flightpath/main.go
76
+ ```
77
+
78
+ ### Run with a drone connected to a serial port
79
+
80
+ ```bash
81
+ # 1. Turn on the drone
82
+
83
+ # 2. Run the server with a serial port configuration
84
+ export FLIGHTPATH_MAVLINK_ENDPOINT_TYPE=serial
85
+ export FLIGHTPATH_MAVLINK_SERIAL_DEVICE=/dev/cu.usbserial-D30JAXGS
86
+ export FLIGHTPATH_MAVLINK_SERIAL_BAUD=57600
87
+ go run cmd/server/main.go
88
+
89
+ # 3. Monitor messages from the drone
90
+ go run examples/monitor_heartbeat_flightpath/main.go
91
+ ```
92
+
93
+ ### Run with a drone connected over a UDP port
94
+
95
+ ```bash
96
+ # 1. Turn on the drone
97
+
98
+ # 2. Run the server with a UDP configuration
99
+ export FLIGHTPATH_MAVLINK_ENDPOINT_TYPE=udp-server
100
+ export FLIGHTPATH_MAVLINK_UDP_ADDRESS=0.0.0.0:14550
101
+ go run cmd/server/main.go
102
+
103
+ # 3. Monitor messages from the drone
104
+ go run examples/monitor_heartbeat_flightpath/main.go
105
+ ```
106
+
107
+ ## Development
108
+
109
+ ## License
110
+
111
+ MIT
@@ -0,0 +1,30 @@
1
+ // @generated by protoc-gen-connect-es v1.3.0 with parameter "target=ts"
2
+ // @generated from file flightpath/connection.proto (package flightpath, syntax proto3)
3
+ /* eslint-disable */
4
+ // @ts-nocheck
5
+
6
+ import { SubscribeHeartbeatRequest, SubscribeHeartbeatResponse } from "./connection_pb.js";
7
+ import { MethodKind } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * Handle drone connection
11
+ *
12
+ * @generated from service flightpath.ConnectionService
13
+ */
14
+ export const ConnectionService = {
15
+ typeName: "flightpath.ConnectionService",
16
+ methods: {
17
+ /**
18
+ * Subscribe to HEARTBEAT messages from the drone
19
+ *
20
+ * @generated from rpc flightpath.ConnectionService.SubscribeHeartbeat
21
+ */
22
+ subscribeHeartbeat: {
23
+ name: "SubscribeHeartbeat",
24
+ I: SubscribeHeartbeatRequest,
25
+ O: SubscribeHeartbeatResponse,
26
+ kind: MethodKind.ServerStreaming,
27
+ },
28
+ }
29
+ } as const;
30
+
@@ -0,0 +1,876 @@
1
+ // @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=.js"
2
+ // @generated from file flightpath/connection.proto (package flightpath, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
+ import type { Message } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * Describes the file flightpath/connection.proto.
11
+ */
12
+ export const file_flightpath_connection: GenFile = /*@__PURE__*/
13
+ fileDesc("ChtmbGlnaHRwYXRoL2Nvbm5lY3Rpb24ucHJvdG8SCmZsaWdodHBhdGgiGwoZU3Vic2NyaWJlSGVhcnRiZWF0UmVxdWVzdCKFAQoaU3Vic2NyaWJlSGVhcnRiZWF0UmVzcG9uc2USFAoMdGltZXN0YW1wX21zGAEgASgDEhEKCXN5c3RlbV9pZBgCIAEoDRIUCgxjb21wb25lbnRfaWQYAyABKA0SKAoJaGVhcnRiZWF0GAQgASgLMhUuZmxpZ2h0cGF0aC5IZWFydGJlYXQi9wEKCUhlYXJ0YmVhdBIhCgR0eXBlGAEgASgOMhMuZmxpZ2h0cGF0aC5NYXZUeXBlEisKCWF1dG9waWxvdBgCIAEoDjIYLmZsaWdodHBhdGguTWF2QXV0b3BpbG90EicKCWJhc2VfbW9kZRgDIAEoCzIULmZsaWdodHBhdGguQmFzZU1vZGUSKwoLY3VzdG9tX21vZGUYBCABKAsyFi5mbGlnaHRwYXRoLkN1c3RvbU1vZGUSKwoNc3lzdGVtX3N0YXR1cxgFIAEoDjIULmZsaWdodHBhdGguTWF2U3RhdGUSFwoPbWF2bGlua192ZXJzaW9uGAYgASgNIs8BCghCYXNlTW9kZRIbChNjdXN0b21fbW9kZV9lbmFibGVkGAEgASgIEhQKDHRlc3RfZW5hYmxlZBgCIAEoCBIUCgxhdXRvX2VuYWJsZWQYAyABKAgSFgoOZ3VpZGVkX2VuYWJsZWQYBCABKAgSGQoRc3RhYmlsaXplX2VuYWJsZWQYBSABKAgSEwoLaGlsX2VuYWJsZWQYBiABKAgSHAoUbWFudWFsX2lucHV0X2VuYWJsZWQYByABKAgSFAoMc2FmZXR5X2FybWVkGAggASgIIlwKCkN1c3RvbU1vZGUSJwoJbWFpbl9tb2RlGAEgASgOMhQuZmxpZ2h0cGF0aC5NYWluTW9kZRIlCghzdWJfbW9kZRgCIAEoDjITLmZsaWdodHBhdGguU3ViTW9kZSrrCQoHTWF2VHlwZRIYChRNQVZfVFlQRV9VTlNQRUNJRklFRBAAEhcKE01BVl9UWVBFX0ZJWEVEX1dJTkcQARIWChJNQVZfVFlQRV9RVUFEUk9UT1IQAhIUChBNQVZfVFlQRV9DT0FYSUFMEAMSFwoTTUFWX1RZUEVfSEVMSUNPUFRFUhAEEhwKGE1BVl9UWVBFX0FOVEVOTkFfVFJBQ0tFUhAFEhAKDE1BVl9UWVBFX0dDUxAGEhQKEE1BVl9UWVBFX0FJUlNISVAQBxIZChVNQVZfVFlQRV9GUkVFX0JBTExPT04QCBITCg9NQVZfVFlQRV9ST0NLRVQQCRIZChVNQVZfVFlQRV9HUk9VTkRfUk9WRVIQChIZChVNQVZfVFlQRV9TVVJGQUNFX0JPQVQQCxIWChJNQVZfVFlQRV9TVUJNQVJJTkUQDBIWChJNQVZfVFlQRV9IRVhBUk9UT1IQDRIWChJNQVZfVFlQRV9PQ1RPUk9UT1IQDhIWChJNQVZfVFlQRV9UUklDT1BURVIQDxIaChZNQVZfVFlQRV9GTEFQUElOR19XSU5HEBASEQoNTUFWX1RZUEVfS0lURRAREh8KG01BVl9UWVBFX09OQk9BUkRfQ09OVFJPTExFUhASEiUKIU1BVl9UWVBFX1ZUT0xfVEFJTFNJVFRFUl9EVU9ST1RPUhATEiYKIk1BVl9UWVBFX1ZUT0xfVEFJTFNJVFRFUl9RVUFEUk9UT1IQFBIbChdNQVZfVFlQRV9WVE9MX1RJTFRST1RPUhAVEhwKGE1BVl9UWVBFX1ZUT0xfRklYRURST1RPUhAWEhwKGE1BVl9UWVBFX1ZUT0xfVEFJTFNJVFRFUhAXEhoKFk1BVl9UWVBFX1ZUT0xfVElMVFdJTkcQGBIbChdNQVZfVFlQRV9WVE9MX1JFU0VSVkVENRAZEhMKD01BVl9UWVBFX0dJTUJBTBAaEhEKDU1BVl9UWVBFX0FEU0IQGxIVChFNQVZfVFlQRV9QQVJBRk9JTBAcEhgKFE1BVl9UWVBFX0RPREVDQVJPVE9SEB0SEwoPTUFWX1RZUEVfQ0FNRVJBEB4SHQoZTUFWX1RZUEVfQ0hBUkdJTkdfU1RBVElPThAfEhIKDk1BVl9UWVBFX0ZMQVJNECASEgoOTUFWX1RZUEVfU0VSVk8QIRIRCg1NQVZfVFlQRV9PRElEECISFgoSTUFWX1RZUEVfREVDQVJPVE9SECMSFAoQTUFWX1RZUEVfQkFUVEVSWRAkEhYKEk1BVl9UWVBFX1BBUkFDSFVURRAlEhAKDE1BVl9UWVBFX0xPRxAmEhAKDE1BVl9UWVBFX09TRBAnEhAKDE1BVl9UWVBFX0lNVRAoEhAKDE1BVl9UWVBFX0dQUxApEhIKDk1BVl9UWVBFX1dJTkNIECoSHwobTUFWX1RZUEVfR0VORVJJQ19NVUxUSVJPVE9SECsSGAoUTUFWX1RZUEVfSUxMVU1JTkFUT1IQLBIfChtNQVZfVFlQRV9TUEFDRUNSQUZUX09SQklURVIQLRIdChlNQVZfVFlQRV9HUk9VTkRfUVVBRFJVUEVEEC4SGgoWTUFWX1RZUEVfVlRPTF9HWVJPRFlORRAvEhQKEE1BVl9UWVBFX0dSSVBQRVIQMBISCg5NQVZfVFlQRV9SQURJTxAxKoMFCgxNYXZBdXRvcGlsb3QSHQoZTUFWX0FVVE9QSUxPVF9VTlNQRUNJRklFRBAAEhoKFk1BVl9BVVRPUElMT1RfUkVTRVJWRUQQARIXChNNQVZfQVVUT1BJTE9UX1NMVUdTEAISHwobTUFWX0FVVE9QSUxPVF9BUkRVUElMT1RNRUdBEAMSGwoXTUFWX0FVVE9QSUxPVF9PUEVOUElMT1QQBBIoCiRNQVZfQVVUT1BJTE9UX0dFTkVSSUNfV0FZUE9JTlRTX09OTFkQBRI+CjpNQVZfQVVUT1BJTE9UX0dFTkVSSUNfV0FZUE9JTlRTX0FORF9TSU1QTEVfTkFWSUdBVElPTl9PTkxZEAYSJgoiTUFWX0FVVE9QSUxPVF9HRU5FUklDX01JU1NJT05fRlVMTBAHEhkKFU1BVl9BVVRPUElMT1RfSU5WQUxJRBAIEhUKEU1BVl9BVVRPUElMT1RfUFBaEAkSFQoRTUFWX0FVVE9QSUxPVF9VREIQChIUChBNQVZfQVVUT1BJTE9UX0ZQEAsSFQoRTUFWX0FVVE9QSUxPVF9QWDQQDBIdChlNQVZfQVVUT1BJTE9UX1NNQUNDTVBJTE9UEA0SGgoWTUFWX0FVVE9QSUxPVF9BVVRPUVVBRBAOEhoKFk1BVl9BVVRPUElMT1RfQVJNQVpJTEEQDxIXChNNQVZfQVVUT1BJTE9UX0FFUk9CEBASGAoUTUFWX0FVVE9QSUxPVF9BU0xVQVYQERIZChVNQVZfQVVUT1BJTE9UX1NNQVJUQVAQEhIaChZNQVZfQVVUT1BJTE9UX0FJUlJBSUxTEBMSGAoUTUFWX0FVVE9QSUxPVF9SRUZMRVgQFCrsAQoITWF2U3RhdGUSGQoVTUFWX1NUQVRFX1VOU1BFQ0lGSUVEEAASEgoOTUFWX1NUQVRFX0JPT1QQARIZChVNQVZfU1RBVEVfQ0FMSUJSQVRJTkcQAhIVChFNQVZfU1RBVEVfU1RBTkRCWRADEhQKEE1BVl9TVEFURV9BQ1RJVkUQBBIWChJNQVZfU1RBVEVfQ1JJVElDQUwQBRIXChNNQVZfU1RBVEVfRU1FUkdFTkNZEAYSFgoSTUFWX1NUQVRFX1BPV0VST0ZGEAcSIAocTUFWX1NUQVRFX0ZMSUdIVF9URVJNSU5BVElPThAIKrECCghNYWluTW9kZRIZChVNQUlOX01PREVfVU5TUEVDSUZJRUQQABIUChBNQUlOX01PREVfTUFOVUFMEAESFAoQTUFJTl9NT0RFX0FMVENUTBACEhQKEE1BSU5fTU9ERV9QT1NDVEwQAxISCg5NQUlOX01PREVfQVVUTxAEEhIKDk1BSU5fTU9ERV9BQ1JPEAUSFgoSTUFJTl9NT0RFX09GRkJPQVJEEAYSGAoUTUFJTl9NT0RFX1NUQUJJTElaRUQQBxIeChpNQUlOX01PREVfUkFUVElUVURFX0xFR0FDWRAIEhQKEE1BSU5fTU9ERV9TSU1QTEUQCRIZChVNQUlOX01PREVfVEVSTUlOQVRJT04QChIdChlNQUlOX01PREVfQUxUSVRVREVfQ1JVSVNFEAsqqQQKB1N1Yk1vZGUSGAoUU1VCX01PREVfVU5TUEVDSUZJRUQQABIXChNTVUJfTU9ERV9BVVRPX1JFQURZEAESGQoVU1VCX01PREVfQVVUT19UQUtFT0ZGEAISGAoUU1VCX01PREVfQVVUT19MT0lURVIQAxIZChVTVUJfTU9ERV9BVVRPX01JU1NJT04QBBIVChFTVUJfTU9ERV9BVVRPX1JUTBAFEhYKElNVQl9NT0RFX0FVVE9fTEFORBAGEh8KG1NVQl9NT0RFX0FVVE9fRk9MTE9XX1RBUkdFVBAHEhoKFlNVQl9NT0RFX0FVVE9fUFJFQ0xBTkQQCBIeChpTVUJfTU9ERV9BVVRPX1ZUT0xfVEFLRU9GRhAJEhoKFlNVQl9NT0RFX1BPU0NUTF9QT1NDVEwQChIZChVTVUJfTU9ERV9QT1NDVExfT1JCSVQQCxIYChRTVUJfTU9ERV9QT1NDVExfU0xPVxAMEhYKElNVQl9NT0RFX0VYVEVSTkFMMRANEhYKElNVQl9NT0RFX0VYVEVSTkFMMhAOEhYKElNVQl9NT0RFX0VYVEVSTkFMMxAPEhYKElNVQl9NT0RFX0VYVEVSTkFMNBAQEhYKElNVQl9NT0RFX0VYVEVSTkFMNRAREhYKElNVQl9NT0RFX0VYVEVSTkFMNhASEhYKElNVQl9NT0RFX0VYVEVSTkFMNxATEhYKElNVQl9NT0RFX0VYVEVSTkFMOBAUMnoKEUNvbm5lY3Rpb25TZXJ2aWNlEmUKElN1YnNjcmliZUhlYXJ0YmVhdBIlLmZsaWdodHBhdGguU3Vic2NyaWJlSGVhcnRiZWF0UmVxdWVzdBomLmZsaWdodHBhdGguU3Vic2NyaWJlSGVhcnRiZWF0UmVzcG9uc2UwAUJDWkFnaXRodWIuY29tL2ZsaWdodHBhdGgtZGV2L2ZsaWdodHBhdGgvZ2VuL2dvL2ZsaWdodHBhdGg7ZmxpZ2h0cGF0aGIGcHJvdG8z");
14
+
15
+ /**
16
+ * @generated from message flightpath.SubscribeHeartbeatRequest
17
+ */
18
+ export type SubscribeHeartbeatRequest = Message<"flightpath.SubscribeHeartbeatRequest"> & {
19
+ };
20
+
21
+ /**
22
+ * Describes the message flightpath.SubscribeHeartbeatRequest.
23
+ * Use `create(SubscribeHeartbeatRequestSchema)` to create a new message.
24
+ */
25
+ export const SubscribeHeartbeatRequestSchema: GenMessage<SubscribeHeartbeatRequest> = /*@__PURE__*/
26
+ messageDesc(file_flightpath_connection, 0);
27
+
28
+ /**
29
+ * @generated from message flightpath.SubscribeHeartbeatResponse
30
+ */
31
+ export type SubscribeHeartbeatResponse = Message<"flightpath.SubscribeHeartbeatResponse"> & {
32
+ /**
33
+ * Timestamp when this heartbeat data was captured (milliseconds since Unix epoch)
34
+ *
35
+ * @generated from field: int64 timestamp_ms = 1;
36
+ */
37
+ timestampMs: bigint;
38
+
39
+ /**
40
+ * System ID of the component sending the heartbeat
41
+ *
42
+ * @generated from field: uint32 system_id = 2;
43
+ */
44
+ systemId: number;
45
+
46
+ /**
47
+ * Component ID of the component sending the heartbeat
48
+ *
49
+ * @generated from field: uint32 component_id = 3;
50
+ */
51
+ componentId: number;
52
+
53
+ /**
54
+ * Heartbeat message data
55
+ *
56
+ * @generated from field: flightpath.Heartbeat heartbeat = 4;
57
+ */
58
+ heartbeat?: Heartbeat;
59
+ };
60
+
61
+ /**
62
+ * Describes the message flightpath.SubscribeHeartbeatResponse.
63
+ * Use `create(SubscribeHeartbeatResponseSchema)` to create a new message.
64
+ */
65
+ export const SubscribeHeartbeatResponseSchema: GenMessage<SubscribeHeartbeatResponse> = /*@__PURE__*/
66
+ messageDesc(file_flightpath_connection, 1);
67
+
68
+ /**
69
+ * @generated from message flightpath.Heartbeat
70
+ */
71
+ export type Heartbeat = Message<"flightpath.Heartbeat"> & {
72
+ /**
73
+ * Vehicle type
74
+ *
75
+ * @generated from field: flightpath.MavType type = 1;
76
+ */
77
+ type: MavType;
78
+
79
+ /**
80
+ * Autopilot type
81
+ *
82
+ * @generated from field: flightpath.MavAutopilot autopilot = 2;
83
+ */
84
+ autopilot: MavAutopilot;
85
+
86
+ /**
87
+ * Base mode flags (structured bitfield)
88
+ *
89
+ * @generated from field: flightpath.BaseMode base_mode = 3;
90
+ */
91
+ baseMode?: BaseMode;
92
+
93
+ /**
94
+ * Custom mode (platform-agnostic abstraction based on PX4)
95
+ *
96
+ * @generated from field: flightpath.CustomMode custom_mode = 4;
97
+ */
98
+ customMode?: CustomMode;
99
+
100
+ /**
101
+ * System status
102
+ *
103
+ * @generated from field: flightpath.MavState system_status = 5;
104
+ */
105
+ systemStatus: MavState;
106
+
107
+ /**
108
+ * MAVLink protocol version
109
+ *
110
+ * @generated from field: uint32 mavlink_version = 6;
111
+ */
112
+ mavlinkVersion: number;
113
+ };
114
+
115
+ /**
116
+ * Describes the message flightpath.Heartbeat.
117
+ * Use `create(HeartbeatSchema)` to create a new message.
118
+ */
119
+ export const HeartbeatSchema: GenMessage<Heartbeat> = /*@__PURE__*/
120
+ messageDesc(file_flightpath_connection, 2);
121
+
122
+ /**
123
+ * BaseMode represents the MAV_MODE_FLAG bitfield as structured boolean flags.
124
+ * Bits are ordered from least significant (bit 0) to most significant (bit 7),
125
+ * matching https://mavlink.io/en/messages/common.html#MAV_MODE_FLAG.
126
+ *
127
+ * @generated from message flightpath.BaseMode
128
+ */
129
+ export type BaseMode = Message<"flightpath.BaseMode"> & {
130
+ /**
131
+ * Bit 0 (1): Custom mode is enabled
132
+ *
133
+ * @generated from field: bool custom_mode_enabled = 1;
134
+ */
135
+ customModeEnabled: boolean;
136
+
137
+ /**
138
+ * Bit 1 (2): Test mode enabled
139
+ *
140
+ * @generated from field: bool test_enabled = 2;
141
+ */
142
+ testEnabled: boolean;
143
+
144
+ /**
145
+ * Bit 2 (4): Autonomous mode enabled
146
+ *
147
+ * @generated from field: bool auto_enabled = 3;
148
+ */
149
+ autoEnabled: boolean;
150
+
151
+ /**
152
+ * Bit 3 (8): Guided mode enabled
153
+ *
154
+ * @generated from field: bool guided_enabled = 4;
155
+ */
156
+ guidedEnabled: boolean;
157
+
158
+ /**
159
+ * Bit 4 (16): Stabilize mode enabled
160
+ *
161
+ * @generated from field: bool stabilize_enabled = 5;
162
+ */
163
+ stabilizeEnabled: boolean;
164
+
165
+ /**
166
+ * Bit 5 (32): Hardware in the loop simulation enabled
167
+ *
168
+ * @generated from field: bool hil_enabled = 6;
169
+ */
170
+ hilEnabled: boolean;
171
+
172
+ /**
173
+ * Bit 6 (64): Manual input is enabled
174
+ *
175
+ * @generated from field: bool manual_input_enabled = 7;
176
+ */
177
+ manualInputEnabled: boolean;
178
+
179
+ /**
180
+ * Bit 7 (128): Safety switch is currently engaged (armed)
181
+ *
182
+ * @generated from field: bool safety_armed = 8;
183
+ */
184
+ safetyArmed: boolean;
185
+ };
186
+
187
+ /**
188
+ * Describes the message flightpath.BaseMode.
189
+ * Use `create(BaseModeSchema)` to create a new message.
190
+ */
191
+ export const BaseModeSchema: GenMessage<BaseMode> = /*@__PURE__*/
192
+ messageDesc(file_flightpath_connection, 3);
193
+
194
+ /**
195
+ * CustomMode represents flight mode as platform-agnostic abstractions
196
+ *
197
+ * @generated from message flightpath.CustomMode
198
+ */
199
+ export type CustomMode = Message<"flightpath.CustomMode"> & {
200
+ /**
201
+ * Main flight mode
202
+ *
203
+ * @generated from field: flightpath.MainMode main_mode = 1;
204
+ */
205
+ mainMode: MainMode;
206
+
207
+ /**
208
+ * Sub mode (context-dependent based on main mode)
209
+ *
210
+ * @generated from field: flightpath.SubMode sub_mode = 2;
211
+ */
212
+ subMode: SubMode;
213
+ };
214
+
215
+ /**
216
+ * Describes the message flightpath.CustomMode.
217
+ * Use `create(CustomModeSchema)` to create a new message.
218
+ */
219
+ export const CustomModeSchema: GenMessage<CustomMode> = /*@__PURE__*/
220
+ messageDesc(file_flightpath_connection, 4);
221
+
222
+ /**
223
+ * MavType represents vehicle types from MAVLink MAV_TYPE enum
224
+ *
225
+ * @generated from enum flightpath.MavType
226
+ */
227
+ export enum MavType {
228
+ /**
229
+ * @generated from enum value: MAV_TYPE_UNSPECIFIED = 0;
230
+ */
231
+ UNSPECIFIED = 0,
232
+
233
+ /**
234
+ * @generated from enum value: MAV_TYPE_FIXED_WING = 1;
235
+ */
236
+ FIXED_WING = 1,
237
+
238
+ /**
239
+ * @generated from enum value: MAV_TYPE_QUADROTOR = 2;
240
+ */
241
+ QUADROTOR = 2,
242
+
243
+ /**
244
+ * @generated from enum value: MAV_TYPE_COAXIAL = 3;
245
+ */
246
+ COAXIAL = 3,
247
+
248
+ /**
249
+ * @generated from enum value: MAV_TYPE_HELICOPTER = 4;
250
+ */
251
+ HELICOPTER = 4,
252
+
253
+ /**
254
+ * @generated from enum value: MAV_TYPE_ANTENNA_TRACKER = 5;
255
+ */
256
+ ANTENNA_TRACKER = 5,
257
+
258
+ /**
259
+ * @generated from enum value: MAV_TYPE_GCS = 6;
260
+ */
261
+ GCS = 6,
262
+
263
+ /**
264
+ * @generated from enum value: MAV_TYPE_AIRSHIP = 7;
265
+ */
266
+ AIRSHIP = 7,
267
+
268
+ /**
269
+ * @generated from enum value: MAV_TYPE_FREE_BALLOON = 8;
270
+ */
271
+ FREE_BALLOON = 8,
272
+
273
+ /**
274
+ * @generated from enum value: MAV_TYPE_ROCKET = 9;
275
+ */
276
+ ROCKET = 9,
277
+
278
+ /**
279
+ * @generated from enum value: MAV_TYPE_GROUND_ROVER = 10;
280
+ */
281
+ GROUND_ROVER = 10,
282
+
283
+ /**
284
+ * @generated from enum value: MAV_TYPE_SURFACE_BOAT = 11;
285
+ */
286
+ SURFACE_BOAT = 11,
287
+
288
+ /**
289
+ * @generated from enum value: MAV_TYPE_SUBMARINE = 12;
290
+ */
291
+ SUBMARINE = 12,
292
+
293
+ /**
294
+ * @generated from enum value: MAV_TYPE_HEXAROTOR = 13;
295
+ */
296
+ HEXAROTOR = 13,
297
+
298
+ /**
299
+ * @generated from enum value: MAV_TYPE_OCTOROTOR = 14;
300
+ */
301
+ OCTOROTOR = 14,
302
+
303
+ /**
304
+ * @generated from enum value: MAV_TYPE_TRICOPTER = 15;
305
+ */
306
+ TRICOPTER = 15,
307
+
308
+ /**
309
+ * @generated from enum value: MAV_TYPE_FLAPPING_WING = 16;
310
+ */
311
+ FLAPPING_WING = 16,
312
+
313
+ /**
314
+ * @generated from enum value: MAV_TYPE_KITE = 17;
315
+ */
316
+ KITE = 17,
317
+
318
+ /**
319
+ * @generated from enum value: MAV_TYPE_ONBOARD_CONTROLLER = 18;
320
+ */
321
+ ONBOARD_CONTROLLER = 18,
322
+
323
+ /**
324
+ * @generated from enum value: MAV_TYPE_VTOL_TAILSITTER_DUOROTOR = 19;
325
+ */
326
+ VTOL_TAILSITTER_DUOROTOR = 19,
327
+
328
+ /**
329
+ * @generated from enum value: MAV_TYPE_VTOL_TAILSITTER_QUADROTOR = 20;
330
+ */
331
+ VTOL_TAILSITTER_QUADROTOR = 20,
332
+
333
+ /**
334
+ * @generated from enum value: MAV_TYPE_VTOL_TILTROTOR = 21;
335
+ */
336
+ VTOL_TILTROTOR = 21,
337
+
338
+ /**
339
+ * @generated from enum value: MAV_TYPE_VTOL_FIXEDROTOR = 22;
340
+ */
341
+ VTOL_FIXEDROTOR = 22,
342
+
343
+ /**
344
+ * @generated from enum value: MAV_TYPE_VTOL_TAILSITTER = 23;
345
+ */
346
+ VTOL_TAILSITTER = 23,
347
+
348
+ /**
349
+ * @generated from enum value: MAV_TYPE_VTOL_TILTWING = 24;
350
+ */
351
+ VTOL_TILTWING = 24,
352
+
353
+ /**
354
+ * @generated from enum value: MAV_TYPE_VTOL_RESERVED5 = 25;
355
+ */
356
+ VTOL_RESERVED5 = 25,
357
+
358
+ /**
359
+ * @generated from enum value: MAV_TYPE_GIMBAL = 26;
360
+ */
361
+ GIMBAL = 26,
362
+
363
+ /**
364
+ * @generated from enum value: MAV_TYPE_ADSB = 27;
365
+ */
366
+ ADSB = 27,
367
+
368
+ /**
369
+ * @generated from enum value: MAV_TYPE_PARAFOIL = 28;
370
+ */
371
+ PARAFOIL = 28,
372
+
373
+ /**
374
+ * @generated from enum value: MAV_TYPE_DODECAROTOR = 29;
375
+ */
376
+ DODECAROTOR = 29,
377
+
378
+ /**
379
+ * @generated from enum value: MAV_TYPE_CAMERA = 30;
380
+ */
381
+ CAMERA = 30,
382
+
383
+ /**
384
+ * @generated from enum value: MAV_TYPE_CHARGING_STATION = 31;
385
+ */
386
+ CHARGING_STATION = 31,
387
+
388
+ /**
389
+ * @generated from enum value: MAV_TYPE_FLARM = 32;
390
+ */
391
+ FLARM = 32,
392
+
393
+ /**
394
+ * @generated from enum value: MAV_TYPE_SERVO = 33;
395
+ */
396
+ SERVO = 33,
397
+
398
+ /**
399
+ * @generated from enum value: MAV_TYPE_ODID = 34;
400
+ */
401
+ ODID = 34,
402
+
403
+ /**
404
+ * @generated from enum value: MAV_TYPE_DECAROTOR = 35;
405
+ */
406
+ DECAROTOR = 35,
407
+
408
+ /**
409
+ * @generated from enum value: MAV_TYPE_BATTERY = 36;
410
+ */
411
+ BATTERY = 36,
412
+
413
+ /**
414
+ * @generated from enum value: MAV_TYPE_PARACHUTE = 37;
415
+ */
416
+ PARACHUTE = 37,
417
+
418
+ /**
419
+ * @generated from enum value: MAV_TYPE_LOG = 38;
420
+ */
421
+ LOG = 38,
422
+
423
+ /**
424
+ * @generated from enum value: MAV_TYPE_OSD = 39;
425
+ */
426
+ OSD = 39,
427
+
428
+ /**
429
+ * @generated from enum value: MAV_TYPE_IMU = 40;
430
+ */
431
+ IMU = 40,
432
+
433
+ /**
434
+ * @generated from enum value: MAV_TYPE_GPS = 41;
435
+ */
436
+ GPS = 41,
437
+
438
+ /**
439
+ * @generated from enum value: MAV_TYPE_WINCH = 42;
440
+ */
441
+ WINCH = 42,
442
+
443
+ /**
444
+ * @generated from enum value: MAV_TYPE_GENERIC_MULTIROTOR = 43;
445
+ */
446
+ GENERIC_MULTIROTOR = 43,
447
+
448
+ /**
449
+ * @generated from enum value: MAV_TYPE_ILLUMINATOR = 44;
450
+ */
451
+ ILLUMINATOR = 44,
452
+
453
+ /**
454
+ * @generated from enum value: MAV_TYPE_SPACECRAFT_ORBITER = 45;
455
+ */
456
+ SPACECRAFT_ORBITER = 45,
457
+
458
+ /**
459
+ * @generated from enum value: MAV_TYPE_GROUND_QUADRUPED = 46;
460
+ */
461
+ GROUND_QUADRUPED = 46,
462
+
463
+ /**
464
+ * @generated from enum value: MAV_TYPE_VTOL_GYRODYNE = 47;
465
+ */
466
+ VTOL_GYRODYNE = 47,
467
+
468
+ /**
469
+ * @generated from enum value: MAV_TYPE_GRIPPER = 48;
470
+ */
471
+ GRIPPER = 48,
472
+
473
+ /**
474
+ * @generated from enum value: MAV_TYPE_RADIO = 49;
475
+ */
476
+ RADIO = 49,
477
+ }
478
+
479
+ /**
480
+ * Describes the enum flightpath.MavType.
481
+ */
482
+ export const MavTypeSchema: GenEnum<MavType> = /*@__PURE__*/
483
+ enumDesc(file_flightpath_connection, 0);
484
+
485
+ /**
486
+ * MavAutopilot represents autopilot types from MAVLink MAV_AUTOPILOT enum
487
+ *
488
+ * @generated from enum flightpath.MavAutopilot
489
+ */
490
+ export enum MavAutopilot {
491
+ /**
492
+ * @generated from enum value: MAV_AUTOPILOT_UNSPECIFIED = 0;
493
+ */
494
+ UNSPECIFIED = 0,
495
+
496
+ /**
497
+ * @generated from enum value: MAV_AUTOPILOT_RESERVED = 1;
498
+ */
499
+ RESERVED = 1,
500
+
501
+ /**
502
+ * @generated from enum value: MAV_AUTOPILOT_SLUGS = 2;
503
+ */
504
+ SLUGS = 2,
505
+
506
+ /**
507
+ * @generated from enum value: MAV_AUTOPILOT_ARDUPILOTMEGA = 3;
508
+ */
509
+ ARDUPILOTMEGA = 3,
510
+
511
+ /**
512
+ * @generated from enum value: MAV_AUTOPILOT_OPENPILOT = 4;
513
+ */
514
+ OPENPILOT = 4,
515
+
516
+ /**
517
+ * @generated from enum value: MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY = 5;
518
+ */
519
+ GENERIC_WAYPOINTS_ONLY = 5,
520
+
521
+ /**
522
+ * @generated from enum value: MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6;
523
+ */
524
+ GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6,
525
+
526
+ /**
527
+ * @generated from enum value: MAV_AUTOPILOT_GENERIC_MISSION_FULL = 7;
528
+ */
529
+ GENERIC_MISSION_FULL = 7,
530
+
531
+ /**
532
+ * @generated from enum value: MAV_AUTOPILOT_INVALID = 8;
533
+ */
534
+ INVALID = 8,
535
+
536
+ /**
537
+ * @generated from enum value: MAV_AUTOPILOT_PPZ = 9;
538
+ */
539
+ PPZ = 9,
540
+
541
+ /**
542
+ * @generated from enum value: MAV_AUTOPILOT_UDB = 10;
543
+ */
544
+ UDB = 10,
545
+
546
+ /**
547
+ * @generated from enum value: MAV_AUTOPILOT_FP = 11;
548
+ */
549
+ FP = 11,
550
+
551
+ /**
552
+ * @generated from enum value: MAV_AUTOPILOT_PX4 = 12;
553
+ */
554
+ PX4 = 12,
555
+
556
+ /**
557
+ * @generated from enum value: MAV_AUTOPILOT_SMACCMPILOT = 13;
558
+ */
559
+ SMACCMPILOT = 13,
560
+
561
+ /**
562
+ * @generated from enum value: MAV_AUTOPILOT_AUTOQUAD = 14;
563
+ */
564
+ AUTOQUAD = 14,
565
+
566
+ /**
567
+ * @generated from enum value: MAV_AUTOPILOT_ARMAZILA = 15;
568
+ */
569
+ ARMAZILA = 15,
570
+
571
+ /**
572
+ * @generated from enum value: MAV_AUTOPILOT_AEROB = 16;
573
+ */
574
+ AEROB = 16,
575
+
576
+ /**
577
+ * @generated from enum value: MAV_AUTOPILOT_ASLUAV = 17;
578
+ */
579
+ ASLUAV = 17,
580
+
581
+ /**
582
+ * @generated from enum value: MAV_AUTOPILOT_SMARTAP = 18;
583
+ */
584
+ SMARTAP = 18,
585
+
586
+ /**
587
+ * @generated from enum value: MAV_AUTOPILOT_AIRRAILS = 19;
588
+ */
589
+ AIRRAILS = 19,
590
+
591
+ /**
592
+ * @generated from enum value: MAV_AUTOPILOT_REFLEX = 20;
593
+ */
594
+ REFLEX = 20,
595
+ }
596
+
597
+ /**
598
+ * Describes the enum flightpath.MavAutopilot.
599
+ */
600
+ export const MavAutopilotSchema: GenEnum<MavAutopilot> = /*@__PURE__*/
601
+ enumDesc(file_flightpath_connection, 1);
602
+
603
+ /**
604
+ * MavState represents system states from MAVLink MAV_STATE enum
605
+ *
606
+ * @generated from enum flightpath.MavState
607
+ */
608
+ export enum MavState {
609
+ /**
610
+ * @generated from enum value: MAV_STATE_UNSPECIFIED = 0;
611
+ */
612
+ UNSPECIFIED = 0,
613
+
614
+ /**
615
+ * @generated from enum value: MAV_STATE_BOOT = 1;
616
+ */
617
+ BOOT = 1,
618
+
619
+ /**
620
+ * @generated from enum value: MAV_STATE_CALIBRATING = 2;
621
+ */
622
+ CALIBRATING = 2,
623
+
624
+ /**
625
+ * @generated from enum value: MAV_STATE_STANDBY = 3;
626
+ */
627
+ STANDBY = 3,
628
+
629
+ /**
630
+ * @generated from enum value: MAV_STATE_ACTIVE = 4;
631
+ */
632
+ ACTIVE = 4,
633
+
634
+ /**
635
+ * @generated from enum value: MAV_STATE_CRITICAL = 5;
636
+ */
637
+ CRITICAL = 5,
638
+
639
+ /**
640
+ * @generated from enum value: MAV_STATE_EMERGENCY = 6;
641
+ */
642
+ EMERGENCY = 6,
643
+
644
+ /**
645
+ * @generated from enum value: MAV_STATE_POWEROFF = 7;
646
+ */
647
+ POWEROFF = 7,
648
+
649
+ /**
650
+ * @generated from enum value: MAV_STATE_FLIGHT_TERMINATION = 8;
651
+ */
652
+ FLIGHT_TERMINATION = 8,
653
+ }
654
+
655
+ /**
656
+ * Describes the enum flightpath.MavState.
657
+ */
658
+ export const MavStateSchema: GenEnum<MavState> = /*@__PURE__*/
659
+ enumDesc(file_flightpath_connection, 2);
660
+
661
+ /**
662
+ * MainMode represents main flight modes (platform-agnostic abstraction based on PX4)
663
+ *
664
+ * @generated from enum flightpath.MainMode
665
+ */
666
+ export enum MainMode {
667
+ /**
668
+ * @generated from enum value: MAIN_MODE_UNSPECIFIED = 0;
669
+ */
670
+ UNSPECIFIED = 0,
671
+
672
+ /**
673
+ * @generated from enum value: MAIN_MODE_MANUAL = 1;
674
+ */
675
+ MANUAL = 1,
676
+
677
+ /**
678
+ * @generated from enum value: MAIN_MODE_ALTCTL = 2;
679
+ */
680
+ ALTCTL = 2,
681
+
682
+ /**
683
+ * @generated from enum value: MAIN_MODE_POSCTL = 3;
684
+ */
685
+ POSCTL = 3,
686
+
687
+ /**
688
+ * @generated from enum value: MAIN_MODE_AUTO = 4;
689
+ */
690
+ AUTO = 4,
691
+
692
+ /**
693
+ * @generated from enum value: MAIN_MODE_ACRO = 5;
694
+ */
695
+ ACRO = 5,
696
+
697
+ /**
698
+ * @generated from enum value: MAIN_MODE_OFFBOARD = 6;
699
+ */
700
+ OFFBOARD = 6,
701
+
702
+ /**
703
+ * @generated from enum value: MAIN_MODE_STABILIZED = 7;
704
+ */
705
+ STABILIZED = 7,
706
+
707
+ /**
708
+ * @generated from enum value: MAIN_MODE_RATTITUDE_LEGACY = 8;
709
+ */
710
+ RATTITUDE_LEGACY = 8,
711
+
712
+ /**
713
+ * @generated from enum value: MAIN_MODE_SIMPLE = 9;
714
+ */
715
+ SIMPLE = 9,
716
+
717
+ /**
718
+ * @generated from enum value: MAIN_MODE_TERMINATION = 10;
719
+ */
720
+ TERMINATION = 10,
721
+
722
+ /**
723
+ * @generated from enum value: MAIN_MODE_ALTITUDE_CRUISE = 11;
724
+ */
725
+ ALTITUDE_CRUISE = 11,
726
+ }
727
+
728
+ /**
729
+ * Describes the enum flightpath.MainMode.
730
+ */
731
+ export const MainModeSchema: GenEnum<MainMode> = /*@__PURE__*/
732
+ enumDesc(file_flightpath_connection, 3);
733
+
734
+ /**
735
+ * SubMode represents sub flight modes (platform-agnostic abstraction based on PX4)
736
+ *
737
+ * @generated from enum flightpath.SubMode
738
+ */
739
+ export enum SubMode {
740
+ /**
741
+ * @generated from enum value: SUB_MODE_UNSPECIFIED = 0;
742
+ */
743
+ UNSPECIFIED = 0,
744
+
745
+ /**
746
+ * AUTO mode sub-modes
747
+ *
748
+ * @generated from enum value: SUB_MODE_AUTO_READY = 1;
749
+ */
750
+ AUTO_READY = 1,
751
+
752
+ /**
753
+ * @generated from enum value: SUB_MODE_AUTO_TAKEOFF = 2;
754
+ */
755
+ AUTO_TAKEOFF = 2,
756
+
757
+ /**
758
+ * @generated from enum value: SUB_MODE_AUTO_LOITER = 3;
759
+ */
760
+ AUTO_LOITER = 3,
761
+
762
+ /**
763
+ * @generated from enum value: SUB_MODE_AUTO_MISSION = 4;
764
+ */
765
+ AUTO_MISSION = 4,
766
+
767
+ /**
768
+ * @generated from enum value: SUB_MODE_AUTO_RTL = 5;
769
+ */
770
+ AUTO_RTL = 5,
771
+
772
+ /**
773
+ * @generated from enum value: SUB_MODE_AUTO_LAND = 6;
774
+ */
775
+ AUTO_LAND = 6,
776
+
777
+ /**
778
+ * @generated from enum value: SUB_MODE_AUTO_FOLLOW_TARGET = 7;
779
+ */
780
+ AUTO_FOLLOW_TARGET = 7,
781
+
782
+ /**
783
+ * @generated from enum value: SUB_MODE_AUTO_PRECLAND = 8;
784
+ */
785
+ AUTO_PRECLAND = 8,
786
+
787
+ /**
788
+ * @generated from enum value: SUB_MODE_AUTO_VTOL_TAKEOFF = 9;
789
+ */
790
+ AUTO_VTOL_TAKEOFF = 9,
791
+
792
+ /**
793
+ * POSCTL mode sub-modes
794
+ *
795
+ * @generated from enum value: SUB_MODE_POSCTL_POSCTL = 10;
796
+ */
797
+ POSCTL_POSCTL = 10,
798
+
799
+ /**
800
+ * @generated from enum value: SUB_MODE_POSCTL_ORBIT = 11;
801
+ */
802
+ POSCTL_ORBIT = 11,
803
+
804
+ /**
805
+ * @generated from enum value: SUB_MODE_POSCTL_SLOW = 12;
806
+ */
807
+ POSCTL_SLOW = 12,
808
+
809
+ /**
810
+ * External sub-modes
811
+ *
812
+ * @generated from enum value: SUB_MODE_EXTERNAL1 = 13;
813
+ */
814
+ EXTERNAL1 = 13,
815
+
816
+ /**
817
+ * @generated from enum value: SUB_MODE_EXTERNAL2 = 14;
818
+ */
819
+ EXTERNAL2 = 14,
820
+
821
+ /**
822
+ * @generated from enum value: SUB_MODE_EXTERNAL3 = 15;
823
+ */
824
+ EXTERNAL3 = 15,
825
+
826
+ /**
827
+ * @generated from enum value: SUB_MODE_EXTERNAL4 = 16;
828
+ */
829
+ EXTERNAL4 = 16,
830
+
831
+ /**
832
+ * @generated from enum value: SUB_MODE_EXTERNAL5 = 17;
833
+ */
834
+ EXTERNAL5 = 17,
835
+
836
+ /**
837
+ * @generated from enum value: SUB_MODE_EXTERNAL6 = 18;
838
+ */
839
+ EXTERNAL6 = 18,
840
+
841
+ /**
842
+ * @generated from enum value: SUB_MODE_EXTERNAL7 = 19;
843
+ */
844
+ EXTERNAL7 = 19,
845
+
846
+ /**
847
+ * @generated from enum value: SUB_MODE_EXTERNAL8 = 20;
848
+ */
849
+ EXTERNAL8 = 20,
850
+ }
851
+
852
+ /**
853
+ * Describes the enum flightpath.SubMode.
854
+ */
855
+ export const SubModeSchema: GenEnum<SubMode> = /*@__PURE__*/
856
+ enumDesc(file_flightpath_connection, 4);
857
+
858
+ /**
859
+ * Handle drone connection
860
+ *
861
+ * @generated from service flightpath.ConnectionService
862
+ */
863
+ export const ConnectionService: GenService<{
864
+ /**
865
+ * Subscribe to HEARTBEAT messages from the drone
866
+ *
867
+ * @generated from rpc flightpath.ConnectionService.SubscribeHeartbeat
868
+ */
869
+ subscribeHeartbeat: {
870
+ methodKind: "server_streaming";
871
+ input: typeof SubscribeHeartbeatRequestSchema;
872
+ output: typeof SubscribeHeartbeatResponseSchema;
873
+ },
874
+ }> = /*@__PURE__*/
875
+ serviceDesc(file_flightpath_connection, 0);
876
+
@@ -0,0 +1,30 @@
1
+ // @generated by protoc-gen-connect-es v1.3.0 with parameter "target=ts"
2
+ // @generated from file flightpath/telemetry.proto (package flightpath, syntax proto3)
3
+ /* eslint-disable */
4
+ // @ts-nocheck
5
+
6
+ import { SubscribeRawGpsRequest, SubscribeRawGpsResponse } from "./telemetry_pb.js";
7
+ import { MethodKind } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * Real-time telemetry data (position, attitude, sensors, status)
11
+ *
12
+ * @generated from service flightpath.TelemetryService
13
+ */
14
+ export const TelemetryService = {
15
+ typeName: "flightpath.TelemetryService",
16
+ methods: {
17
+ /**
18
+ * Subscribe to GPS_RAW_INT messages from the drone
19
+ *
20
+ * @generated from rpc flightpath.TelemetryService.SubscribeRawGps
21
+ */
22
+ subscribeRawGps: {
23
+ name: "SubscribeRawGps",
24
+ I: SubscribeRawGpsRequest,
25
+ O: SubscribeRawGpsResponse,
26
+ kind: MethodKind.ServerStreaming,
27
+ },
28
+ }
29
+ } as const;
30
+
@@ -0,0 +1,282 @@
1
+ // @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=.js"
2
+ // @generated from file flightpath/telemetry.proto (package flightpath, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
+ import type { Message } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * Describes the file flightpath/telemetry.proto.
11
+ */
12
+ export const file_flightpath_telemetry: GenFile = /*@__PURE__*/
13
+ fileDesc("ChpmbGlnaHRwYXRoL3RlbGVtZXRyeS5wcm90bxIKZmxpZ2h0cGF0aCIYChZTdWJzY3JpYmVSYXdHcHNSZXF1ZXN0IoQBChdTdWJzY3JpYmVSYXdHcHNSZXNwb25zZRIUCgx0aW1lc3RhbXBfbXMYASABKAMSEQoJc3lzdGVtX2lkGAIgASgNEhQKDGNvbXBvbmVudF9pZBgDIAEoDRIqCgtncHNfcmF3X2ludBgEIAEoCzIVLmZsaWdodHBhdGguR3BzUmF3SW50IqMCCglHcHNSYXdJbnQSEQoJdGltZV91c2VjGAEgASgEEigKCGZpeF90eXBlGAIgASgOMhYuZmxpZ2h0cGF0aC5HcHNGaXhUeXBlEgsKA2xhdBgDIAEoBRILCgNsb24YBCABKAUSCwoDYWx0GAUgASgFEgsKA2VwaBgGIAEoDRILCgNlcHYYByABKA0SCwoDdmVsGAggASgNEgsKA2NvZxgJIAEoDRIaChJzYXRlbGxpdGVzX3Zpc2libGUYCiABKA0SFQoNYWx0X2VsbGlwc29pZBgLIAEoBRINCgVoX2FjYxgMIAEoDRINCgV2X2FjYxgNIAEoDRIPCgd2ZWxfYWNjGA4gASgNEg8KB2hkZ19hY2MYDyABKA0SCwoDeWF3GBAgASgNKowCCgpHcHNGaXhUeXBlEhwKGEdQU19GSVhfVFlQRV9VTlNQRUNJRklFRBAAEhcKE0dQU19GSVhfVFlQRV9OT19HUFMQARIXChNHUFNfRklYX1RZUEVfTk9fRklYEAISFwoTR1BTX0ZJWF9UWVBFXzJEX0ZJWBADEhcKE0dQU19GSVhfVFlQRV8zRF9GSVgQBBIVChFHUFNfRklYX1RZUEVfREdQUxAFEhoKFkdQU19GSVhfVFlQRV9SVEtfRkxPQVQQBhIaChZHUFNfRklYX1RZUEVfUlRLX0ZJWEVEEAcSFwoTR1BTX0ZJWF9UWVBFX1NUQVRJQxAIEhQKEEdQU19GSVhfVFlQRV9QUFAQCTJwChBUZWxlbWV0cnlTZXJ2aWNlElwKD1N1YnNjcmliZVJhd0dwcxIiLmZsaWdodHBhdGguU3Vic2NyaWJlUmF3R3BzUmVxdWVzdBojLmZsaWdodHBhdGguU3Vic2NyaWJlUmF3R3BzUmVzcG9uc2UwAUJDWkFnaXRodWIuY29tL2ZsaWdodHBhdGgtZGV2L2ZsaWdodHBhdGgvZ2VuL2dvL2ZsaWdodHBhdGg7ZmxpZ2h0cGF0aGIGcHJvdG8z");
14
+
15
+ /**
16
+ * SubscribeRawGpsRequest is the request message for SubscribeRawGps
17
+ *
18
+ * @generated from message flightpath.SubscribeRawGpsRequest
19
+ */
20
+ export type SubscribeRawGpsRequest = Message<"flightpath.SubscribeRawGpsRequest"> & {
21
+ };
22
+
23
+ /**
24
+ * Describes the message flightpath.SubscribeRawGpsRequest.
25
+ * Use `create(SubscribeRawGpsRequestSchema)` to create a new message.
26
+ */
27
+ export const SubscribeRawGpsRequestSchema: GenMessage<SubscribeRawGpsRequest> = /*@__PURE__*/
28
+ messageDesc(file_flightpath_telemetry, 0);
29
+
30
+ /**
31
+ * SubscribeRawGpsResponse contains GPS_RAW_INT message data
32
+ *
33
+ * @generated from message flightpath.SubscribeRawGpsResponse
34
+ */
35
+ export type SubscribeRawGpsResponse = Message<"flightpath.SubscribeRawGpsResponse"> & {
36
+ /**
37
+ * Timestamp when this GPS data was captured (milliseconds since Unix epoch)
38
+ *
39
+ * @generated from field: int64 timestamp_ms = 1;
40
+ */
41
+ timestampMs: bigint;
42
+
43
+ /**
44
+ * System ID of the component sending the GPS data
45
+ *
46
+ * @generated from field: uint32 system_id = 2;
47
+ */
48
+ systemId: number;
49
+
50
+ /**
51
+ * Component ID of the component sending the GPS data
52
+ *
53
+ * @generated from field: uint32 component_id = 3;
54
+ */
55
+ componentId: number;
56
+
57
+ /**
58
+ * GPS_RAW_INT message data
59
+ *
60
+ * @generated from field: flightpath.GpsRawInt gps_raw_int = 4;
61
+ */
62
+ gpsRawInt?: GpsRawInt;
63
+ };
64
+
65
+ /**
66
+ * Describes the message flightpath.SubscribeRawGpsResponse.
67
+ * Use `create(SubscribeRawGpsResponseSchema)` to create a new message.
68
+ */
69
+ export const SubscribeRawGpsResponseSchema: GenMessage<SubscribeRawGpsResponse> = /*@__PURE__*/
70
+ messageDesc(file_flightpath_telemetry, 1);
71
+
72
+ /**
73
+ * GpsRawInt represents the GPS_RAW_INT MAVLink message
74
+ * The global position, as returned by the Global Positioning System (GPS).
75
+ * This is NOT the global position estimate of the system, but rather a RAW sensor value.
76
+ *
77
+ * @generated from message flightpath.GpsRawInt
78
+ */
79
+ export type GpsRawInt = Message<"flightpath.GpsRawInt"> & {
80
+ /**
81
+ * Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
82
+ *
83
+ * @generated from field: uint64 time_usec = 1;
84
+ */
85
+ timeUsec: bigint;
86
+
87
+ /**
88
+ * GPS fix type
89
+ *
90
+ * @generated from field: flightpath.GpsFixType fix_type = 2;
91
+ */
92
+ fixType: GpsFixType;
93
+
94
+ /**
95
+ * Latitude (WGS84, EGM96 ellipsoid) in degrees * 1E7
96
+ *
97
+ * @generated from field: int32 lat = 3;
98
+ */
99
+ lat: number;
100
+
101
+ /**
102
+ * Longitude (WGS84, EGM96 ellipsoid) in degrees * 1E7
103
+ *
104
+ * @generated from field: int32 lon = 4;
105
+ */
106
+ lon: number;
107
+
108
+ /**
109
+ * Altitude (MSL). Positive for up. Note that virtually all GPS modules provide the MSL altitude in addition to the WGS84 altitude. (mm)
110
+ *
111
+ * @generated from field: int32 alt = 5;
112
+ */
113
+ alt: number;
114
+
115
+ /**
116
+ * GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
117
+ *
118
+ * @generated from field: uint32 eph = 6;
119
+ */
120
+ eph: number;
121
+
122
+ /**
123
+ * GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
124
+ *
125
+ * @generated from field: uint32 epv = 7;
126
+ */
127
+ epv: number;
128
+
129
+ /**
130
+ * GPS ground speed (cm/s). If unknown, set to: UINT16_MAX
131
+ *
132
+ * @generated from field: uint32 vel = 8;
133
+ */
134
+ vel: number;
135
+
136
+ /**
137
+ * Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX
138
+ *
139
+ * @generated from field: uint32 cog = 9;
140
+ */
141
+ cog: number;
142
+
143
+ /**
144
+ * Number of satellites visible. If unknown, set to UINT8_MAX
145
+ *
146
+ * @generated from field: uint32 satellites_visible = 10;
147
+ */
148
+ satellitesVisible: number;
149
+
150
+ /**
151
+ * Altitude (above WGS84, EGM96 ellipsoid). Positive for up. (mm)
152
+ *
153
+ * @generated from field: int32 alt_ellipsoid = 11;
154
+ */
155
+ altEllipsoid: number;
156
+
157
+ /**
158
+ * Position uncertainty (mm)
159
+ *
160
+ * @generated from field: uint32 h_acc = 12;
161
+ */
162
+ hAcc: number;
163
+
164
+ /**
165
+ * Altitude uncertainty (mm)
166
+ *
167
+ * @generated from field: uint32 v_acc = 13;
168
+ */
169
+ vAcc: number;
170
+
171
+ /**
172
+ * Speed uncertainty (mm/s)
173
+ *
174
+ * @generated from field: uint32 vel_acc = 14;
175
+ */
176
+ velAcc: number;
177
+
178
+ /**
179
+ * Heading / track uncertainty (degrees * 1E5)
180
+ *
181
+ * @generated from field: uint32 hdg_acc = 15;
182
+ */
183
+ hdgAcc: number;
184
+
185
+ /**
186
+ * Yaw in earth frame from north. Use 0 if this GPS does not provide yaw. Use UINT16_MAX if this GPS is configured to provide yaw and is currently unable to provide it. Use 36000 for north. (degrees * 100)
187
+ *
188
+ * @generated from field: uint32 yaw = 16;
189
+ */
190
+ yaw: number;
191
+ };
192
+
193
+ /**
194
+ * Describes the message flightpath.GpsRawInt.
195
+ * Use `create(GpsRawIntSchema)` to create a new message.
196
+ */
197
+ export const GpsRawIntSchema: GenMessage<GpsRawInt> = /*@__PURE__*/
198
+ messageDesc(file_flightpath_telemetry, 2);
199
+
200
+ /**
201
+ * GpsFixType represents GPS fix types from MAVLink GPS_FIX_TYPE enum
202
+ * All values are incremented by 1 to accommodate GPS_FIX_TYPE_UNSPECIFIED
203
+ *
204
+ * @generated from enum flightpath.GpsFixType
205
+ */
206
+ export enum GpsFixType {
207
+ /**
208
+ * @generated from enum value: GPS_FIX_TYPE_UNSPECIFIED = 0;
209
+ */
210
+ GPS_FIX_TYPE_UNSPECIFIED = 0,
211
+
212
+ /**
213
+ * @generated from enum value: GPS_FIX_TYPE_NO_GPS = 1;
214
+ */
215
+ GPS_FIX_TYPE_NO_GPS = 1,
216
+
217
+ /**
218
+ * @generated from enum value: GPS_FIX_TYPE_NO_FIX = 2;
219
+ */
220
+ GPS_FIX_TYPE_NO_FIX = 2,
221
+
222
+ /**
223
+ * @generated from enum value: GPS_FIX_TYPE_2D_FIX = 3;
224
+ */
225
+ GPS_FIX_TYPE_2D_FIX = 3,
226
+
227
+ /**
228
+ * @generated from enum value: GPS_FIX_TYPE_3D_FIX = 4;
229
+ */
230
+ GPS_FIX_TYPE_3D_FIX = 4,
231
+
232
+ /**
233
+ * @generated from enum value: GPS_FIX_TYPE_DGPS = 5;
234
+ */
235
+ GPS_FIX_TYPE_DGPS = 5,
236
+
237
+ /**
238
+ * @generated from enum value: GPS_FIX_TYPE_RTK_FLOAT = 6;
239
+ */
240
+ GPS_FIX_TYPE_RTK_FLOAT = 6,
241
+
242
+ /**
243
+ * @generated from enum value: GPS_FIX_TYPE_RTK_FIXED = 7;
244
+ */
245
+ GPS_FIX_TYPE_RTK_FIXED = 7,
246
+
247
+ /**
248
+ * @generated from enum value: GPS_FIX_TYPE_STATIC = 8;
249
+ */
250
+ GPS_FIX_TYPE_STATIC = 8,
251
+
252
+ /**
253
+ * @generated from enum value: GPS_FIX_TYPE_PPP = 9;
254
+ */
255
+ GPS_FIX_TYPE_PPP = 9,
256
+ }
257
+
258
+ /**
259
+ * Describes the enum flightpath.GpsFixType.
260
+ */
261
+ export const GpsFixTypeSchema: GenEnum<GpsFixType> = /*@__PURE__*/
262
+ enumDesc(file_flightpath_telemetry, 0);
263
+
264
+ /**
265
+ * Real-time telemetry data (position, attitude, sensors, status)
266
+ *
267
+ * @generated from service flightpath.TelemetryService
268
+ */
269
+ export const TelemetryService: GenService<{
270
+ /**
271
+ * Subscribe to GPS_RAW_INT messages from the drone
272
+ *
273
+ * @generated from rpc flightpath.TelemetryService.SubscribeRawGps
274
+ */
275
+ subscribeRawGps: {
276
+ methodKind: "server_streaming";
277
+ input: typeof SubscribeRawGpsRequestSchema;
278
+ output: typeof SubscribeRawGpsResponseSchema;
279
+ },
280
+ }> = /*@__PURE__*/
281
+ serviceDesc(file_flightpath_telemetry, 0);
282
+
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@flightpath/flightpath",
3
+ "version": "0.0.1",
4
+ "description": "Go platform exposing a gRPC API to control a drone",
5
+ "type": "module",
6
+ "files": [
7
+ "gen/ts/**/*"
8
+ ],
9
+ "scripts": {
10
+ "generate": "buf generate --template buf.gen.ts.yaml",
11
+ "lint": "buf lint"
12
+ },
13
+ "keywords": [
14
+ "drone",
15
+ "flightpath",
16
+ "protobuf",
17
+ "connect-rpc",
18
+ "typescript"
19
+ ],
20
+ "author": "Flightpath Dev",
21
+ "license": "MIT",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/flightpath.git"
25
+ },
26
+ "publishConfig": {
27
+ "registry": "https://registry.npmjs.org/",
28
+ "access": "public"
29
+ },
30
+ "peerDependencies": {
31
+ "@bufbuild/protobuf": "^2.10.1",
32
+ "@connectrpc/connect": "^2.1.0"
33
+ },
34
+ "devDependencies": {
35
+ "@bufbuild/protobuf": "^2.10.1",
36
+ "@bufbuild/protoc-gen-es": "^2.10.1",
37
+ "@connectrpc/connect": "^2.1.1"
38
+ }
39
+ }