namespace leak_test_project.Infrastructure
{
///
/// 하드웨어 통신을 위한 추상화 인터페이스.
/// 시리얼(RS232), 이더넷(TCP/IP) 등 통신 방식에 상관없이
/// 상위 서비스에서 동일한 방식으로 하드웨어에 접근할 수 있도록 정의함.
///
public interface ICommunication
{
/// 통신 채널 식별 이름 (예: COM1, TCP_192.168.0.1)
string Name { get; }
/// 현재 통신 채널이 열려 있는지 여부
bool IsOpen { get; }
/// 통신 채널을 연결함
bool Open();
/// 통신 채널 연결을 해제함
void Close();
/// 데이터를 하드웨어로 전송함
bool Write(string data);
/// 수신 버퍼를 비워 잔류 데이터를 제거함
void ClearBuffer();
/// 하드웨어로부터 데이터를 수신했을 때 발생하는 이벤트
event System.EventHandler DataReceived;
/// 연결 상태가 변경되었을 때 발생하는 이벤트 (connected, disconnected)
event System.EventHandler ConnectionStatusChanged;
}
}