#ifndef USB_APPLICATION_SERVICE_DEF_H #define USB_APPLICATION_SERVICE_DEF_H #include #pragma pack( push, 2 ) typedef struct { uint32_t dwProtocolVersion; //-------------------------------- uint32_t dwCapacity; uint32_t dwFlashSize; uint16_t wDriverVersion; uint8_t bBank0Protection: 1; uint8_t cReserved0 : 7; uint8_t cReserved1; union { struct { uint8_t cDescLength; char cDesc[ 31 ]; }; struct { char ucDesc[ 32 ]; }; } ChipDescription; struct { uint16_t wRBSCount; uint16_t wReserved2; uint32_t dwMaxWER; uint32_t dwWER[ 3 ]; } WERInfo; // Write-Erase-count Resource descriptor } TFlashMemInfo_t; #pragma pack( pop ) #pragma pack( push, 1 ) typedef struct { uint16_t requestVersion; // версия структуры (версия запроса) uint16_t firmwareId; // версия ПО uint16_t deviceId; // модель ACM (присвоенная через ОБЗОР) uint8_t reserved[250]; // зарезервировано } TModelInfo_t; #pragma pack( pop ) #pragma pack( push, 1 ) typedef struct { uint16_t requestVersion; // версия структуры (версия запроса) uint16_t firmwareId; // версия ПО uint16_t deviceId; // модель ACM (присвоенная через ОБЗОР) } TModelInfo_base_t; typedef struct { uint16_t requestVersion; // версия структуры (версия запроса) uint16_t firmwareId; // версия ПО uint16_t deviceId; // модель ACM (присвоенная через ОБЗОР) uint8_t reserved[250]; // зарезервировано } TModelInfo_v0_t; typedef struct { uint16_t requestVersion; // версия структуры (версия запроса) uint16_t firmwareId; // версия ПО uint16_t deviceId; // модель ACM (присвоенная через ОБЗОР) uint8_t modelName[20]; // имя модели ACM uint8_t ampSwitchList[60]; // список доступных состояний усилителей uint8_t ampStatesCount; // Число доступных состояний усилителей uint8_t filtSwitchList[60]; // список доступных состояний фильтров uint8_t filtStatesCount; // Число доступных состояний фильтров uint8_t reserved[108]; // зарезервировано } TModelInfo_v1_t; #pragma pack( pop ) #pragma pack( push, 4 ) typedef union { uint8_t raw_bytes[1]; TFlashMemInfo_t svcReq_Flash; uint8_t svcReq_FlashReady; TModelInfo_v1_t svcReq_Model; } TServiceRequestBuffer_t; #pragma pack( pop ) #endif