#pragma once

#ifdef __cplusplus

#include <functional>
#include <string>

namespace softbus::hardware::interfaces
{

struct DiscoveredDevice
{
    std::string id;          // 稳定 ID（如序列号、路径）
    std::string endpoint;    // 打开所需的 endpoint（如 /dev/ttyUSB0, can0, tcp://...）
    std::string type;        // 设备类型：serial / can / ethernet / usb 等
};

// 设备发现 / 监控接口：负责发现插拔事件，不负责创建设备或驱动实例
class IDeviceWatcher
{
public:
    using DeviceAttachedCallback = std::function<void(const DiscoveredDevice&)>;
    using DeviceDetachedCallback = std::function<void(const DiscoveredDevice&)>;

    virtual ~IDeviceWatcher() = default;

    virtual bool Start() = 0;
    virtual void Stop() = 0;

    virtual void SetDeviceAttachedCallback(DeviceAttachedCallback cb) = 0;
    virtual void SetDeviceDetachedCallback(DeviceDetachedCallback cb) = 0;
};

} // namespace softbus::hardware::interfaces

#endif // __cplusplus

