Rename PDIProtocol.c/.h to XPROGProtocol.c/.h as it will now handle both TPI and...
[pub/USBasp.git] / Demos / Host / ClassDriver / StillImageHost / StillImageHost.c
index deb8a55..fb3a784 100644 (file)
@@ -45,14 +45,18 @@ USB_ClassInfo_SI_Host_t DigitalCamera_SI_Interface =
                .Config =\r
                        {\r
                                .DataINPipeNumber       = 1,\r
+                               .DataINPipeDoubleBank   = false,\r
+                               \r
                                .DataOUTPipeNumber      = 2,\r
+                               .DataOUTPipeDoubleBank  = false,\r
+                               \r
                                .EventsPipeNumber       = 3,\r
+                               .EventsPipeDoubleBank   = false,\r
                        },\r
        };\r
 \r
-       \r
 /** Main program entry point. This routine configures the hardware required by the application, then\r
- *  starts the scheduler to run the application tasks.\r
+ *  enters a loop to run the application tasks in sequence.\r
  */\r
 int main(void)\r
 {\r
@@ -72,8 +76,8 @@ int main(void)
                                uint16_t ConfigDescriptorSize;\r
                                uint8_t  ConfigDescriptorData[512];\r
 \r
-                               if (USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData,\r
-                                                                 sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful)\r
+                               if (USB_Host_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData,\r
+                                                                      sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful)\r
                                {\r
                                        printf("Error Retrieving Configuration Descriptor.\r\n");\r
                                        LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
@@ -81,8 +85,8 @@ int main(void)
                                        break;\r
                                }\r
 \r
-                               if (SI_Host_ConfigurePipes(&DigitalCamera_SI_Interface,\r
-                                                          ConfigDescriptorSize, ConfigDescriptorData) != SI_ENUMERROR_NoError)\r
+                               if (SImage_Host_ConfigurePipes(&DigitalCamera_SI_Interface,\r
+                                                              ConfigDescriptorSize, ConfigDescriptorData) != SI_ENUMERROR_NoError)\r
                                {\r
                                        printf("Attached Device Not a Valid CDC Class Device.\r\n");\r
                                        LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
@@ -102,11 +106,42 @@ int main(void)
                                USB_HostState = HOST_STATE_Configured;\r
                                break;\r
                        case HOST_STATE_Configured:\r
-                       \r
+                               printf("Opening Session...\r\n");\r
+                               \r
+                               if (SImage_Host_OpenSession(&DigitalCamera_SI_Interface) != PIPE_RWSTREAM_NoError)\r
+                               {\r
+                                       printf("Could not open PIMA session.\r\n");\r
+                                       USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                                       break;\r
+                               }\r
+\r
+                               printf("Turning off Device...\r\n");\r
+\r
+                               SImage_Host_SendCommand(&DigitalCamera_SI_Interface, 0x1013, 0, NULL);\r
+                               if (SImage_Host_ReceiveResponse(&DigitalCamera_SI_Interface))\r
+                               {\r
+                                       printf("Could not turn off device.\r\n");\r
+                                       USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                                       break;                                  \r
+                               }\r
+\r
+                               printf("Device Off.\r\n");\r
+\r
+                               printf("Closing Session...\r\n");\r
+\r
+                               if (SImage_Host_CloseSession(&DigitalCamera_SI_Interface) != PIPE_RWSTREAM_NoError)\r
+                               {\r
+                                       printf("Could not close PIMA session.\r\n");\r
+                                       USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                                       break;\r
+                               }\r
+                               \r
+                               LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
                                break;\r
                }\r
        \r
-               SI_Host_USBTask(&DigitalCamera_SI_Interface);\r
+               SImage_Host_USBTask(&DigitalCamera_SI_Interface);\r
                USB_USBTask();\r
        }\r
 }\r