Hamlib 4.5.5
Loading...
Searching...
No Matches
amplifier.h
1/*
2 * Hamlib Interface - Amplifier API header
3 * Copyright (c) 2000-2005 by Stephane Fillod
4 *
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 *
20 */
21
22#ifndef _AMPLIFIER_H
23#define _AMPLIFIER_H 1
24
25#include <hamlib/rig.h>
26#include <hamlib/amplist.h>
27
46__BEGIN_DECLS
47
48/* Forward struct references */
49
50struct amp;
51struct amp_state;
52
53
64typedef struct amp AMP;
65
66
80typedef float swr_t;
81
82
100typedef int tune_value_t;
101
102
106#define NETAMPCTL_RET "RPRT "
107
108
110typedef enum
111{
112 AMP_RESET_MEM, // erase tuner memory
113 AMP_RESET_FAULT, // reset any fault
114 AMP_RESET_AMP // for kpa1500
115} amp_reset_t;
117
121typedef enum
122{
123 AMP_FLAG_1 = (1 << 1),
124 AMP_FLAG_2 = (1 << 2)
125} amp_type_t;
126
128// TBD AMP_TYPE
129#define AMP_TYPE_MASK (AMP_FLAG_1|AMP_FLAG_2)
130
131#define AMP_TYPE_OTHER 0
132#define AMP_TYPE_1 AMP_FLAG_1
133#define AMP_TYPE_2 AMP_FLAG_2
134#define AMP_TYPE_ALL (AMP_FLAG_1|AMP_FLAG_2)
136
137
139enum amp_level_e
140{
141 AMP_LEVEL_NONE = 0,
142 AMP_LEVEL_SWR = (1 << 0),
143 AMP_LEVEL_NH = (1 << 1),
144 AMP_LEVEL_PF = (1 << 2),
145 AMP_LEVEL_PWR_INPUT = (1 << 3),
146 AMP_LEVEL_PWR_FWD = (1 << 4),
147 AMP_LEVEL_PWR_REFLECTED = (1 << 5),
148 AMP_LEVEL_PWR_PEAK = (1 << 6),
149 AMP_LEVEL_FAULT = (1 << 7),
150 AMP_LEVEL_PWR = (1 << 8),
151};
153
155#define AMP_LEVEL_FLOAT_LIST (AMP_LEVEL_SWR)
156#define AMP_LEVEL_STRING_LIST (AMP_LEVEL_FAULT)
157#define AMP_LEVEL_IS_FLOAT(l) ((l)&AMP_LEVEL_FLOAT_LIST)
158#define AMP_LEVEL_IS_STRING(l) ((l)&AMP_LEVEL_STRING_LIST)
160
161/* Basic amp type, can store some useful info about different amplifiers. Each
162 * lib must be able to populate this structure, so we can make useful
163 * enquiries about capabilities.
164 */
165
167#define AMP_MODEL(arg) .amp_model=arg,.macro_name=#arg
169
188struct amp_caps
189{
190 amp_model_t amp_model;
191 const char *model_name;
192 const char *mfg_name;
193 const char *version;
194 const char *copyright;
195 enum rig_status_e status;
197 int amp_type;
198 enum rig_port_e port_type;
200 int serial_rate_min;
201 int serial_rate_max;
202 int serial_data_bits;
203 int serial_stop_bits;
204 enum serial_parity_e serial_parity;
205 enum serial_handshake_e serial_handshake;
207 int write_delay;
208 int post_write_delay;
209 int timeout;
210 int retry;
212 const struct confparams *cfgparams;
213 const rig_ptr_t priv;
214 const char *amp_model_macro_name;
216 setting_t has_get_level;
217 setting_t has_set_level;
219 gran_t level_gran[RIG_SETTING_MAX];
220 gran_t parm_gran[RIG_SETTING_MAX];
222 /*
223 * Amp Admin API
224 *
225 */
226
227 int (*amp_init)(AMP *amp);
228 int (*amp_cleanup)(AMP *amp);
229 int (*amp_open)(AMP *amp);
230 int (*amp_close)(AMP *amp);
232 int (*set_freq)(AMP *amp, freq_t val);
233 int (*get_freq)(AMP *amp, freq_t *val);
235 int (*set_conf)(AMP *amp, token_t token, const char *val);
236 int (*get_conf2)(AMP *amp, token_t token, char *val, int val_len);
237 int (*get_conf)(AMP *amp, token_t token, char *val);
239 /*
240 * General API commands, from most primitive to least.. :()
241 * List Set/Get functions pairs
242 */
243
244 int (*reset)(AMP *amp, amp_reset_t reset);
245 int (*get_level)(AMP *amp, setting_t level, value_t *val);
246 int (*set_level)(AMP *amp, setting_t level, value_t val);
247 int (*get_ext_level)(AMP *amp, token_t level, value_t *val);
248 int (*set_ext_level)(AMP *amp, token_t level, value_t val);
249 int (*set_powerstat)(AMP *amp, powerstat_t status);
250 int (*get_powerstat)(AMP *amp, powerstat_t *status);
253 /* get firmware info, etc. */
254 const char *(*get_info)(AMP *amp);
257 setting_t levels;
258 unsigned ext_levels;
260 const struct confparams *extlevels;
261 const struct confparams *extparms;
263 const char *macro_name;
264};
265
266
278struct amp_state
279{
280 /*
281 * overridable fields
282 */
283
284 /*
285 * non overridable fields, internal use
286 */
287 hamlib_port_t_deprecated ampport_deprecated;
289 int comm_state;
290 rig_ptr_t priv;
291 rig_ptr_t obj;
293 setting_t has_get_level;
294 setting_t has_set_level;
296 gran_t level_gran[RIG_SETTING_MAX];
297 gran_t parm_gran[RIG_SETTING_MAX];
298 hamlib_port_t ampport;
299};
300
301
314struct amp
315{
316 struct amp_caps *caps;
317 struct amp_state state;
318};
319
320
322/* --------------- API function prototypes -----------------*/
323
324extern HAMLIB_EXPORT(AMP *)
325amp_init HAMLIB_PARAMS((amp_model_t amp_model));
326
327extern HAMLIB_EXPORT(int)
328amp_open HAMLIB_PARAMS((AMP *amp));
329
330extern HAMLIB_EXPORT(int)
331amp_close HAMLIB_PARAMS((AMP *amp));
332
333extern HAMLIB_EXPORT(int)
334amp_cleanup HAMLIB_PARAMS((AMP *amp));
335
336extern HAMLIB_EXPORT(int)
337amp_set_conf HAMLIB_PARAMS((AMP *amp,
338 token_t token,
339 const char *val));
340extern HAMLIB_EXPORT(int)
341amp_get_conf HAMLIB_PARAMS((AMP *amp,
342 token_t token,
343 char *val));
344extern HAMLIB_EXPORT(int)
345amp_set_powerstat HAMLIB_PARAMS((AMP *amp,
346 powerstat_t status));
347extern HAMLIB_EXPORT(int)
348amp_get_powerstat HAMLIB_PARAMS((AMP *amp,
349 powerstat_t *status));
350
351
352/*
353 * General API commands, from most primitive to least.. )
354 * List Set/Get functions pairs
355 */
356extern HAMLIB_EXPORT(int)
357amp_get_freq HAMLIB_PARAMS((AMP *amp,
358 freq_t *freq));
359extern HAMLIB_EXPORT(int)
360amp_set_freq HAMLIB_PARAMS((AMP *amp,
361 freq_t freq));
362
363extern HAMLIB_EXPORT(int)
364amp_reset HAMLIB_PARAMS((AMP *amp,
365 amp_reset_t reset));
366
367extern HAMLIB_EXPORT(const char *)
368amp_get_info HAMLIB_PARAMS((AMP *amp));
369
370extern HAMLIB_EXPORT(int)
371amp_get_level HAMLIB_PARAMS((AMP *amp, setting_t level, value_t *val));
372
373extern HAMLIB_EXPORT(int)
374amp_set_level HAMLIB_PARAMS((AMP *amp, setting_t level, value_t val));
375
376
377extern HAMLIB_EXPORT(int)
378amp_register HAMLIB_PARAMS((const struct amp_caps *caps));
379
380extern HAMLIB_EXPORT(int)
381amp_unregister HAMLIB_PARAMS((amp_model_t amp_model));
382
383extern HAMLIB_EXPORT(int)
384amp_list_foreach HAMLIB_PARAMS((int (*cfunc)(const struct amp_caps *,
385 rig_ptr_t),
386 rig_ptr_t data));
387
388extern HAMLIB_EXPORT(int)
389amp_load_backend HAMLIB_PARAMS((const char *be_name));
390
391extern HAMLIB_EXPORT(int)
392amp_check_backend HAMLIB_PARAMS((amp_model_t amp_model));
393
394extern HAMLIB_EXPORT(int)
395amp_load_all_backends HAMLIB_PARAMS((void));
396
397extern HAMLIB_EXPORT(amp_model_t)
398amp_probe_all HAMLIB_PARAMS((hamlib_port_t *p));
399
400extern HAMLIB_EXPORT(int)
401amp_token_foreach HAMLIB_PARAMS((AMP *amp,
402 int (*cfunc)(const struct confparams *,
403 rig_ptr_t),
404 rig_ptr_t data));
405
406extern HAMLIB_EXPORT(const struct confparams *)
407amp_confparam_lookup HAMLIB_PARAMS((AMP *amp,
408 const char *name));
409
410extern HAMLIB_EXPORT(token_t)
411amp_token_lookup HAMLIB_PARAMS((AMP *amp,
412 const char *name));
413
414extern HAMLIB_EXPORT(const struct amp_caps *)
415amp_get_caps HAMLIB_PARAMS((amp_model_t amp_model));
416
417extern HAMLIB_EXPORT(setting_t)
418amp_has_get_level HAMLIB_PARAMS((AMP *amp,
419 setting_t level));
420
421extern HAMLIB_EXPORT(setting_t)
422amp_has_set_level HAMLIB_PARAMS((AMP *amp,
423 setting_t level));
424
425extern HAMLIB_EXPORT(const struct confparams *)
426amp_ext_lookup HAMLIB_PARAMS((AMP *amp,
427 const char *name));
428
429extern HAMLIB_EXPORT(int)
430amp_get_ext_level HAMLIB_PARAMS((AMP *amp,
431 token_t token,
432 value_t *val));
433
434extern HAMLIB_EXPORT(int)
435amp_set_ext_level HAMLIB_PARAMS((AMP *amp,
436 token_t token,
437 value_t val));
438
439extern HAMLIB_EXPORT(const char *) amp_strlevel(setting_t);
440
441extern HAMLIB_EXPORT(const struct confparams *)
442rig_ext_lookup HAMLIB_PARAMS((RIG *rig,
443 const char *name));
444
445extern HAMLIB_EXPORT(setting_t) amp_parse_level(const char *s);
446extern HAMLIB_EXPORT(const char *) amp_strlevel(setting_t);
447
449
450
459#define amp_debug rig_debug
460
461__END_DECLS
462
463#endif /* _AMPLIFIER_H */
464
Hamlib amplifier model definitions.
int amp_set_freq(AMP *amp, freq_t freq)
Set the operating frequency of the amplifier.
Definition amplifier.c:656
int amp_reset(AMP *amp, amp_reset_t reset)
Reset the amplifier.
Definition amplifier.c:577
int amp_set_conf(AMP *amp, token_t token, const char *val)
Set an amplifier configuration parameter.
Definition amp_conf.c:654
setting_t amp_has_get_level(AMP *amp, setting_t level)
Check which level settings can be queried.
Definition amp_settings.c:102
int amp_cleanup(AMP *amp)
Release an #AMP handle and free associated memory.
Definition amplifier.c:531
int amp_model_t
Convenience type definition for an amplifier model.
Definition amplist.h:119
int amp_set_ext_level(AMP *amp, token_t level, value_t val)
Set the value of a requested extension levels token.
Definition amplifier.c:802
const struct confparams * amp_ext_lookup(AMP *amp, const char *name)
Lookup an extension levels or parameters token by its name and return a pointer to the containing con...
Definition extamp.c:176
int amp_set_level(AMP *amp, setting_t level, value_t val)
Set the value of a requested level.
Definition amplifier.c:729
int amp_close(AMP *amp)
Close the communication channel to the amplifier.
Definition amplifier.c:445
int amp_set_powerstat(AMP *amp, powerstat_t status)
Turn the amplifier On or Off or toggle the Standby or Operate status.
Definition amplifier.c:875
AMP * amp_init(amp_model_t amp_model)
Allocate a new #AMP handle.
Definition amplifier.c:183
setting_t amp_has_set_level(AMP *amp, setting_t level)
Check which level settings can be set.
Definition amp_settings.c:69
const struct confparams * amp_confparam_lookup(AMP *amp, const char *name)
Query an amplifier configuration parameter token by its name.
Definition amp_conf.c:558
int amp_get_powerstat(AMP *amp, powerstat_t *status)
Query the power or standby status of the amplifier.
Definition amplifier.c:912
int amp_get_ext_level(AMP *amp, token_t level, value_t *val)
Query the value of a requested extension levels token.
Definition amplifier.c:837
int amp_get_level(AMP *amp, setting_t level, value_t *val)
Query the value of a requested level.
Definition amplifier.c:766
int amp_get_freq(AMP *amp, freq_t *freq)
Query the operating frequency of the amplifier.
Definition amplifier.c:616
token_t amp_token_lookup(AMP *amp, const char *name)
Search for the token ID associated with an amplifier configuration parameter token name.
Definition amp_conf.c:619
const char * amp_get_info(AMP *amp)
Query general information from the amplifier.
Definition amplifier.c:691
int amp_open(AMP *amp)
Open the communication channel to the amplifier.
Definition amplifier.c:305
setting_t amp_parse_level(const char *s)
Convert alpha string to enum AMP_LEVEL_...
Definition misc.c:1021
const char * amp_strlevel(setting_t level)
Convert enum AMP_LEVEL_... to alpha string.
Definition misc.c:1112
serial_parity_e
Serial parity.
Definition rig.h:287
uint64_t setting_t
Setting.
Definition rig.h:1094
powerstat_t
Radio power state.
Definition rig.h:664
double freq_t
Frequency type,.
Definition rig.h:412
rig_port_e
Port type.
Definition rig.h:266
serial_handshake_e
Serial handshake.
Definition rig.h:299
#define RIG_SETTING_MAX
Maximum # of rig settings.
Definition rig.h:1100
const struct confparams * rig_ext_lookup(RIG *rig, const char *name)
lookup ext token by its name, return pointer to confparams struct.
Definition ext.c:232
struct s_rig RIG
Rig structure definition (see rig for details).
Definition rig.h:218
long token_t
configuration token
Definition rig.h:769
rig_status_e
Development status of the backend.
Definition rig.h:371
Hamlib rig data structures.
Configuration parameter structure.
Definition rig.h:808
level/parm granularity definition
Definition rig.h:1613
Universal approach for passing values.
Definition rig.h:933