Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / api / cns / cns_API.c
1 #include <signal.h>
2 #include <setjmp.h>
3
4 #include AVT_H
5 #include API_H
6 #include CNS_H
7
8 #define API_USE_REAL_TYPES
9 #include "cns_API.h"
10
11 static sigjmp_buf cnsapi_JumpBuffer;
12 static void (*OldExitHandler) () = NULL;
13
14 static void
15 cnsapi_ExitHandler()
16 {
17 MBK_EXIT_FUNCTION = OldExitHandler;
18 siglongjmp(cnsapi_JumpBuffer, 1);
19 }
20
21 static void
22 cnsapi_SetExitHandler()
23 {
24 OldExitHandler = MBK_EXIT_FUNCTION;
25 MBK_EXIT_FUNCTION = cnsapi_ExitHandler;
26 }
27
28 cnsfig_list *cns_LoadConeFigure(char *name)
29 {
30 cnsfig_list *cf = NULL;
31 lofig_list *lf = NULL;
32 char *n;
33
34 cnsenv();
35 if ((cf = getloadedcnsfig(name)) != NULL)
36 avt_errmsg(CNS_API_ERRMSG, "001", AVT_WARNING, n);
37 else {
38 if ((lf = getloadedlofig(name)) != NULL) {
39 avt_errmsg(CNS_API_ERRMSG, "002", AVT_WARNING, n);
40 }
41 else {
42 cnsapi_SetExitHandler();
43 if (sigsetjmp(cnsapi_JumpBuffer, 1) == 0) {
44 cf = loadcnsfig(name, NULL);
45 }
46 }
47 }
48
49 if (cf == NULL)
50 avt_errmsg(CNS_API_ERRMSG, "003", AVT_ERROR, n);
51 return cf;
52 }
53
54 cnsfig_list *cns_GetConeFigure(char *name)
55 {
56 return getloadedcnsfig(name);
57 }
58
59 void cns_SaveVerboseConeFile(cnsfig_list *cf)
60 {
61 cnsenv();
62 savecnvfig(cf);
63 }
64
65 void cns_DisplayPowerSupplies(FILE *f, cnsfig_list *cf)
66 {
67 alim_list *ptsupply;
68 lotrs_list *ptlotrs;
69 cone_list *ptcone;
70 ptype_list *ptuser;
71 int numsupply;
72
73 if ((ptuser = getptype(cf->USER, CNS_POWER_SUPPLIES)) == NULL) return;
74 fprintf(f, "Figure Supply List\n\n");
75 numsupply = 1;
76 for (ptsupply = (alim_list *)ptuser->DATA; ptsupply; ptsupply = ptsupply->NEXT) {
77 fprintf(f, "%d)\n", numsupply++);
78 fprintf(f, "\tVDDMAX: %.2f\n", ptsupply->VDDMAX);
79 fprintf(f, "\tVDDMIN: %.2f\n", ptsupply->VDDMIN);
80 fprintf(f, "\tVSSMAX: %.2f\n", ptsupply->VSSMAX);
81 fprintf(f, "\tVSSMIN: %.2f\n", ptsupply->VSSMIN);
82 fprintf(f, "\n");
83 }
84 numsupply = 1;
85 fprintf(f, "Transistor Supplies\n\n");
86 for (ptlotrs = cf->LOTRS; ptlotrs; ptlotrs = ptlotrs->NEXT) {
87 ptsupply = cns_get_lotrs_multivoltage(ptlotrs);
88 fprintf(f, "%d) %s\n", numsupply++, ptlotrs->TRNAME);
89 fprintf(f, "\tVDDMAX: %.2f\n", ptsupply->VDDMAX);
90 fprintf(f, "\tVDDMIN: %.2f\n", ptsupply->VDDMIN);
91 fprintf(f, "\tVSSMAX: %.2f\n", ptsupply->VSSMAX);
92 fprintf(f, "\tVSSMIN: %.2f\n", ptsupply->VSSMIN);
93 fprintf(f, "\n");
94 }
95 numsupply = 1;
96 fprintf(f, "Cone Supplies\n\n");
97 for (ptcone = cf->CONE; ptcone; ptcone = ptcone->NEXT) {
98 if ((ptuser = getptype(ptcone->USER, CNS_SUPPLY)) == NULL) continue;
99 ptsupply = (alim_list *)ptuser->DATA;
100 fprintf(f, "%d) %s\n", numsupply++, ptcone->NAME);
101 fprintf(f, "\tVDDMAX: %.2f\n", ptsupply->VDDMAX);
102 fprintf(f, "\tVDDMIN: %.2f\n", ptsupply->VDDMIN);
103 fprintf(f, "\tVSSMAX: %.2f\n", ptsupply->VSSMAX);
104 fprintf(f, "\tVSSMIN: %.2f\n", ptsupply->VSSMIN);
105 fprintf(f, "\n");
106 }
107 }
108