#include "usbapp/usb_application_led.h" #include "usb/usb_bridge.h" #include "usb/usb_config.h" #include "usbd_vendor.h" #include "core/csect.h" #include "core/config.h" #include "app/nfm/nfm_base.h" #include "app/led/led.h" #define PROTO_REQ_SET_LED_MODE 0x2A // Переключить режим отображения диода #define PROTO_REQ_SET_LED_OFF 0x2B // Выключить диод #define PROTO_REQ_SET_WARMUP 0x2C // включить процедуру прогрева #define PROTO_REQ_MASK_LED_GRN 0x01 // включить зеленый цвет #define PROTO_REQ_MASK_LED_RED 0x02 // включить красный цвет #define PROTO_REQ_WIDX_WRMP_ON 0x0D // включить процедуру прогрева #define PROTO_REQ_WIDX_WRMP_OFF 0x0E // выключить процедуру прогрева static int8_t fLedAppInit(); static int8_t fLedAppDeInit(); static void fLedAppReset(); static bool fLedAppSetup( const tUSBSetupPacket_t * pSetup, bool bFirstStage, bool success ); static size_t fLedAppControlRx( const tUSBSetupPacket_t * pSetup, sUSBTransfer_t * tx, size_t idx, size_t bytesRemaining ); static size_t fLedAppControlTx( const tUSBSetupPacket_t * pSetup, sUSBTransfer_t * rx, size_t idx, size_t bytesRemaining ); const sUSBAppEntry_Control_t usbapplication_ACM_planarproto_led = { .fUsbInit = fLedAppInit, .fUsbDeInit = fLedAppDeInit, .fUsbSetup = fLedAppSetup, .fUsbCtlEpRx = fLedAppControlRx, .fUsbCtlEpTx = fLedAppControlTx, .fResetEvent = fLedAppReset, }; //----------------------------------------------------- // &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& static int8_t fLedAppInit() { return 0; } // &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- static int8_t fLedAppDeInit() { return 0; } // &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- static void fLedAppReset() { } // &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- static bool fLedAppSetup( const tUSBSetupPacket_t * pSetup, bool bFirstStage, bool success ) { switch ( pSetup->bRequest ) { case PROTO_REQ_SET_LED_MODE: { switch(pSetup->wIndex) { case LED1: { return true; } break; case LED2: { // LEDHandle.harmup_stop(); // LEDHandle.SetMode(eLedMode_Idle); // ledRed(red); // ledGreen(green); return true; } break; } } break; case PROTO_REQ_SET_LED_OFF: { switch(pSetup->wIndex) { case LED1: { // led28Green(false); // led28Red(false); return true; } break; case LED2: { LEDHandle.harmup_stop(); LEDHandle.SetMode(eLedMode_Idle); ledRed(false); ledGreen(false); return true; } break; } } break; case PROTO_REQ_SET_WARMUP: { switch(pSetup->wValue) { case PROTO_REQ_WIDX_WRMP_ON: { LEDHandle.harmup_stop(); LEDHandle.SetMode(eLedMode_Normal); LEDHandle.harmup_init(); return true; } break; case PROTO_REQ_WIDX_WRMP_OFF: { LEDHandle.harmup_stop(); LEDHandle.SetMode(eLedMode_Normal); LEDHandle.harmup_stop(); return true; } break; } } break; } return false; } // &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- static size_t fLedAppControlRx( const tUSBSetupPacket_t * pSetup, sUSBTransfer_t * rx, size_t idx, size_t bytesRemaining ) { return 0; } // &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- &&&& ---- static size_t fLedAppControlTx( const tUSBSetupPacket_t * pSetup, sUSBTransfer_t * tx, size_t idx, size_t bytesRemaining ) { return 0; }