ref: 20614fd8f8ef258b5930d849d4263487daad9014
parent: 4ec0a1a2712acc48ba2f52dfa760aa25bcb07c85
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Sun May 7 21:02:34 EDT 2023
fall back to internal/fixed output if speakers are not available
--- a/jacksense.c
+++ b/jacksense.c
@@ -12,7 +12,7 @@
void
main(int argc, char **argv)
{
- int hp, sp, cmd, ctl, vol, lastvol, newvol;
+ int hp, sp, lp, cmd, ctl, vol, lastvol, newvol;
int debug, hpsafevol, spsafevol;
u32int x, y[4], has, had, c;
char *s, *a[16], tmp[32];
@@ -45,6 +45,7 @@
sysfatal("%r");
sp = -1;
hp = -1;
+ lp = -1;
while((sp < 0 || hp < 0) && (s = Brdline(b, '\n')) != nil){
s[Blinelen(b)-1] = 0;
if(tokenize(s, a, nelem(a)) < 8)
@@ -55,12 +56,20 @@
hp = atoi(a[1]);
if(debug) fprint(2, "hpout pin %d\n", hp);
}
- if(strcmp(a[3], "fix") == 0 && strcmp(a[6], "speaker") == 0){
- sp = atoi(a[1]);
- if(debug) fprint(2, "speaker pin %d\n", sp);
+ if(strcmp(a[3], "fix") == 0){
+ if(strcmp(a[6], "speaker") == 0){
+ sp = atoi(a[1]);
+ if(debug) fprint(2, "speaker pin %d\n", sp);
+ }else if(strcmp(a[4], "int") == 0){
+ /* fallback for built-in speakers/etc */
+ lp = atoi(a[1]);
+ if(debug) fprint(2, "speaker fallback pin %d\n", sp);
+ }
}
}
Bterm(b);
+ if(sp < 0)
+ sp = lp;
if(sp < 0 || hp < 0){
fprint(2, "couldn't detect pins\n");
exits("pins");