Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Code reformatting and simple TUI

  • Loading branch information...
commit 6a241cc06be1869a1da7305664b8dcfd496a96c2 1 parent 12fe9e8
@Mrkvak Mrkvak authored
Showing with 73 additions and 53 deletions.
  1. 0  {host_python → mux}/init.sh
  2. +73 −53 mux/mux.c
View
0  host_python/init.sh → mux/init.sh
File renamed without changes
View
126 mux/mux.c
@@ -11,83 +11,103 @@ int main() {
int rainbow, equalizer, serial;
fd_set readers;
struct timeval tv;
- int r,s,w;
- int reads_eq=0, reads_ra=0;
+ int r, s, w;
+ int reads_eq = 0, reads_ra = 0;
int source;
char buf_eq[65], buf_ra[65];
- char *srcbuf=buf_eq;
+ char *srcbuf = buf_eq;
+ int c = 'a';
+ int tmp;
+ rainbow = open("/tmp/ledbar/rainbow", O_RDWR);
+ equalizer = open("/tmp/ledbar/equalizer", O_RDWR);
+ serial = open("/tmp/ledbar/serial", O_RDWR);
- rainbow=open("/tmp/ledbar/rainbow", O_RDWR);
- equalizer=open("/tmp/ledbar/equalizer", O_RDWR);
- serial=open("/tmp/ledbar/serial", O_RDWR);
-
- if(rainbow==-1 || equalizer==-1 || serial==-1) {
+ if(rainbow == -1 || equalizer == -1 || serial == -1) {
perror("Open failed");
return 1;
}
+ printf( "****************************************\n"
+ "* Usage: press [r] for rainbow mode *\n"
+ "* press [e] for equalizer mode *\n"
+ "* press [a] for automatic mode *\n"
+ "****************************************\n");
+
while(1) {
- tv.tv_sec=3;
- tv.tv_usec=0;
+ tv.tv_sec = 3;
+ tv.tv_usec = 0;
FD_ZERO(&readers);
FD_SET(rainbow, &readers);
FD_SET(equalizer, &readers);
- s=select(equalizer+1, &readers, NULL, NULL, &tv);
- if(s==-1) {
+ FD_SET(fileno(stdin), &readers);
+
+ s = select(equalizer+1, &readers, NULL, NULL, &tv);
+ if(s == -1) {
perror("select failed");
return 2;
- } else if(s) {
- if(FD_ISSET(equalizer, &readers)) {
- r=read(equalizer, buf_eq, sizeof(buf_eq)-1);
- if(r==-1) {
- perror("eq read");
- return 3;
- }
- int i;
- for(i=0; i<r; i++) {
- if(buf_eq[i]) {
- reads_eq++;
- break;
- }
- }
+ }
+ if(!s)
+ continue;
+
+ if(FD_ISSET(fileno(stdin), &readers)) {
+ tmp = getc(stdin);
+ if (tmp != '\r' && tmp != '\n') {
+ if(tmp != 'a' && tmp != 'r' && tmp != 'e')
+ printf("Invalid command!\n");
+ else
+ c = tmp;
}
- if(FD_ISSET(rainbow, &readers)) {
- r=read(rainbow, buf_ra, sizeof(buf_ra)-1);
- if(r==-1) {
- perror("ra read");
- return 3;
+ }
+
+ if(FD_ISSET(equalizer, &readers)) {
+ r=read(equalizer, buf_eq, sizeof(buf_eq) - 1);
+ if(r == -1) {
+ perror("eq read");
+ return 3;
+ }
+ int i;
+ for(i = 0; i < r; i++) {
+ if(buf_eq[i]) {
+ reads_eq++;
+ break;
}
- reads_ra++;
}
-
- // printf("eq: %i ra: %i r: %i\n", reads_eq, reads_ra, r);
-
- if(reads_eq>READS_THR) {
- reads_eq=0;
- reads_ra=0;
- if(srcbuf!=buf_eq)
- printf("switching to equalizer\n");
- srcbuf=buf_eq;
- } else if(reads_ra>READS_THR*RAINBOW_DIVISOR) {
- reads_eq=0;
- reads_ra=0;
- if(srcbuf!=buf_ra)
- printf("switching to rainbow\n");
- srcbuf=buf_ra;
+ }
+ if(FD_ISSET(rainbow, &readers)) {
+ r=read(rainbow, buf_ra, sizeof(buf_ra) - 1);
+ if(r == -1) {
+ perror("ra read");
+ return 3;
}
-
- if(write(serial, srcbuf, r)==-1) {
- perror("write failed");
- return 4;
+ reads_ra++;
+ }
+
+ if (c == 'a') {
+ if(reads_eq > READS_THR) {
+ reads_eq = 0;
+ reads_ra = 0;
+ srcbuf = buf_eq;
+ } else if(reads_ra > READS_THR*RAINBOW_DIVISOR) {
+ reads_eq = 0;
+ reads_ra = 0;
+ srcbuf = buf_ra;
}
- // usleep(500);
-
+ } else if (c == 'r') {
+ srcbuf = buf_ra;
+ } else if (c == 'e') {
+ srcbuf = buf_eq;
+ }
+
+ if(write(serial, srcbuf, r) == -1) {
+ perror("write failed");
+ return 4;
}
}
close(serial);
close(rainbow);
close(equalizer);
return 0;
+
}
Please sign in to comment.
Something went wrong with that request. Please try again.