Goby3 3.2.3
2025.05.13
Loading...
Searching...
No Matches
iridium_driver.proto
Go to the documentation of this file.
1syntax = "proto2";
2import "goby/acomms/protobuf/driver_base.proto";
3import "goby/acomms/protobuf/modem_message.proto";
4import "dccl/option_extensions.proto";
5
6package goby.acomms.iridium.protobuf;
7
8enum DeviceType
9{
10 DEVICE_VOICE_ENABLED_ISU =
11 1; // e.g. 9523, etc.: device capable of making calls
12 DEVICE_IRIDIUM_9602_9603 = 2; // RockBLOCK, etc.
13}
14message Config
15{
16 message Remote
17 {
18 required string iridium_number = 1;
19 required int32 modem_id = 2;
20 }
21
22 optional Remote remote = 1;
23 optional uint32 max_frame_size = 2 [default = 1500];
24 optional int32 target_bit_rate = 3 [default = 2400];
25 repeated string config = 4;
26 optional int32 dial_attempts = 5 [default = 3];
27 optional int32 debug_client_port = 6;
28
29 optional int32 hangup_seconds_after_empty = 8 [default = 30];
30 optional int32 start_timeout = 9 [default = 20];
31 optional bool use_dtr = 10 [default = false];
32 optional int32 handshake_hangup_seconds = 12 [default = 5];
33
34 optional bool enable_sbdring_automatic_registration = 13 [default = true];
35
36 optional DeviceType device = 14 [default = DEVICE_VOICE_ENABLED_ISU];
37}
38
39extend goby.acomms.protobuf.DriverConfig
40{
41 optional Config config = 1381;
42}
43
44message RockblockReceive
45{
46 option (dccl.msg).unit_system = "si";
47
48 optional int32 momsn = 1;
49 optional double iridium_latitude = 2 [(dccl.field) = {
50 units { derived_dimensions: "plane_angle" system: "angle::degree" }
51 }];
52 optional double iridium_longitude = 3 [(dccl.field) = {
53 units { derived_dimensions: "plane_angle" system: "angle::degree" }
54 }];
55
56 // Short Burst Data Developers Guide:
57 // The CEP radius provides the radius (in Kilometers) around the center
58 // point within which the IMEI is located with a 80% probability of
59 // accuracy.
60 optional double iridium_cep_radius = 4 [
61 (dccl.field) = { units { prefix: "kilo" derived_dimensions: "length" } }
62 ];
63
64 optional int32 serial = 5;
65 optional string imei = 6;
66 optional string device_type = 7;
67 optional string transmit_time = 8;
68 optional bool jwt_verified = 9 [default = false];
69}
70
71message RockblockTransmit
72{
73 required bool success =
74 1; // true if HTTP result = 200, and body status == OK
75
76 optional int32 mt_id = 2;
77
78 enum Error
79 {
80 ERROR_SUCCESS = -1;
81 ERROR_PARSE_FAILURE = -2;
82
83 // == rockblock error code
84 // https://docs.rockblock.rock7.com/reference/testinput
85 ROCKBLOCK_ERROR_INVALID_LOGIN_CREDENTIALS = 10;
86 ROCKBLOCK_ERROR_IMEI_NOT_FOUND_ON_YOUR_ACCOUNT = 11;
87 ROCKBLOCK_ERROR_HAS_NO_LINE_RENTAL = 12;
88 ROCKBLOCK_ERROR_ACCOUNT_HAS_INSUFFICIENT_CREDIT = 13;
89 ROCKBLOCK_ERROR_COULD_NOT_DECODE_HEX_DATA = 14;
90 ROCKBLOCK_ERROR_DATA_TOO_LONG = 15;
91 ROCKBLOCK_ERROR_NO_DATA = 16;
92 ROCKBLOCK_ERROR_SYSTEM_ERROR = 99;
93 ROCKBLOCK_ERROR_UNKNOWN = 100;
94
95 // from cpp-httplib
96 HTTP_ERROR_UNKNOWN = 101;
97 HTTP_ERROR_CONNECTION = 102;
98 HTTP_ERROR_BINDIPADDRESS = 103;
99 HTTP_ERROR_READ = 104;
100 HTTP_ERROR_WRITE = 105;
101 HTTP_ERROR_EXCEEDREDIRECTCOUNT = 106;
102 HTTP_ERROR_CANCELED = 107;
103 HTTP_ERROR_SSLCONNECTION = 108;
104 HTTP_ERROR_SSLLOADINGCERTS = 109;
105 HTTP_ERROR_SSLSERVERVERIFICATION = 110;
106 HTTP_ERROR_UNSUPPORTEDMULTIPARTBOUNDARYCHARS = 111;
107 HTTP_ERROR_COMPRESSION = 112;
108 HTTP_ERROR_CONNECTIONTIMEOUT = 113;
109 HTTP_ERROR_PROXYCONNECTION = 114;
110 }
111 optional Error error = 10 [default = ERROR_SUCCESS];
112}
113
114message Transmission
115{
116 optional bool if_no_data_do_mailbox_check = 1 [default = true];
117
118 optional RockblockReceive rockblock_rx = 10;
119 optional RockblockTransmit rockblock_tx = 11;
120}
121
122extend goby.acomms.protobuf.ModemTransmission
123{
124 optional Transmission transmission = 1381;
125}
126
127message Report
128{
129 enum RSSI
130 {
131 RSSI_0_BARS = 0;
132 RSSI_1_BARS = 1;
133 RSSI_2_BARS = 2;
134 RSSI_3_BARS = 3;
135 RSSI_4_BARS = 4;
136 RSSI_5_BARS = 5;
137 };
138 optional RSSI rssi = 1;
139}
140
141extend goby.acomms.protobuf.ModemReport
142{
143 optional Report report = 1381;
144}
145
146// subset of goby.acomms.protobuf.ModemTransmission
147message IridiumHeader
148{
149 option (dccl.msg).id = 0;
150 option (dccl.msg).max_bytes = 7;
151 option (dccl.msg).codec_version = 3;
152
153 required int32 src = 1 [(dccl.field).min = 0, (dccl.field).max = 30];
154
155 required int32 dest = 2 [(dccl.field).min = 0, (dccl.field).max = 30];
156
157 optional int32 rate = 3 [(dccl.field).min = 0, (dccl.field).max = 1];
158
159 required goby.acomms.protobuf.ModemTransmission.TransmissionType type = 4;
160
161 optional bool ack_requested = 5;
162 optional uint32 frame_start = 6
163 [(dccl.field).min = 0, (dccl.field).max = 0xFFFF];
164 optional int32 acked_frame = 7
165 [(dccl.field).min = 0, (dccl.field).max = 0xFFFF];
166}