Lines 1-491
Link Here
|
1 |
--- lsetad.c.orig Sat May 27 07:48:22 2006 |
1 |
--- lsetad.c.orig Tue Aug 15 15:27:44 2006 |
2 |
+++ lsetad.c Mon Jun 19 21:43:19 2006 |
2 |
+++ lsetad.c Thu Sep 7 17:52:30 2006 |
3 |
@@ -36,14 +36,13 @@ |
3 |
@@ -87,10 +87,9 @@ |
4 |
|
4 |
void display_sdi(void) |
5 |
|
|
|
6 |
#define SNDLOG fprintf(sndlog, |
7 |
-#define ABOVE_MAX_SPEED 768000 |
8 |
#if SND_DEV == 1 |
9 |
#define DEVNAME_SIZE 12 |
10 |
-char devname[DEVNAME_SIZE]="/dev/dsp "; |
11 |
+char dev_name[DEVNAME_SIZE]="/dev/dsp "; |
12 |
#define DEVNAMPOS 8 |
13 |
#else |
14 |
#define DEVNAME_SIZE 18 |
15 |
-char devname[DEVNAME_SIZE]="/dev/sound/dsp "; |
16 |
+char dev_name[DEVNAME_SIZE]="/dev/sound/dsp "; |
17 |
#define DEVNAMPOS 14 |
18 |
#endif |
19 |
int devmodes[3]={O_RDONLY,O_WRONLY,O_RDWR}; |
20 |
@@ -58,6 +57,7 @@ |
21 |
22050,24000,48000,96000}; |
22 |
|
23 |
FILE *sndlog; |
24 |
+int tspeed; |
25 |
|
26 |
// Mod1: Get info from OSS or ALSA sound-driver about the defined audio |
27 |
// devices. |
28 |
@@ -481,31 +481,12 @@ |
29 |
|
30 |
void make_devname(int n) |
31 |
{ |
5 |
{ |
32 |
-int k,num,m; |
6 |
FILE *sdifile; |
33 |
-num=n; |
7 |
-int ch_cnt; |
34 |
-k=DEVNAMPOS; |
8 |
+char *p; |
35 |
-if(num>MAX_DEVNAMES) |
9 |
char ch_read[80]; |
36 |
+if(n>MAX_DEVNAMES) |
10 |
char work_line [80]; |
37 |
{ |
11 |
-int work_line_pos ; |
38 |
lirerr(9236); |
12 |
int sdi_screen_line_counter; |
39 |
return; |
13 |
char sdi_intro_msg [26]= "SOUND DRIVER INFORMATION:" ; |
40 |
} |
14 |
char sdi_error_msg [46]= "No OSS or ALSA sound-driver information found"; |
41 |
-m=num/10; |
15 |
@@ -111,55 +110,42 @@ |
42 |
-if(m > 0) |
16 |
// if OSS not active, try ALSA |
43 |
- { |
17 |
if (sdifile==NULL) |
44 |
- devname[k]=m+'0'; |
18 |
{ |
45 |
- k++; |
19 |
- strcpy (sndstat_filename,"/proc/asound/oss/sndstat"); |
|
|
20 |
- sdifile=fopen (sndstat_filename,"r"); |
21 |
+ strcpy (sndstat_filename,"/proc/asound/oss/sndstat"); |
22 |
+ sdifile=fopen (sndstat_filename,"r"); |
23 |
} |
24 |
-if (sdifile==NULL) |
25 |
+if (sdifile!=NULL) |
26 |
{ |
27 |
- settextcolor(LIGHT_RED); |
28 |
- lir_text ( 80, sdi_screen_line_counter++, sdi_error_msg); |
29 |
- fprintf (sndlog,"\n%s",sdi_error_msg ); |
30 |
- goto display_sdi_x; |
46 |
- } |
31 |
- } |
47 |
-devname[k]=num-m*10+'0'; |
32 |
-fprintf (sndlog,"\n(output of 'cat %s' command): \n\n",sndstat_filename ); |
48 |
-if(devname[k]<'0')devname[k]=0; |
33 |
-memset (work_line, '\0',sizeof(work_line)); |
49 |
-k++; |
34 |
-work_line_pos =0; |
50 |
-devname[k]=0; |
35 |
-settextcolor(LIGHT_GREEN); |
51 |
-// put /dev/dsp at the end of the list |
36 |
-ch_cnt=fread(ch_read,1,1,sdifile); |
52 |
-if ((n+2)==MAX_DEVNAMES){ |
37 |
-while (ch_cnt== 1) |
53 |
- k=DEVNAMPOS; |
38 |
- { |
54 |
- devname[k]=0; |
39 |
-// check if work_line is ready for output processing |
55 |
- k++; |
40 |
- if ((ch_read[0] =='\n') || (work_line_pos == 78)) |
56 |
- devname[k]=0; |
41 |
- { |
57 |
- } |
42 |
-// display work_line only if it is not blank |
58 |
+ sprintf(dev_name, "/dev/dspW%d", n); |
43 |
-// and there are enough lines available on the screen |
|
|
44 |
-// and there are at least 40 characters available on a line |
45 |
- if ((work_line_pos >1) && |
46 |
- ( sdi_screen_line_counter < screen_last_line) && |
47 |
- ((screen_last_col - 40)>= 80)) |
48 |
- { |
49 |
- if (ch_read[0] !='\n') work_line[work_line_pos]=ch_read[0]; |
50 |
- sdi_screen_line_counter++; |
51 |
- lir_text (80, sdi_screen_line_counter, work_line); |
52 |
- } |
53 |
-// write to soundboard_init.log |
54 |
- if (ch_read[0] =='\n') work_line[work_line_pos]=ch_read[0]; |
55 |
- if (ch_read[0] !='\n') |
56 |
- { |
57 |
-// this is a truncated line. Add newline character |
58 |
- work_line[work_line_pos]=ch_read[0]; |
59 |
- work_line[work_line_pos+1]='\n'; |
60 |
- } |
61 |
- fprintf (sndlog,"%s",work_line); |
62 |
- memset (work_line, '\0',sizeof(work_line)); |
63 |
- work_line_pos=-1; |
64 |
- } |
65 |
- work_line[work_line_pos]=ch_read[0]; |
66 |
- work_line_pos++; |
67 |
- ch_cnt=fread(ch_read,1,1,sdifile); |
68 |
+ fprintf (sndlog,"\n(output of 'cat %s' command): \n\n",sndstat_filename ); |
69 |
+ settextcolor(LIGHT_GREEN); |
70 |
+ while(fgets(work_line, sizeof(work_line)-1, sdifile) != NULL) |
71 |
+ { |
72 |
+ // check if work_line is ready for output processing |
73 |
+ if((p = strchr(work_line, '\n')) != NULL) |
74 |
+ *p = '\0'; |
75 |
+ if (ch_read[0] != '\0') |
76 |
+ { |
77 |
+ // display work_line only if it is not blank |
78 |
+ // and there are enough lines available on the screen |
79 |
+ // and there are at least 40 characters available on a line |
80 |
+ if (sdi_screen_line_counter < screen_last_line && |
81 |
+ (screen_last_col - 40)>= 80) |
82 |
+ { |
83 |
+ sdi_screen_line_counter++; |
84 |
+ lir_text (80, sdi_screen_line_counter, work_line); |
85 |
+ } |
86 |
+ // write to soundboard_init.log |
87 |
+ fprintf (sndlog,"%s\n",work_line); |
88 |
+ } |
89 |
+ } |
90 |
+ fclose(sdifile); |
91 |
+ } |
92 |
+else |
93 |
+ { |
94 |
+ settextcolor(LIGHT_RED); |
95 |
+ lir_text ( 80, sdi_screen_line_counter++, sdi_error_msg); |
96 |
+ fprintf (sndlog,"\n%s",sdi_error_msg ); |
97 |
} |
98 |
fclose(sdifile); |
99 |
-display_sdi_x:; |
100 |
fprintf(sndlog,sndlog_sep); |
101 |
fflush(sndlog); |
59 |
} |
102 |
} |
60 |
// ------------------------------------------------------------- |
103 |
@@ -525,6 +511,11 @@ |
61 |
// The original code was: |
|
|
62 |
@@ -557,7 +538,7 @@ |
63 |
if(i&AFMT_S16_LE)ui.max_output_bytes=2; |
104 |
if(i&AFMT_S16_LE)ui.max_output_bytes=2; |
64 |
ui.max_output_speed=ABOVE_MAX_SPEED; |
105 |
ui.max_output_speed=ABOVE_MAX_SPEED; |
65 |
ui.min_output_speed=1; |
106 |
ui.min_output_speed=1; |
66 |
-if(ioctl(audio_out, SNDCTL_DSP_SPEED, &ui.max_output_speed) == -1) |
107 |
+// |
67 |
+if(ioctl(audio_out, SNDCTL_DSP_SPEED, &ui.min_output_speed) == -1) |
108 |
+// To allow a separate #ifdef __FreeBSD__ |
|
|
109 |
+// - Diane Bruce VA3DB, Sept 6, 2006 |
110 |
+// |
111 |
+#ifdef __linux__ |
112 |
if(ioctl(audio_out, SNDCTL_DSP_SPEED, &ui.max_output_speed) == -1) |
68 |
{ |
113 |
{ |
69 |
lirerr(1072); |
114 |
lirerr(1072); |
70 |
return; |
115 |
@@ -535,6 +526,7 @@ |
71 |
@@ -666,7 +647,7 @@ |
116 |
lirerr(1073); |
72 |
return; |
117 |
return; |
73 |
} |
118 |
} |
74 |
make_devname(ui.ad_device_no&255); |
119 |
+#endif |
75 |
-audio_in=open( devname ,ui.ad_device_mode , 0); |
120 |
if(ui.max_output_speed==ABOVE_MAX_SPEED || |
76 |
+audio_in=open( dev_name ,ui.ad_device_mode , 0); |
121 |
ui.min_output_speed <= 1 || |
77 |
if(audio_in == -1) |
122 |
ui.max_output_speed < ui.min_output_speed) |
78 |
{ |
123 |
@@ -1077,6 +1069,11 @@ |
79 |
lirerr(1007); |
124 |
SNDLOG"\nNo of output channels= %d",j); |
80 |
@@ -676,7 +657,7 @@ |
|
|
81 |
{ |
82 |
i=ui.ad_device_no/255-1; |
83 |
make_devname(i); |
84 |
- audio_in2=open( devname ,ui.ad_device_mode , 0); |
85 |
+ audio_in2=open( dev_name ,ui.ad_device_mode , 0); |
86 |
if(audio_in2 == -1) |
87 |
{ |
88 |
lirerr(1174); |
89 |
@@ -869,7 +850,7 @@ |
90 |
return; |
91 |
} |
92 |
make_devname(ui.ad_device_no&255); |
93 |
- audio_out=open( devname ,O_WRONLY , 0); |
94 |
+ audio_out=open( dev_name ,O_WRONLY , 0); |
95 |
if(audio_out == -1) |
96 |
{ |
97 |
lirerr(1086); |
98 |
@@ -909,7 +890,7 @@ |
99 |
else |
100 |
{ |
101 |
make_devname(ui.da_device_no); |
102 |
- audio_out=open( devname ,O_WRONLY , 0); |
103 |
+ audio_out=open( dev_name ,O_WRONLY , 0); |
104 |
if(audio_out == -1) |
105 |
{ |
106 |
if(disksave_flag==2) |
107 |
@@ -1048,9 +1029,9 @@ |
108 |
for(device_no=0; device_no<MAX_DEVNAMES; device_no++) |
109 |
{ |
110 |
make_devname(device_no); |
111 |
- SNDLOG"Checking %s for output\n",devname); |
112 |
+ SNDLOG"Checking %s for output\n",dev_name); |
113 |
sndlog_sync(); |
114 |
- audio_out=open( devname, O_WRONLY|O_NONBLOCK, 0); |
115 |
+ audio_out=open( dev_name, O_WRONLY|O_NONBLOCK, 0); |
116 |
if(audio_out != -1) |
117 |
{ |
118 |
#ifdef SNDCTL_DSP_COOKEDMODE |
119 |
@@ -1058,7 +1039,7 @@ |
120 |
ioctl(audio_out, SNDCTL_DSP_COOKEDMODE, &j); |
121 |
#endif |
122 |
for(nn=0; nn<80; nn++)SNDLOG"-"); |
123 |
- SNDLOG"\n%s opened as %s ",devname, devmode_txt[3]); |
124 |
+ SNDLOG"\n%s opened as %s ",dev_name, devmode_txt[3]); |
125 |
sndlog_sync(); |
125 |
sndlog_sync(); |
126 |
j=AFMT_U8; |
126 |
dev_wr_channels[device_no]=j; |
127 |
if(ioctl(audio_out, SNDCTL_DSP_SETFMT, &j) == -1) |
127 |
+// |
128 |
@@ -1110,6 +1091,7 @@ |
128 |
+// To allow a separate #ifdef __FreeBSD__ |
|
|
129 |
+// - Diane Bruce VA3DB, Sept 6, 2006 |
130 |
+// |
131 |
+#ifdef __linux__ |
132 |
j=ABOVE_MAX_SPEED; |
133 |
if(ioctl(audio_out, SNDCTL_DSP_SPEED, &j) == -1 || j==ABOVE_MAX_SPEED) |
129 |
{ |
134 |
{ |
130 |
SNDLOG"\nIncorrect speed response in %d out %d", |
135 |
@@ -1103,6 +1100,29 @@ |
131 |
ABOVE_MAX_SPEED, j); |
136 |
dev_min_wr_speed[device_no]=j; |
132 |
+ tspeed=j; |
137 |
SNDLOG"\nMin output speed %d", dev_min_wr_speed[device_no]); |
133 |
if(ioctl(audio_out, SNDCTL_DSP_SPEED, &j)==-1) |
|
|
134 |
{ |
135 |
SNDLOG"\nioctl(SPEED) failed"); |
136 |
@@ -1136,7 +1118,7 @@ |
137 |
goto errdev; |
138 |
} |
139 |
sprintf(s,"%02d %s %7d - %7d Hz %d Chan. %d bit WRONLY", |
140 |
- device_no, devname, |
141 |
+ device_no, dev_name, |
142 |
dev_min_wr_speed[device_no], |
143 |
dev_max_wr_speed[device_no], |
144 |
dev_wr_channels[device_no], |
145 |
@@ -1373,20 +1355,20 @@ |
146 |
{ |
147 |
dev_flag[device_no]=0; |
148 |
make_devname(device_no); |
149 |
- SNDLOG"Checking %s\n",devname); |
150 |
+ SNDLOG"Checking %s\n",dev_name); |
151 |
sndlog_sync(); |
152 |
for(mode=0; mode<3; mode++) |
153 |
{ |
154 |
k=1<<mode; |
155 |
sprintf(s, |
156 |
"Trying to open %s %s. Device defective if system hangs here. Read %s ", |
157 |
- devname, devmode_txt[mode],logfile_name); |
158 |
+ dev_name, devmode_txt[mode],logfile_name); |
159 |
sndlog_sync(); |
138 |
sndlog_sync(); |
160 |
settextcolor(12); |
139 |
+#endif |
161 |
lir_text(0,line+1,s); |
140 |
+// |
162 |
lir_refresh_screen(); |
141 |
+// This code finds min max speed of sound card for FreeBSD |
163 |
settextcolor(7); |
142 |
+// It probably works for other BSDs as well |
164 |
- audio_out=open( devname, devmodes[mode]|O_NONBLOCK, 0); |
143 |
+// Diane Bruce, db@db.net VA3DB |
165 |
+ audio_out=open( dev_name, devmodes[mode]|O_NONBLOCK, 0); |
144 |
+// Sept 7, 2006 |
166 |
clear_lines(line+1,line+1); |
145 |
+// |
167 |
if(audio_out != -1) |
146 |
+#ifdef __FreeBSD__ |
|
|
147 |
+{ |
148 |
+ snd_capabilities capab; |
149 |
+ int status; |
150 |
+ bzero((void *)&capab, sizeof(capab)); |
151 |
+ status = ioctl(audio_out, AIOGCAP, &capab); |
152 |
+ if (status < 0) |
153 |
+ goto errdev; |
154 |
+ dev_min_wr_speed[device_no] = capab.rate_min; |
155 |
+ dev_max_wr_speed[device_no]= capab.rate_max; |
156 |
+ ui.min_output_speed = capab.rate_min; |
157 |
+ ui.max_output_speed = capab.rate_max; |
158 |
+ SNDLOG"\nMax output speed %d", dev_max_wr_speed[device_no]); |
159 |
+ SNDLOG"\nMin output speed %d", dev_min_wr_speed[device_no]); |
160 |
+} |
161 |
+#endif |
162 |
if(close(audio_out)==-1) |
168 |
{ |
163 |
{ |
169 |
@@ -1395,7 +1377,7 @@ |
164 |
goto errdev; |
170 |
ioctl(audio_out, SNDCTL_DSP_COOKEDMODE, &i); |
165 |
@@ -1425,6 +1445,11 @@ |
171 |
#endif |
166 |
SNDLOG"\nMax no of channels = %d",m); |
172 |
for(nn=0; nn<80; nn++)SNDLOG"-"); |
167 |
} |
173 |
- SNDLOG"\n%s opened as %s ",devname, devmode_txt[mode]); |
|
|
174 |
+ SNDLOG"\n%s opened as %s ",dev_name, devmode_txt[mode]); |
175 |
sndlog_sync(); |
168 |
sndlog_sync(); |
176 |
rdwr_fmt=16; |
169 |
+// |
177 |
rdwr_channels=0; |
170 |
+// To allow a separate #ifdef __FreeBSD__ |
178 |
@@ -1465,8 +1447,8 @@ |
171 |
+// - Diane Bruce VA3DB, Sept 6, 2006 |
179 |
i=0; |
172 |
+// |
180 |
while(i<MAX_LOWSPEED) |
173 |
+#ifdef __linux__ |
181 |
{ |
174 |
// Find maximum speed |
182 |
- rdwr_min_speed=low_speeds[i]; |
175 |
rdwr_max_speed=ABOVE_MAX_SPEED; |
183 |
- if(ioctl(audio_out, SNDCTL_DSP_SPEED, &rdwr_min_speed)!=-1)goto minok; |
176 |
if(ioctl(audio_out, SNDCTL_DSP_SPEED, &rdwr_max_speed)==-1) |
184 |
+ tspeed=rdwr_min_speed=low_speeds[i]; |
177 |
@@ -1444,6 +1469,27 @@ |
185 |
+ if(ioctl(audio_out, SNDCTL_DSP_SPEED, &tspeed)!=-1)goto minok; |
|
|
186 |
i++; |
187 |
} |
188 |
lirerr(1040); |
178 |
lirerr(1040); |
189 |
@@ -1577,7 +1559,7 @@ |
179 |
goto setad_errexit; |
190 |
if( (dev_flag[device_no]&1) == 1) |
180 |
minok:; |
191 |
{ |
|
|
192 |
sprintf(ss,"%02d:%12s %7d - %7d Hz %d Chan. %d bit", |
193 |
- device_no,devname, |
194 |
+ device_no,dev_name, |
195 |
dev_min_rd_speed[device_no], |
196 |
dev_max_rd_speed[device_no], |
197 |
dev_max_rd_channels[device_no], |
198 |
@@ -1588,7 +1570,7 @@ |
199 |
if( (dev_flag[device_no]&2) == 2) |
200 |
{ |
201 |
sprintf(ss,"%02d:%12s %7d - %7d Hz %d Chan. %d bit", |
202 |
- device_no,devname, |
203 |
+ device_no,dev_name, |
204 |
dev_min_wr_speed[device_no], |
205 |
dev_max_wr_speed[device_no], |
206 |
dev_wr_channels[device_no], |
207 |
@@ -1637,13 +1619,13 @@ |
208 |
color=0x17; |
209 |
sprintf(&ss[maxcolumn], |
210 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s", |
211 |
- device_no,devname, |
212 |
+ device_no,dev_name, |
213 |
dev_min_wr_speed[device_no], |
214 |
dev_max_wr_speed[device_no], |
215 |
dev_wr_channels[device_no], |
216 |
dev_wr_bits[device_no],devmode_txt[1]); |
217 |
sprintf(ss,"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s", |
218 |
- device_no,devname, |
219 |
+ device_no,dev_name, |
220 |
dev_min_rd_speed[device_no], |
221 |
dev_max_rd_speed[device_no], |
222 |
dev_max_rd_channels[device_no], |
223 |
@@ -1659,21 +1641,21 @@ |
224 |
color=0x17; |
225 |
sprintf(&ss[2*maxcolumn], |
226 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s", |
227 |
- device_no,devname, |
228 |
+ device_no,dev_name, |
229 |
dev_min_wr_speed[device_no], |
230 |
dev_max_wr_speed[device_no], |
231 |
dev_wr_channels[device_no], |
232 |
dev_wr_bits[device_no],devmode_txt[1]); |
233 |
sprintf(&ss[maxcolumn], |
234 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s", |
235 |
- device_no,devname, |
236 |
+ device_no,dev_name, |
237 |
dev_min_rd_speed[device_no], |
238 |
dev_max_rd_speed[device_no], |
239 |
dev_max_rd_channels[device_no], |
240 |
dev_rd_bits[device_no],devmode_txt[0]); |
241 |
sprintf(ss, |
242 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s", |
243 |
- device_no,devname, |
244 |
+ device_no,dev_name, |
245 |
dev_min_rdwr_speed[device_no], |
246 |
dev_max_rdwr_speed[device_no], |
247 |
dev_rdwr_channels[device_no], |
248 |
@@ -1688,14 +1670,14 @@ |
249 |
color=0x17; |
250 |
sprintf(&ss[maxcolumn], |
251 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s", |
252 |
- device_no,devname, |
253 |
+ device_no,dev_name, |
254 |
dev_min_wr_speed[device_no], |
255 |
dev_max_wr_speed[device_no], |
256 |
dev_wr_channels[device_no], |
257 |
dev_wr_bits[device_no],devmode_txt[1]); |
258 |
sprintf(ss, |
259 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s %s", |
260 |
- device_no,devname, |
261 |
+ device_no,dev_name, |
262 |
dev_min_rd_speed[device_no], |
263 |
dev_max_rd_speed[device_no], |
264 |
dev_max_rd_channels[device_no], |
265 |
@@ -1707,14 +1689,14 @@ |
266 |
color=0x1d; |
267 |
sprintf(&ss[maxcolumn], |
268 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s %s", |
269 |
- device_no,devname, |
270 |
+ device_no,dev_name, |
271 |
dev_min_wr_speed[device_no], |
272 |
dev_max_wr_speed[device_no], |
273 |
dev_wr_channels[device_no], dev_wr_bits[device_no], |
274 |
devmode_txt[1],devmode_txt[2]); |
275 |
sprintf(ss, |
276 |
"%02d:%12s %7d - %7d Hz %d Chan. %d bit %s", |
277 |
- device_no,devname, |
278 |
+ device_no,dev_name, |
279 |
dev_min_rd_speed[device_no], |
280 |
dev_max_rd_speed[device_no], |
281 |
dev_max_rd_channels[device_no], |
282 |
@@ -1822,7 +1804,7 @@ |
283 |
|
284 |
clear_screen(); |
285 |
make_devname(ui.ad_device_no); |
286 |
-SNDLOG"\n\n %s selected by user for input.",devname); |
287 |
+SNDLOG"\n\n %s selected by user for input.",dev_name); |
288 |
SNDLOG" dev_flag=%d",dev_flag[ui.ad_device_no]); |
289 |
sndlog_sync(); |
290 |
// High end users might need two devices to read four A/D channels. |
291 |
@@ -1864,7 +1846,7 @@ |
292 |
clear_screen(); |
293 |
SNDLOG"\nUser wants to try to open two read devices"); |
294 |
make_devname(ui.ad_device_no); |
295 |
- audio_in=open( devname, O_RDONLY, 0); |
296 |
+ audio_in=open( dev_name, O_RDONLY, 0); |
297 |
if(audio_in == -1) |
298 |
{ |
299 |
lirerr(1102); |
300 |
@@ -1899,7 +1881,7 @@ |
301 |
} |
302 |
} |
303 |
make_devname(i); |
304 |
- audio_in2=open( devname, O_RDONLY|O_NONBLOCK, 0); |
305 |
+ audio_in2=open( dev_name, O_RDONLY|O_NONBLOCK, 0); |
306 |
if(audio_in2 != -1) |
307 |
{ |
308 |
#ifdef SNDCTL_DSP_COOKEDMODE |
309 |
@@ -1907,9 +1889,9 @@ |
310 |
ioctl(audio_in2, SNDCTL_DSP_COOKEDMODE, &k); |
311 |
#endif |
312 |
line++; |
313 |
- SNDLOG"\n%s opened as second read device",devname); |
314 |
+ SNDLOG"\n%s opened as second read device",dev_name); |
315 |
sprintf(s,"%2d:%12s %7d - %7d Hz %d Chan. %d bit", |
316 |
- i,devname, |
317 |
+ i,dev_name, |
318 |
dev_min_rd_speed[i], |
319 |
dev_max_rd_speed[i], |
320 |
dev_max_rd_channels[i], |
321 |
@@ -1945,7 +1927,7 @@ |
322 |
{ |
323 |
dev_flag[i]&=255; |
324 |
} |
325 |
- audio_in2=open( devname, O_RDONLY|O_NONBLOCK, 0); |
326 |
+ audio_in2=open( dev_name, O_RDONLY|O_NONBLOCK, 0); |
327 |
if(audio_in2 == -1) |
328 |
{ |
329 |
lirerr(1172); |
330 |
@@ -1968,7 +1950,7 @@ |
331 |
close(audio_in2); |
332 |
goto skip_dual_devices; |
333 |
} |
334 |
- SNDLOG"\n %s is second input device.",devname); |
335 |
+ SNDLOG"\n %s is second input device.",dev_name); |
336 |
ui.input_mode=TWO_CHANNELS+IQ_DATA; |
337 |
ui.rx_channels=2; |
338 |
ui.ad_channels=4; |
339 |
@@ -1988,7 +1970,7 @@ |
340 |
if( (1 & dev_flag[ui.ad_device_no]) != 0) |
341 |
{ |
342 |
gt_rdo:; |
343 |
- sprintf(s,"Open %s as RDONLY or RDWR? (O/W) =>",devname); |
344 |
+ sprintf(s,"Open %s as RDONLY or RDWR? (O/W) =>",dev_name); |
345 |
lir_text(10,10,s); |
346 |
await_processed_keyboard(); |
347 |
if(kill_all_flag) goto setad_errexit; |
348 |
@@ -2010,9 +1992,9 @@ |
349 |
} |
350 |
sndlog_sync(); |
351 |
clear_screen(); |
352 |
-sprintf(s,"For analog input: %s opened in %s mode",devname,devmode_txt[mode]); |
353 |
+sprintf(s,"For analog input: %s opened in %s mode",dev_name,devmode_txt[mode]); |
354 |
lir_text(0,0,s); |
355 |
-audio_in=open( devname, ui.ad_device_mode, 0); |
356 |
+audio_in=open( dev_name, ui.ad_device_mode, 0); |
357 |
if(audio_in == -1) |
358 |
{ |
359 |
lirerr(1038); |
360 |
@@ -2108,13 +2090,16 @@ |
361 |
lir_text(0,7,"to reconfigure the hardware. (Under OSS, run ossmix)"); |
362 |
max=dev_max_rd_speed[ui.ad_device_no&255]; |
363 |
min=dev_min_rd_speed[ui.ad_device_no&255]; |
364 |
+#if 0 |
365 |
if(max == ABOVE_MAX_SPEED || max < 1000) |
366 |
{ |
367 |
max = ABOVE_MAX_SPEED; |
368 |
speed_warning = 1; |
369 |
} |
370 |
+#endif |
181 |
+#endif |
371 |
sprintf(s,"Select sampling speed(%d to %d)", min,max); |
182 |
+// |
372 |
lir_text(0,10,s); |
183 |
+// This code finds min max speed of sound card for FreeBSD |
373 |
+#if 0 |
184 |
+// It probably works for other BSDs as well |
374 |
if(speed_warning != 0) |
185 |
+// Diane Bruce, db@db.net VA3DB |
375 |
{ |
186 |
+// Sept 7, 2006 |
376 |
settextcolor(12); |
187 |
+// |
377 |
@@ -2123,6 +2108,7 @@ |
188 |
+#ifdef __FreeBSD__ |
378 |
lir_text(0,13,"Incorrect (not supported) values may cause system to hang"); |
189 |
+{ |
379 |
settextcolor(7); |
190 |
+ snd_capabilities capab; |
380 |
} |
191 |
+ int status; |
|
|
192 |
+ bzero((void *)&capab, sizeof(capab)); |
193 |
+ status = ioctl(audio_out, AIOGCAP, &capab); |
194 |
+ if (status < 0) |
195 |
+ goto setad_errexit; |
196 |
+ rdwr_min_speed = capab.rate_min; |
197 |
+ rdwr_max_speed = capab.rate_max; |
198 |
+ SNDLOG"\nMin output speed %d", rdwr_min_speed); |
199 |
+ SNDLOG"\nMax output speed %d", rdwr_max_speed); |
200 |
+} |
381 |
+#endif |
201 |
+#endif |
382 |
column=0; |
202 |
SNDLOG"\nMin sampling speed = %d Hz",rdwr_min_speed); |
383 |
while(s[column] != 0)column++; |
|
|
384 |
ui.input_speed=lir_get_integer(column+2, 10, 8, min,max); |
385 |
@@ -2131,6 +2117,7 @@ |
386 |
rdwr_max_speed=ui.input_speed; |
387 |
SNDLOG"\n%d Hz selected by user",ui.input_speed); |
388 |
clear_lines(5,10); |
389 |
+ui.input_speed; |
390 |
if(ioctl(audio_in, SNDCTL_DSP_SPEED, &ui.input_speed)==-1) |
391 |
{ |
392 |
lirerr(1041); |
393 |
@@ -2249,7 +2236,7 @@ |
394 |
goto setad_errexit; |
395 |
} |
396 |
settextcolor(12); |
397 |
-sprintf(s,"Trying to read %s",devname); |
398 |
+sprintf(s,"Trying to read %s",dev_name); |
399 |
lir_text(10,10,s); |
400 |
lir_text(0,12,"If you see this message for more than 2 seconds READ failed"); |
401 |
lir_text(0,13,"Then try another device"); |
402 |
@@ -2313,7 +2300,7 @@ |
403 |
} |
404 |
SNDLOG"\nRead test OK"); |
405 |
clear_lines(10,13); |
406 |
-sprintf(s,"Now trying to open a second device while %s is open",devname); |
407 |
+sprintf(s,"Now trying to open a second device while %s is open",dev_name); |
408 |
lir_text(0,6,s); |
409 |
lir_text(0,7,"This may cause your system to hang. Try ctrlC to exit (or reboot)"); |
410 |
lir_text(0,8,"Try another input device or install another sound system."); |
411 |
@@ -2326,7 +2313,7 @@ |
412 |
if(read_test_ad(testbuff)!=0)goto clr_wrdev; |
413 |
make_devname(i); |
414 |
cn=0; |
415 |
- sprintf(s,"%02d:%12s",i,devname); |
416 |
+ sprintf(s,"%02d:%12s",i,dev_name); |
417 |
lir_text(0,line,s); |
418 |
column=0; |
419 |
while(s[column] != 0)column++; |
420 |
@@ -2338,7 +2325,7 @@ |
421 |
if( (ui.input_mode&DWORD_INPUT) != 0 || ui.ad_channels > 2) |
422 |
{ |
423 |
sprintf(&s[column], |
424 |
- " RDWR useless (too many bits or channels) %d: %s",i,devname); |
425 |
+ " RDWR useless (too many bits or channels) %d: %s",i,dev_name); |
426 |
dev_flag[i]=0; |
427 |
} |
428 |
else |
429 |
@@ -2356,7 +2343,7 @@ |
430 |
dev_flag[i]&=0xffff-4; |
431 |
if( (dev_flag[i]&2) != 0 ) |
432 |
{ |
433 |
- audio_out=open( devname, O_WRONLY|O_NONBLOCK, 0); |
434 |
+ audio_out=open( dev_name, O_WRONLY|O_NONBLOCK, 0); |
435 |
if(read_test_ad(testbuff)!=0)goto clr_wrdev; |
436 |
if(audio_out != -1) |
437 |
{ |
438 |
@@ -2364,7 +2351,7 @@ |
439 |
j=0; |
440 |
ioctl(audio_out, SNDCTL_DSP_COOKEDMODE, &j); |
441 |
#endif |
442 |
- SNDLOG"\n%s opened as WRONLY",devname); |
443 |
+ SNDLOG"\n%s opened as WRONLY",dev_name); |
444 |
sndlog_sync(); |
445 |
if(ioctl(audio_in, SNDCTL_DSP_GETISPACE, &ad_info) == -1) |
446 |
{ |
447 |
@@ -2562,20 +2549,20 @@ |
448 |
for(i=0; i<MAX_DEVNAMES; i++) |
449 |
{ |
450 |
make_devname(i); |
451 |
- SNDLOG"\n%s ",devname); |
452 |
+ SNDLOG"\n%s ",dev_name); |
453 |
cn=0; |
454 |
- sprintf(s,"%02d:%12s",i,devname); |
455 |
+ sprintf(s,"%02d:%12s",i,dev_name); |
456 |
lir_text(0,line,s); |
457 |
column=0; |
458 |
while(s[column] != 0)column++; |
459 |
- audio_out=open( devname, O_WRONLY|O_NONBLOCK, 0); |
460 |
+ audio_out=open( dev_name, O_WRONLY|O_NONBLOCK, 0); |
461 |
if(audio_out != -1) |
462 |
{ |
463 |
#ifdef SNDCTL_DSP_COOKEDMODE |
464 |
j=0; |
465 |
ioctl(audio_out, SNDCTL_DSP_COOKEDMODE, &j); |
466 |
#endif |
467 |
- SNDLOG"\n%s opened as WRONLY with no input open.",devname); |
468 |
+ SNDLOG"\n%s opened as WRONLY with no input open.",dev_name); |
469 |
sndlog_sync(); |
203 |
sndlog_sync(); |
470 |
j=AFMT_U8; |
204 |
if(mode != 1) |
471 |
if(ioctl(audio_out, SNDCTL_DSP_SETFMT, &j) == -1) |
|
|
472 |
@@ -2727,7 +2714,7 @@ |
473 |
// ------------------------------------------------------- |
474 |
} |
475 |
make_devname(ui.da_device_no); |
476 |
-SNDLOG"\nUser selected %s for output.",devname); |
477 |
+SNDLOG"\nUser selected %s for output.",dev_name); |
478 |
clear_sdi(); |
479 |
clear_lines(6,line); |
480 |
lir_text(0,8,"Use close and reopen for D/A when a new signal is"); |
481 |
@@ -2762,8 +2749,8 @@ |
482 |
} |
483 |
else |
484 |
{ |
485 |
- audio_out=open( devname ,O_WRONLY , 0); |
486 |
- sprintf(s,"Using %s for output",devname); |
487 |
+ audio_out=open( dev_name ,O_WRONLY , 0); |
488 |
+ sprintf(s,"Using %s for output",dev_name); |
489 |
lir_text(0,6,s); |
490 |
if(audio_out == -1) |
491 |
{ |