#pragma once #include "UsbEventLoopWorker.h" #include "ComplexCommandCreator.h" #include "ComplexDataCommandCreator.h" #include "ComplexMultidataCommandCreator.h" #include "JsonCommandCreator.h" #include "JsonCommandDescription.h" #include "JsonCommandFactory.h" #include "MicroMonWriteExternAccDefaultCalibrationCommand.h" #include "MicroMonReadCableInfoCommand.h" #include "MicroMonReadCableExistCommand.h" #include "MicroMonCheckSpecialFirmwareExistCommand.h" #include "MicroMonReadCableVersionCommand.h" #include "MicroMonReadEcgLsbCommand.h" #include "MicroMonReadExternAccLsbCommand.h" #include "MicroMonWriteCableInfoCommand.h" #include "MicroMonWriteCableSetupCounterCommand.h" #include "MicroMonWriteEcgModeCommand.h" #include "MicroMonReadEcgModeCommand.h" #include "MicroMonRestartCommand.h" #include "MicroMonReadNumberCommand.h" #include "MicroMonReadGuiVersionCommand.h" #include "MicroMonGetPowerCommand.h" #include "MicroMonSetExaminationInfoCommand.h" #include "MicroMonSetDataToEepromCommand.h" #include "MicroMonGetDataFromEepromCommand.h" #include "MicroMonReadInnerChannelsLsbCommand.h" #include "MicroMonBeginWritingCommand.h" #include "MicroMonStopWritingCommand.h" #include "MicroMonSetProgIdCommand.h" #include "MicroMonGetTimeCommand.h" #include "MicroMonSetTimeCommand.h" #include "CardiographReadEcgLsbCommand.h" #include "CardiographReadExternAccLsbCommand.h" #include "GetCableLeadTypeCommand.h" #include "MicroMonGetAddressCommand.h" #include "MicroMonGetWrittenFlashDataCountCommand.h" #include "MicroMonStartReceiveFlashDataCommand.h" #include "MicroMonGetFrequencyCommand.h" #include "MicroMonGetWritingStateCommand.h" #include "MicroMonGetPelCommand.h" #include "MicroMonSetPelCommand.h" #include "ReadExternAccCalibrationPointsCommand.h" #include "GetExternAccFrequencyCommand.h" #include "GetDeviceInfoJsonCommand.h" #include "GetFlashMemoryInfoJsonCommand.h" #include "GetCmdListJsonCommand.h" #include "ReadInnerChannelsCalibrationJsonCommand.h" #include "ReadExternAccCalibrationJsonCommand.h" #include "ReadExternAccCalibrationPointsJsonCommand.h"" #include "ReadCableInfoJsonCommand.h" #include "WriteExternAccDefaultCalibrationJsonCommand.h" #include "WriteCableInfoJsonCommand.h" #include "WriteCableSetupCounterJsonCommand.h" #include "ReadCableVersionJsonCommand.h" #include "CheckSpecialFirmwareExistJsonCommand.h" #include "ReadCableExistJsonCommand.h" #include "WriteEcgModeJsonCommand.h" #include "ReadEcgModeJsonCommand.h" #include "RestartJsonCommand.h" #include "GetPowerJsonCommand.h" #include "SetExaminationInfoJsonCommand.h" #include "GetCableLeadTypeJsonCommand.h" #include "StartWritingJsonCommand.h" #include "StopWritingJsonCommand.h" #include "SetProgIdJsonCommand.h" #include "GetTimeJsonCommand.h" #include "SetTimeJsonCommand.h" #include "GetWrittenFlashDataCountJsonCommand.h" #include "StartReceiveFlashDataJsonCommand.h" #include "GetExamFileNameJsonCommand.h" #include "GetFrequencyJsonCommand.h" #include "GetExternAccFrequencyJsonCommand.h" #include "GetWritingStateJsonCommand.h" #include "GetPelJsonCommand.h" #include "SetPelJsonCommand.h" #include "TurnVentJsonCommand.h" #include "TurnPumpJsonCommand.h" namespace Incart::DeviceWebApi { struct DeviceCommandLinker { static void createLink(Usb::UsbEventLoopWorker& eventLoopWorker_, Net::WebApi::JsonCommandFactory& jsonCommandFactory) { Usb::UsbDeviceManager* deviceManager = eventLoopWorker_.getDeviceManager(); std::shared_ptr signalManager = eventLoopWorker_.getSignalManager(); Usb::ByteCommandQueue* commandQueue = deviceManager->getCommandQueue(); Usb::UsbDeviceCommandSet* deviceCommandSet = deviceManager->getCommandSet(); Usb::ComplexCommandFactory* complexCommandFactory = deviceCommandSet->getDeviceComplexCommands(); Usb::UsbDataListener* dataListener = eventLoopWorker_.getDataListener(); // добавляем обработчики сложных команд // CommandCreator'ы служат для генерации объектов команд, чтобы избежать ситуации конфликта обработчиков, при вызове одной и той же команда с разными данными, не дождавшись ответа от предыдущей complexCommandFactory->add("MicroMonWriteCableInfo", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonWriteCableSetupCounter", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonReadCableInfo", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonReadCableExist", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonReadCableVersion", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonCheckSpecialFirmwareExist", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonReadEcgLsb", std::make_shared>(commandQueue, 8)); complexCommandFactory->add("CardiographReadEcgLsb", std::make_shared>(8)); complexCommandFactory->add("CardiographReadExternAccLsb", std::make_shared>()); complexCommandFactory->add("MicroMonReadExternAccLsb", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonWriteExternAccDefaultCalibration", std::make_shared>(commandQueue)); complexCommandFactory->add("ReadInnerChannelsCalibration", std::make_shared>(commandQueue)); complexCommandFactory->add("ReadExternAccCalibration", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonWriteEcgMode", std::make_shared>(&eventLoopWorker_)); complexCommandFactory->add("MicroMonReadEcgMode", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonRestart", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonReadNumber", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonReadGuiVersion", std::make_shared>(commandQueue)); complexCommandFactory->add("MicroMonReadPower", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonSetExaminationInfo", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonSetDataToEeprom", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonGetDataFromEeprom", std::make_shared>(deviceManager)); complexCommandFactory->add("GetCableLeadType", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonReadInnerChannelsLsb", std::make_shared, Usb::ByteCommandQueue*>>(commandQueue)); complexCommandFactory->add("MicroMonBeginWriting", std::make_shared>(DeviceComplexCommands::MicroMonBeginWritingCommand::EStartParams::Start, deviceManager)); complexCommandFactory->add("MicroMonStopWriting", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonSetProgId", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonGetTime", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonSetTime", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonGetMinAddress", std::make_shared>("GetMinAddress", "ReadMinAddress", deviceManager)); complexCommandFactory->add("MicroMonGetMaxAddress", std::make_shared>("GetMaxAddress", "ReadMaxAddress", deviceManager)); complexCommandFactory->add("MicroMonGetWrittenMaxAddress", std::make_shared>("GetWrittenMaxAddress", "ReadWrittenMaxAddress", deviceManager)); complexCommandFactory->add("MicroMonGetWrittenFlashDataCount", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonStartReceiveFlashData", std::make_shared>(deviceManager, dataListener)); complexCommandFactory->add("MicroMonGetFrequency", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonGetWritingState", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonGetPel", std::make_shared>(deviceManager)); complexCommandFactory->add("MicroMonSetPel", std::make_shared>(deviceManager)); complexCommandFactory->add("ReadExternAccCalibrationPoints", std::make_shared>(commandQueue)); complexCommandFactory->add("GetExternAccFrequency", std::make_shared>()); // добавляем конвертеры результата сложных команд в json формат std::shared_ptr commandDescription = GetDeviceInfoJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetFlashMemoryInfoJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetCmdListJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Net::WebApi::JsonCommandFactory*>>(commandDescription, &jsonCommandFactory)); commandDescription = GetCableLeadTypeJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = ReadInnerChannelsCalibrationJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*, Usb::AdcChannelsManager*>>(commandDescription, deviceManager, signalManager.get())); commandDescription = ReadExternAccCalibrationJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*, Usb::AdcChannelsManager*>>(commandDescription, deviceManager, signalManager.get())); commandDescription = ReadExternAccCalibrationPointsJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = ReadCableInfoJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = WriteExternAccDefaultCalibrationJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = WriteCableInfoJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = WriteCableSetupCounterJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = CheckSpecialFirmwareExistJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = ReadCableVersionJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = ReadCableExistJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = WriteEcgModeJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = ReadEcgModeJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = RestartJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetPowerJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = SetExaminationInfoJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = StartWritingJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = StopWritingJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = SetProgIdJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetTimeJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = SetTimeJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetWrittenFlashDataCountJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = StartReceiveFlashDataJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetExamFileNameJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetFrequencyJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetExternAccFrequencyJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetWritingStateJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = GetPelJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = SetPelJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = TurnVentJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); commandDescription = TurnPumpJsonCommand::createCommandDescription(); jsonCommandFactory.add(commandDescription, std::make_shared, Usb::UsbDeviceManager*>>(commandDescription, deviceManager)); } }; } // namespace Incart::DeviceWebApi