kopia lustrzana https://github.com/Hamlib/Hamlib
				
				
				
			
		
			
				
	
	
		
			253 wiersze
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			253 wiersze
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
unit hamlib_rotapi;
 | 
						|
 | 
						|
interface
 | 
						|
 | 
						|
Uses
 | 
						|
    hamlib_rigapi;
 | 
						|
 | 
						|
{$MINENUMSIZE 4}
 | 
						|
{* The $MINENUMSIZE directive controls the
 | 
						|
 * minimum storage size of enumerated types. *}
 | 
						|
 | 
						|
{$UNDEF HAVE_MAGIC_NUMBERS}
 | 
						|
 | 
						|
{$IFDEF HAVE_MAGIC_NUMBERS}
 | 
						|
const
 | 
						|
    ROT_MAGIC           = $12348889;
 | 
						|
    ROT_MAGIC_CAPS      = $12348899;
 | 
						|
    ROT_MAGIC_STATE     = $12348999;
 | 
						|
    ROT_MAGIC_CALLBACKS = $12349999;
 | 
						|
{$ENDIF}
 | 
						|
 | 
						|
const
 | 
						|
    ROT_FLAG_AZIMUTH   = (1 shl 1);
 | 
						|
    ROT_FLAG_ELEVATION = (1 shl 2);
 | 
						|
    ROT_TYPE_OTHER     = 0;
 | 
						|
 | 
						|
type
 | 
						|
    elevation_t = float;
 | 
						|
    azimuth_t = float;
 | 
						|
 | 
						|
    rot_model_t = integer;
 | 
						|
    rot_reset_t = integer;
 | 
						|
 | 
						|
    PRot = ^TRot;   // forward declaration
 | 
						|
 | 
						|
    rot_caps = packed record
 | 
						|
        rot_model : rot_model_t;
 | 
						|
        model_name : PChar;
 | 
						|
        mfg_name : PChar;
 | 
						|
        version : PChar;
 | 
						|
        copyright : PChar;
 | 
						|
        status : rig_status_e;
 | 
						|
 | 
						|
        rot_type : integer;
 | 
						|
        port_type : rig_port_e;
 | 
						|
 | 
						|
        serial_rate_min : integer;
 | 
						|
        serial_rate_max : integer;
 | 
						|
        serial_stop_bits : integer;
 | 
						|
        serial_parity : serial_parity_e;
 | 
						|
        serial_handshake_e : serial_handshake_e;
 | 
						|
 | 
						|
        write_delay : integer;
 | 
						|
        post_write_delay : integer;
 | 
						|
        timeout : integer;
 | 
						|
        retry : integer;
 | 
						|
 | 
						|
        {*
 | 
						|
         * Movement range, az is relative to North
 | 
						|
         * negative values allowed for overlap
 | 
						|
         *}
 | 
						|
        min_az : azimuth_t;
 | 
						|
        max_az : azimuth_t;
 | 
						|
        min_el : elevation_t;
 | 
						|
        max_el : elevation_t;
 | 
						|
 | 
						|
        cfgparams : PConfparms;
 | 
						|
        priv : rig_ptr_t;
 | 
						|
 | 
						|
        {*
 | 
						|
         * Rot Admin API
 | 
						|
         *
 | 
						|
         *}
 | 
						|
 | 
						|
        rot_init : function(rot: PRot): integer; cdecl;
 | 
						|
        rot_cleanup : function(rot: PRot): integer; cdecl;
 | 
						|
        rot_open : function(rot: PRot): integer; cdecl;
 | 
						|
        rot_close : function(rot: PRot): integer; cdecl;
 | 
						|
 | 
						|
        set_conf : function(rot: PRot; token: token_t; val : PChar): integer; cdecl;
 | 
						|
        get_conf : function(rot: PRot; token: token_t; val : PChar): integer; cdecl;
 | 
						|
 | 
						|
        {*
 | 
						|
         *  General API commands, from most primitive to least.. :()
 | 
						|
         *  List Set/Get functions pairs
 | 
						|
         *}
 | 
						|
        set_position : function(rot: PRot; az: azimuth_t; el: elevation_t): integer; cdecl;
 | 
						|
        get_position : function(rot: PRot; var az: azimuth_t; var el: elevation_t): integer; cdecl;
 | 
						|
 | 
						|
        stop : function(rot: PRot): integer; cdecl;
 | 
						|
        park : function(rot: PRot): integer; cdecl;
 | 
						|
 | 
						|
        reset : function(rot: PRot; reset: rot_reset_t): integer; cdecl;
 | 
						|
        move : function(rot: PRot; direction: integer; speed: integer): integer; cdecl;
 | 
						|
       
 | 
						|
        {* get firmware info, etc. *}
 | 
						|
        get_info : function(rot: PRot): PChar; cdecl;
 | 
						|
 | 
						|
        {* more to come... *}
 | 
						|
{$IFDEF HAVE_MAGIC_NUMBERS}
 | 
						|
        magic : cardinal;
 | 
						|
{$ENDIF}
 | 
						|
    end;
 | 
						|
    TRotCaps = rot_caps;
 | 
						|
    PRotCaps = ^TRotCaps;
 | 
						|
 | 
						|
    {*
 | 
						|
     * Rotator state
 | 
						|
     *
 | 
						|
     * This struct contains live data, as well as a copy of capability fields
 | 
						|
     * that may be updated (ie. customized)
 | 
						|
     *
 | 
						|
     * It is fine to move fields around, as this kind of struct should
 | 
						|
     * not be initialized like caps are.
 | 
						|
     *}
 | 
						|
    rot_state = packed record
 | 
						|
    	{*
 | 
						|
	     * overridable fields
 | 
						|
    	 *}
 | 
						|
        min_az : azimuth_t;
 | 
						|
        max_az : azimuth_t;
 | 
						|
        min_el : elevation_t;
 | 
						|
        max_el : elevation_t;
 | 
						|
 | 
						|
	    {*
 | 
						|
         * non overridable fields, internal use
 | 
						|
    	 *}
 | 
						|
        rotport : port_t;
 | 
						|
 | 
						|
        comm_state : integer;	{* opened or not *}
 | 
						|
        {*
 | 
						|
         * Pointer to private data
 | 
						|
         *}
 | 
						|
        priv : pointer;
 | 
						|
        {*
 | 
						|
         * internal use by hamlib++ & Kylix for event handling
 | 
						|
         *}
 | 
						|
        obj : pointer;
 | 
						|
 | 
						|
        {* etc... *}
 | 
						|
 | 
						|
{$IFDEF HAVE_MAGIC_NUMBERS}
 | 
						|
        magic: cardinal;
 | 
						|
{$ENDIF}
 | 
						|
    end;
 | 
						|
    TRotState = rot_state;
 | 
						|
    PRotState = ^TRotState;
 | 
						|
 | 
						|
    rot_callbacks = packed record
 | 
						|
        position_event : function(rot: PRot; azim: azimuth_t; elev: elevation_t): integer; cdecl;
 | 
						|
 | 
						|
        { more to come }
 | 
						|
 | 
						|
{$IFDEF HAVE_MAGIC_NUMBERS}
 | 
						|
        magic: cardinal;
 | 
						|
{$ENDIF}
 | 
						|
    end;
 | 
						|
    TRotCallbacks = rot_callbacks;
 | 
						|
    PRotCallbacks = ^TRotCallbacks;
 | 
						|
 | 
						|
    {*
 | 
						|
     * struct rot is the master data structure,
 | 
						|
     * acting as a handle for the controlled rotator.
 | 
						|
     *}
 | 
						|
    rot = packed record
 | 
						|
        caps : PRotCaps;
 | 
						|
        state : TRotState;
 | 
						|
        callbacks : TRotCallbacks;
 | 
						|
{$IFDEF HAVE_MAGIC_NUMBERS}
 | 
						|
        magic: cardinal;
 | 
						|
{$ENDIF}
 | 
						|
    end;
 | 
						|
    TRot = rot;
 | 
						|
    //PRot = ^TRot;  // declared above.
 | 
						|
 | 
						|
{* --------------- API function prototypes -----------------*}
 | 
						|
 | 
						|
function rot_init(rot_model: rot_model_t): PRot; cdecl;
 | 
						|
function rot_open(rot: PRot): integer; cdecl;
 | 
						|
function rot_close(rot: PRot): integer; cdecl;
 | 
						|
function rot_cleanup(rot: PRot): integer; cdecl;
 | 
						|
 | 
						|
function rot_set_conf(rot: PRot; token: token_t; val : PChar): integer; cdecl;
 | 
						|
function rot_get_conf(rot: PRot; token: token_t; val : PChar): integer; cdecl;
 | 
						|
 | 
						|
  {*
 | 
						|
   *  General API commands, from most primitive to least.. )
 | 
						|
   *  List Set/Get functions pairs
 | 
						|
   *}
 | 
						|
 | 
						|
function rot_set_position(rot: PRot; az: azimuth_t; el: elevation_t): integer; cdecl;
 | 
						|
function rot_get_position(rot: PRot; var az: azimuth_t; var el: elevation_t): integer; cdecl;
 | 
						|
 | 
						|
function rot_stop(rot: PRot): integer; cdecl;
 | 
						|
function rot_park(rot: PRot): integer; cdecl;
 | 
						|
function rot_reset(rot: PRot; reset: rot_reset_t): integer; cdecl;
 | 
						|
function rot_move(rot: PRot; direction: integer; speed: integer): integer; cdecl;
 | 
						|
function rot_set_position_at(rot: PRot; az: azimuth_t; el: elevation_t; when: longint): integer; cdecl;
 | 
						|
 | 
						|
function rot_get_info(rot: PRot): PChar; cdecl;
 | 
						|
 | 
						|
function rot_register(caps: PRotCaps): integer; cdecl;
 | 
						|
function rot_unregister(rot_model: rot_model_t): integer; cdecl;
 | 
						|
 | 
						|
type __cfunc_1 = function(const _caps: TRotCaps; _data: pointer): integer; cdecl;
 | 
						|
function rot_list_foreach(cfunc : __cfunc_1; data: pointer): integer; cdecl;
 | 
						|
 | 
						|
function rot_load_backend(be_name: PChar): integer; cdecl;
 | 
						|
function rot_check_backend(rot_model: rot_model_t): integer; cdecl;
 | 
						|
function rot_load_all_backends: integer; cdecl;
 | 
						|
function rot_probe_all(p: port_t): rot_model_t; cdecl;
 | 
						|
 | 
						|
type __cfunc_2 = function(const _conf: TConfparms; _data: pointer): integer; cdecl;
 | 
						|
function rot_token_foreach(rot : PRot; cfunc: __cfunc_2; data: pointer): integer; cdecl;
 | 
						|
 | 
						|
function rot_confparam_lookup(rot: PRot; name: PChar): PConfparms; cdecl;
 | 
						|
function rot_token_lookup(rot: PRot; name: PChar): token_t; cdecl;
 | 
						|
 | 
						|
function rot_get_caps(rot_model: rot_model_t): PRotCaps; cdecl;
 | 
						|
 | 
						|
implementation
 | 
						|
 | 
						|
{* Note: hamlib_modulename is defined in hamlib_rigapi.pas *}
 | 
						|
 | 
						|
function rot_init;          external hamlib_modulename name 'rot_init';
 | 
						|
function rot_open;          external hamlib_modulename name 'rot_open';
 | 
						|
function rot_close;         external hamlib_modulename name 'rot_close';
 | 
						|
function rot_cleanup;       external hamlib_modulename name 'rot_cleanup';
 | 
						|
function rot_set_conf;      external hamlib_modulename name 'rot_set_conf';
 | 
						|
function rot_get_conf;      external hamlib_modulename name 'rot_get_conf';
 | 
						|
function rot_set_position;  external hamlib_modulename name 'rot_set_position';
 | 
						|
function rot_get_position;  external hamlib_modulename name 'rot_get_position';
 | 
						|
function rot_stop;          external hamlib_modulename name 'rot_stop';
 | 
						|
function rot_park;          external hamlib_modulename name 'rot_park';
 | 
						|
function rot_reset;         external hamlib_modulename name 'rot_reset';
 | 
						|
function rot_move;          external hamlib_modulename name 'rot_move';
 | 
						|
function rot_set_position_at; external hamlib_modulename name 'rot_set_position_at';
 | 
						|
function rot_get_info;      external hamlib_modulename name 'rot_get_info';
 | 
						|
function rot_register;      external hamlib_modulename name 'rot_register';
 | 
						|
function rot_unregister;    external hamlib_modulename name 'rot_unregister';
 | 
						|
function rot_list_foreach;  external hamlib_modulename name 'rot_list_foreach';
 | 
						|
function rot_load_backend;  external hamlib_modulename name 'rot_load_backend';
 | 
						|
function rot_check_backend; external hamlib_modulename name 'rot_check_backend';
 | 
						|
function rot_load_all_backends; external hamlib_modulename name 'rot_load_all_backends';
 | 
						|
function rot_probe_all;     external hamlib_modulename name 'rot_probe_all';
 | 
						|
function rot_token_foreach; external hamlib_modulename name 'rot_token_foreach';
 | 
						|
function rot_confparam_lookup;  external hamlib_modulename name 'rot_confparam_lookup';
 | 
						|
function rot_token_lookup;  external hamlib_modulename name 'rot_token_lookup';
 | 
						|
function rot_get_caps;      external hamlib_modulename name 'rot_get_caps';
 | 
						|
 | 
						|
end.
 | 
						|
 |