support complex modules for camera

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@265 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
yutaka 2007-08-31 09:53:38 +00:00
parent 358eba0633
commit f9dffc8721
6 changed files with 123 additions and 276 deletions

View File

@ -17,20 +17,10 @@
#include <twl/camera/ARM7/i2c_micron.h> #include <twl/camera/ARM7/i2c_micron.h>
#include <twl/camera/ARM7/i2c_sharp.h> #include <twl/camera/ARM7/i2c_sharp.h>
typedef enum static CameraSelect cameraSharp = CAMERA_SELECT_NONE;
{
CAMERA_TYPE_MICRON,
CAMERA_TYPE_SHARP,
CAMERA_TYPE_UNKNOWN #define GET_MICRON(camera) (CameraSelect)(camera & ~cameraSharp)
} #define GET_SHARP(camera) (CameraSelect)(camera & cameraSharp)
CAMERAType;
static CAMERAType cameraType = CAMERA_TYPE_MICRON;
#if 0
CAMERA_I2CInit()
#endif
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: CAMERA_I2CInit Name: CAMERA_I2CInit
@ -43,27 +33,33 @@ static CAMERAType cameraType = CAMERA_TYPE_MICRON;
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CInit(CameraSelect camera) BOOL CAMERA_I2CInit(CameraSelect camera)
{ {
BOOL result = FALSE; BOOL ri = TRUE;
BOOL ro = TRUE;
(void)I2C_Lock(); (void)I2C_Lock();
if (cameraType == CAMERA_TYPE_MICRON) if (camera & CAMERA_SELECT_IN)
{ {
result = CAMERAi_M_I2CInit(camera); if (FALSE == (ri = CAMERAi_M_I2CInit(CAMERA_SELECT_IN)))
if (result == FALSE)
{ {
cameraType = CAMERA_TYPE_SHARP; cameraSharp |= CAMERA_SELECT_IN;
if (FALSE == (ri = CAMERAi_S_I2CInit(CAMERA_SELECT_IN)))
{
cameraSharp &= ~CAMERA_SELECT_IN;
}
} }
} }
if (cameraType == CAMERA_TYPE_SHARP) if (camera & CAMERA_SELECT_OUT)
{ {
result = CAMERAi_S_I2CInit(camera); if (FALSE == (ro = CAMERAi_M_I2CInit(CAMERA_SELECT_OUT)))
if (result == FALSE)
{ {
//cameraType = CAMERA_TYPE_MICRON; // rotate for next try cameraSharp |= CAMERA_SELECT_OUT;
//cameraType = CAMERA_TYPE_UNKNOWN; // annihilate camera I2C if (FALSE == (ro = CAMERAi_S_I2CInit(CAMERA_SELECT_OUT)))
{
cameraSharp &= ~CAMERA_SELECT_OUT;
}
} }
} }
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return ri & ro;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -77,19 +73,14 @@ BOOL CAMERA_I2CInit(CameraSelect camera)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CStandby(CameraSelect camera) BOOL CAMERA_I2CStandby(CameraSelect camera)
{ {
BOOL result = FALSE; BOOL rm, rs;
(void)I2C_Lock(); (void)I2C_Lock();
switch (cameraType) rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
{ CAMERAi_M_I2CStandby(GET_MICRON(camera)) : TRUE;
case CAMERA_TYPE_MICRON: rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
result = CAMERAi_M_I2CStandby(camera); CAMERAi_S_I2CStandby(GET_SHARP(camera)) : TRUE;
break;
case CAMERA_TYPE_SHARP:
result = CAMERAi_S_I2CStandby(camera);
break;
}
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return rm & rs;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -103,19 +94,14 @@ BOOL CAMERA_I2CStandby(CameraSelect camera)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CResume(CameraSelect camera) BOOL CAMERA_I2CResume(CameraSelect camera)
{ {
BOOL result = FALSE; BOOL rm, rs;
(void)I2C_Lock(); (void)I2C_Lock();
switch (cameraType) rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
{ CAMERAi_M_I2CResume(GET_MICRON(camera)) : TRUE;
case CAMERA_TYPE_MICRON: rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
result = CAMERAi_M_I2CResume(camera); CAMERAi_S_I2CResume(GET_SHARP(camera)) : TRUE;
break;
case CAMERA_TYPE_SHARP:
result = CAMERAi_S_I2CResume(camera);
break;
}
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return rm & rs;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -129,19 +115,14 @@ BOOL CAMERA_I2CResume(CameraSelect camera)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CResumeBoth(CameraSelect camera) BOOL CAMERA_I2CResumeBoth(CameraSelect camera)
{ {
BOOL result = FALSE; BOOL rm, rs;
(void)I2C_Lock(); (void)I2C_Lock();
switch (cameraType) rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
{ CAMERAi_M_I2CResumeBoth(GET_MICRON(camera)) : TRUE;
case CAMERA_TYPE_MICRON: rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
result = CAMERAi_S_I2CResumeBoth(camera); CAMERAi_S_I2CResumeBoth(GET_SHARP(camera)) : TRUE;
break;
case CAMERA_TYPE_SHARP:
result = CAMERAi_S_I2CResumeBoth(camera);
break;
}
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return rm & rs;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -157,19 +138,14 @@ BOOL CAMERA_I2CResumeBoth(CameraSelect camera)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CResize(CameraSelect camera, u16 width, u16 height) BOOL CAMERA_I2CResize(CameraSelect camera, u16 width, u16 height)
{ {
BOOL result = FALSE; BOOL rm, rs;
(void)I2C_Lock(); (void)I2C_Lock();
switch (cameraType) rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
{ CAMERAi_M_I2CResize(GET_MICRON(camera), width, height) : TRUE;
case CAMERA_TYPE_MICRON: rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
result = CAMERAi_M_I2CResize(camera, width, height); CAMERAi_S_I2CResize(GET_SHARP(camera), width, height) : TRUE;
break;
case CAMERA_TYPE_SHARP:
result = CAMERAi_S_I2CResize(camera, width, height);
break;
}
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return rm & rs;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -184,19 +160,14 @@ BOOL CAMERA_I2CResize(CameraSelect camera, u16 width, u16 height)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CFrameRate(CameraSelect camera, int rate) BOOL CAMERA_I2CFrameRate(CameraSelect camera, int rate)
{ {
BOOL result = FALSE; BOOL rm, rs;
(void)I2C_Lock(); (void)I2C_Lock();
switch (cameraType) rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
{ CAMERAi_M_I2CFrameRate(GET_MICRON(camera), rate) : TRUE;
case CAMERA_TYPE_MICRON: rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
result = CAMERAi_M_I2CFrameRate(camera, rate); CAMERAi_S_I2CFrameRate(GET_SHARP(camera), rate) : TRUE;
break;
case CAMERA_TYPE_SHARP:
result = CAMERAi_S_I2CFrameRate(camera, rate);
break;
}
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return rm & rs;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -211,19 +182,14 @@ BOOL CAMERA_I2CFrameRate(CameraSelect camera, int rate)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CEffect(CameraSelect camera, CameraEffect effect) BOOL CAMERA_I2CEffect(CameraSelect camera, CameraEffect effect)
{ {
BOOL result = FALSE; BOOL rm, rs;
(void)I2C_Lock(); (void)I2C_Lock();
switch (cameraType) rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
{ CAMERAi_M_I2CEffect(GET_MICRON(camera), effect) : TRUE;
case CAMERA_TYPE_MICRON: rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
result = CAMERAi_M_I2CEffect(camera, effect); CAMERAi_S_I2CEffect(GET_SHARP(camera), effect) : TRUE;
break;
case CAMERA_TYPE_SHARP:
result = CAMERAi_S_I2CEffect(camera, effect);
break;
}
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return rm & rs;
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -238,19 +204,14 @@ BOOL CAMERA_I2CEffect(CameraSelect camera, CameraEffect effect)
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERA_I2CFlip(CameraSelect camera, CameraFlip flip) BOOL CAMERA_I2CFlip(CameraSelect camera, CameraFlip flip)
{ {
BOOL result = FALSE; BOOL rm, rs;
(void)I2C_Lock(); (void)I2C_Lock();
switch (cameraType) rm = GET_MICRON(camera) != CAMERA_SELECT_NONE ?
{ CAMERAi_M_I2CFlip(GET_MICRON(camera), flip) : TRUE;
case CAMERA_TYPE_MICRON: rs = GET_SHARP(camera) != CAMERA_SELECT_NONE ?
result = CAMERAi_M_I2CFlip(camera, flip); CAMERAi_S_I2CFlip(GET_SHARP(camera), flip) : TRUE;
break;
case CAMERA_TYPE_SHARP:
result = CAMERAi_S_I2CFlip(camera, flip);
break;
}
(void)I2C_Unlock(); (void)I2C_Unlock();
return result; return rm & rs;
} }
#if 0 #if 0

View File

@ -31,28 +31,9 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERAi_M_I2CInit(CameraSelect camera) BOOL CAMERAi_M_I2CInit(CameraSelect camera)
{ {
#if 0
BOOL rIn = TRUE;
BOOL rOut = TRUE;
// should not send init command same time (TODO:出力なしで初期化できるなら同時に処理するように変える)
if (camera & CAMERA_SELECT_IN)
{
rIn = CAMERAi_M_Default_Registers(CAMERA_SELECT_IN)
&& CAMERAi_M_WriteMCU(CAMERA_SELECT_IN, 0x2755, 0x0002) // YUYV format (required to refresh)
&& CAMERAi_M_I2CStandby(CAMERA_SELECT_IN);
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = CAMERAi_M_Default_Registers(CAMERA_SELECT_OUT)
&& CAMERAi_M_WriteMCU(CAMERA_SELECT_OUT, 0x2755, 0x0002) // YUYV format (required to refresh)
&& CAMERAi_M_I2CStandby(CAMERA_SELECT_OUT);
}
return (rIn && rOut);
#else
return CAMERAi_M_Default_Registers(camera) return CAMERAi_M_Default_Registers(camera)
&& CAMERAi_M_WriteMCU(camera, 0x2755, 0x0002) // YUYV format (required to refresh) && CAMERAi_M_WriteMCU(camera, 0x2755, 0x0002) // YUYV format (required to refresh)
&& CAMERAi_M_SetFlags(camera, 0x0018, 0x0001); // goto standby && CAMERAi_M_SetFlags(camera, 0x0018, 0x0001); // goto standby
#endif
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*

View File

@ -41,34 +41,11 @@ BankGroup;
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
BOOL CAMERAi_S_I2CInit(CameraSelect camera) BOOL CAMERAi_S_I2CInit(CameraSelect camera)
{ {
#if 0
BOOL rIn = TRUE;
BOOL rOut = TRUE;
// should not send init command same time (TODO:出力なしで初期化できるなら同時に処理するように変える)
if (camera & CAMERA_SELECT_IN)
{
rIn = CAMERAi_S_Initialize(CAMERA_SELECT_IN)
&& CAMERAi_S_WriteRegister(CAMERA_SELECT_IN, BANK_ADDR, BANK_GROUP_B)
&& CAMERAi_S_SetFlags(CAMERA_SELECT_IN, 0x1A, 0x08) // reverse RCLK polarity
&& CAMERAi_S_WriteRegister(CAMERA_SELECT_IN, 0x18, 0x02) // force to order YUYV
&& CAMERAi_S_I2CStandby(CAMERA_SELECT_IN);
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = CAMERAi_S_Initialize(CAMERA_SELECT_OUT)
&& CAMERAi_S_WriteRegister(CAMERA_SELECT_OUT, BANK_ADDR, BANK_GROUP_B)
&& CAMERAi_S_SetFlags(CAMERA_SELECT_OUT, 0x1A, 0x08) // reverse RCLK polarity
&& CAMERAi_S_WriteRegister(CAMERA_SELECT_OUT, 0x18, 0x02) // force to order YUYV
&& CAMERAi_S_I2CStandby(CAMERA_SELECT_OUT);
}
return (rIn && rOut);
#else
return CAMERAi_S_Initialize(camera) return CAMERAi_S_Initialize(camera)
&& CAMERAi_S_WriteRegister(camera, BANK_ADDR, BANK_GROUP_B) && CAMERAi_S_WriteRegister(camera, BANK_ADDR, BANK_GROUP_B)
&& CAMERAi_S_SetFlags(camera, 0x1A, 0x08) // reverse RCLK polarity && CAMERAi_S_SetFlags(camera, 0x1A, 0x08) // reverse RCLK polarity
&& CAMERAi_S_WriteRegister(camera, 0x18, 0x02) // force to order YUYV && CAMERAi_S_WriteRegister(camera, 0x18, 0x02) // force to order YUYV
&& CAMERAi_S_ClearFlags(camera, 0x04, 0x88); // goto standby (maybe already into) && CAMERAi_S_ClearFlags(camera, 0x04, 0x88); // goto standby (maybe already into)
#endif
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*

View File

@ -1,6 +1,6 @@
#! make -f #! make -f
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Project: TwlSDK - libraries - aes # Project: TwlSDK - libraries - camera
# File: Makefile # File: Makefile
# #
# Copyright 2007 Nintendo. All rights reserved. # Copyright 2007 Nintendo. All rights reserved.

View File

@ -44,31 +44,19 @@ extern "C" {
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static inline BOOL CAMERAi_M_WriteRegister( CameraSelect camera, u16 reg, u16 data ) static inline BOOL CAMERAi_M_WriteRegister( CameraSelect camera, u16 reg, u16 data )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2Ci_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_IN, reg, data ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2Ci_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, data ) : TRUE;
rIn = I2Ci_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_IN, reg, data ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2Ci_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, data );
}
return (rIn && rOut);
} }
static inline BOOL CAMERA_M_WriteRegister( CameraSelect camera, u16 reg, u16 data ) static inline BOOL CAMERA_M_WriteRegister( CameraSelect camera, u16 reg, u16 data )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2C_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_IN, reg, data ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2C_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, data ) : TRUE;
rIn = I2C_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_IN, reg, data ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2C_WriteRegister16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, data );
}
return (rIn && rOut);
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -118,31 +106,19 @@ static inline u16 CAMERA_M_ReadRegister( CameraSelect camera, u16 reg )
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static inline BOOL CAMERAi_M_WriteRegisters( CameraSelect camera, u16 reg, const u16 *bufp, size_t size ) static inline BOOL CAMERAi_M_WriteRegisters( CameraSelect camera, u16 reg, const u16 *bufp, size_t size )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2Ci_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_IN, reg, bufp, size ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2Ci_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, bufp, size ) : TRUE;
rIn = I2Ci_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_IN, reg, bufp, size ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2Ci_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, bufp, size );
}
return (rIn && rOut);
} }
static inline BOOL CAMERA_M_WriteRegisters( CameraSelect camera, u16 reg, const u16 *bufp, size_t size ) static inline BOOL CAMERA_M_WriteRegisters( CameraSelect camera, u16 reg, const u16 *bufp, size_t size )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2C_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_IN, reg, bufp, size ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2C_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, bufp, size ) : TRUE;
rIn = I2C_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_IN, reg, bufp, size ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2C_WriteRegisters16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, bufp, size );
}
return (rIn && rOut);
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -197,31 +173,19 @@ static inline BOOL CAMERA_M_ReadRegisters( CameraSelect camera, u16 reg, u16 *bu
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static inline BOOL CAMERAi_M_SetParams( CameraSelect camera, u16 reg, u16 setBits, u16 maskBits ) static inline BOOL CAMERAi_M_SetParams( CameraSelect camera, u16 reg, u16 setBits, u16 maskBits )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2Ci_SetParams16( I2C_SLAVE_CAMERA_MICRON_IN, reg, setBits, maskBits ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2Ci_SetParams16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, setBits, maskBits ) : TRUE;
rIn = I2Ci_SetParams16( I2C_SLAVE_CAMERA_MICRON_IN, reg, setBits, maskBits ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2Ci_SetParams16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, setBits, maskBits );
}
return (rIn && rOut);
} }
static inline BOOL CAMERA_M_SetParams( CameraSelect camera, u16 reg, u16 setBits, u16 maskBits ) static inline BOOL CAMERA_M_SetParams( CameraSelect camera, u16 reg, u16 setBits, u16 maskBits )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2C_SetParams16( I2C_SLAVE_CAMERA_MICRON_IN, reg, setBits, maskBits ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2C_SetParams16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, setBits, maskBits ) : TRUE;
rIn = I2C_SetParams16( I2C_SLAVE_CAMERA_MICRON_IN, reg, setBits, maskBits ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2C_SetParams16( I2C_SLAVE_CAMERA_MICRON_OUT, reg, setBits, maskBits );
}
return (rIn && rOut);
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*

View File

@ -44,31 +44,19 @@ extern "C" {
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static inline BOOL CAMERAi_S_WriteRegister( CameraSelect camera, u8 reg, u8 data ) static inline BOOL CAMERAi_S_WriteRegister( CameraSelect camera, u8 reg, u8 data )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2Ci_WriteRegister( I2C_SLAVE_CAMERA_SHARP_IN, reg, data ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2Ci_WriteRegister( I2C_SLAVE_CAMERA_SHARP_OUT, reg, data ) : TRUE;
rIn = I2Ci_WriteRegister( I2C_SLAVE_CAMERA_SHARP_IN, reg, data ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2Ci_WriteRegister( I2C_SLAVE_CAMERA_SHARP_OUT, reg, data );
}
return (rIn && rOut);
} }
static inline BOOL CAMERA_S_WriteRegister( CameraSelect camera, u8 reg, u8 data ) static inline BOOL CAMERA_S_WriteRegister( CameraSelect camera, u8 reg, u8 data )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2C_WriteRegister( I2C_SLAVE_CAMERA_SHARP_IN, reg, data ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2C_WriteRegister( I2C_SLAVE_CAMERA_SHARP_OUT, reg, data ) : TRUE;
rIn = I2C_WriteRegister( I2C_SLAVE_CAMERA_SHARP_IN, reg, data ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2C_WriteRegister( I2C_SLAVE_CAMERA_SHARP_OUT, reg, data );
}
return (rIn && rOut);
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -118,31 +106,19 @@ static inline u8 CAMERA_S_ReadRegister( CameraSelect camera, u8 reg )
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static inline BOOL CAMERAi_S_WriteRegisters( CameraSelect camera, u8 reg, const u8 *bufp, size_t size ) static inline BOOL CAMERAi_S_WriteRegisters( CameraSelect camera, u8 reg, const u8 *bufp, size_t size )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2Ci_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_IN, reg, bufp, size ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2Ci_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_OUT, reg, bufp, size ) : TRUE;
rIn = I2Ci_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_IN, reg, bufp, size ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2Ci_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_OUT, reg, bufp, size );
}
return (rIn && rOut);
} }
static inline BOOL CAMERA_S_WriteRegisters( CameraSelect camera, u8 reg, const u8 *bufp, size_t size ) static inline BOOL CAMERA_S_WriteRegisters( CameraSelect camera, u8 reg, const u8 *bufp, size_t size )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2C_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_IN, reg, bufp, size ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2C_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_OUT, reg, bufp, size ) : TRUE;
rIn = I2C_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_IN, reg, bufp, size ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2C_WriteRegisters( I2C_SLAVE_CAMERA_SHARP_OUT, reg, bufp, size );
}
return (rIn && rOut);
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
@ -197,31 +173,19 @@ static inline BOOL CAMERA_S_ReadRegisters( CameraSelect camera, u8 reg, u8 *bufp
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
static inline BOOL CAMERAi_S_SetParams( CameraSelect camera, u8 reg, u8 setBits, u8 maskBits ) static inline BOOL CAMERAi_S_SetParams( CameraSelect camera, u8 reg, u8 setBits, u8 maskBits )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2Ci_SetParams( I2C_SLAVE_CAMERA_SHARP_IN, reg, setBits, maskBits ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2Ci_SetParams( I2C_SLAVE_CAMERA_SHARP_OUT, reg, setBits, maskBits ) : TRUE;
rIn = I2Ci_SetParams( I2C_SLAVE_CAMERA_SHARP_IN, reg, setBits, maskBits ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2Ci_SetParams( I2C_SLAVE_CAMERA_SHARP_OUT, reg, setBits, maskBits );
}
return (rIn && rOut);
} }
static inline BOOL CAMERA_S_SetParams( CameraSelect camera, u8 reg, u8 setBits, u8 maskBits ) static inline BOOL CAMERA_S_SetParams( CameraSelect camera, u8 reg, u8 setBits, u8 maskBits )
{ {
BOOL rIn = TRUE; BOOL ri = camera & CAMERA_SELECT_IN ?
BOOL rOut = TRUE; I2C_SetParams( I2C_SLAVE_CAMERA_SHARP_IN, reg, setBits, maskBits ) : TRUE;
if (camera & CAMERA_SELECT_IN) BOOL ro = camera & CAMERA_SELECT_OUT ?
{ I2C_SetParams( I2C_SLAVE_CAMERA_SHARP_OUT, reg, setBits, maskBits ) : TRUE;
rIn = I2C_SetParams( I2C_SLAVE_CAMERA_SHARP_IN, reg, setBits, maskBits ); return ri & ro;
}
if (camera & CAMERA_SELECT_OUT)
{
rOut = I2C_SetParams( I2C_SLAVE_CAMERA_SHARP_OUT, reg, setBits, maskBits );
}
return (rIn && rOut);
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*