www.pudn.com > slow.zip > common.C


/********************************************************* 
********************************************************** 
	common.c 
********************************************************** 
**********************************************************/ 
/* Modem for MIPS   AJF	  January 1995 
   Common routines */ 
 
#include  
 
#include  
#include  
#include  
 
#include "modem.h" 
 
static void writemsg(char*, char*, word, word, word); 
 
 
global void sendfreqs(float f1, float f2, float t)   /* send 2 tones */ 
  { sinegen *sgen1 = new sinegen(f1); 
    sinegen *sgen2 = new sinegen(f2); 
    int ns = (int) (t * SAMPLERATE); 
    for (int i = 0; i < ns; i++) 
      { float val = (sgen1 -> fnext()) + (sgen2 -> fnext()); 
	outsample(val); 
      } 
    delete sgen1; delete sgen2; 
  } 
 
global void sendfreq(float f, float t)		/* send a single tone */ 
  { sinegen *sgen = new sinegen(f); 
    int ns = (int) (t * SAMPLERATE); 
    for (int i = 0; i < ns; i++) 
      { float val = sgen -> fnext(); 
	outsample(val); 
      } 
    delete sgen; 
  } 
 
global void sendpause(float t)			/* silence */ 
  { int ns = (int) (t * SAMPLERATE); 
    for (int i = 0; i < ns; i++) outsample(0.0); 
  } 
 
global void giveup(char *msg, word p1, word p2, word p3) 
  { writemsg("Error", msg, p1, p2, p2); 
    exit(1); 
  } 
 
global void infomsg(char *msg, word p1, word p2, word p3) 
  { writemsg("Info", msg, p1, p2, p3); 
  } 
 
static void writemsg(char *typ, char *msg, word p1, word p2, word p3) 
  { fprintf(stderr, "*** %s: ", typ); 
    fprintf(stderr, msg, p1, p2, p3); 
    putc('\r', stderr); /* in case we're in raw mode */ 
    putc('\n', stderr); 
  }