FreeCalypso > hg > freecalypso-tools
view librftab/readfir.c @ 315:9178594bc283
librftab: implemented reading of FIR coefficient tables
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 22 Nov 2017 18:52:47 +0000 |
parents | |
children |
line wrap: on
line source
/* * Reading FIR coefficient tables from formatted ASCII files, used for the * auw-fir command in fc-tmsh. */ #include <sys/types.h> #include <ctype.h> #include <stdio.h> #include <string.h> #include <strings.h> #include <stdlib.h> #include "../rvinterf/include/exitcodes.h" #include "rdcommon.c" static u_char *writeptr; static process_number() { char *field; int rc; long number; rc = get_field(&field); if (rc < 0) return(ERROR_USAGE); if (!rc) { printf("error: %s is too short for a FIR coefficient table\n", filename); return(ERROR_USAGE); } number = strtol(field, 0, 0); *writeptr++ = number; *writeptr++ = number >> 8; return(0); } read_fir_coeff_table(filename_arg, rdbuf) char *filename_arg; u_char *rdbuf; { char *field; int rc, i; filename = filename_arg; rdfile = fopen(filename, "r"); if (!rdfile) { perror(filename); return(ERROR_UNIX); } lineno = 0; line_nfields = 0; rc = get_field(&field); if (rc <= 0) { not_valid_fir_table: printf("error: %s is not a valid FIR coefficient table file\n", filename); fclose(rdfile); return(ERROR_USAGE); } if (strcmp(field, "fir-coeff-table")) goto not_valid_fir_table; writeptr = rdbuf; for (i = 0; i < 31; i++) { rc = process_number(); if (rc) { fclose(rdfile); return(rc); } } rc = get_field(&field); fclose(rdfile); if (rc < 0) return(ERROR_USAGE); if (rc) { printf("error: %s is too long for a FIR coefficient table\n", filename); return(ERROR_USAGE); } return(0); }