1 /*
2  *  Hamlib Interface - list of known rotators
3  *  Copyright (c) 2000-2011 by Stephane Fillod
4  *  Copyright (c) 2000-2002 by Frank Singleton
5  *
6  *
7  *   This library is free software; you can redistribute it and/or
8  *   modify it under the terms of the GNU Lesser General Public
9  *   License as published by the Free Software Foundation; either
10  *   version 2.1 of the License, or (at your option) any later version.
11  *
12  *   This library is distributed in the hope that it will be useful,
13  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  *   Lesser General Public License for more details.
16  *
17  *   You should have received a copy of the GNU Lesser General Public
18  *   License along with this library; if not, write to the Free Software
19  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20  *
21  */
22 
23 #ifndef _ROTLIST_H
24 #define _ROTLIST_H 1
25 
26 //! @cond Doxygen_Suppress
27 #define ROT_MAKE_MODEL(a,b) ((a)*100+(b))
28 #define ROT_BACKEND_NUM(a) ((a)/100)
29 //! @endcond
30 
31 
32 /**
33  * \addtogroup rotator
34  * @{
35  */
36 
37 /**
38  * \file rotlist.h
39  * \brief Hamlib rotator model definitions.
40  *
41  * This file contains rotator model definitions for the Hamlib rotator
42  * Application Programming Interface (API).  Each distinct rotator type has a
43  * unique model number (ID) and is used by Hamlib to identify and distinguish
44  * between the different hardware drivers.  The exact model numbers can be
45  * acquired using the macros in this file.  To obtain a list of supported
46  * rotator branches, one can use the statically defined ROT_BACKEND_LIST macro
47  * (defined in configure.ac).  To obtain a full list of supported rotators
48  * (including each model in every branch), the foreach_opened_rot() API
49  * function can be used.
50  *
51  * The model number, or ID, is used to tell Hamlib which rotator the client
52  * wishes to use which is done with the rot_init() API call.
53  */
54 
55 /**
56  * \def ROT_MODEL_NONE
57  * \brief A macro that returns the model number for an unknown model.
58  *
59  * The none backend, as the name suggests, does nothing.  It is mainly for
60  * internal use.
61  */
62 #define ROT_MODEL_NONE 0
63 
64 
65 /**
66  * \brief A macro that returns the model number for the DUMMY backend.
67  *
68  * \def ROT_MODEL_DUMMY
69  *
70  * The DUMMY backend, as the name suggests, is a backend which performs
71  * no hardware operations and always behaves as one would expect.  It can
72  * be thought of as a hardware simulator and is very useful for testing
73  * client applications.
74  */
75 /**
76  * \brief A macro that returns the model number for the NETROTCTL backend.
77  *
78  * \def ROT_MODEL_NETROTCTL
79  *
80  * The NETROTCTL backend allows use of the `rotctld` daemon through the normal
81  * Hamlib API.
82  */
83 //! @cond Doxygen_Suppress
84 #define ROT_DUMMY 0
85 #define ROT_BACKEND_DUMMY "dummy"
86 //! @endcond
87 #define ROT_MODEL_DUMMY ROT_MAKE_MODEL(ROT_DUMMY, 1)
88 #define ROT_MODEL_NETROTCTL ROT_MAKE_MODEL(ROT_DUMMY, 2)
89 
90 
91 /**
92  * \brief A macro that returns the model number of the EASYCOMM 1 backend.
93  *
94  * \def ROT_MODEL_EASYCOMM1
95  *
96  * The EASYCOMM1 backend can be used with rotators that support the EASYCOMM
97  * I Standard.
98  */
99 /**
100  * \brief A macro that returns the model number of the EASYCOMM 2 backend.
101  *
102  * \def ROT_MODEL_EASYCOMM2
103  *
104  * The EASYCOMM2 backend can be used with rotators that support the EASYCOMM
105  * II Standard.
106  */
107 /**
108  * \brief A macro that returns the model number of the EASYCOMM 3 backend.
109  *
110  * \def ROT_MODEL_EASYCOMM3
111  *
112  * The EASYCOMM3 backend can be used with rotators that support the EASYCOMM
113  * III Standard.
114  */
115 //! @cond Doxygen_Suppress
116 #define ROT_EASYCOMM 2
117 #define ROT_BACKEND_EASYCOMM "easycomm"
118 //! @endcond
119 #define ROT_MODEL_EASYCOMM1 ROT_MAKE_MODEL(ROT_EASYCOMM, 1)
120 #define ROT_MODEL_EASYCOMM2 ROT_MAKE_MODEL(ROT_EASYCOMM, 2)
121 #define ROT_MODEL_EASYCOMM3 ROT_MAKE_MODEL(ROT_EASYCOMM, 4)
122 
123 
124 /**
125  * \brief A macro that returns the model number of the FODTRACK backend.
126  *
127  * \def ROT_MODEL_FODTRACK
128  *
129  * The FODTRACK backend can be used with rotators that support the FODTRACK
130  * Standard.
131  */
132 //! @cond Doxygen_Suppress
133 #define ROT_FODTRACK 3
134 #define ROT_BACKEND_FODTRACK "fodtrack"
135 //! @endcond
136 #define ROT_MODEL_FODTRACK ROT_MAKE_MODEL(ROT_FODTRACK, 1)
137 
138 
139 /**
140  * \brief A macro that returns the model number of the ROTOREZ backend.
141  *
142  * \def ROT_MODEL_ROTOREZ
143  *
144  * The ROTOREZ backend can be used with Hy-Gain rotators that support the
145  * extended DCU command set by the Idiom Press Rotor-EZ board.
146  */
147 /**
148  * \brief A macro that returns the model number of the ROTORCARD backend.
149  *
150  * \def ROT_MODEL_ROTORCARD
151  *
152  * The ROTORCARD backend can be used with Yaesu rotators that support the
153  * extended DCU command set by the Idiom Press Rotor Card board.
154  */
155 /**
156  * \brief A macro that returns the model number of the DCU backend.
157  *
158  * \def ROT_MODEL_DCU
159  *
160  * The DCU backend can be used with rotators that support the DCU command set
161  * by Hy-Gain (currently the DCU-1).
162  */
163 /**
164  * \brief A macro that returns the model number of the ERC backend.
165  *
166  * \def ROT_MODEL_ERC
167  *
168  * The ERC backend can be used with rotators that support the DCU command set
169  * by DF9GR (currently the ERC).
170  */
171 /**
172  * \brief A macro that returns the model number of the RT21 backend.
173  *
174  * \def ROT_MODEL_RT21
175  *
176  * The RT21 backend can be used with rotators that support the DCU command set
177  * by Green Heron (currently the RT-21).
178  */
179 //! @cond Doxygen_Suppress
180 #define ROT_ROTOREZ 4
181 #define ROT_BACKEND_ROTOREZ "rotorez"
182 //! @endcond
183 #define ROT_MODEL_ROTOREZ ROT_MAKE_MODEL(ROT_ROTOREZ, 1)
184 #define ROT_MODEL_ROTORCARD ROT_MAKE_MODEL(ROT_ROTOREZ, 2)
185 #define ROT_MODEL_DCU ROT_MAKE_MODEL(ROT_ROTOREZ, 3)
186 #define ROT_MODEL_ERC ROT_MAKE_MODEL(ROT_ROTOREZ, 4)
187 #define ROT_MODEL_RT21 ROT_MAKE_MODEL(ROT_ROTOREZ, 5)
188 
189 
190 /**
191  * \brief A macro that returns the model number of the SARTEK1 backend.
192  *
193  * \def ROT_MODEL_SARTEK1
194  *
195  * The SARTEK1 backend can be used with rotators that support the SARtek
196  * protocol.
197  */
198 //! @cond Doxygen_Suppress
199 #define ROT_SARTEK 5
200 #define ROT_BACKEND_SARTEK "sartek"
201 //! @endcond
202 #define ROT_MODEL_SARTEK1 ROT_MAKE_MODEL(ROT_SARTEK, 1)
203 
204 
205 /**
206  * \brief A macro that returns the model number of the GS232A backend.
207  *
208  * \def ROT_MODEL_GS232A
209  *
210  * The GS232A backend can be used with rotators that support the GS-232A
211  * protocol.
212  */
213 /**
214  * \brief A macro that returns the model number of the GS232 backend.
215  *
216  * \def ROT_MODEL_GS232_GENERIC
217  *
218  * The GS232_GENERIC backend can be used with rotators that support the
219  * generic (even if not coded correctly) GS-232 protocol.
220  */
221 /**
222  * \brief A macro that returns the model number of the GS232B backend.
223  *
224  * \def ROT_MODEL_GS232B
225  *
226  * The GS232B backend can be used with rotators that support the GS232B
227  * protocol.
228  */
229 /**
230  * \brief A macro that returns the model number of the F1TETRACKER backend.
231  *
232  * \def ROT_MODEL_F1TETRACKER
233  *
234  * The F1TETRACKER backend can be used with rotators that support the F1TE
235  * Tracker protocol.
236  */
237 /**
238  * \brief A macro that returns the model number of the GS23 backend.
239  *
240  * \def ROT_MODEL_GS23
241  *
242  * The GS23 backend can be used with rotators that support the GS-23 protocol.
243  */
244 /**
245  * \brief A macro that returns the model number of the GS232 backend.
246  *
247  * \def ROT_MODEL_GS232
248  *
249  * The GS232 backend can be used with rotators that support the GS-232
250  * protocol.
251  */
252 /**
253  * \brief A macro that returns the model number of the LVB  backend.
254  *
255  * \def ROT_MODEL_LVB
256  *
257  * The LVB backend can be used with rotators that support the G6LVB AMSAT LVB
258  * Tracker GS-232 based protocol.
259  */
260 /**
261  * \brief A macro that returns the model number of the ST2 backend.
262  *
263  * \def ROT_MODEL_ST2
264  *
265  * The ST2 backend can be used with rotators that support the Fox Delta ST2
266  * GS-232 based protocol.
267  */
268 /**
269  * \brief A macro that returns the model number of the GS232A_AZ Azimuth backend.
270  *
271  * \def ROT_MODEL_GS232A_AZ
272  *
273  * The GS232A_AZ backend can be used with azimuth rotators that support the
274  * GS-232A protocol.
275  */
276 /**
277  * \brief A macro that returns the model number of the GS232A_EL Elevation backend.
278  *
279  * \def ROT_MODEL_GS232A_EL
280  *
281  * The GS232A_EL backend can be used with elevation rotators that support the
282  * GS-232A protocol.
283  */
284 /**
285  * \brief A macro that returns the model number of the GS232B_AZ Azimuth backend.
286  *
287  * \def ROT_MODEL_GS232B_AZ
288  *
289  * The GS232B_AZ backend can be used with azimuth rotators that support the
290  * GS-232B protocol.
291  */
292 /**
293  * \brief A macro that returns the model number of the GS232B_EL Elevation backend.
294  *
295  * \def ROT_MODEL_GS232B_EL
296  *
297  * The GS232B_EL backend can be used with elevation rotators that support the
298  * GS-232B protocol.
299  */
300 
301 //! @cond Doxygen_Suppress
302 #define ROT_GS232A 6
303 #define ROT_BACKEND_GS232A "gs232a"
304 //! @endcond
305 #define ROT_MODEL_GS232A ROT_MAKE_MODEL(ROT_GS232A, 1)
306 #define ROT_MODEL_GS232_GENERIC ROT_MAKE_MODEL(ROT_GS232A, 2) /* GENERIC */
307 #define ROT_MODEL_GS232B ROT_MAKE_MODEL(ROT_GS232A, 3)
308 #define ROT_MODEL_F1TETRACKER ROT_MAKE_MODEL(ROT_GS232A, 4)
309 #define ROT_MODEL_GS23 ROT_MAKE_MODEL(ROT_GS232A, 5)
310 #define ROT_MODEL_GS232 ROT_MAKE_MODEL(ROT_GS232A, 6) /* Not A or B */
311 #define ROT_MODEL_LVB ROT_MAKE_MODEL(ROT_GS232A, 7)
312 #define ROT_MODEL_ST2 ROT_MAKE_MODEL(ROT_GS232A, 8)
313 #define ROT_MODEL_GS232A_AZ ROT_MAKE_MODEL(ROT_GS232A, 9)
314 #define ROT_MODEL_GS232A_EL ROT_MAKE_MODEL(ROT_GS232A, 10)
315 #define ROT_MODEL_GS232B_AZ ROT_MAKE_MODEL(ROT_GS232A, 11)
316 #define ROT_MODEL_GS232B_EL ROT_MAKE_MODEL(ROT_GS232A, 12)
317 
318 
319 /**
320  * \brief A macro that returns the model number of the PCROTOR backend.
321  *
322  * \def ROT_MODEL_PCROTOR
323  *
324  * The PCROTOR backend is a member of the kit backend group that can be used
325  * with home brewed rotators.
326  */
327 //! @cond Doxygen_Suppress
328 #define ROT_KIT 7
329 #define ROT_BACKEND_KIT "kit"
330 //! @endcond
331 #define ROT_MODEL_PCROTOR ROT_MAKE_MODEL(ROT_KIT, 1)
332 
333 
334 /**
335  * \brief A macro that returns the model number of the HD1780 backend.
336  *
337  * \def ROT_MODEL_HD1780
338  *
339  * The HD1780 backend can be used with rotators that support the Heathkit
340  * HD-1780 protocol.
341  */
342 //! @cond Doxygen_Suppress
343 #define ROT_HEATHKIT 8
344 #define ROT_BACKEND_HEATHKIT "heathkit"
345 //! @endcond
346 #define ROT_MODEL_HD1780 ROT_MAKE_MODEL(ROT_HEATHKIT, 1)
347 
348 
349 /**
350  * \brief A macro that returns the model number of the ROT2PROG backend.
351  *
352  * \def ROT_MODEL_SPID_ROT2PROG
353  *
354  * The SPID_ROT2PROG backend can be used with rotators that support the SPID
355  * azimuth and elevation protocol.
356  */
357 /**
358  * \brief A macro that returns the model number of the ROT1PROG backend.
359  *
360  * \def ROT_MODEL_SPID_ROT1PROG
361  *
362  * The SPID_ROT1PROG backend can be used with rotators that support the SPID
363  * azimuth protocol.
364  */
365 /**
366  * \brief A macro that returns the model number of the SPID_MD01_ROT2PROG backend.
367  *
368  * \def ROT_MODEL_SPID_MD01_ROT2PROG
369  *
370  * The SPID_MD01_ROT2PROG backend can be used with rotators that support the
371  * extended SPID ROT2PROG azimuth and elevation protocol.
372  */
373 //! @cond Doxygen_Suppress
374 #define ROT_SPID 9
375 #define ROT_BACKEND_SPID "spid"
376 //! @endcond
377 #define ROT_MODEL_SPID_ROT2PROG ROT_MAKE_MODEL(ROT_SPID, 1)
378 #define ROT_MODEL_SPID_ROT1PROG ROT_MAKE_MODEL(ROT_SPID, 2)
379 #define ROT_MODEL_SPID_MD01_ROT2PROG ROT_MAKE_MODEL(ROT_SPID, 3)
380 
381 
382 /**
383  * \brief A macro that returns the model number of the RC2800 backend.
384  *
385  * \def ROT_MODEL_RC2800
386  *
387  * The RC2800 backend can be used with rotators that support the M2 (M
388  * Squared) RC2800 protocol.
389  */
390 /**
391  * \brief A macro that returns the model number of the RC2800_EARLY_AZ
392  * backend.
393  *
394  * \def ROT_MODEL_RC2800_EARLY_AZ
395  *
396  * The RC2800_EARLY_AZ backend can be used with rotators that support the M2
397  * (M Squared) RC2800 early azimuth protocol.
398  */
399 /**
400  * \brief A macro that returns the model number of the RC2800_EARLY_AZEL
401  * backend.
402  *
403  * \def ROT_MODEL_RC2800_EARLY_AZEL
404  *
405  * The RC2800_EARLY_AZEL backend can be used with rotators that support the M2
406  * (M Squared) RC2800 early azimuth and elevation protocol.
407  */
408 //! @cond Doxygen_Suppress
409 #define ROT_M2 10
410 #define ROT_BACKEND_M2 "m2"
411 //! @endcond
412 #define ROT_MODEL_RC2800 ROT_MAKE_MODEL(ROT_M2, 1)
413 #define ROT_MODEL_RC2800_EARLY_AZ ROT_MAKE_MODEL(ROT_M2, 2)
414 #define ROT_MODEL_RC2800_EARLY_AZEL ROT_MAKE_MODEL(ROT_M2, 3)
415 
416 
417 /**
418  * \brief A macro that returns the model number of the RCI_AZEL backend.
419  *
420  * \def ROT_MODEL_RCI_AZEL
421  *
422  * The RCI_AZEL backend can be used with rotators that support the ARS azimuth
423  * and elevation protocol.
424  */
425 /**
426  * \brief A macro that returns the model number of the RCI_AZ backend.
427  *
428  * \def ROT_MODEL_RCI_AZ
429  *
430  * The RCI_AZ backend can be used with rotators that support the ARS azimuth
431  * protocol.
432  */
433 //! @cond Doxygen_Suppress
434 #define ROT_ARS 11
435 #define ROT_BACKEND_ARS "ars"
436 //! @endcond
437 #define ROT_MODEL_RCI_AZEL ROT_MAKE_MODEL(ROT_ARS, 1)
438 #define ROT_MODEL_RCI_AZ ROT_MAKE_MODEL(ROT_ARS, 2)
439 
440 
441 /**
442  * \brief A macro that returns the model number of the IF100 backend.
443  *
444  * \def ROT_MODEL_IF100
445  *
446  * The IF100 backend can be used with rotators that support the AMSAT IF-100
447  * interface.
448  */
449 //! @cond Doxygen_Suppress
450 #define ROT_AMSAT 12
451 #define ROT_BACKEND_AMSAT "amsat"
452 //! @endcond
453 #define ROT_MODEL_IF100 ROT_MAKE_MODEL(ROT_AMSAT, 1)
454 
455 
456 /**
457  * \brief A macro that returns the model number of the TS7400 backend.
458  *
459  * \def ROT_MODEL_TS7400
460  *
461  * The TS7400 backend supports an embedded ARM board using the TS-7400 Linux
462  * board.  More information is at https://www.embeddedarm.com
463  */
464 //! @cond Doxygen_Suppress
465 #define ROT_TS7400 13
466 #define ROT_BACKEND_TS7400 "ts7400"
467 //! @endcond
468 #define ROT_MODEL_TS7400 ROT_MAKE_MODEL(ROT_TS7400, 1)
469 
470 
471 /**
472  * \brief A macro that returns the model number of the NEXSTAR backend.
473  *
474  * \def ROT_MODEL_NEXSTAR
475  *
476  * The NEXSTAR backend can be used with rotators that support the Celestron
477  * NexStar protocol and alike.
478  */
479 //! @cond Doxygen_Suppress
480 #define ROT_CELESTRON 14
481 #define ROT_BACKEND_CELESTRON "celestron"
482 //! @endcond
483 #define ROT_MODEL_NEXSTAR ROT_MAKE_MODEL(ROT_CELESTRON, 1)
484 
485 
486 /**
487  * \brief A macro that returns the model number of the ETHER6 backend.
488  *
489  * \def ROT_MODEL_ETHER6
490  *
491  * The ETHER6 backend can be used with rotators that support the Ether6
492  * protocol.
493  */
494 //! @cond Doxygen_Suppress
495 #define ROT_ETHER6 15
496 #define ROT_BACKEND_ETHER6 "ether6"
497 //! @endcond
498 #define ROT_MODEL_ETHER6 ROT_MAKE_MODEL(ROT_ETHER6, 1)
499 
500 
501 /**
502  * \brief A macro that returns the model number of the CNCTRK backend.
503  *
504  * \def ROT_MODEL_CNCTRK
505  *
506  * The CNCTRK backend can be used with rotators that support the LinuxCNC
507  * running Axis GUI interface.
508  */
509 //! @cond Doxygen_Suppress
510 #define ROT_CNCTRK 16
511 #define ROT_BACKEND_CNCTRK "cnctrk"
512 //! @endcond
513 #define ROT_MODEL_CNCTRK ROT_MAKE_MODEL(ROT_CNCTRK, 1)
514 
515 
516 /**
517  * \brief A macro that returns the model number of the PROSISTEL_D_AZ backend.
518  *
519  * \def ROT_MODEL_PROSISTEL_D_AZ
520  *
521  * The PROSISTEL_D_AZ backend can be used with rotators that support the Prosistel
522  * azimuth protocol.
523  */
524 /**
525  * \brief A macro that returns the model number of the PROSISTEL_D_EL backend.
526  *
527  * \def ROT_MODEL_PROSISTEL_D_EL
528  *
529  * The PROSISTEL_D_EL backend can be used with rotators that support the Prosistel
530  * elevation protocol.
531  */
532 /**
533  * \brief A macro that returns the model number of the
534  * PROSISTEL_COMBI_TRACK_AZEL backend.
535  *
536  * \def ROT_MODEL_PROSISTEL_COMBI_TRACK_AZEL
537  *
538  * The PROSISTEL_AZEL_COMBI_TRACK_AZEL backend can be used with rotators that
539  * support the Prosistel combination azimuth and elevation protocol.
540  */
541 //! @cond Doxygen_Suppress
542 #define ROT_PROSISTEL 17
543 #define ROT_BACKEND_PROSISTEL "prosistel"
544 //! @endcond
545 #define ROT_MODEL_PROSISTEL_D_AZ ROT_MAKE_MODEL(ROT_PROSISTEL, 1)
546 #define ROT_MODEL_PROSISTEL_D_EL ROT_MAKE_MODEL(ROT_PROSISTEL, 2)
547 #define ROT_MODEL_PROSISTEL_COMBI_TRACK_AZEL ROT_MAKE_MODEL(ROT_PROSISTEL, 3)
548 
549 
550 /**
551  * \brief A macro that returns the model number of the MEADE backend.
552  *
553  * \def ROT_MODEL_MEADE
554  *
555  * The MEADE backend can be used with Meade telescope rotators like the
556  * DS-2000.
557  */
558 //! @cond Doxygen_Suppress
559 #define ROT_MEADE 18
560 #define ROT_BACKEND_MEADE "meade"
561 //! @endcond
562 #define ROT_MODEL_MEADE ROT_MAKE_MODEL(ROT_MEADE, 1)
563 
564 /**
565  * \brief A macro that returns the model number of the IOPTRON backend.
566  *
567  * \def ROT_MODEL_IOPTRON
568  *
569  * The IOPTRON backend can be used with IOPTRON telescope mounts.
570  */
571 //! @cond Doxygen_Suppress
572 #define ROT_IOPTRON 19
573 #define ROT_BACKEND_IOPTRON "ioptron"
574 //! @endcond
575 #define ROT_MODEL_IOPTRON ROT_MAKE_MODEL(ROT_IOPTRON, 1)
576 
577 
578 /**
579  * \brief A macro that returns the model number of the INDI backend.
580  *
581  * \def ROT_MODEL_INDI
582  *
583  * The INDI backend can be used with rotators that support the INDI interface.
584  */
585 //! @cond Doxygen_Suppress
586 #define ROT_INDI 20
587 #define ROT_BACKEND_INDI "indi"
588 //! @endcond
589 #define ROT_MODEL_INDI ROT_MAKE_MODEL(ROT_INDI, 1)
590 
591 
592 /**
593  * \brief A macro that returns the model number of the SATEL backend.
594  *
595  * \def ROT_MODEL_SATEL
596  *
597  * The SATEL backend can be used with rotators that support the VE5FP
598  * interface.
599  */
600 //! @cond Doxygen_Suppress
601 #define ROT_SATEL 21
602 #define ROT_BACKEND_SATEL "satel"
603 //! @endcond
604 #define ROT_MODEL_SATEL ROT_MAKE_MODEL(ROT_SATEL, 1)
605 
606 
607 /**
608  * \brief A macro that returns the model number of the RADANT backend.
609  *
610  * \def ROT_MODEL_RADANT
611  *
612  * The RADANT backend can be used with rotators that support the MS232
613  * interface.
614  */
615 //! @cond Doxygen_Suppress
616 #define ROT_RADANT 22
617 #define ROT_BACKEND_RADANT "radant"
618 //! @endcond
619 #define ROT_MODEL_RADANT ROT_MAKE_MODEL(ROT_RADANT, 1)
620 
621 
622 /**
623  * \brief Convenience type definition for a rotator model.
624  *
625  * \typedef typedef int rot_model_t
626 */
627 typedef int rot_model_t;
628 
629 
630 #endif /* _ROTLIST_H */
631 
632 /** @} */
633