#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