Use -pedantic compile time option to find and correct several minor code errors.
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 13 Dec 2009 14:09:25 +0000 (14:09 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 13 Dec 2009 14:09:25 +0000 (14:09 +0000)
16 files changed:
Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c
Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
Demos/Host/LowLevel/PrinterHost/PrinterHost.c
LUFA/DriverStubs/Joystick.h
LUFA/Drivers/Board/BUMBLEB/Joystick.h
LUFA/Drivers/Board/EVK527/Joystick.h
LUFA/Drivers/Board/STK525/Joystick.h
LUFA/Drivers/Board/STK526/Joystick.h
LUFA/Drivers/Board/USBKEY/Joystick.h
LUFA/Drivers/USB/Class/Host/Printer.c
LUFA/Drivers/USB/HighLevel/ConfigDescriptor.h
LUFA/Drivers/USB/LowLevel/Host.c
LUFA/Drivers/USB/LowLevel/Pipe.h
Projects/AVRISP/Lib/PDIProtocol.c
Projects/AVRISP/Lib/PDITarget.c
Projects/AVRISP/Lib/PDITarget.h

index 3b8bcde..ffec031 100644 (file)
@@ -42,11 +42,11 @@ static uint8_t Bluetooth_SendHCICommand(void* Parameters, uint8_t ParamLength)
 \r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_DEVICE),\r
-                       bRequest:      0,\r
-                       wValue:        0,\r
-                       wIndex:        0,\r
-                       wLength:       sizeof(CommandBuffer)\r
+                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_DEVICE),\r
+                       .bRequest      = 0,\r
+                       .wValue        = 0,\r
+                       .wIndex        = 0,\r
+                       .wLength       = sizeof(CommandBuffer)\r
                };\r
                \r
        memset(CommandBuffer, 0x00, sizeof(CommandBuffer));\r
index a9f41ba..be0d57b 100644 (file)
@@ -81,11 +81,11 @@ uint8_t Printer_GetDeviceID(char* DeviceIDString, uint16_t BufferSize)
 \r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),\r
-                       bRequest:      REQ_GetDeviceID,\r
-                       wValue:        0,\r
-                       wIndex:        0,\r
-                       wLength:       sizeof(DeviceIDStringLength),\r
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),\r
+                       .bRequest      = REQ_GetDeviceID,\r
+                       .wValue        = 0,\r
+                       .wIndex        = 0,\r
+                       .wLength       = sizeof(DeviceIDStringLength),\r
                };\r
                \r
        Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
@@ -149,11 +149,11 @@ uint8_t Printer_SoftReset(void)
 {\r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),\r
-                       bRequest:      REQ_SoftReset,\r
-                       wValue:        0,\r
-                       wIndex:        0,\r
-                       wLength:       0,\r
+                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),\r
+                       .bRequest      = REQ_SoftReset,\r
+                       .wValue        = 0,\r
+                       .wIndex        = 0,\r
+                       .wLength       = 0,\r
                };\r
 \r
        Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
index 861325a..7c1876f 100644 (file)
@@ -174,11 +174,11 @@ void USB_Printer_Host(void)
                        {\r
                                USB_ControlRequest = (USB_Request_Header_t)\r
                                        {\r
-                                               bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_INTERFACE),\r
-                                               bRequest:      REQ_SetInterface,\r
-                                               wValue:        PrinterAltSetting,\r
-                                               wIndex:        PrinterInterfaceNumber,\r
-                                               wLength:       0,\r
+                                               .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_INTERFACE),\r
+                                               .bRequest      = REQ_SetInterface,\r
+                                               .wValue        = PrinterAltSetting,\r
+                                               .wIndex        = PrinterInterfaceNumber,\r
+                                               .wLength       = 0,\r
                                        };\r
                                        \r
                                if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
index a09f8db..ce193f5 100644 (file)
@@ -80,7 +80,7 @@
                        static inline void Joystick_Init(void)\r
                        {\r
                                // TODO: Initialize joystick port pins as inputs with pull-ups\r
-                       };\r
+                       }\r
                        \r
                        static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint8_t Joystick_GetStatus(void)\r
index edcf532..8723771 100644 (file)
@@ -90,7 +90,7 @@
                        {\r
                                DDRD  &= ~JOY_MASK;\r
                                PORTD |= JOY_MASK;\r
-                       };\r
+                       }\r
                        \r
                        static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint8_t Joystick_GetStatus(void)\r
index ae90c2b..c73c0ad 100644 (file)
@@ -93,7 +93,7 @@
 \r
                                PORTF |= JOY_FMASK;\r
                                PORTC |= JOY_CMASK;                             \r
-                       };\r
+                       }\r
                        \r
                        static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint8_t Joystick_GetStatus(void)\r
index b74655e..2de7655 100644 (file)
@@ -93,7 +93,7 @@
 \r
                                PORTB |= JOY_BMASK;\r
                                PORTE |= JOY_EMASK;                             \r
-                       };\r
+                       }\r
                        \r
                        static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint8_t Joystick_GetStatus(void)\r
index c15b212..3b021de 100644 (file)
@@ -90,7 +90,7 @@
                                DDRB  &= ~JOY_BMASK;\r
 \r
                                PORTB |= JOY_BMASK;\r
-                       };\r
+                       }\r
                        \r
                        static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint8_t Joystick_GetStatus(void)\r
index 332dd56..7bc140d 100644 (file)
@@ -93,7 +93,7 @@
 \r
                                PORTB |= JOY_BMASK;\r
                                PORTE |= JOY_EMASK;                             \r
-                       };\r
+                       }\r
                        \r
                        static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint8_t Joystick_GetStatus(void)\r
index d85ac15..cb9bd6e 100644 (file)
@@ -135,11 +135,11 @@ uint8_t PRNT_Host_SetBidirectionalMode(USB_ClassInfo_PRNT_Host_t* const PRNTInte
        \r
                USB_ControlRequest = (USB_Request_Header_t)\r
                        {\r
-                               bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_INTERFACE),\r
-                               bRequest:      REQ_SetInterface,\r
-                               wValue:        PRNTInterfaceInfo->State.AlternateSetting,\r
-                               wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,\r
-                               wLength:       0,\r
+                               .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_INTERFACE),\r
+                               .bRequest      = REQ_SetInterface,\r
+                               .wValue        = PRNTInterfaceInfo->State.AlternateSetting,\r
+                               .wIndex        = PRNTInterfaceInfo->State.InterfaceNumber,\r
+                               .wLength       = 0,\r
                        };\r
                \r
                Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
@@ -155,11 +155,11 @@ uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceIn
 {\r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),\r
-                       bRequest:      REQ_GetPortStatus,\r
-                       wValue:        0,\r
-                       wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,\r
-                       wLength:       sizeof(uint8_t),\r
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),\r
+                       .bRequest      = REQ_GetPortStatus,\r
+                       .wValue        = 0,\r
+                       .wIndex        = PRNTInterfaceInfo->State.InterfaceNumber,\r
+                       .wLength       = sizeof(uint8_t),\r
                };\r
 \r
        Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
@@ -171,11 +171,11 @@ uint8_t PRNT_Host_SoftReset(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 {\r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),\r
-                       bRequest:      REQ_SoftReset,\r
-                       wValue:        0,\r
-                       wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,\r
-                       wLength:       0,\r
+                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),\r
+                       .bRequest     = REQ_SoftReset,\r
+                       .wValue       = 0,\r
+                       .wIndex       = PRNTInterfaceInfo->State.InterfaceNumber,\r
+                       .wLength      = 0,\r
                };\r
 \r
        Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
@@ -215,11 +215,11 @@ uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo
 \r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),\r
-                       bRequest:      REQ_GetDeviceID,\r
-                       wValue:        0,\r
-                       wIndex:        PRNTInterfaceInfo->State.InterfaceNumber,\r
-                       wLength:       sizeof(DeviceIDStringLength),\r
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),\r
+                       .bRequest      =  REQ_GetDeviceID,\r
+                       .wValue        = 0,\r
+                       .wIndex        = PRNTInterfaceInfo->State.InterfaceNumber,\r
+                       .wLength       = sizeof(DeviceIDStringLength),\r
                };\r
                \r
        Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
index 84a6f0c..1b73ec3 100644 (file)
                        {\r
                                uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;\r
 \r
-                               *CurrConfigLoc += CurrDescriptorSize;\r
+                               *((uint8_t**)CurrConfigLoc) += CurrDescriptorSize;\r
                                *BytesRem      -= CurrDescriptorSize;\r
                        }\r
                        \r
index e10d347..6d425b2 100644 (file)
@@ -296,11 +296,11 @@ uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr)
 {\r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                       bRequest:      REQ_GetDescriptor,\r
-                       wValue:        (DTYPE_Device << 8),\r
-                       wIndex:        0,\r
-                       wLength:       sizeof(USB_Descriptor_Device_t),\r
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
+                       .bRequest      = REQ_GetDescriptor,\r
+                       .wValue        = (DTYPE_Device << 8),\r
+                       .wIndex        = 0,\r
+                       .wLength       = sizeof(USB_Descriptor_Device_t),\r
                };\r
 \r
        Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
@@ -312,11 +312,11 @@ uint8_t USB_Host_GetDeviceStringDescriptor(uint8_t Index, void* const Buffer, ui
 {\r
        USB_ControlRequest = (USB_Request_Header_t)\r
                {\r
-                       bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                       bRequest:      REQ_GetDescriptor,\r
-                       wValue:        (DTYPE_String << 8) | Index,\r
-                       wIndex:        0,\r
-                       wLength:       BufferLength,\r
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
+                       .bRequest      = REQ_GetDescriptor,\r
+                       .wValue        = (DTYPE_String << 8) | Index,\r
+                       .wIndex        = 0,\r
+                       .wLength       = BufferLength,\r
                };\r
 \r
        Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
index 97257d7..1205767 100644 (file)
                                  return (4 << EPSIZE0);\r
                                else\r
                                  return (5 << EPSIZE0);\r
-                       };\r
+                       }\r
 \r
        #endif\r
 \r
index 7769343..ecd2fe9 100644 (file)
@@ -218,7 +218,14 @@ static void PDIProtocol_ReadMemory(void)
        Endpoint_ClearOUT();\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
-       // TODO: Send read command here via PDI protocol\r
+       if (ReadMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_USERSIG)\r
+       {\r
+               PDITarget_SendByte(PDI_CMD_STS | (PDI_DATSIZE_1BYTE << 2));\r
+               PDITarget_SendAddress(DATAMEM_BASE | DATAMEM_NVM_CMD);\r
+               PDITarget_SendByte(NVM_CMD_READUSERSIG);\r
+\r
+               \r
+       }\r
        \r
        Endpoint_Write_Byte(CMD_XPROG);\r
        Endpoint_Write_Byte(XPRG_CMD_READ_MEM);\r
@@ -233,15 +240,46 @@ static void PDIProtocol_ReadMemory(void)
 static void PDIProtocol_ReadCRC(void)\r
 {\r
        uint8_t ReturnStatus = XPRG_ERR_OK;\r
-\r
-       uint8_t CRCType = Endpoint_Read_Byte();\r
        \r
+       struct\r
+       {\r
+               uint8_t CRCType;\r
+       } ReadCRC_XPROG_Params;\r
+       \r
+       Endpoint_Read_Stream_LE(&ReadCRC_XPROG_Params, sizeof(ReadCRC_XPROG_Params));\r
        Endpoint_ClearOUT();\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
        uint32_t MemoryCRC = 0;\r
+       uint8_t  CRCReadCommand;\r
+\r
+       if (ReadCRC_XPROG_Params.CRCType == XPRG_CRC_APP)\r
+         CRCReadCommand = NVM_CMD_APPCRC;\r
+       else if (ReadCRC_XPROG_Params.CRCType == XPRG_CRC_BOOT)\r
+         CRCReadCommand = NVM_CMD_BOOTCRC;\r
+       else\r
+         CRCReadCommand = NVM_CMD_FLASHCRC;\r
+       \r
+       /* Set the NVM command to the correct CRC read command */\r
+       PDITarget_SendByte(PDI_CMD_STS | (PDI_DATSIZE_1BYTE << 2));\r
+       PDITarget_SendAddress(DATAMEM_BASE | DATAMEM_NVM_CMD);\r
+       PDITarget_SendByte(CRCReadCommand);\r
+\r
+       /* Set CMDEX bit in NVM CTRLA register to start the CRC generation */\r
+       PDITarget_SendByte(PDI_CMD_STS | (PDI_DATSIZE_1BYTE << 2));\r
+       PDITarget_SendAddress(DATAMEM_BASE | DATAMEM_NVM_CTRLA);\r
+       PDITarget_SendByte(1 << 0);\r
+\r
+       /* Wait until the NVM bus and controller is no longer busy */\r
+       PDITarget_WaitWhileNVMBusBusy();\r
+       PDITarget_WaitWhileNVMControllerBusy();\r
        \r
-       // TODO: Read device CRC for desired memory via PDI protocol\r
+       /* Read the three byte generated CRC value */\r
+       PDITarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_3BYTES << 2));\r
+       PDITarget_SendAddress(DATAMEM_BASE | DATAMEM_NVM_DAT0);\r
+       MemoryCRC  = PDITarget_ReceiveByte();\r
+       MemoryCRC |= ((uint16_t)PDITarget_ReceiveByte() << 8);\r
+       MemoryCRC |= ((uint32_t)PDITarget_ReceiveByte() << 16);\r
        \r
        Endpoint_Write_Byte(CMD_XPROG);\r
        Endpoint_Write_Byte(XPRG_CMD_CRC);\r
index b56fe60..7fa48e6 100644 (file)
@@ -304,7 +304,7 @@ void PDITarget_WaitWhileNVMControllerBusy(void)
        for (;;)\r
        {\r
                PDITarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_1BYTE << 2));\r
-               PDITarget_SendAddress(DATAMEM_BASE | DATAMEM_NVM_BASE | 0x0F);\r
+               PDITarget_SendAddress(DATAMEM_BASE | DATAMEM_NVM_STATUS);\r
                \r
                if (!(PDITarget_ReceiveByte() & (1 << 7)))\r
                  return;\r
index 85f627a..41cc1fb 100644 (file)
                #define USER_SIGNATURE_BASE      0x008E0400\r
                \r
                #define DATAMEM_NVM_BASE         0x01C0\r
+               #define DATAMEM_NVM_ADDR0        (DATAMEM_NVM_BASE | 0x00)\r
+               #define DATAMEM_NVM_ADDR1        (DATAMEM_NVM_BASE | 0x01)\r
+               #define DATAMEM_NVM_ADDR2        (DATAMEM_NVM_BASE | 0x02)\r
+               #define DATAMEM_NVM_DAT0         (DATAMEM_NVM_BASE | 0x04)\r
+               #define DATAMEM_NVM_DAT1         (DATAMEM_NVM_BASE | 0x05)\r
+               #define DATAMEM_NVM_DAT2         (DATAMEM_NVM_BASE | 0x06)\r
+               #define DATAMEM_NVM_CMD          (DATAMEM_NVM_BASE | 0x0A)\r
+               #define DATAMEM_NVM_CTRLA        (DATAMEM_NVM_BASE | 0x0B)\r
+               #define DATAMEM_NVM_CTRLB        (DATAMEM_NVM_BASE | 0x0C)\r
+               #define DATAMEM_NVM_INTCTRL      (DATAMEM_NVM_BASE | 0x0D)\r
+               #define DATAMEM_NVM_STATUS       (DATAMEM_NVM_BASE | 0x0F)\r
+               #define DATAMEM_NVM_LOCKBITS     (DATAMEM_NVM_BASE | 0x10)\r
+               \r
+               #define NVM_CMD_APPCRC           0x38\r
+               #define NVM_CMD_BOOTCRC          0x39\r
+               #define NVM_CMD_FLASHCRC         0x78\r
+               #define NVM_CMD_READUSERSIG      0x03\r
                                \r
        /* Function Prototypes: */\r
                void    PDITarget_EnableTargetPDI(void);\r
                uint8_t PDITarget_ReceiveByte(void);\r
                void    PDITarget_SendBreak(void);\r
                \r
-               void PDITarget_SendAddress(uint32_t Address);\r
-               bool PDITarget_WaitWhileNVMBusBusy(void);\r
-               void PDITarget_WaitWhileNVMControllerBusy(void);\r
+               void    PDITarget_SendAddress(uint32_t Address);\r
+               bool    PDITarget_WaitWhileNVMBusBusy(void);\r
+               void    PDITarget_WaitWhileNVMControllerBusy(void);\r
 \r
 #endif\r