2import "goby/acomms/protobuf/driver_base.proto";
3import "goby/acomms/protobuf/modem_message.proto";
4import "dccl/option_extensions.proto";
6package goby.acomms.iridium.protobuf;
10 DEVICE_VOICE_ENABLED_ISU =
11 1; // e.g. 9523, etc.: device capable of making calls
12 DEVICE_IRIDIUM_9602_9603 = 2; // RockBLOCK, etc.
18 required string iridium_number = 1;
19 required int32 modem_id = 2;
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;
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];
34 optional bool enable_sbdring_automatic_registration = 13 [default = true];
36 optional DeviceType device = 14 [default = DEVICE_VOICE_ENABLED_ISU];
39extend goby.acomms.protobuf.DriverConfig
41 optional Config config = 1381;
44message RockblockReceive
46 option (dccl.msg).unit_system = "si";
48 optional int32 momsn = 1;
49 optional double iridium_latitude = 2 [(dccl.field) = {
50 units { derived_dimensions: "plane_angle" system: "angle::degree" }
52 optional double iridium_longitude = 3 [(dccl.field) = {
53 units { derived_dimensions: "plane_angle" system: "angle::degree" }
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
60 optional double iridium_cep_radius = 4 [
61 (dccl.field) = { units { prefix: "kilo" derived_dimensions: "length" } }
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];
71message RockblockTransmit
73 required bool success =
74 1; // true if HTTP result = 200, and body status == OK
76 optional int32 mt_id = 2;
81 ERROR_PARSE_FAILURE = -2;
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;
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;
111 optional Error error = 10 [default = ERROR_SUCCESS];
116 optional bool if_no_data_do_mailbox_check = 1 [default = true];
118 optional RockblockReceive rockblock_rx = 10;
119 optional RockblockTransmit rockblock_tx = 11;
122extend goby.acomms.protobuf.ModemTransmission
124 optional Transmission transmission = 1381;
138 optional RSSI rssi = 1;
141extend goby.acomms.protobuf.ModemReport
143 optional Report report = 1381;
146// subset of goby.acomms.protobuf.ModemTransmission
149 option (dccl.msg).id = 0;
150 option (dccl.msg).max_bytes = 7;
151 option (dccl.msg).codec_version = 3;
153 required int32 src = 1 [(dccl.field).min = 0, (dccl.field).max = 30];
155 required int32 dest = 2 [(dccl.field).min = 0, (dccl.field).max = 30];
157 optional int32 rate = 3 [(dccl.field).min = 0, (dccl.field).max = 1];
159 required goby.acomms.protobuf.ModemTransmission.TransmissionType type = 4;
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];