X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/3dce79d68ccc50ee1007e485396826762b6965b5..cf610c5c91c3eee02dec7ca848acc8da831ad98a:/Demos/Host/ClassDriver/StillImageHost/StillImageHost.c diff --git a/Demos/Host/ClassDriver/StillImageHost/StillImageHost.c b/Demos/Host/ClassDriver/StillImageHost/StillImageHost.c index 2f0e5a2d1..d8146af29 100644 --- a/Demos/Host/ClassDriver/StillImageHost/StillImageHost.c +++ b/Demos/Host/ClassDriver/StillImageHost/StillImageHost.c @@ -50,9 +50,8 @@ USB_ClassInfo_SI_Host_t DigitalCamera_SI_Interface = }, }; - /** Main program entry point. This routine configures the hardware required by the application, then - * starts the scheduler to run the application tasks. + * enters a loop to run the application tasks in sequence. */ int main(void) { @@ -72,9 +71,8 @@ int main(void) uint16_t ConfigDescriptorSize; uint8_t ConfigDescriptorData[512]; - if ((USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful) || - (ConfigDescriptorSize > sizeof(ConfigDescriptorData)) || - (USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData))) + if (USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData, + sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful) { printf("Error Retrieving Configuration Descriptor.\r\n"); LEDs_SetAllLEDs(LEDMASK_USB_ERROR); @@ -103,7 +101,38 @@ int main(void) USB_HostState = HOST_STATE_Configured; break; case HOST_STATE_Configured: - + printf("Opening Session...\r\n"); + + if (SImage_Host_OpenSession(&DigitalCamera_SI_Interface) != PIPE_RWSTREAM_NoError) + { + printf("Could not open PIMA session.\r\n"); + USB_HostState = HOST_STATE_WaitForDeviceRemoval; + break; + } + + printf("Turning off Device...\r\n"); + + SImage_Host_SendCommand(&DigitalCamera_SI_Interface, 0x1013, 0, NULL); + if (SImage_Host_ReceiveResponse(&DigitalCamera_SI_Interface)) + { + printf("Could not turn off device.\r\n"); + USB_HostState = HOST_STATE_WaitForDeviceRemoval; + break; + } + + printf("Device Off.\r\n"); + + printf("Closing Session...\r\n"); + + if (SImage_Host_CloseSession(&DigitalCamera_SI_Interface) != PIPE_RWSTREAM_NoError) + { + printf("Could not close PIMA session.\r\n"); + USB_HostState = HOST_STATE_WaitForDeviceRemoval; + break; + } + + LEDs_SetAllLEDs(LEDMASK_USB_READY); + USB_HostState = HOST_STATE_WaitForDeviceRemoval; break; }