update ErrorCode, status, lifecycle
This commit is contained in:
46
include/lidarlib/error.hpp
Normal file
46
include/lidarlib/error.hpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
namespace lidarlib {
|
||||
|
||||
// Result of open() and the sticky status behind last_error(). Ok == 0 so
|
||||
// `if (err != ErrorCode::Ok)` reads naturally at call sites.
|
||||
enum class ErrorCode {
|
||||
Ok = 0,
|
||||
|
||||
// Lifecycle misuse — the call was refused, the instance state is unchanged.
|
||||
AlreadyOpen, // open() called while already open
|
||||
NotOpen, // recv_scan()/spin_once() called before open()
|
||||
|
||||
// open() failures
|
||||
SocketError, // socket() creation failed
|
||||
InvalidAddress, // ip string is not a valid IPv4 address
|
||||
PortInUse, // bind: local port already taken (EADDRINUSE/EACCES)
|
||||
BindFailed, // bind failed for another reason
|
||||
ConnectionRefused, // TCP connect refused (device up, port closed)
|
||||
ConnectionFailed, // TCP connect failed (unreachable, no route, ...)
|
||||
HandshakeFailed, // connected, but the start-stream command failed
|
||||
|
||||
// Runtime failures
|
||||
Timeout, // no (complete) scan within timeout_ms
|
||||
DeviceDisconnected, // peer closed the connection / socket recv error
|
||||
};
|
||||
|
||||
inline const char* to_string(ErrorCode e) {
|
||||
switch (e) {
|
||||
case ErrorCode::Ok: return "Ok";
|
||||
case ErrorCode::AlreadyOpen: return "AlreadyOpen";
|
||||
case ErrorCode::NotOpen: return "NotOpen";
|
||||
case ErrorCode::SocketError: return "SocketError";
|
||||
case ErrorCode::InvalidAddress: return "InvalidAddress";
|
||||
case ErrorCode::PortInUse: return "PortInUse";
|
||||
case ErrorCode::BindFailed: return "BindFailed";
|
||||
case ErrorCode::ConnectionRefused: return "ConnectionRefused";
|
||||
case ErrorCode::ConnectionFailed: return "ConnectionFailed";
|
||||
case ErrorCode::HandshakeFailed: return "HandshakeFailed";
|
||||
case ErrorCode::Timeout: return "Timeout";
|
||||
case ErrorCode::DeviceDisconnected: return "DeviceDisconnected";
|
||||
}
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
} // namespace lidarlib
|
||||
Reference in New Issue
Block a user