1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - camera - include
3   File:     fifo.h
4 
5   Copyright 2007-2008 Nintendo. All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law. They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Date:: 2008-09-17#$
14   $Rev: 8556 $
15   $Author: okubata_ryoma $
16  *---------------------------------------------------------------------------*/
17 #ifndef TWL_CAMERA_FIFO_H_
18 #define TWL_CAMERA_FIFO_H_
19 
20 /*---------------------------------------------------------------------------*
21     Constant Definitions
22  *---------------------------------------------------------------------------*/
23 // Protocol-Related Definitions
24 #define CAMERA_PXI_CONTINUOUS_PACKET_MAX       4           // Maximum number of consecutive packets in succession
25 #define CAMERA_PXI_DATA_SIZE_MAX               ((CAMERA_PXI_CONTINUOUS_PACKET_MAX-1)*3+1) // Maximum data count
26 
27 #define CAMERA_PXI_START_BIT                   0x02000000  // This signifies the starting packet
28 #define CAMERA_PXI_RESULT_BIT                  0x00008000  // This indicates a PXI response
29 
30 /* Rules for the starting packet alone */
31 #define CAMERA_PXI_DATA_NUMS_MASK              0x00ff0000  // Data count region
32 #define CAMERA_PXI_DATA_NUMS_SHIFT             16          // Data count position
33 #define CAMERA_PXI_COMMAND_MASK                0x00007f00  // Mask for command storage portion
34 #define CAMERA_PXI_COMMAND_SHIFT               8           // Position of command storage portion
35 #define CAMERA_PXI_1ST_DATA_MASK               0x000000ff  // Data region for the starting packet
36 #define CAMERA_PXI_1ST_DATA_SHIFT              0           // Data position for the starting packet
37 
38 /* Rules for connection packets alone */
39 #define CAMERA_PXI_DATA_MASK                   0x00ffffff  // Data region
40 #define CAMERA_PXI_DATA_SHIFT                  0           // Data position
41 
42 #ifdef  __cplusplus
43 extern "C" {
44 #endif
45 
46 /*===========================================================================*/
47 
48 // PXI Command Definitions
49 typedef enum CAMERAPxiCommand
50 {
51     CAMERA_PXI_COMMAND_INIT                         = 0x00, // Initialization
52 
53     CAMERA_PXI_COMMAND_ACTIVATE                     = 0x10, // Active selection
54 #if 0   /* Held back because it is not very useful */
55     CAMERA_PXI_COMMAND_OUTPUT_WITH_DUAL_ACTIVATION  = 0x11, // Output selection (both active)
56 #endif
57     CAMERA_PXI_COMMAND_CONTEXT_SWITCH               = 0x12, // Context switch
58 
59     CAMERA_PXI_COMMAND_SIZE                         = 0x30, // Size settings
60     CAMERA_PXI_COMMAND_FRAME_RATE                   = 0x31, // Frame rate settings
61     CAMERA_PXI_COMMAND_EFFECT                       = 0x32, // Effect settings
62     CAMERA_PXI_COMMAND_FLIP                         = 0x33, // Rotation settings
63     CAMERA_PXI_COMMAND_PHOTO_MODE                   = 0x34, // Photo mode
64     CAMERA_PXI_COMMAND_WHITE_BALANCE                = 0x35, // White balance
65     CAMERA_PXI_COMMAND_EXPOSURE                     = 0x36, // Exposure
66     CAMERA_PXI_COMMAND_SHARPNESS                    = 0x37, // Sharpness
67     CAMERA_PXI_COMMAND_TEST_PATTERN                 = 0x38, // Test pattern
68     CAMERA_PXI_COMMAND_AUTO_EXPOSURE                = 0x39, // AE: On/Off
69     CAMERA_PXI_COMMAND_AUTO_WHITE_BALANCE           = 0x3A, // AWB: On/Off
70 
71     CAMERA_PXI_COMMAND_SET_LED                      = 0x40, // Camera indicator LED
72 
73     CAMERA_PXI_COMMAND_UNKNOWN
74 }
75 CAMERAPxiCommand;
76 
77 // PXI command size definitions
78 typedef enum CAMERAPxiSize
79 {
80     CAMERA_PXI_SIZE_INIT                            = 1,    // Camera
81 
82     CAMERA_PXI_SIZE_ACTIVATE                        = 1,    // Camera
83 #if 0   /* Held back because it is not very useful */
84     CAMERA_PXI_SIZE_OUTPUT_WITH_DUAL_ACTIVATION     = 1,    // Camera
85 #endif
86     CAMERA_PXI_SIZE_CONTEXT_SWITCH                  = 2,    // Camera, context
87 
88     CAMERA_PXI_SIZE_SIZE                            = 3,    // Camera, context, size
89     CAMERA_PXI_SIZE_FRAME_RATE                      = 2,    // Camera, rate
90     CAMERA_PXI_SIZE_EFFECT                          = 3,    // Camera, context, effect
91     CAMERA_PXI_SIZE_FLIP                            = 3,    // Camera, context, flip
92     CAMERA_PXI_SIZE_PHOTO_MODE                      = 2,    // Camera, mode
93     CAMERA_PXI_SIZE_WHITE_BALANCE                   = 2,    // Camera, wb
94     CAMERA_PXI_SIZE_EXPOSURE                        = 2,    // Camera, exposure
95     CAMERA_PXI_SIZE_SHARPNESS                       = 2,    // Camera, sharpness
96     CAMERA_PXI_SIZE_TEST_PATTERN                    = 2,    // Camera, pattern
97     CAMERA_PXI_SIZE_AUTO_EXPOSURE                   = 2,    // Camera, on
98     CAMERA_PXI_SIZE_AUTO_WHITE_BALANCE              = 2,    // Camera, on
99 
100     CAMERA_PXI_SIZE_SET_LED                         = 1,    // isBlink
101 
102     CAMERA_PXI_SIZE_UNKNOWN
103 }
104 CAMERAPxiSize;
105 
106 // Response Definitions
107 typedef enum CAMERAPxiResult
108 {
109     CAMERA_PXI_RESULT_SUCCESS = 0,        // Processing success (void/void*) // There are sometimes subsequent packets
110     CAMERA_PXI_RESULT_SUCCESS_TRUE = 0,   // Processing success (BOOL)
111     CAMERA_PXI_RESULT_SUCCESS_FALSE,      // Processing failure (BOOL)
112     CAMERA_PXI_RESULT_INVALID_COMMAND,    // Invalid PXI command
113     CAMERA_PXI_RESULT_INVALID_PARAMETER,  // Illegal parameter
114     CAMERA_PXI_RESULT_ILLEGAL_STATUS,     // Processing cannot be run because of the camera state
115     CAMERA_PXI_RESULT_BUSY,               // Another request is being processed
116     CAMERA_PXI_RESULT_FATAL_ERROR,        // Some other error caused processing to fail
117     CAMERA_PXI_RESULT_MAX
118 }
119 CAMERAPxiResult;
120 
121 
122 /*===========================================================================*/
123 
124 #ifdef  __cplusplus
125 }          /* extern "C" */
126 #endif
127 
128 #endif /* TWL_CAMERA_FIFO_H_ */
129 
130 /*---------------------------------------------------------------------------*
131   End of file
132  *---------------------------------------------------------------------------*/
133