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