annotate tools/step.c @ 0:5242703e91d3 tip

Initial checkin for AIM92 aimR8.2 (last updated May 1997).
author tomwalters
date Fri, 20 May 2011 15:19:45 +0100
parents
children
rev   line source
tomwalters@0 1 /*
tomwalters@0 2 step.c generate a step up or down.
tomwalters@0 3 ------
tomwalters@0 4
tomwalters@0 5 */
tomwalters@0 6
tomwalters@0 7 #include <stdio.h>
tomwalters@0 8 #include <math.h>
tomwalters@0 9 #include "options.h"
tomwalters@0 10 #include "units.h"
tomwalters@0 11 #include "strmatch.h"
tomwalters@0 12
tomwalters@0 13 char applic[] = "generate a step waveform. " ;
tomwalters@0 14 char usage[] = "step [options]" ;
tomwalters@0 15
tomwalters@0 16 static char *helpstr, *debugstr, *sampstr, *astr, *dstr, *typestr ;
tomwalters@0 17 static char *shiftstr, *polstr ;
tomwalters@0 18
tomwalters@0 19 static Options option[] = {
tomwalters@0 20 { "help" , "off" , &helpstr , "help" , DEBUG },
tomwalters@0 21 { "debug" , "off" , &debugstr , "debugging switch" , DEBUG },
tomwalters@0 22 { "samplerate", "20kHz" , &sampstr , "samplerate " , VAL },
tomwalters@0 23 { "amplitude" , "1" , &astr , "step height" , VAL },
tomwalters@0 24 { "shift" , "10ms" , &shiftstr , "position of step relative to start", VAL },
tomwalters@0 25 { "polarity" , "up" , &polstr , "step up or down" , VAL },
tomwalters@0 26 { "duration" , "500ms" , &dstr , "duration of waveform" , VAL },
tomwalters@0 27 { "type" , "short" , &typestr , "output datatype" , VAL },
tomwalters@0 28 ( char * ) 0 } ;
tomwalters@0 29
tomwalters@0 30
tomwalters@0 31 int samplerate ;
tomwalters@0 32 float amplitude ;
tomwalters@0 33 int duration ;
tomwalters@0 34 int shift ;
tomwalters@0 35 int type ;
tomwalters@0 36
tomwalters@0 37 main(argc, argv)
tomwalters@0 38 int argc ;
tomwalters@0 39 char *argv[] ;
tomwalters@0 40 {
tomwalters@0 41 int i ;
tomwalters@0 42 float y0, y1 ;
tomwalters@0 43
tomwalters@0 44 getopts( option,argc,argv ) ;
tomwalters@0 45 if ( !isoff( helpstr ) )
tomwalters@0 46 helpopts3( helpstr, argv[0], applic, usage, option ) ;
tomwalters@0 47
tomwalters@0 48 samplerate = to_Hz( sampstr, 0 ) ;
tomwalters@0 49 amplitude = atof( astr ) ;
tomwalters@0 50 shift = to_p( shiftstr, samplerate ) ;
tomwalters@0 51 duration = to_p( dstr, samplerate ) ;
tomwalters@0 52
tomwalters@0 53 if ( ( type = typeindex( typestr ) ) < 0 ) {
tomwalters@0 54 fprintf(stderr,"step: unknown datatype [%s]\n", typestr) ;
tomwalters@0 55 exit( 1 ) ;
tomwalters@0 56 }
tomwalters@0 57
tomwalters@0 58 if ( isstr( polstr, "up" ) ) {
tomwalters@0 59 y0 = 0 ; y1 = amplitude ;
tomwalters@0 60 }
tomwalters@0 61 else if ( isstr( polstr, "down" ) ) {
tomwalters@0 62 y0 = amplitude ; y1 = 0 ;
tomwalters@0 63 }
tomwalters@0 64 else {
tomwalters@0 65 fprintf(stderr,"step: unknown polarity [%s]\n", polstr) ;
tomwalters@0 66 exit( 1 ) ;
tomwalters@0 67 }
tomwalters@0 68
tomwalters@0 69 for ( i = 0 ; i < shift ; i++ )
tomwalters@0 70 writeitem( &y0, type, 1, stdout ) ;
tomwalters@0 71 for ( ; i < duration ; i++ )
tomwalters@0 72 writeitem( &y1, type, 1, stdout ) ;
tomwalters@0 73
tomwalters@0 74 }