Files
sweekar-esp32-gyroscope/main/05_executors/photo_interrupter/photo_interrupter.h
T

87 lines
2.3 KiB
C++

/**
* @file photo_interrupter.h
* @brief 光电限位开关类头文件
*
* 该类用于处理光电限位开关的触发事件,支持起始位置和结束位置的检测。
* 通过回调函数机制,当限位开关被触发时执行相应的处理逻辑。
*/
#ifndef PHOTO_INTERRUPTER_H
#define PHOTO_INTERRUPTER_H
#include "io_expansion_board.h"
#include <functional>
/**
* @class PhotoInterrupter
* @brief 光电限位开关类
*
* 提供限位开关的初始化、中断处理和回调函数管理功能。
* 支持起始位置和结束位置两个限位开关的检测。
*/
class PhotoInterrupter {
public:
/**
* @brief 构造函数
*
* 初始化PhotoInterrupter对象,设置默认状态
*/
PhotoInterrupter();
/**
* @brief 析构函数
*
* 清理资源,释放分配的内存
*/
~PhotoInterrupter();
/**
* @brief 初始化限位开关
*
* 执行限位开关的初始化操作,包括设置默认回调函数
*/
void Init();
/**
* @brief 处理限位开关中断
*
* 当限位开关被触发时调用的中断处理函数
*/
void Interrupt();
/**
* @brief 设置起始限位开关触发回调函数
* @param callback 回调函数对象,当起始限位开关被触发时执行
*
* 允许用户自定义起始限位开关被触发时的处理逻辑
*/
void OnStartTrigger(std::function<void()> callback);
/**
* @brief 设置结束限位开关触发回调函数
* @param callback 回调函数对象,当结束限位开关被触发时执行
*
* 允许用户自定义结束限位开关被触发时的处理逻辑
*/
void OnEndTrigger(std::function<void()> callback);
/**
* @brief 触发起始限位开关回调
*
* 当检测到起始限位开关被触发时,执行注册的回调函数
*/
void TriggerStartCallback();
/**
* @brief 触发结束限位开关回调
*
* 当检测到结束限位开关被触发时,执行注册的回调函数
*/
void TriggerEndCallback();
private:
std::function<void()> on_start_trigger_; ///< 起始限位开关回调函数
std::function<void()> on_end_trigger_; ///< 结束限位开关回调函数
};
#endif // PHOTO_INTERRUPTER_H