296 lines
10 KiB
C
296 lines
10 KiB
C
#ifndef lint
|
|
static char sccsid[] = "@(#)inqinput77.c 1.1 94/10/31 Copyr 1985-9 Sun Micro";
|
|
#endif
|
|
|
|
/*
|
|
* Copyright (c) 1985, 1986, 1987, 1988, 1989 by Sun Microsystems, Inc.
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
* purpose and without fee is hereby granted, provided that the above
|
|
* copyright notice appear in all copies and that both that copyright
|
|
* notice and this permission notice are retained, and that the name
|
|
* of Sun Microsystems, Inc., not be used in advertising or publicity
|
|
* pertaining to this software without specific, written prior permission.
|
|
* Sun Microsystems, Inc., makes no representations about the suitability
|
|
* of this software or the interface defined in this software for any
|
|
* purpose. It is provided "as is" without express or implied warranty.
|
|
*/
|
|
/*
|
|
* Input Inquiry functions
|
|
*/
|
|
|
|
/*
|
|
inquire_input_capabilities
|
|
inquire_lid_capabilities
|
|
inquire_trigger_capabilities
|
|
inquire_lid_state
|
|
inquire_lid_state_list
|
|
inquire_trigger_state
|
|
inquire_event_queue_state
|
|
*/
|
|
#include "cgidefs.h"
|
|
#include "cf77.h"
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* FUNCTION: cfqinpcaps */
|
|
/* */
|
|
/* */
|
|
/****************************************************************************/
|
|
int cfqinpcaps_ (valid,numloc,numval,numstrk,numchoice,numstr,numtrig,
|
|
evqueue,asynch, coordmap,echo,tracking,prompt,acknowledgement,trigman)
|
|
int * valid;
|
|
int * numloc;
|
|
int * numval;
|
|
int * numstrk;
|
|
int * numchoice;
|
|
int * numstr;
|
|
int * numtrig;
|
|
int * evqueue;
|
|
int * asynch;
|
|
int * coordmap;
|
|
int * echo;
|
|
int * tracking;
|
|
int * prompt;
|
|
int * acknowledgement;
|
|
int * trigman;
|
|
{
|
|
Clogical val; /* device state */
|
|
Ccgidesctab table; /* CGI input description table */
|
|
int err;
|
|
|
|
err = inquire_input_capabilities (&val, &table);
|
|
*numloc = table.numloc;
|
|
*numval = table.numval;
|
|
*numstrk = table.numstrk;
|
|
*numchoice = table.numchoice;
|
|
*numstr = table.numstr;
|
|
*numtrig = table.numtrig;
|
|
*valid = (int) val;
|
|
*evqueue = (int) table.event_queue;
|
|
*asynch = (int) table.asynch;
|
|
*coordmap = (int) table.coord_map;
|
|
*echo = (int) table.echo;
|
|
*tracking = (int) table.tracking;
|
|
*prompt = (int) table.prompt;
|
|
*acknowledgement = (int) table.acknowledgement;
|
|
*trigman = (int) table.trigger_manipulation;
|
|
return (err);
|
|
}
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* FUNCTION: cfqlidcaps */
|
|
/* */
|
|
/****************************************************************************/
|
|
int cfqlidcaps_ (devclass,devnum,valid,sample,change,numassoc,trigassoc,
|
|
promptinp,ackinp,necho,echo,echotype,classdep,state,prompt,
|
|
acknowledgement, x,y,xlist,ylist,n,val,choice,string,
|
|
segid,pickid, ntrig,triggers,echotyp,echosta,echodat,
|
|
f77strlen1,f77strlen2)
|
|
int *devclass;
|
|
int *devnum; /* device type, device number */
|
|
int *valid; /* device supported at all */
|
|
int *sample;
|
|
int *change;
|
|
int *numassoc;
|
|
int trigassoc[];
|
|
int *promptinp;
|
|
int *ackinp;
|
|
int *necho;
|
|
int echo[];
|
|
int echotype[];
|
|
char *classdep; /* f77strlen1 is length */
|
|
int *state;
|
|
int *prompt;
|
|
int *acknowledgement;
|
|
int *x, *y;
|
|
int xlist[], ylist[];
|
|
int *n;
|
|
float *val;
|
|
int *choice;
|
|
char *string; /* f77strlen2 is length */
|
|
int *segid;
|
|
int *pickid;
|
|
int *ntrig;
|
|
int triggers[];
|
|
int *echotyp, *echosta, *echodat;
|
|
{
|
|
Cliddescript table; /* table of descriptors */
|
|
int err;
|
|
|
|
err = inquire_lid_capabilities ((Cdevoff) *devclass, *devnum,
|
|
(Clogical*)valid, &table);
|
|
|
|
/* Pass back all non-structure members of Cliddescript */
|
|
*sample = (int)table.sample;
|
|
*change = (int)table.change;
|
|
*numassoc = (int)table.numassoc;
|
|
RETURN_1ARRAY(trigassoc, table.trigassoc, *numassoc);
|
|
*promptinp = (int)table.prompt;
|
|
*ackinp = (int) table.acknowledgement;
|
|
RETURN_STRING(classdep, table.classdep, f77strlen1);
|
|
|
|
/* Pass back the Cechostatelst sub-structure */
|
|
*necho = (int)table.echo->n;
|
|
RETURN_1ARRAY(echo, table.echo->elements, *necho);
|
|
RETURN_1ARRAY(echotype, table.echo->echos, *necho);
|
|
|
|
/* Pass back the Cstatelist sub-structure */
|
|
*state = (int)table.state.state;
|
|
*prompt = (int)table.state.prompt;
|
|
*acknowledgement = (int)table.state.acknowledgement;
|
|
RETURN_INREP(*devclass,x,y,xlist,ylist,n,val,choice,string,f77strlen2,
|
|
segid,pickid,table.state.current);
|
|
*ntrig = table.state.n;
|
|
RETURN_1ARRAY(triggers, table.state.triggers, table.state.n);
|
|
*echotyp = (int)table.state.echotyp;
|
|
*echosta = (int)table.state.echosta;
|
|
*echodat = table.state.echodat;
|
|
|
|
return (err);
|
|
}
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* FUNCTION: cfqtrigcaps */
|
|
/* */
|
|
/* */
|
|
/****************************************************************************/
|
|
|
|
int cfqtrigcaps_ (trigger,valid,change,n,class,assoc,maxassoc,
|
|
prompt,acknowledgement,name,description,f77strlen1,f77strlen2)
|
|
int *trigger; /* trigger number */
|
|
int * valid; /* trigger supported at all */
|
|
int * change;
|
|
int * n;
|
|
int class[];
|
|
int assoc[];
|
|
int * maxassoc;
|
|
int * prompt;
|
|
int * acknowledgement;
|
|
char *name;
|
|
char *description;
|
|
int f77strlen1;
|
|
int f77strlen2;
|
|
{
|
|
Ctrigdis tdis; /* trigger description table */
|
|
int err;
|
|
|
|
err = inquire_trigger_capabilities (*trigger, (Clogical*) valid, &tdis) ;
|
|
|
|
*change = (int) tdis.change;
|
|
*n = (int) tdis.numassoc->n;
|
|
RETURN_1ARRAY(class, tdis.numassoc->class, tdis.numassoc->n);
|
|
RETURN_1ARRAY(assoc, tdis.numassoc->assoc, tdis.numassoc->n);
|
|
*maxassoc = (int) tdis.maxassoc;
|
|
*prompt = (int) tdis.prompt;
|
|
*acknowledgement = (int) tdis.acknowledgement;
|
|
RETURN_STRING(name, tdis.name, f77strlen1);
|
|
RETURN_STRING(description, tdis.description, f77strlen2);
|
|
return (err);
|
|
}
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* FUNCTION: cfqlidstate */
|
|
/* */
|
|
/* */
|
|
/****************************************************************************/
|
|
|
|
cfqlidstate_ (devclass, devnum, valid, state)
|
|
int *devclass;
|
|
int *devnum; /* device type, device number */
|
|
int * valid; /* trigger supported at all */
|
|
int * state; /* event ability */
|
|
{
|
|
return(inquire_lid_state (*devclass, *devnum, (Clogical*)valid,
|
|
(Clidstate*)state));
|
|
}
|
|
/****************************************************************************/
|
|
/* */
|
|
/* FUNCTION: cfqlidstatelis */
|
|
/* */
|
|
/* Reports the state of specific input devices. */
|
|
/****************************************************************************/
|
|
|
|
int cfqlidstatelis_(devclass, devnum, valid, state, prompt, acknowledgement,
|
|
x, y, xlist, ylist, n, val, choice, string, segid, pickid,
|
|
ntrig, triggers, echotyp, echosta, echodat,f77strlen)
|
|
int *devclass;
|
|
int *devnum; /* device type, device number */
|
|
int * valid; /* trigger supported at all */
|
|
int *state;
|
|
int *prompt;
|
|
int *acknowledgement;
|
|
int *x, *y;
|
|
int xlist[], ylist[];
|
|
int *n;
|
|
float *val;
|
|
int *choice;
|
|
char *string; /* f77strlen is length */
|
|
int *segid;
|
|
int *pickid;
|
|
int *ntrig;
|
|
int triggers[];
|
|
int *echotyp, *echosta, *echodat;
|
|
int f77strlen;
|
|
{
|
|
Cstatelist value;
|
|
int err;
|
|
|
|
err = inquire_lid_state_list (*devclass, *devnum, (Clogical*)valid, &value);
|
|
|
|
/* Pass back the Cstatelist structure */
|
|
*state = (int)value.state;
|
|
*prompt = (int)value.prompt;
|
|
*acknowledgement = (int)value.acknowledgement;
|
|
RETURN_INREP(*devclass,x,y,xlist,ylist,n,val,choice,string,f77strlen,
|
|
segid,pickid,value.current);
|
|
*ntrig = value.n;
|
|
RETURN_1ARRAY(triggers, value.triggers, value.n);
|
|
*echotyp = (int)value.echotyp;
|
|
*echosta = (int)value.echosta;
|
|
*echodat = value.echodat;
|
|
return (err);
|
|
}
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* FUNCTION: cfqtrigstate */
|
|
/* */
|
|
/****************************************************************************/
|
|
|
|
int cfqtrigstate_ (trigger, valid, state,n,class,assoc)
|
|
int trigger;
|
|
int * valid; /* device state */
|
|
int * state;
|
|
int * n;
|
|
int class[];
|
|
int assoc[];
|
|
{
|
|
Ctrigstate trig; /* active or inactive */
|
|
int err;
|
|
|
|
err = inquire_trigger_state (trigger, (Clogical*)valid, &trig);
|
|
*state = (int) trig.state;
|
|
*n = trig.assoc->n;
|
|
RETURN_1ARRAY(class, trig.assoc->class, trig.assoc->n);
|
|
RETURN_1ARRAY(assoc, trig.assoc->assoc, trig.assoc->n);
|
|
return (err);
|
|
}
|
|
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* FUNCTION: cfqevque */
|
|
/* */
|
|
/****************************************************************************/
|
|
|
|
int cfqevque_ (qstate, qoflow)
|
|
int * qstate;
|
|
int * qoflow;
|
|
{
|
|
return (inquire_event_queue_state ( (Ceqflow *)qstate, (Cqtype *)qoflow));
|
|
}
|