/** * @file * Analogy for Linux, internal calibration declarations * * @note Copyright (C) 2014 Jorge A Ramirez-Ortiz * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef __ANALOGY_CALIBRATION_H__ #define __ANALOGY_CALIBRATION_H__ /* * internal definitions between the xenomai utils and the library. * no need to expose them to the USER * */ #define ELEMENT_FIELD_FMT "%s_%d:%s" #define ELEMENT_FMT "%s:%s" #define COEFF_FMT ELEMENT_FIELD_FMT"_%d" #define PLATFORM_STR "platform" #define CALIBRATION_SUBD_STR "calibration" #define MEMORY_SUBD_STR "memory" #define AI_SUBD_STR "analog_input" #define AO_SUBD_STR "analog_output" #define INDEX_STR "index" #define ELEMENTS_STR "elements" #define CHANNEL_STR "channel" #define RANGE_STR "range" #define EXPANSION_STR "expansion_origin" #define NBCOEFF_STR "nbcoeff" #define COEFF_STR "coeff" #define BOARD_STR "board_name" #define DRIVER_STR "driver_name" struct polynomial { double expansion_origin; double *coefficients; int nb_coefficients; int order; }; struct subdevice_calibration_node { struct holder node; struct polynomial *polynomial; unsigned channel; unsigned range; }; void write_calibration_file(FILE *dst, struct listobj *l, struct a4l_calibration_subdev *subd, a4l_desc_t *desc); #endif