1a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef/* 2a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef comedi_fc.h 3a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 4a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef This is a place for code driver writers wish to share between 5a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef two or more drivers. These functions are meant to be used only 6a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef by drivers, they are NOT part of the kcomedilib API! 7a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 8a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef Author: Frank Mori Hess <fmhess@users.sourceforge.net> 9a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef Copyright (C) 2002 Frank Mori Hess 10a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 11a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef This program is free software; you can redistribute it and/or modify 12a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef it under the terms of the GNU General Public License as published by 13a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef the Free Software Foundation; either version 2 of the License, or 14a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef (at your option) any later version. 15a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 16a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef This program is distributed in the hope that it will be useful, 17a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef but WITHOUT ANY WARRANTY; without even the implied warranty of 18a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef GNU General Public License for more details. 20a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 21a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef You should have received a copy of the GNU General Public License 22a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef along with this program; if not, write to the Free Software 23a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 24a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 25a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef************************************************************************/ 26a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 27a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef#ifndef _COMEDI_FC_H 28a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef#define _COMEDI_FC_H 29a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 30a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef#include "../comedidev.h" 31a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 32a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef/* Writes an array of data points to comedi's buffer */ 3334c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonextern unsigned int cfc_write_array_to_buffer(struct comedi_subdevice *subd, 346d62a12bb0fde6a70eb18e2ba25e48f6fd5eee07Greg Kroah-Hartman void *data, 356d62a12bb0fde6a70eb18e2ba25e48f6fd5eee07Greg Kroah-Hartman unsigned int num_bytes); 36a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 3734c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonstatic inline unsigned int cfc_write_to_buffer(struct comedi_subdevice *subd, 38790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton short data) 39a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef{ 40a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef return cfc_write_array_to_buffer(subd, &data, sizeof(data)); 41a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef}; 42a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 430a85b6f0ab0d2edb0d41b32697111ce0e4f43496Mithlesh Thukralstatic inline unsigned int cfc_write_long_to_buffer(struct comedi_subdevice 440a85b6f0ab0d2edb0d41b32697111ce0e4f43496Mithlesh Thukral *subd, unsigned int data) 45a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef{ 46a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef return cfc_write_array_to_buffer(subd, &data, sizeof(data)); 47a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef}; 48a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 4934c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonextern unsigned int cfc_read_array_from_buffer(struct comedi_subdevice *subd, 506d62a12bb0fde6a70eb18e2ba25e48f6fd5eee07Greg Kroah-Hartman void *data, 516d62a12bb0fde6a70eb18e2ba25e48f6fd5eee07Greg Kroah-Hartman unsigned int num_bytes); 52a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 5371b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonextern unsigned int cfc_handle_events(struct comedi_device *dev, 5434c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton struct comedi_subdevice *subd); 55a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 5634c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonstatic inline unsigned int cfc_bytes_per_scan(struct comedi_subdevice *subd) 57a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef{ 58a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef int num_samples; 59a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef int bits_per_sample; 60a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 61a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef switch (subd->type) { 62a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef case COMEDI_SUBD_DI: 63a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef case COMEDI_SUBD_DO: 64a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef case COMEDI_SUBD_DIO: 65a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef bits_per_sample = 8 * bytes_per_sample(subd); 666d62a12bb0fde6a70eb18e2ba25e48f6fd5eee07Greg Kroah-Hartman num_samples = (subd->async->cmd.chanlist_len + 676d62a12bb0fde6a70eb18e2ba25e48f6fd5eee07Greg Kroah-Hartman bits_per_sample - 1) / bits_per_sample; 68a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef break; 69a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef default: 70a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef num_samples = subd->async->cmd.chanlist_len; 71a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef break; 72a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef } 73a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef return num_samples * bytes_per_sample(subd); 74a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef} 75a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef 76a9f23e00c17567cc4b7ce50cd07226f7bfb70da6David Schleef#endif /* _COMEDI_FC_H */ 77