FreeCalypso > hg > freecalypso-tools
view librftab/readfir.c @ 752:c79aaed75bd8
compile-fc-batt: allow possible third field in source lines
Battery tables maintained in the fc-battery-conf repository will now
have a third field added, defining thresholds for the battery bars icon,
and there will be a new utility to compile them into the new
/etc/batterytab2 file read by the FC Tourmaline version of our
FCHG driver. For backward compatibility with the original Magnetite
version of FCHG, compile-fc-batt remains the tool for compiling the
original /etc/batterytab file format, and it needs to ignore the
newly added third field in battery table sources.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 05 Nov 2020 20:37:55 +0000 |
parents | 9178594bc283 |
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); }