]> git.rkrishnan.org Git - dttsp.git/blobdiff - jDttSP/metermon.c
Major changes. Added metering and power spectrum, other fixes. Rearranged headers...
[dttsp.git] / jDttSP / metermon.c
index 1bd875b27ec6da16c580ac8061c2e64f52fc0c4e..09a6b6e2fb5022af0b5cbead2916dff0b24f5c2d 100644 (file)
@@ -1,44 +1,62 @@
 /* metermon.c */
 
-#include <chan.h>
+#include <common.h>
 
-#define METERPATH "./IPC/SDR-1000-0-meter.chan"
-#define METERMULT (24)
 #define SLEEP (500000)
 
-jmp_buf here;
+char *cmdsink = "./IPC/SDR-1000-0-commands.fifo",
+     *mtrsrc = "./IPC/SDR-1000-0-meter.fifo";
 
-void
-onsig(int sig) {
-  signal(SIGHUP, SIG_IGN);
-  signal(SIGINT, SIG_IGN);
-  signal(SIGQUIT, SIG_IGN);
-  longjmp(here, TRUE);
-}
+FILE *cmdfp, *mtrfp;
+
+int label;
+REAL rxm[MAXRX][RXMETERPTS];
+REAL txm[TXMETERPTS];
 
 int
 main(int argc, char **argv) {
-  Chan ch = 0;
-  int i = 0;
-  REAL val = 0.0;
-
-  signal(SIGHUP, onsig);
-  signal(SIGINT, onsig);
-  signal(SIGQUIT, onsig);
-
-  if (!(ch = openChan(METERPATH, METERMULT * sizeof(REAL))))
-    perror("openChan"), exit(1);
-
-  while (!setjmp(here)) {
-    if (getChan_nowait(ch, (char *) &val, sizeof(REAL))) {
-      printf("(%d)", i++);
-      do
-       printf(" %f", val);
-      while (getChan_nowait(ch, (char *) &val, sizeof(REAL)));
+  int i = 0, j, k, lab = getpid();
+
+  if (!(cmdfp = fopen(cmdsink, "r+")))
+    perror(cmdsink), exit(1);
+  if (!(mtrfp = fopen(mtrsrc, "r+")))
+    perror(mtrsrc), exit(1);
+
+  fprintf(stderr, "metermon OK\n");
+
+  for (;;) {
+
+    usleep(SLEEP);
+
+    fprintf(cmdfp, "reqMeter %d\n", lab);
+    fflush(cmdfp);
+
+    if (fread((char *) &label, sizeof(int), 1, mtrfp) != 1)
+      perror("fread meter label"), exit(1);
+
+    if (fread((char *) rxm, sizeof(REAL), MAXRX * RXMETERPTS, mtrfp)
+       != MAXRX * RXMETERPTS)
+      perror("fread meter"), exit(1);
+
+    printf("%d <%d>", i++, label);
+    for (j = 0; j < MAXRX; j++) {
+      for (k = 0; k < RXMETERPTS; k++)
+       printf(" %8.3f", rxm[j][k]);
       putchar('\n');
     }
-    usleep(SLEEP);
+
+    if (fread((char *) txm, sizeof(REAL), TXMETERPTS, mtrfp)
+       != TXMETERPTS)
+      perror("fread meter"), exit(1);
+
+    printf("%d\n", i++);
+    for (k = 0; k < TXMETERPTS; k++)
+      printf(" %8.3f", txm[k]);
+    putchar('\n');
   }
 
-  closeChan(ch);
+  fclose(cmdfp);
+  fclose(mtrfp);
+
+  exit(0);
 }