Add initial board, HAL, and executor modules
This commit is contained in:
1 parent
3b9e129c88
commit
0b2eebe76d
82 files changed
+20611
No files matched your search
@@ -0,0 +1,16 @@
|
||||
# main/05_executors/photo_interrupter/module.cmake
|
||||
|
||||
|
||||
# 判断 menuconfig 中的开关
|
||||
if(NOT CONFIG_ENABLE_EXEC_PHOTO_INTERRUPTER AND NOT EARLY_EXPANSION)
|
||||
message(STATUS " [Skip] photo_interrupter module disabled by menuconfig.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
list(APPEND MODULE_SRCS
|
||||
"05_executors/photo_interrupter/photo_interrupter.cc"
|
||||
)
|
||||
|
||||
list(APPEND MODULE_INCLUDE_DIRS
|
||||
"05_executors/photo_interrupter"
|
||||
)
|
||||
@@ -0,0 +1,129 @@
|
||||
/**
|
||||
* @file photo_interrupter.cc
|
||||
* @brief 光电限位开关类实现文件
|
||||
*
|
||||
* 该类实现了光电限位开关的完整功能,包括初始化、中断处理、
|
||||
* 回调函数管理等。支持起始位置和结束位置两个限位开关的检测。
|
||||
*/
|
||||
|
||||
#include "photo_interrupter.h"
|
||||
#include <esp_log.h>
|
||||
|
||||
#define TAG "PhotoInterrupter" ///< 日志标签,用于ESP-IDF日志系统
|
||||
|
||||
/**
|
||||
* @brief 构造函数
|
||||
*
|
||||
* 初始化PhotoInterrupter对象,设置默认状态
|
||||
* 目前构造函数为空,所有初始化操作在Init()方法中完成
|
||||
*/
|
||||
PhotoInterrupter::PhotoInterrupter()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 析构函数
|
||||
*
|
||||
* 清理资源,释放分配的内存
|
||||
* 目前析构函数为空,没有需要特殊清理的资源
|
||||
*/
|
||||
PhotoInterrupter::~PhotoInterrupter()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 初始化限位开关
|
||||
*
|
||||
* 执行限位开关的初始化操作,包括:
|
||||
* 1. 输出初始化日志
|
||||
* 2. 设置默认的起始限位开关回调函数
|
||||
* 3. 设置默认的结束限位开关回调函数
|
||||
*
|
||||
* 默认回调函数仅输出触发日志,用户可以通过OnStartTrigger()和OnEndTrigger()
|
||||
* 方法覆盖这些默认回调函数
|
||||
*/
|
||||
void PhotoInterrupter::Init()
|
||||
{
|
||||
ESP_LOGI(TAG, "限位开关初始化");
|
||||
|
||||
// 设置默认回调函数 - 起始限位开关触发时输出日志
|
||||
OnStartTrigger([]() {
|
||||
ESP_LOGI(TAG, "起始限位开关触发 - 默认回调");
|
||||
});
|
||||
|
||||
// 设置默认回调函数 - 结束限位开关触发时输出日志
|
||||
OnEndTrigger([]() {
|
||||
ESP_LOGI(TAG, "结束限位开关触发 - 默认回调");
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 处理限位开关中断
|
||||
*
|
||||
* 当限位开关被触发时调用的中断处理函数
|
||||
* 目前仅输出中断触发日志,可以根据需要扩展更多处理逻辑
|
||||
*/
|
||||
void PhotoInterrupter::Interrupt()
|
||||
{
|
||||
ESP_LOGI(TAG, "限位开关中断触发");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置起始限位开关触发回调函数
|
||||
* @param callback 回调函数对象,当起始限位开关被触发时执行
|
||||
*
|
||||
* 允许用户自定义起始限位开关被触发时的处理逻辑。
|
||||
* 该函数会保存传入的回调函数,并输出注册日志。
|
||||
*/
|
||||
void PhotoInterrupter::OnStartTrigger(std::function<void()> callback)
|
||||
{
|
||||
on_start_trigger_ = callback;
|
||||
ESP_LOGI(TAG, "注册起始限位开关回调函数");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置结束限位开关触发回调函数
|
||||
* @param callback 回调函数对象,当结束限位开关被触发时执行
|
||||
*
|
||||
* 允许用户自定义结束限位开关被触发时的处理逻辑。
|
||||
* 该函数会保存传入的回调函数,并输出注册日志。
|
||||
*/
|
||||
void PhotoInterrupter::OnEndTrigger(std::function<void()> callback)
|
||||
{
|
||||
on_end_trigger_ = callback;
|
||||
ESP_LOGI(TAG, "注册结束限位开关回调函数");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 触发起始限位开关回调
|
||||
*
|
||||
* 当检测到起始限位开关被触发时,执行注册的回调函数。
|
||||
* 如果回调函数已设置(不为nullptr),则执行回调并输出触发日志。
|
||||
*
|
||||
* 该函数通常由IO扩展板在检测到起始限位开关中断时调用。
|
||||
*/
|
||||
void PhotoInterrupter::TriggerStartCallback()
|
||||
{
|
||||
if (on_start_trigger_) {
|
||||
ESP_LOGI(TAG, "触发起始限位开关回调");
|
||||
on_start_trigger_();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 触发结束限位开关回调
|
||||
*
|
||||
* 当检测到结束限位开关被触发时,执行注册的回调函数。
|
||||
* 如果回调函数已设置(不为nullptr),则执行回调并输出触发日志。
|
||||
*
|
||||
* 该函数通常由IO扩展板在检测到结束限位开关中断时调用。
|
||||
*/
|
||||
void PhotoInterrupter::TriggerEndCallback()
|
||||
{
|
||||
if (on_end_trigger_) {
|
||||
ESP_LOGI(TAG, "触发结束限位开关回调");
|
||||
on_end_trigger_();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
/**
|
||||
* @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
|
||||
Reference in new issue
Block a user