X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/e2822fb30dd3903e9be24b01d5874ba4123be8bc..064e6a2f32719da5b7ed2ff3a8a32c5788e753d0:/LUFA/Drivers/USB/Class/Host/StillImage.h diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.h b/LUFA/Drivers/USB/Class/Host/StillImage.h index d970594b3..75f76eb8e 100644 --- a/LUFA/Drivers/USB/Class/Host/StillImage.h +++ b/LUFA/Drivers/USB/Class/Host/StillImage.h @@ -54,6 +54,9 @@ #endif /* Public Interface - May be used in end-application: */ + /* Macros: */ + #define SI_ERROR_LOGICAL_CMD_FAILED 0xC0 + /* Type Defines: */ typedef struct { @@ -67,14 +70,17 @@ */ struct { - bool Active; /**< Indicates if the current interface instance is connected to an attached device, valid - * after \ref HID_Host_ConfigurePipes() is called and the Host state machine is in the - * Configured state - */ + bool IsActive; /**< Indicates if the current interface instance is connected to an attached device, valid + * after \ref HID_Host_ConfigurePipes() is called and the Host state machine is in the + * Configured state + */ uint16_t DataINPipeSize; /**< Size in bytes of the Still Image interface's IN data pipe */ uint16_t DataOUTPipeSize; /**< Size in bytes of the Still Image interface's OUT data pipe */ uint16_t EventsPipeSize; /**< Size in bytes of the Still Image interface's IN events pipe */ + + bool IsSessionOpen; /**< Indicates if a PIMA session is currently open with the attached device */ + uint32_t TransactionID; /**< Transaction ID for the next transaction to send to the device */ } State; /**< State data for the USB class interface within the device. All elements in this section * may be set to initial values, but may also be ignored to default to sane values when * the interface is enumerated. @@ -119,7 +125,13 @@ */ uint8_t SI_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, uint16_t ConfigDescriptorLength, uint8_t* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1, 3); - + + uint8_t SImage_Host_OpenSession(USB_ClassInfo_SI_Host_t* SIInterfaceInfo); + uint8_t SImage_Host_CloseSession(USB_ClassInfo_SI_Host_t* SIInterfaceInfo); + + uint8_t SImage_Host_SendCommand(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, uint16_t Operation, uint8_t UsedParams, + uint32_t Param1, uint32_t Param2, uint32_t Param3, void* DataBuff); + /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Macros: */ @@ -131,10 +143,22 @@ #define SI_FOUND_DATAPIPE_IN (1 << 1) #define SI_FOUND_DATAPIPE_OUT (1 << 2) + #define COMMAND_DATA_TIMEOUT_MS 5000 + /* Function Prototypes: */ #if defined(INCLUDE_FROM_SI_CLASS_HOST_C) static uint8_t DComp_SI_Host_NextSIInterface(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1); static uint8_t DComp_SI_Host_NextSIInterfaceEndpoint(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1); + + static uint8_t SImage_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, + SI_PIMA_Container_t* PIMAHeader); + static uint8_t SImage_Host_ReceiveBlockHeader(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, + SI_PIMA_Container_t* PIMAHeader); + static uint8_t SImage_Host_SendData(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, void* Buffer, uint16_t Bytes); + static uint8_t SImage_Host_ReadData(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, void* Buffer, uint16_t Bytes); + static bool SImage_Host_IsEventReceived(USB_ClassInfo_SI_Host_t* SIInterfaceInfo); + static uint8_t SImage_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* SIInterfaceInfo, + SI_PIMA_Container_t* PIMAHeader); #endif #endif