linux/include/linux/iio/buffer.h
<<
>>
Prefs
   1/* The industrial I/O core - generic buffer interfaces.
   2 *
   3 * Copyright (c) 2008 Jonathan Cameron
   4 *
   5 * This program is free software; you can redistribute it and/or modify it
   6 * under the terms of the GNU General Public License version 2 as published by
   7 * the Free Software Foundation.
   8 */
   9
  10#ifndef _IIO_BUFFER_GENERIC_H_
  11#define _IIO_BUFFER_GENERIC_H_
  12#include <linux/sysfs.h>
  13#include <linux/iio/iio.h>
  14
  15struct iio_buffer;
  16
  17void iio_buffer_set_attrs(struct iio_buffer *buffer,
  18                         const struct attribute **attrs);
  19
  20int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data);
  21
  22/**
  23 * iio_push_to_buffers_with_timestamp() - push data and timestamp to buffers
  24 * @indio_dev:          iio_dev structure for device.
  25 * @data:               sample data
  26 * @timestamp:          timestamp for the sample data
  27 *
  28 * Pushes data to the IIO device's buffers. If timestamps are enabled for the
  29 * device the function will store the supplied timestamp as the last element in
  30 * the sample data buffer before pushing it to the device buffers. The sample
  31 * data buffer needs to be large enough to hold the additional timestamp
  32 * (usually the buffer should be indio->scan_bytes bytes large).
  33 *
  34 * Returns 0 on success, a negative error code otherwise.
  35 */
  36static inline int iio_push_to_buffers_with_timestamp(struct iio_dev *indio_dev,
  37        void *data, int64_t timestamp)
  38{
  39        if (indio_dev->scan_timestamp) {
  40                size_t ts_offset = indio_dev->scan_bytes / sizeof(int64_t) - 1;
  41                ((int64_t *)data)[ts_offset] = timestamp;
  42        }
  43
  44        return iio_push_to_buffers(indio_dev, data);
  45}
  46
  47bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
  48                                   const unsigned long *mask);
  49
  50void iio_device_attach_buffer(struct iio_dev *indio_dev,
  51                              struct iio_buffer *buffer);
  52
  53#endif /* _IIO_BUFFER_GENERIC_H_ */
  54