-
Notifications
You must be signed in to change notification settings - Fork 1
/
adif.proto
291 lines (269 loc) · 9.28 KB
/
adif.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
syntax = "proto3";
import "google/protobuf/timestamp.proto";
// This protocol buffer definition represents amateur radio contacts. It includes the fields defined
// by ADIF v3.1.1 while restructuring them semantically. Developers using this protobuf schema
// should be aware of the field mappings, validation and deprecation policies from the parent
// specification.
package adif;
option go_package = ".;adifpb";
message Adif {
Header header = 1;
repeated Qso qsos = 2;
}
// metadata about the ADIF content
message Header {
// identifies the version of ADIF used in this file in the format X.Y.Z
string adif_version = 1;
// identifies the UTC date and time that the file was created
google.protobuf.Timestamp created_timestamp = 2;
// identifies the name of the logger, converter, or utility that created or processed this ADIF
// file
string program_id = 3;
// identifies the version of the logger, converter, or utility that created or processed this ADIF
// file
string program_version = 4;
// TODO: protobuf extensions for user defined fields?
}
// Data about one radio contact
message Qso {
Station logging_station = 1;
Station contacted_station = 2;
Propagation propagation = 3;
// logging station's transmit band
string band = 4;
// in a split frequency QSO, the logging station's receiving band
string band_rx = 5;
// logging station's transmit frequency in Megahertz
double freq = 6;
// in a split frequency QSO, the logging station's receiving frequency in Megahertz
double freq_rx = 7;
// QSO Mode
string mode = 8;
// QSO Submode
string submode = 9;
// the distance between the logging station and the contacted station
uint32 distance_km = 10;
// date and time the QSO started
google.protobuf.Timestamp time_on = 11;
// date and time the QSO ended
google.protobuf.Timestamp time_off = 12;
// indicates whether the QSO was random or scheduled
bool random = 13;
// signal report from the contacted station
string rst_received = 14;
// signal report sent to the contacted station
string rst_sent = 15;
// indicates that the QSO information pertains to an SWL report
bool swl = 16;
// indicates whether the QSO was complete from the perspective of the logging station
string complete = 17;
// comment field for QSO (recommended use: information of interest to the contacted station's
// operator)
string comment = 18;
// QSO notes (recommended use: information of interest to the logging station's operator)
string notes = 19;
ContestData contest = 20;
// TODO: Award message type
// the list of awards submitted to a sponsor
repeated string award_submitted = 21;
// the list of awards granted by a sponsor
repeated string award_granted = 22;
// the list of credits sought for this QSO
repeated Credit credit_submitted = 23;
// the list of credits granted to this QSO
repeated Credit credit_granted = 24;
// public encryption key
string public_key = 25;
// clublog.org upload status
Upload clublog = 26;
// HRDLog.net upload status
Upload hrdlog = 27;
// QRZ.com upload status
Upload qrzcom = 28;
// eQSL.cc QSL status
Qsl eqsl = 29;
// ARRL Logbook of the World QSL status
Qsl lotw = 30;
// Physical QSL card status
Qsl card = 31;
// Application-defined fields. Keys should follow ADIF 3.1.1 IV.A.4, i.e.
// APP_{PROGRAMID}_{FIELDNAME}
map<string, string> app_defined = 32;
}
// QSO fields describing one of the stations involved in the contact
message Station {
// operator's callsign
string op_call = 1;
// operator's name
string op_name = 2;
// Maidenhead Grid Square
string grid_square = 3;
// latitude (north positive)
double latitude = 4;
// longitude (east positive)
double longitude = 5;
// transmitter power in watts
double power = 6;
// description of the station's equipment
string rig = 7;
// description of the station antenna
string antenna = 8;
// antenna beam azimuth in degrees
int32 antenna_azimuth = 9;
// antenna beam elevation in degrees
int32 antenna_elevation = 10;
// station owner's callsign
string owner_call = 11;
// callsign used over the air, e.g. a club callsign
string station_call = 12;
// the operator's age in years in the range 0 to 120 (inclusive)
uint32 age = 13;
// indicates that the operator is now a Silent Key
bool silent_key = 14;
// preferred QSL route
string qsl_via = 15;
// complete mailing address: full name, street address, city, postal code, and country
string address = 16;
// street
string street = 17;
// city
string city = 18;
// postal code
string postal_code = 19;
// Secondary Administrative Subdivision (e.g. US county, JA Gun)
string county = 20;
// the code for the Primary Administrative Subdivision (e.g. US State, JA Island, VE Province)
string state = 21;
// DXCC entity name
string country = 22;
// DXCC Entity Code
uint32 dxcc = 23;
// continent
string continent = 24;
// email address
string email = 25;
// the station's website URL
string web = 26;
// CQ Zone in the range 1 to 40 (inclusive)
uint32 cq_zone = 27;
// ITU zone in the range 1 to 90 (inclusive)
uint32 itu_zone = 28;
// DARC DOK (District Location Code)
string darc_dok = 29;
// FISTS CW Club member number
uint32 fists = 30;
// FISTS CW Club Century Certificate (CC) number
uint32 fists_cc = 31;
// IOTA designator, in format CC-XXX
string iota = 32;
// IOTA Island Identifier
uint32 iota_island_id = 33;
// WPX prefix
string pfx = 34;
// WAE or CQ entity contained within a DXCC entity
string region = 35;
// Straight Key Century Club (SKCC) member information
string skcc = 36;
// special interest activity or event
string sig = 37;
// special interest activity or event information
string sig_info = 38;
// International SOTA Reference
string sota_ref = 39;
// Ten-Ten number
uint32 ten_ten = 40;
// two US counties in the case where the logging station is located on a border between two
// counties, representing counties that the contacted station may claim for the CQ Magazine USA-CA
// award program
string usaca_counties = 41;
// UKSMG member number
uint32 uksmg = 42;
// two or four adjacent Maidenhead grid locators, each four characters long, representing the
// logging station's grid squares that the contacted station may claim for the ARRL VUCC award
// program
string vucc_grids = 43;
}
// QSO fields describing radio propagation conditions
message Propagation {
// QSO propagation mode
string propagation_mode = 1;
// the geomagnetic A index at the time of the QSO in the range 0 to 400 (inclusive)
uint32 a_index = 2;
// the geomagnetic K index at the time of the QSO in the range 0 to 9 (inclusive)
uint32 k_index = 3;
// the solar flux at the time of the QSO in the range 0 to 300 (inclusive).
uint32 solar_flux_index = 4;
// the signal path
string ant_path = 5;
// new EME "initial"
bool force_init = 6;
// maximum length of meteor scatter bursts heard by the logging station, in seconds
uint32 max_bursts = 7;
// For Meteor Scatter QSOs, the name of the meteor shower in progress
string meteor_shower_name = 8;
// the number of meteor scatter bursts heard by the logging stationthe number of meteor scatter
// bursts heard by the logging station
uint32 nr_bursts = 11;
// the number of meteor scatter pings heard by the logging station
uint32 nr_pings = 12;
// satellite mode
string sat_mode = 9;
// name of satellite
string sat_name = 10;
}
// QSO fields that are relevant to contests only
message ContestData {
// Contest Identifier
string contest_id = 1;
// contest QSO transmitted serial number
string serial_sent = 2;
// contest QSO received serial number
string serial_received = 3;
// ARRL section
string arrl_section = 4;
// contest class (e.g. for ARRL Field Day)
string station_class = 5;
// contest check (e.g. for ARRL Sweepstakes)
string check = 6;
// contest precedence (e.g. for ARRL Sweepstakes)
string precedence = 7;
}
// data about using this QSO for award credit
message Credit {
string credit = 1;
string qsl_medium = 2;
}
// data about uploading this QSO to online logbook sites
message Upload {
google.protobuf.Timestamp upload_date = 1;
UploadStatus upload_status = 2;
}
enum UploadStatus {
UNKNOWN = 0;
// the QSO has been uploaded to, and accepted by, the online service
UPLOAD_COMPLETE = 1;
// do not upload the QSO to the online service
DO_NOT_UPLOAD = 2;
// the QSO has been modified since being uploaded to the online service
MODIFIED_AFTER_UPLOAD = 3;
}
// QSL data about confirmation of this contact
message Qsl {
// date QSL sent
google.protobuf.Timestamp sent_date = 1;
// QSL sent status
string sent_status = 2;
// if QSL_SENT is set to 'Y', the means by which the QSL was sent by the logging station;
// otherwise, the means by which the logging station intends to convey the QSL
string sent_via = 3;
// date QSL received
google.protobuf.Timestamp received_date = 4;
// QSL received status
string received_status = 5;
// if QSL_RCVD is set to 'Y' or 'V', the means by which the QSL was received by the logging
// station; otherwise, the means by which the logging station requested or intends to request that
// the QSL be conveyed.
string received_via = 6;
// QSL card message
string received_message = 7;
}