add doxygen via opencode

This commit is contained in:
2026-02-27 23:42:09 +03:00
parent 1739836a18
commit b53ef184dc
63 changed files with 3374 additions and 681 deletions

View File

@@ -29,37 +29,98 @@
#include "pithread.h"
//! \~english HID device information
//! \~russian Информация об HID устройстве
struct PIP_EXPORT PIHIDeviceInfo {
friend class PIHIDevice;
//! \~english Base class for value info
//! \~russian Базовый класс для информации о значении
struct PIP_EXPORT ValueInfoBase {
//! \~english Checks if info is valid
//! \~russian Проверяет валидна ли информация
bool isValid() const { return index >= 0; }
int index = -1;
int data_index = -1;
};
//! \~english Axis information
//! \~russian Информация об оси
struct PIP_EXPORT AxisInfo: public ValueInfoBase {
int bits = 0;
int min = 0;
int max = 1;
bool is_relative = false;
};
//! \~english Button information
//! \~russian Информация о кнопке
struct PIP_EXPORT ButtonInfo: public ValueInfoBase {
int code = 0;
};
//! \~english Device path
//! \~russian Путь к устройству
PIString path;
//! \~english Manufacturer name
//! \~russian Имя производителя
PIString manufacturer;
//! \~english Product name
//! \~russian Название продукта
PIString product;
//! \~english Serial number
//! \~russian Серийный номер
PIString serial;
//! \~english Version
//! \~russian Версия
PIString version;
//! \~english Vendor ID
//! \~russian Идентификатор производителя
PIString VID;
//! \~english Product ID
//! \~russian Идентификатор продукта
PIString PID;
//! \~english List of axes
//! \~russian Список осей
PIVector<AxisInfo> axes;
//! \~english List of buttons
//! \~russian Список кнопок
PIVector<ButtonInfo> buttons;
//! \~english Checks if info is null
//! \~russian Проверяет является ли информация пустой
bool isNull() const { return path.isEmpty(); }
//! \~english Checks if info is not null
//! \~russian Проверяет является ли информация не пустой
bool isNotNull() const { return !isNull(); }
//! \~english Matches device by string
//! \~russian Сопоставляет устройство по строке
bool match(const PIString & str) const;
//! \~english Returns axes count
//! \~russian Возвращает количество осей
int axesCount() const { return axes.size_s(); }
//! \~english Returns absolute axes count
//! \~russian Возвращает количество абсолютных осей
int axesAbsoluteCount() const;
//! \~english Returns relative axes count
//! \~russian Возвращает количество относительных осей
int axesRelativeCount() const;
//! \~english Returns buttons count
//! \~russian Возвращает количество кнопок
int buttonsCount() const { return buttons.size_s(); }
private:
@@ -74,13 +135,19 @@ private:
PIP_EXPORT PICout operator<<(PICout s, const PIHIDeviceInfo & v);
//! \~english HID device
//! \~russian HID устройство
class PIP_EXPORT PIHIDevice: public PIThread {
PIOBJECT_SUBCLASS(PIHIDevice, PIThread)
public:
~PIHIDevice();
//! \~english HID event
//! \~russian Событие HID
struct PIP_EXPORT Event {
//! \~english Event type
//! \~russian Тип события
enum Type {
tNone,
tButton,
@@ -92,19 +159,48 @@ public:
float value = 0.;
};
//! \~english Checks if device is opened
//! \~russian Проверяет открыто ли устройство
bool isOpened() const;
//! \~english Opens device by info
//! \~russian Открывает устройство по информации
bool open(const PIHIDeviceInfo & device);
//! \~english Opens device
//! \~russian Открывает устройство
bool open();
//! \~english Closes device
//! \~russian Закрывает устройство
void close();
//! \~english Starts reading device
//! \~russian Начинает чтение устройства
void start();
//! \~english Stops reading device
//! \~russian Останавливает чтение устройства
void stop();
//! \~english Sets dead zone for axes
//! \~russian Устанавливает мёртвую зону для осей
void setDeadZone(float v) { dead_zone = v; }
//! \~english Returns dead zone
//! \~russian Возвращает мёртвую зону
float deadZone() const { return dead_zone; }
//! \~english Event fired on device event
//! \~russian Событие при событии устройства
EVENT1(event, PIHIDevice::Event, e);
//! \~english Returns all available HID devices
//! \~russian Возвращает все доступные HID устройства
static PIVector<PIHIDeviceInfo> allDevices(bool try_open = true);
//! \~english Finds device by name
//! \~russian Находит устройство по имени
static PIHIDeviceInfo findDevice(const PIString & name);
private:

View File

@@ -30,36 +30,54 @@
#include <functional>
//! \~english System signals handler
//! \~russian Обработчик системных сигналов
class PIP_EXPORT PISignals {
public:
//! \~english Signal types
//! \~russian Типы сигналов
enum Signal {
Interrupt /** Interrupt from keyboard */ = 0x01, // Term Interrupt from keyboard
Illegal /** Illegal Instruction */ = 0x02, // Core Illegal Instruction
Abort /** Abort signal */ = 0x04, // Core Abort signal from abort
FPE /** Floating point exception */ = 0x08, // Core Floating point exception
SegFault /** Invalid memory reference */ = 0x10, // Core Invalid memory reference
Termination /** Termination signal */ = 0x20, // Term Termination signal
Hangup = 0x40, // Term Hangup detected on controlling terminal or death of controlling process
Quit = 0x80, // Core Quit from keyboard
Kill = 0x100, // Term Kill signal
BrokenPipe = 0x200, // Term Broken pipe: write to pipe with no readers
Timer = 0x400, // Term Timer signal from alarm
UserDefined1 = 0x800, // Term User-defined signal 1
UserDefined2 = 0x1000, // Term User-defined signal 2
ChildStopped = 0x2000, // Ign Child stopped or terminated
Continue = 0x4000, // Cont Continue if stopped
StopProcess = 0x8000, // Stop Stop process
StopTTY = 0x10000, // Stop Stop typed at tty
StopTTYInput = 0x20000, // Stop tty input for background process
StopTTYOutput = 0x40000, // Stop tty output for background process
All = 0xFFFFF
Interrupt = 0x01, //!< Interrupt from keyboard
Illegal = 0x02, //!< Illegal Instruction
Abort = 0x04, //!< Abort signal
FPE = 0x08, //!< Floating point exception
SegFault = 0x10, //!< Invalid memory reference
Termination = 0x20, //!< Termination signal
Hangup = 0x40, //!< Hangup detected
Quit = 0x80, //!< Quit from keyboard
Kill = 0x100, //!< Kill signal
BrokenPipe = 0x200, //!< Broken pipe
Timer = 0x400, //!< Timer signal
UserDefined1 = 0x800, //!< User-defined signal 1
UserDefined2 = 0x1000, //!< User-defined signal 2
ChildStopped = 0x2000, //!< Child stopped or terminated
Continue = 0x4000, //!< Continue if stopped
StopProcess = 0x8000, //!< Stop process
StopTTY = 0x10000, //!< Stop typed at tty
StopTTYInput = 0x20000, //!< Stop tty input
StopTTYOutput = 0x40000, //!< Stop tty output
All = 0xFFFFF //!< All signals
};
//! \~english Signal handler callback type
//! \~russian Тип коллбэка обработчика сигналов
//! \note slot is any function with format "void(PISignals::Signal)"
typedef std::function<void(PISignals::Signal)> SignalEvent;
// slot is any function format "void(PISignals::Signal)"
//! \~english Sets signal handler callback
//! \~russian Устанавливает коллбэк обработчика сигналов
static void setSlot(SignalEvent slot) { ret_func = slot; }
//! \~english Grabs specified signals
//! \~russian Перехватывает указанные сигналы
static void grabSignals(PIFlags<PISignals::Signal> signals_);
//! \~english Releases specified signals
//! \~russian Освобождает указанные сигналы
static void releaseSignals(PIFlags<PISignals::Signal> signals_);
//! \~english Raises signal
//! \~russian Генерирует сигнал
static void raiseSignal(PISignals::Signal signal);
private: