2021-10-11 18:37:13 -03:00

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));
}