aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-09-01 13:47:11 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-09-01 13:47:11 +0000
commit0e2ffebb82af721299f2df9089f66f9da68e1e1e (patch)
treeeff02e4b7109a2230e65707d27f22a7b672504cf /LUFA
parent5908e28e8d301ab5688966311bc769247ba98363 (diff)
downloadlufa-0e2ffebb82af721299f2df9089f66f9da68e1e1e.tar.gz
lufa-0e2ffebb82af721299f2df9089f66f9da68e1e1e.tar.bz2
lufa-0e2ffebb82af721299f2df9089f66f9da68e1e1e.zip
Added documentation for the constants and enums of the new StillImage Host Class driver added to the library so far.
Diffstat (limited to 'LUFA')
-rw-r--r--LUFA/Drivers/USB/Class/Common/StillImage.h60
-rw-r--r--LUFA/Drivers/USB/Class/Host/StillImage.c2
-rw-r--r--LUFA/Drivers/USB/Class/Host/StillImage.h2
3 files changed, 37 insertions, 27 deletions
diff --git a/LUFA/Drivers/USB/Class/Common/StillImage.h b/LUFA/Drivers/USB/Class/Common/StillImage.h
index 804b31255..84dee7156 100644
--- a/LUFA/Drivers/USB/Class/Common/StillImage.h
+++ b/LUFA/Drivers/USB/Class/Common/StillImage.h
@@ -45,7 +45,7 @@
#include "../../USB.h"
#include <string.h>
-
+
/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
extern "C" {
@@ -55,11 +55,10 @@
/** Length in bytes of a given Unicode string's character length
*
* \param[in] chars Total number of Unicode characters in the string
+ *
+ * \return Number of bytes of the given unicode string
*/
#define UNICODE_STRING_LENGTH(chars) (chars << 1)
-
- /** Timeout period between the issuing of a command to a device, and the reception of the first packet */
- #define COMMAND_DATA_TIMEOUT_MS 5000
/** Used in the DataLength field of a PIMA container, to give the total container size in bytes for
* a command container.
@@ -67,28 +66,16 @@
* \param[in] params Number of parameters which are to be sent in the Param field of the container
*/
#define PIMA_COMMAND_SIZE(params) ((sizeof(SI_PIMA_Container_t) - sizeof(((SI_PIMA_Container_t*)NULL)->Params)) + \
- (params * sizeof(((SI_PIMA_Container_t*)NULL)->Params[0])))
+ (params * sizeof(uint32_t)))
/** Used in the DataLength field of a PIMA container, to give the total container size in bytes for
* a data container.
*
* \param[in] datalen Length in bytes of the data in the container
*/
- #define PIMA_DATA_SIZE(datalen) ((sizeof(SI_PIMA_Container_t) - sizeof(((SI_PIMA_Container_t*)NULL)->Params)) + datalen)
+ #define PIMA_DATA_SIZE(datalen) ((sizeof(SI_PIMA_Container_t) - sizeof(((SI_PIMA_Container_t*)NULL)->Params)) + \
+ datalen)
- /* Type defines: */
- /** Type define for a PIMA container, use to send commands and receive responses to and from an
- * attached Still Image device.
- */
- typedef struct
- {
- uint32_t DataLength; /**< Length of the container and data, in bytes */
- uint16_t Type; /**< Container type, a value from the PIMA_Container_Types_t enum */
- uint16_t Code; /**< Command, event or response code of the container */
- uint32_t TransactionID; /**< Unique container ID to link blocks together */
- uint32_t Params[4]; /**< Block parameters to be issued along with the block code (command blocks only) */
- } SI_PIMA_Container_t;
-
/* Enums: */
/** Enum for the possible PIMA contains types. */
enum SI_PIMA_Container_Types_t
@@ -101,19 +88,38 @@
};
/* Enums: */
+ /** Enums for the possible status codes of a returned Response Block from an attached PIMA compliant Still Image device. */
enum SI_PIMA_ResponseCodes_t
{
- PIMA_RESPONSE_OK = 1,
- PIMA_RESPONSE_GeneralError = 2,
- PIMA_RESPONSE_SessionNotOpen = 3,
- PIMA_RESPONSE_InvalidTransaction = 4,
- PIMA_RESPONSE_OperationNotSupported = 5,
- PIMA_RESPONSE_ParameterNotSupported = 6,
+ PIMA_RESPONSE_OK = 1, /**< Response code indicating no error in the issued command */
+ PIMA_RESPONSE_GeneralError = 2, /**< Response code indicating a general error while processing the
+ * issued command
+ */
+ PIMA_RESPONSE_SessionNotOpen = 3, /**< Response code indicating that the sent command requires an open
+ * session before being issued
+ */
+ PIMA_RESPONSE_InvalidTransaction = 4, /**< Response code indicating an invalid transaction occurred */
+ PIMA_RESPONSE_OperationNotSupported = 5, /**< Response code indicating that the issued command is not supported
+ * by the attached device
+ */
+ PIMA_RESPONSE_ParameterNotSupported = 6, /**< Response code indicating that one or more of the issued command's
+ * parameters are not supported by the device
+ */
};
/* Type Defines: */
-
-
+ /** Type define for a PIMA container, use to send commands and receive responses to and from an
+ * attached Still Image device.
+ */
+ typedef struct
+ {
+ uint32_t DataLength; /**< Length of the container and data, in bytes */
+ uint16_t Type; /**< Container type, a value from the PIMA_Container_Types_t enum */
+ uint16_t Code; /**< Command, event or response code of the container */
+ uint32_t TransactionID; /**< Unique container ID to link blocks together */
+ uint32_t Params[4]; /**< Block parameters to be issued along with the block code (command blocks only) */
+ } SI_PIMA_Container_t;
+
/* Disable C linkage for C++ Compilers: */
#if defined(__cplusplus)
}
diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.c b/LUFA/Drivers/USB/Class/Host/StillImage.c
index 10759f6bf..40ef4f23e 100644
--- a/LUFA/Drivers/USB/Class/Host/StillImage.c
+++ b/LUFA/Drivers/USB/Class/Host/StillImage.c
@@ -222,6 +222,8 @@ uint8_t SImage_Host_RecieveBlockHeader(USB_ClassInfo_SI_Host_t* SIInterfaceInfo,
Pipe_Read_Stream_LE(&PIMAHeader->Params, ParamBytes, NO_STREAM_CALLBACK);
Pipe_ClearIN();
+
+ PIMAHeader->Code &= 0x0000000F;
}
Pipe_Freeze();
diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.h b/LUFA/Drivers/USB/Class/Host/StillImage.h
index f4d1bb144..4d3779603 100644
--- a/LUFA/Drivers/USB/Class/Host/StillImage.h
+++ b/LUFA/Drivers/USB/Class/Host/StillImage.h
@@ -138,6 +138,8 @@
#define SI_FOUND_DATAPIPE_IN (1 << 1)
#define SI_FOUND_DATAPIPE_OUT (1 << 2)
+ #define COMMAND_DATA_TIMEOUT_MS 5000
+
/* Function Prototypes: */
#if defined(INCLUDE_FROM_SI_CLASS_HOST_C)
static uint8_t DComp_SI_Host_NextSIInterface(void* CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);