Jspice3
srcpar.c File Reference
#include "spice.h"
#include <stdio.h>
#include "srcdefs.h"
#include "sperror.h"
#include "util.h"
Include dependency graph for srcpar.c:

Go to the source code of this file.

Functions

int SRCparam (CKTcircuit *ckt, int param, IFvalue *value, GENinstance *inst, IFvalue *select)
 

Function Documentation

int SRCparam ( CKTcircuit ckt,
int  param,
IFvalue value,
GENinstance inst,
IFvalue select 
)

Definition at line 18 of file srcpar.c.

25 {
26  SRCinstance *here = (SRCinstance *)inst;
27 
28  switch (param) {
29  case SRC_I:
30  if (here->SRCtype)
31  return (E_BADPARM);
32  here->SRCtype = SRC_I;
33  here->SRCtree = value->tValue;
34  break;
35  case SRC_V:
36  if (here->SRCtype)
37  return (E_BADPARM);
38  here->SRCtype = SRC_V;
39  here->SRCtree = value->tValue;
40  break;
41  case SRC_DEP:
42  if (here->SRCdep)
43  return (E_BADPARM);
44  switch (value->iValue) {
45  case 'A':
46  break;
47  case 'I':
48  if (here->SRCtype)
49  return (E_BADPARM);
50  here->SRCtype = SRC_I;
51  break;
52  case 'V':
53  if (here->SRCtype)
54  return (E_BADPARM);
55  here->SRCtype = SRC_V;
56  break;
57  case 'E':
58  if (here->SRCtype)
59  return (E_BADPARM);
60  here->SRCtype = SRC_V;
61  here->SRCdep = SRC_VC;
62  break;
63  case 'F':
64  if (here->SRCtype)
65  return (E_BADPARM);
66  here->SRCtype = SRC_I;
67  here->SRCdep = SRC_CC;
68  break;
69  case 'G':
70  if (here->SRCtype)
71  return (E_BADPARM);
72  here->SRCtype = SRC_I;
73  here->SRCdep = SRC_VC;
74  break;
75  case 'H':
76  if (here->SRCtype)
77  return (E_BADPARM);
78  here->SRCtype = SRC_V;
79  here->SRCdep = SRC_CC;
80  break;
81  default:
82  return (E_BADPARM);
83  }
84  break;
85  case SRC_DC:
86  here->SRCdcValue = value->rValue;
87  here->SRCdcGiven = TRUE;
88  break;
89  case SRC_AC:
90  switch(value->v.numValue) {
91  case 2:
92  here->SRCacPhase = *(value->v.vec.rVec+1);
93  here->SRCacPGiven = TRUE;
94  case 1:
95  here->SRCacMag = *(value->v.vec.rVec);
96  here->SRCacMGiven = TRUE;
97  case 0:
98  here->SRCacGiven = TRUE;
99  break;
100  default:
101  return(E_BADPARM);
102  }
103  break;
104  case SRC_AC_MAG:
105  here->SRCacMag = value->rValue;
106  here->SRCacMGiven = TRUE;
107  here->SRCacGiven = TRUE;
108  break;
109  case SRC_AC_PHASE:
110  here->SRCacPhase = value->rValue;
111  here->SRCacPGiven = TRUE;
112  here->SRCacGiven = TRUE;
113  break;
114  case SRC_FUNC:
115  if (here->SRCtree) return E_BADPARM;
116  here->SRCtree = value->tValue;
117  break;
118  case SRC_D_F1:
119  here->SRCdF1given = TRUE;
120  here->SRCdGiven = TRUE;
121  switch (value->v.numValue) {
122  case 2:
123  here->SRCdF1phase = *(value->v.vec.rVec+1);
124  here->SRCdF1mag = *(value->v.vec.rVec);
125  break;
126  case 1:
127  here->SRCdF1mag = *(value->v.vec.rVec);
128  here->SRCdF1phase = 0.0;
129  break;
130  case 0:
131  here->SRCdF1mag = 1.0;
132  here->SRCdF1phase = 0.0;
133  break;
134  default:
135  return(E_BADPARM);
136  }
137  break;
138  case SRC_D_F2:
139  here->SRCdF2given = TRUE;
140  here->SRCdGiven = TRUE;
141  switch (value->v.numValue) {
142  case 2:
143  here->SRCdF2phase = *(value->v.vec.rVec+1);
144  here->SRCdF2mag = *(value->v.vec.rVec);
145  break;
146  case 1:
147  here->SRCdF2mag = *(value->v.vec.rVec);
148  here->SRCdF2phase = 0.0;
149  break;
150  case 0:
151  here->SRCdF2mag = 1.0;
152  here->SRCdF2phase = 0.0;
153  break;
154  default:
155  return(E_BADPARM);
156  }
157  break;
158  case SRC_GAIN:
159  if (here->SRCccCoeffGiven || here->SRCvcCoeffGiven)
160  return (E_BADPARM);
161  here->SRCcoeff = value->rValue;
162  if (here->SRCdep == SRC_CC)
163  here->SRCccCoeffGiven = TRUE;
164  else if (here->SRCdep == SRC_VC)
165  here->SRCvcCoeffGiven = TRUE;
166  else
167  return (E_BADPARM);
168  break;
169  case SRC_CONTROL:
170  here->SRCcontName = value->uValue;
171  break;
172  default:
173  return(E_BADPARM);
174  }
175  return (OK);
176 }
#define SRC_I
Definition: srcdefs.h:216
double SRCdF2mag
Definition: srcdefs.h:94
int numValue
Definition: ifsim.h:240
unsigned SRCdF2given
Definition: srcdefs.h:186
#define SRC_V
Definition: srcdefs.h:217
unsigned SRCccCoeffGiven
Definition: srcdefs.h:187
double SRCcoeff
Definition: srcdefs.h:71
#define SRC_VC
Definition: srcdefs.h:213
IFuid SRCcontName
Definition: srcdefs.h:74
union uIFvalue::@13::@14 vec
#define E_BADPARM
Definition: iferrmsg.h:26
unsigned SRCdF1given
Definition: srcdefs.h:185
double SRCdcValue
Definition: srcdefs.h:77
#define SRC_AC
Definition: srcdefs.h:220
#define TRUE
Definition: util.h:27
int iValue
Definition: ifsim.h:232
double rValue
Definition: ifsim.h:233
#define SRC_AC_MAG
Definition: srcdefs.h:221
unsigned SRCdGiven
Definition: srcdefs.h:184
int SRCdep
Definition: srcdefs.h:68
#define OK
Definition: iferrmsg.h:17
unsigned SRCdcGiven
Definition: srcdefs.h:180
#define SRC_CONTROL
Definition: srcdefs.h:227
#define SRC_AC_PHASE
Definition: srcdefs.h:222
#define SRC_CC
Definition: srcdefs.h:212
double SRCdF1phase
Definition: srcdefs.h:97
unsigned SRCvcCoeffGiven
Definition: srcdefs.h:188
double SRCdF2phase
Definition: srcdefs.h:100
unsigned SRCacGiven
Definition: srcdefs.h:181
#define SRC_D_F2
Definition: srcdefs.h:225
IFparseTree * tValue
Definition: ifsim.h:238
#define SRC_D_F1
Definition: srcdefs.h:224
#define SRC_FUNC
Definition: srcdefs.h:223
#define SRC_DEP
Definition: srcdefs.h:218
double SRCdF1mag
Definition: srcdefs.h:91
struct uIFvalue::@13 v
unsigned SRCacMGiven
Definition: srcdefs.h:182
int SRCtype
Definition: srcdefs.h:65
#define SRC_GAIN
Definition: srcdefs.h:226
IFparseTree * SRCtree
Definition: srcdefs.h:103
#define SRC_DC
Definition: srcdefs.h:219
IFuid uValue
Definition: ifsim.h:236
unsigned SRCacPGiven
Definition: srcdefs.h:183