54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
export class GPIOError extends Error {
|
|
code: string
|
|
|
|
constructor(message: string, code: string) {
|
|
super(message)
|
|
this.name = "GPIOError"
|
|
this.code = code
|
|
}
|
|
}
|
|
|
|
export class PermissionError extends GPIOError {
|
|
constructor(path: string) {
|
|
super(
|
|
`Permission denied accessing ${path}. Try:\n` +
|
|
` 1. Add your user to the 'gpio' group: sudo usermod -aG gpio $USER\n` +
|
|
` 2. Log out and back in\n` +
|
|
` 3. Or run with sudo (not recommended for production)`,
|
|
"PERMISSION_DENIED"
|
|
)
|
|
this.name = "PermissionError"
|
|
}
|
|
}
|
|
|
|
export class PinInUseError extends GPIOError {
|
|
constructor(pin: number) {
|
|
super(
|
|
`Pin ${pin} is already in use by another process or request. ` +
|
|
`Only one process can control a GPIO pin at a time.`,
|
|
"PIN_IN_USE"
|
|
)
|
|
this.name = "PinInUseError"
|
|
}
|
|
}
|
|
|
|
export class ChipNotFoundError extends GPIOError {
|
|
constructor(path: string) {
|
|
super(
|
|
`GPIO chip not found at ${path}. Check that:\n` +
|
|
` 1. The path exists (ls ${path})\n` +
|
|
` 2. GPIO hardware is enabled in your system configuration\n` +
|
|
` 3. You're running on compatible hardware (Raspberry Pi, etc.)`,
|
|
"CHIP_NOT_FOUND"
|
|
)
|
|
this.name = "ChipNotFoundError"
|
|
}
|
|
}
|
|
|
|
export class InvalidConfigError extends GPIOError {
|
|
constructor(message: string) {
|
|
super(message, "INVALID_CONFIG")
|
|
this.name = "InvalidConfigError"
|
|
}
|
|
}
|