Blame


1 8a3b2ceb 2004-04-24 devnull #include <u.h>
2 8a3b2ceb 2004-04-24 devnull #include <libc.h>
3 8a3b2ceb 2004-04-24 devnull #include <bio.h>
4 8a3b2ceb 2004-04-24 devnull #include "sky.h"
5 8a3b2ceb 2004-04-24 devnull
6 8a3b2ceb 2004-04-24 devnull struct
7 8a3b2ceb 2004-04-24 devnull {
8 8a3b2ceb 2004-04-24 devnull char name[9];
9 8a3b2ceb 2004-04-24 devnull char offset;
10 8a3b2ceb 2004-04-24 devnull } Hproto[] =
11 8a3b2ceb 2004-04-24 devnull {
12 8a3b2ceb 2004-04-24 devnull "ppo1", Pppo1,
13 8a3b2ceb 2004-04-24 devnull "ppo2", Pppo2,
14 8a3b2ceb 2004-04-24 devnull "ppo3", Pppo3,
15 8a3b2ceb 2004-04-24 devnull "ppo4", Pppo4,
16 8a3b2ceb 2004-04-24 devnull "ppo5", Pppo5,
17 8a3b2ceb 2004-04-24 devnull "ppo6", Pppo6,
18 8a3b2ceb 2004-04-24 devnull
19 8a3b2ceb 2004-04-24 devnull "amdx1", Pamdx1,
20 8a3b2ceb 2004-04-24 devnull "amdx2", Pamdx2,
21 8a3b2ceb 2004-04-24 devnull "amdx3", Pamdx3,
22 8a3b2ceb 2004-04-24 devnull "amdx4", Pamdx4,
23 8a3b2ceb 2004-04-24 devnull "amdx5", Pamdx5,
24 8a3b2ceb 2004-04-24 devnull "amdx6", Pamdx6,
25 8a3b2ceb 2004-04-24 devnull "amdx7", Pamdx7,
26 8a3b2ceb 2004-04-24 devnull "amdx8", Pamdx8,
27 8a3b2ceb 2004-04-24 devnull "amdx9", Pamdx9,
28 8a3b2ceb 2004-04-24 devnull "amdx10", Pamdx10,
29 8a3b2ceb 2004-04-24 devnull "amdx11", Pamdx11,
30 8a3b2ceb 2004-04-24 devnull "amdx12", Pamdx12,
31 8a3b2ceb 2004-04-24 devnull "amdx13", Pamdx13,
32 8a3b2ceb 2004-04-24 devnull "amdx14", Pamdx14,
33 8a3b2ceb 2004-04-24 devnull "amdx15", Pamdx15,
34 8a3b2ceb 2004-04-24 devnull "amdx16", Pamdx16,
35 8a3b2ceb 2004-04-24 devnull "amdx17", Pamdx17,
36 8a3b2ceb 2004-04-24 devnull "amdx18", Pamdx18,
37 8a3b2ceb 2004-04-24 devnull "amdx19", Pamdx19,
38 8a3b2ceb 2004-04-24 devnull "amdx20", Pamdx20,
39 8a3b2ceb 2004-04-24 devnull
40 8a3b2ceb 2004-04-24 devnull "amdy1", Pamdy1,
41 8a3b2ceb 2004-04-24 devnull "amdy2", Pamdy2,
42 8a3b2ceb 2004-04-24 devnull "amdy3", Pamdy3,
43 8a3b2ceb 2004-04-24 devnull "amdy4", Pamdy4,
44 8a3b2ceb 2004-04-24 devnull "amdy5", Pamdy5,
45 8a3b2ceb 2004-04-24 devnull "amdy6", Pamdy6,
46 8a3b2ceb 2004-04-24 devnull "amdy7", Pamdy7,
47 8a3b2ceb 2004-04-24 devnull "amdy8", Pamdy8,
48 8a3b2ceb 2004-04-24 devnull "amdy9", Pamdy9,
49 8a3b2ceb 2004-04-24 devnull "amdy10", Pamdy10,
50 8a3b2ceb 2004-04-24 devnull "amdy11", Pamdy11,
51 8a3b2ceb 2004-04-24 devnull "amdy12", Pamdy12,
52 8a3b2ceb 2004-04-24 devnull "amdy13", Pamdy13,
53 8a3b2ceb 2004-04-24 devnull "amdy14", Pamdy14,
54 8a3b2ceb 2004-04-24 devnull "amdy15", Pamdy15,
55 8a3b2ceb 2004-04-24 devnull "amdy16", Pamdy16,
56 8a3b2ceb 2004-04-24 devnull "amdy17", Pamdy17,
57 8a3b2ceb 2004-04-24 devnull "amdy18", Pamdy18,
58 8a3b2ceb 2004-04-24 devnull "amdy19", Pamdy19,
59 8a3b2ceb 2004-04-24 devnull "amdy20", Pamdy20,
60 8a3b2ceb 2004-04-24 devnull
61 8a3b2ceb 2004-04-24 devnull "pltscale", Ppltscale,
62 8a3b2ceb 2004-04-24 devnull "xpixelsz", Pxpixelsz,
63 8a3b2ceb 2004-04-24 devnull "ypixelsz", Pypixelsz,
64 8a3b2ceb 2004-04-24 devnull
65 8a3b2ceb 2004-04-24 devnull "pltrah", Ppltrah,
66 8a3b2ceb 2004-04-24 devnull "pltram", Ppltram,
67 8a3b2ceb 2004-04-24 devnull "pltras", Ppltras,
68 8a3b2ceb 2004-04-24 devnull "pltdecd", Ppltdecd,
69 8a3b2ceb 2004-04-24 devnull "pltdecm", Ppltdecm,
70 8a3b2ceb 2004-04-24 devnull "pltdecs", Ppltdecs,
71 8a3b2ceb 2004-04-24 devnull
72 8a3b2ceb 2004-04-24 devnull };
73 8a3b2ceb 2004-04-24 devnull
74 8a3b2ceb 2004-04-24 devnull Header*
75 8a3b2ceb 2004-04-24 devnull getheader(char *rgn)
76 8a3b2ceb 2004-04-24 devnull {
77 8a3b2ceb 2004-04-24 devnull char rec[81], name[81], value[81];
78 8a3b2ceb 2004-04-24 devnull char *p;
79 8a3b2ceb 2004-04-24 devnull Biobuf *bin;
80 8a3b2ceb 2004-04-24 devnull Header hd, *h;
81 8a3b2ceb 2004-04-24 devnull int i, j, decsn, dss;
82 8a3b2ceb 2004-04-24 devnull
83 8a3b2ceb 2004-04-24 devnull dss = 0;
84 8a3b2ceb 2004-04-24 devnull sprint(rec, "/lib/sky/dssheaders/%s.hhh", rgn);
85 8a3b2ceb 2004-04-24 devnull bin = Bopen(unsharp(rec), OREAD);
86 8a3b2ceb 2004-04-24 devnull /*
87 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
88 8a3b2ceb 2004-04-24 devnull dss = 102;
89 8a3b2ceb 2004-04-24 devnull sprint(rec, "/n/juke/dss/dss.102/headers/%s.hhh", rgn);
90 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
91 8a3b2ceb 2004-04-24 devnull }
92 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
93 8a3b2ceb 2004-04-24 devnull dss = 61;
94 8a3b2ceb 2004-04-24 devnull sprint(rec, "/n/juke/dss/dss.061/headers/%s.hhh", rgn);
95 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
96 8a3b2ceb 2004-04-24 devnull }
97 8a3b2ceb 2004-04-24 devnull */
98 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
99 8a3b2ceb 2004-04-24 devnull fprint(2, "cannot open %s\n", rgn);
100 8a3b2ceb 2004-04-24 devnull exits("file");
101 8a3b2ceb 2004-04-24 devnull }
102 8a3b2ceb 2004-04-24 devnull if(debug)
103 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "reading %s\n", rec);
104 8a3b2ceb 2004-04-24 devnull if(dss)
105 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "warning: reading %s from jukebox\n", rec);
106 8a3b2ceb 2004-04-24 devnull
107 8a3b2ceb 2004-04-24 devnull memset(&hd, 0, sizeof(hd));
108 8a3b2ceb 2004-04-24 devnull j = 0;
109 8a3b2ceb 2004-04-24 devnull decsn = 0;
110 8a3b2ceb 2004-04-24 devnull for(;;) {
111 8a3b2ceb 2004-04-24 devnull if(dss) {
112 8a3b2ceb 2004-04-24 devnull if(Bread(bin, rec, 80) != 80)
113 8a3b2ceb 2004-04-24 devnull break;
114 8a3b2ceb 2004-04-24 devnull rec[80] = 0;
115 8a3b2ceb 2004-04-24 devnull } else {
116 8a3b2ceb 2004-04-24 devnull p = Brdline(bin, '\n');
117 8a3b2ceb 2004-04-24 devnull if(p == 0)
118 8a3b2ceb 2004-04-24 devnull break;
119 8a3b2ceb 2004-04-24 devnull p[Blinelen(bin)-1] = 0;
120 8a3b2ceb 2004-04-24 devnull strcpy(rec, p);
121 8a3b2ceb 2004-04-24 devnull }
122 8a3b2ceb 2004-04-24 devnull
123 8a3b2ceb 2004-04-24 devnull p = strchr(rec, '/');
124 8a3b2ceb 2004-04-24 devnull if(p)
125 8a3b2ceb 2004-04-24 devnull *p = 0;
126 8a3b2ceb 2004-04-24 devnull p = strchr(rec, '=');
127 8a3b2ceb 2004-04-24 devnull if(p == 0)
128 8a3b2ceb 2004-04-24 devnull continue;
129 8a3b2ceb 2004-04-24 devnull *p++ = 0;
130 8a3b2ceb 2004-04-24 devnull if(getword(name, rec) == 0)
131 8a3b2ceb 2004-04-24 devnull continue;
132 8a3b2ceb 2004-04-24 devnull if(getword(value, p) == 0)
133 8a3b2ceb 2004-04-24 devnull continue;
134 8a3b2ceb 2004-04-24 devnull if(strcmp(name, "pltdecsn") == 0) {
135 8a3b2ceb 2004-04-24 devnull if(strchr(value, '-'))
136 8a3b2ceb 2004-04-24 devnull decsn = 1;
137 8a3b2ceb 2004-04-24 devnull continue;
138 8a3b2ceb 2004-04-24 devnull }
139 8a3b2ceb 2004-04-24 devnull for(i=0; i<nelem(Hproto); i++) {
140 8a3b2ceb 2004-04-24 devnull j++;
141 8a3b2ceb 2004-04-24 devnull if(j >= nelem(Hproto))
142 8a3b2ceb 2004-04-24 devnull j = 0;
143 8a3b2ceb 2004-04-24 devnull if(strcmp(name, Hproto[j].name) == 0) {
144 8a3b2ceb 2004-04-24 devnull hd.param[(uchar)Hproto[j].offset] = atof(value);
145 8a3b2ceb 2004-04-24 devnull break;
146 8a3b2ceb 2004-04-24 devnull }
147 8a3b2ceb 2004-04-24 devnull }
148 8a3b2ceb 2004-04-24 devnull }
149 8a3b2ceb 2004-04-24 devnull Bterm(bin);
150 8a3b2ceb 2004-04-24 devnull
151 8a3b2ceb 2004-04-24 devnull hd.param[Ppltra] = RAD(hd.param[Ppltrah]*15 +
152 8a3b2ceb 2004-04-24 devnull hd.param[Ppltram]/4 + hd.param[Ppltras]/240);
153 8a3b2ceb 2004-04-24 devnull hd.param[Ppltdec] = RAD(hd.param[Ppltdecd] +
154 8a3b2ceb 2004-04-24 devnull hd.param[Ppltdecm]/60 + hd.param[Ppltdecs]/3600);
155 8a3b2ceb 2004-04-24 devnull if(decsn)
156 8a3b2ceb 2004-04-24 devnull hd.param[Ppltdec] = -hd.param[Ppltdec];
157 8a3b2ceb 2004-04-24 devnull hd.amdflag = 0;
158 8a3b2ceb 2004-04-24 devnull for(i=Pamdx1; i<=Pamdx20; i++)
159 8a3b2ceb 2004-04-24 devnull if(hd.param[i] != 0) {
160 8a3b2ceb 2004-04-24 devnull hd.amdflag = 1;
161 8a3b2ceb 2004-04-24 devnull break;
162 8a3b2ceb 2004-04-24 devnull }
163 8a3b2ceb 2004-04-24 devnull h = malloc(sizeof(*h));
164 8a3b2ceb 2004-04-24 devnull *h = hd;
165 8a3b2ceb 2004-04-24 devnull return h;
166 8a3b2ceb 2004-04-24 devnull }
167 8a3b2ceb 2004-04-24 devnull
168 8a3b2ceb 2004-04-24 devnull void
169 8a3b2ceb 2004-04-24 devnull getplates(void)
170 8a3b2ceb 2004-04-24 devnull {
171 8a3b2ceb 2004-04-24 devnull char rec[81], *q;
172 8a3b2ceb 2004-04-24 devnull Plate *p;
173 8a3b2ceb 2004-04-24 devnull Biobuf *bin;
174 8a3b2ceb 2004-04-24 devnull int c, i, dss;
175 8a3b2ceb 2004-04-24 devnull
176 8a3b2ceb 2004-04-24 devnull dss = 0;
177 8a3b2ceb 2004-04-24 devnull sprint(rec, "/lib/sky/dssheaders/lo_comp.lis");
178 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
179 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
180 8a3b2ceb 2004-04-24 devnull dss = 102;
181 8a3b2ceb 2004-04-24 devnull sprint(rec, "%s/headers/lo_comp.lis", dssmount(dss));
182 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
183 8a3b2ceb 2004-04-24 devnull }
184 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
185 8a3b2ceb 2004-04-24 devnull dss = 61;
186 8a3b2ceb 2004-04-24 devnull sprint(rec, "%s/headers/lo_comp.lis", dssmount(dss));
187 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
188 8a3b2ceb 2004-04-24 devnull }
189 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
190 8a3b2ceb 2004-04-24 devnull fprint(2, "can't open lo_comp.lis; try 9fs juke\n");
191 8a3b2ceb 2004-04-24 devnull exits("open");
192 8a3b2ceb 2004-04-24 devnull }
193 8a3b2ceb 2004-04-24 devnull if(debug)
194 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "reading %s\n", rec);
195 8a3b2ceb 2004-04-24 devnull if(dss)
196 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "warning: reading %s from jukebox\n", rec);
197 8a3b2ceb 2004-04-24 devnull for(nplate=0;;) {
198 8a3b2ceb 2004-04-24 devnull if(dss) {
199 8a3b2ceb 2004-04-24 devnull if(Bread(bin, rec, 80) != 80)
200 8a3b2ceb 2004-04-24 devnull break;
201 8a3b2ceb 2004-04-24 devnull rec[80] = 0;
202 8a3b2ceb 2004-04-24 devnull } else {
203 8a3b2ceb 2004-04-24 devnull q = Brdline(bin, '\n');
204 8a3b2ceb 2004-04-24 devnull if(q == 0)
205 8a3b2ceb 2004-04-24 devnull break;
206 8a3b2ceb 2004-04-24 devnull q[Blinelen(bin)-1] = 0;
207 8a3b2ceb 2004-04-24 devnull strcpy(rec, q);
208 8a3b2ceb 2004-04-24 devnull }
209 8a3b2ceb 2004-04-24 devnull if(rec[0] == '#')
210 8a3b2ceb 2004-04-24 devnull continue;
211 8a3b2ceb 2004-04-24 devnull if(nplate < nelem(plate)) {
212 8a3b2ceb 2004-04-24 devnull p = &plate[nplate];
213 8a3b2ceb 2004-04-24 devnull memmove(p->rgn, rec+0, 5);
214 8a3b2ceb 2004-04-24 devnull if(p->rgn[4] == ' ')
215 8a3b2ceb 2004-04-24 devnull p->rgn[4] = 0;
216 8a3b2ceb 2004-04-24 devnull for(i=0; c=p->rgn[i]; i++)
217 8a3b2ceb 2004-04-24 devnull if(c >= 'A' && c <= 'Z')
218 8a3b2ceb 2004-04-24 devnull p->rgn[i] += 'a'-'A';
219 8a3b2ceb 2004-04-24 devnull p->ra = RAD(atof(rec+12)*15 +
220 8a3b2ceb 2004-04-24 devnull atof(rec+15)/4 +
221 8a3b2ceb 2004-04-24 devnull atof(rec+18)/240);
222 8a3b2ceb 2004-04-24 devnull p->dec = RAD(atof(rec+26) +
223 8a3b2ceb 2004-04-24 devnull atof(rec+29)/60 +
224 8a3b2ceb 2004-04-24 devnull atof(rec+32)/3600);
225 8a3b2ceb 2004-04-24 devnull if(rec[25] == '-')
226 8a3b2ceb 2004-04-24 devnull p->dec = -p->dec;
227 8a3b2ceb 2004-04-24 devnull p->disk = atoi(rec+53);
228 8a3b2ceb 2004-04-24 devnull if(p->disk == 0)
229 8a3b2ceb 2004-04-24 devnull continue;
230 8a3b2ceb 2004-04-24 devnull }
231 8a3b2ceb 2004-04-24 devnull nplate++;
232 8a3b2ceb 2004-04-24 devnull }
233 8a3b2ceb 2004-04-24 devnull Bterm(bin);
234 8a3b2ceb 2004-04-24 devnull
235 8a3b2ceb 2004-04-24 devnull if(nplate >= nelem(plate))
236 8a3b2ceb 2004-04-24 devnull fprint(2, "nplate too small %d %d\n", nelem(plate), nplate);
237 8a3b2ceb 2004-04-24 devnull if(debug)
238 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "%d plates\n", nplate);
239 8a3b2ceb 2004-04-24 devnull }
240 8a3b2ceb 2004-04-24 devnull
241 8a3b2ceb 2004-04-24 devnull char*
242 8a3b2ceb 2004-04-24 devnull dssmount(int dskno)
243 8a3b2ceb 2004-04-24 devnull {
244 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "not mounting dss\n");
245 8a3b2ceb 2004-04-24 devnull return "/n/dss";
246 8a3b2ceb 2004-04-24 devnull }