tomwalters@0: /* tomwalters@0: step.c generate a step up or down. tomwalters@0: ------ tomwalters@0: tomwalters@0: */ tomwalters@0: tomwalters@0: #include tomwalters@0: #include tomwalters@0: #include "options.h" tomwalters@0: #include "units.h" tomwalters@0: #include "strmatch.h" tomwalters@0: tomwalters@0: char applic[] = "generate a step waveform. " ; tomwalters@0: char usage[] = "step [options]" ; tomwalters@0: tomwalters@0: static char *helpstr, *debugstr, *sampstr, *astr, *dstr, *typestr ; tomwalters@0: static char *shiftstr, *polstr ; tomwalters@0: tomwalters@0: static Options option[] = { tomwalters@0: { "help" , "off" , &helpstr , "help" , DEBUG }, tomwalters@0: { "debug" , "off" , &debugstr , "debugging switch" , DEBUG }, tomwalters@0: { "samplerate", "20kHz" , &sampstr , "samplerate " , VAL }, tomwalters@0: { "amplitude" , "1" , &astr , "step height" , VAL }, tomwalters@0: { "shift" , "10ms" , &shiftstr , "position of step relative to start", VAL }, tomwalters@0: { "polarity" , "up" , &polstr , "step up or down" , VAL }, tomwalters@0: { "duration" , "500ms" , &dstr , "duration of waveform" , VAL }, tomwalters@0: { "type" , "short" , &typestr , "output datatype" , VAL }, tomwalters@0: ( char * ) 0 } ; tomwalters@0: tomwalters@0: tomwalters@0: int samplerate ; tomwalters@0: float amplitude ; tomwalters@0: int duration ; tomwalters@0: int shift ; tomwalters@0: int type ; tomwalters@0: tomwalters@0: main(argc, argv) tomwalters@0: int argc ; tomwalters@0: char *argv[] ; tomwalters@0: { tomwalters@0: int i ; tomwalters@0: float y0, y1 ; tomwalters@0: tomwalters@0: getopts( option,argc,argv ) ; tomwalters@0: if ( !isoff( helpstr ) ) tomwalters@0: helpopts3( helpstr, argv[0], applic, usage, option ) ; tomwalters@0: tomwalters@0: samplerate = to_Hz( sampstr, 0 ) ; tomwalters@0: amplitude = atof( astr ) ; tomwalters@0: shift = to_p( shiftstr, samplerate ) ; tomwalters@0: duration = to_p( dstr, samplerate ) ; tomwalters@0: tomwalters@0: if ( ( type = typeindex( typestr ) ) < 0 ) { tomwalters@0: fprintf(stderr,"step: unknown datatype [%s]\n", typestr) ; tomwalters@0: exit( 1 ) ; tomwalters@0: } tomwalters@0: tomwalters@0: if ( isstr( polstr, "up" ) ) { tomwalters@0: y0 = 0 ; y1 = amplitude ; tomwalters@0: } tomwalters@0: else if ( isstr( polstr, "down" ) ) { tomwalters@0: y0 = amplitude ; y1 = 0 ; tomwalters@0: } tomwalters@0: else { tomwalters@0: fprintf(stderr,"step: unknown polarity [%s]\n", polstr) ; tomwalters@0: exit( 1 ) ; tomwalters@0: } tomwalters@0: tomwalters@0: for ( i = 0 ; i < shift ; i++ ) tomwalters@0: writeitem( &y0, type, 1, stdout ) ; tomwalters@0: for ( ; i < duration ; i++ ) tomwalters@0: writeitem( &y1, type, 1, stdout ) ; tomwalters@0: tomwalters@0: }