Magstripe Project: Ensure that empty tracks still print out a newline seperator so...
[pub/USBasp.git] / Demos / Host / Incomplete / PrinterHost / PrinterHost.c
index 7b98542..5cdd063 100644 (file)
@@ -130,7 +130,7 @@ void USB_Printer_Host(void)
                                printf_P(PSTR(" -- Error Code: %d\r\n"), ErrorCode);\r
                                \r
                                /* Indicate error via status LEDs */\r
-                               LEDs_SetAllLEDs(LEDS_LED1);\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
 \r
                                /* Wait until USB device disconnected */\r
                                USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
@@ -144,7 +144,7 @@ void USB_Printer_Host(void)
                                printf_P(PSTR(" -- Error Code: %d\r\n"), ErrorCode);\r
 \r
                                /* Indicate error via status LEDs */\r
-                               LEDs_SetAllLEDs(LEDS_LED1);\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
 \r
                                /* Wait until USB device disconnected */\r
                                USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
@@ -154,23 +154,18 @@ void USB_Printer_Host(void)
                        USB_HostState = HOST_STATE_Configured;\r
                        break;\r
                case HOST_STATE_Configured:\r
-                       puts_P(PSTR("Printer Enumerated.\r\n"));\r
-                       \r
-                       USB_HostState = HOST_STATE_Ready;\r
-                       break;\r
-               case HOST_STATE_Ready:\r
-                       /* Indicate device busy via the status LEDs */\r
-                       LEDs_SetAllLEDs(LEDS_LED3 | LEDS_LED4);\r
-               \r
                        printf_P(PSTR("Printer Protocol: %d\r\n"), PrinterProtocol);\r
                \r
                        puts_P(PSTR("Retrieving Device ID...\r\n"));\r
                \r
                        Device_ID_String_t DeviceIDString;\r
-                       if (Printer_GetDeviceID(&DeviceIDString) != HOST_SENDCONTROL_Successful)\r
+                       if ((ErrorCode = Printer_GetDeviceID(&DeviceIDString)) != HOST_SENDCONTROL_Successful)\r
                        {\r
+                               puts_P(PSTR("Control Error (Get DeviceID).\r\n"));\r
+                               printf_P(PSTR(" -- Error Code: %d\r\n"), ErrorCode);\r
+\r
                                /* Indicate error via status LEDs */\r
-                               LEDs_SetAllLEDs(LEDS_LED1);\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
 \r
                                /* Wait until USB device disconnected */\r
                                USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
@@ -178,9 +173,42 @@ void USB_Printer_Host(void)
                        }\r
 \r
                        printf_P(PSTR("Printer Device ID: %s\r\n"), DeviceIDString.String);\r
+\r
+                       puts_P(PSTR("Printer Enumerated.\r\n"));\r
+                                       \r
+                       USB_HostState = HOST_STATE_Ready;\r
+                       break;\r
+               case HOST_STATE_Ready:\r
+                       /* Indicate device busy via the status LEDs */\r
+                       LEDs_SetAllLEDs(LEDMASK_USB_BUSY);\r
+               \r
+            //--------------------------------------------------------------\r
+                       #define TEST_TEXT_PAGE "\033%-12345X\033E LUFA PCL Test Page \033E\033%-12345X"\r
+\r
+                       Pipe_SelectPipe(PRINTER_DATA_OUT_PIPE);\r
+            Pipe_Unfreeze();\r
+                       \r
+                       puts_P(PSTR("Waiting for Printer to Become Ready...\r\n"));\r
+                       \r
+                       while (!(Pipe_IsReadWriteAllowed()));\r
+\r
+                       uint8_t strSize = sizeof(TEST_TEXT_PAGE)-1;\r
+\r
+                       printf_P(PSTR("Printer Write Allowed, sending complete page (%d bytes)...\r\n"), strSize);\r
+                               \r
+                       Pipe_Write_Stream_LE(TEST_TEXT_PAGE, strSize);\r
+            Pipe_ClearOUT();\r
+\r
+                       puts_P(PSTR("Page sent to printer.\r\n"));\r
+\r
+                       while (!(Pipe_IsReadWriteAllowed()));\r
+            Pipe_Freeze();                             \r
+\r
+                       puts_P(PSTR("Pipe Frozen.\r\n"));\r
+            //--------------------------------------------------------------\r
                \r
                        /* Indicate device no longer busy */\r
-                       LEDs_SetAllLEDs(LEDS_LED4);\r
+                       LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
 \r
                        USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
                        break;\r