mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-09 11:31:09 +08:00
61 lines
1.6 KiB
C
61 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2006-2021, RT-Thread Development Team
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Change Logs:
|
|
* Date Author Notes
|
|
* 2019-08-13 balanceTWK first version.
|
|
*/
|
|
|
|
#ifndef __RT_INPUT_CAPTURE_H__
|
|
#define __RT_INPUT_CAPTURE_H__
|
|
|
|
#include <rtthread.h>
|
|
#include <rtdevice.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* capture control command */
|
|
#define INPUTCAPTURE_CMD_CLEAR_BUF (128 + 0) /* clear capture buf */
|
|
#define INPUTCAPTURE_CMD_SET_WATERMARK (128 + 1) /* Set the callback threshold */
|
|
|
|
struct rt_inputcapture_data
|
|
{
|
|
rt_uint32_t pulsewidth_us;
|
|
rt_bool_t is_high;
|
|
};
|
|
|
|
struct rt_inputcapture_device
|
|
{
|
|
struct rt_device parent;
|
|
|
|
const struct rt_inputcapture_ops *ops;
|
|
struct rt_ringbuffer *ringbuff;
|
|
rt_size_t watermark;
|
|
};
|
|
|
|
/**
|
|
* capture operators
|
|
*/
|
|
struct rt_inputcapture_ops
|
|
{
|
|
rt_err_t (*init)(struct rt_inputcapture_device *inputcapture);
|
|
rt_err_t (*open)(struct rt_inputcapture_device *inputcapture);
|
|
rt_err_t (*close)(struct rt_inputcapture_device *inputcapture);
|
|
rt_err_t (*get_pulsewidth)(struct rt_inputcapture_device *inputcapture, rt_uint32_t *pulsewidth_us);
|
|
};
|
|
|
|
void rt_hw_inputcapture_isr(struct rt_inputcapture_device *inputcapture, rt_bool_t level);
|
|
|
|
rt_err_t rt_device_inputcapture_register(struct rt_inputcapture_device *inputcapture,
|
|
const char *name,
|
|
void *data);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __RT_INPUT_CAPTURE_H__ */
|