Added start of the Still Image Host Class driver demo and driver code.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Common / StillImage.h
index 41942d4..2723aeb 100644 (file)
                #endif\r
 \r
        /* Macros: */\r
+               /** Length in bytes of a given Unicode string's character length\r
+                *\r
+                *  \param[in] chars  Total number of Unicode characters in the string\r
+                */\r
+               #define UNICODE_STRING_LENGTH(chars)   (chars << 1)\r
 \r
+               /** Timeout period between the issuing of a command to a device, and the reception of the first packet */\r
+               #define COMMAND_DATA_TIMEOUT_MS        5000\r
+               \r
+               /** Used in the DataLength field of a PIMA container, to give the total container size in bytes for\r
+                *  a command container.\r
+                *\r
+                *  \param[in] params  Number of parameters which are to be sent in the Param field of the container\r
+                */\r
+               #define PIMA_COMMAND_SIZE(params)      ((sizeof(PIMA_SendBlock) - sizeof(PIMA_SendBlock.Params)) + \\r
+                                                       (params * sizeof(PIMA_SendBlock.Params[0])))\r
+\r
+               /** Used in the DataLength field of a PIMA container, to give the total container size in bytes for\r
+                *  a data container.\r
+                *\r
+                *  \param[in] datalen  Length in bytes of the data in the container\r
+                */\r
+               #define PIMA_DATA_SIZE(datalen)        ((sizeof(PIMA_SendBlock) - sizeof(PIMA_SendBlock.Params)) + datalen)\r
 \r
        /* Type defines: */\r
+               /** Type define for a PIMA container, use to send commands and receive responses to and from an\r
+                *  attached Still Image device.\r
+                */\r
+               typedef struct\r
+               {\r
+                       uint32_t DataLength; /**< Length of the container and data, in bytes */\r
+                       uint16_t Type; /**< Container type, a value from the PIMA_Container_Types_t enum */\r
+                       uint16_t Code; /**< Command, event or response code of the container */\r
+                       uint32_t TransactionID; /**< Unique container ID to link blocks together */\r
+                       uint32_t Params[4]; /**< Block parameters to be issued along with the block code (command blocks only) */\r
+               } SI_PIMA_Container_t;\r
        \r
+       /* Enums: */\r
+               /** Enum for the possible PIMA contains types. */\r
+               enum SI_PIMA_Container_Types_t\r
+               {\r
+                       CType_Undefined         = 0, /**< Undefined container type */\r
+                       CType_CommandBlock      = 1, /**< Command Block container type */\r
+                       CType_DataBlock         = 2, /**< Data Block container type */\r
+                       CType_ResponseBlock     = 3, /**< Response container type */\r
+                       CType_EventBlock        = 4, /**< Event Block container type */\r
+               };      \r
                \r
        /* Enums: */\r
        \r