读书人

请高人帮忙把上面的代码优化上

发布时间: 2012-07-31 12:33:46 作者: rapoo

请高人帮忙把下面的代码优化下。
主要是要优化 CDdcciCCCFactoryCommand function下的大的case语句,看能不能用一种比较好的方式把大switch下的含有很长段代码的case语句拆分成小的function,麻烦了。。。等着交差啊。。详见连接
因篇幅有限只列出了框架,
[code=C/C++][/code]
//--------------------------------------------------
// Description : None
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CDdcciCCCFactoryCommand()
{
switch(g_ucDdcciRxBuf[_DDCCI_PARAMETER] )
{
case 0x00: // Alignment
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x00: //Enter alignment

break;

case 0x01: //Exit alignment
break;
default:
break;
}
break;
case 0x0c:
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x10://show model name
break;
case 0x11://show model name
#if(_PROJECT == _RL6096_AAA_313H)
break;
default:
ReturnNG();
break;
}
break;
case 0x0d:
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x00:

break;


case 0x01:
if(_AUTO_SUCCESS == ScalerAutoDoWhiteBalance(_ADC_RGB))
{
}
else
{
}
break;
case 0x02: // Power On

if(SysPowerGetPowerStatus() == _POWER_STATUS_OFF)
{
CDdcciFactoryReturnCommand(_POWER_ON_MSG);
}
else
{
CDdcciFactoryReturnCommand(_POWER_ON_MSG);
}
break;
case 0x03: // Power Off

if(SysPowerGetPowerStatus() != _POWER_STATUS_OFF)
{
}
else
{
}
break;
case 0x04: // Burnin On

CDdcciFactoryReturnCommand(_BURNIN_ON_MSG);
break;


case 0x05: // Burnin Off

break;


case 0x06:
break;


case 0x07:
break;


case 0x08: //Go Sleep
if(!GET_SLEEPING_STATUS())
{
if(SysPowerGetPowerStatus() == _POWER_STATUS_NORMAL)
{
}
}
CDdcciFactoryReturnCommand(_GO_SLEEP_MSG);


break;
case 0x09: //Go Normal
break;
case 0x0C:

break;
case 0x18:// Logo on
SET_FACTORY_DISPLAY_LOGO_STATUS(_FACTORY_DELL_LOGO_ENABLE);
break;
case 0x19://Logo off
break;
case 0x20://set energy mode

break;
case 0x21://exit energy mode
break;


case 0x2b://Set text mode

break;


default:
CDdcciFactoryReturnNG();
break;
}
break;


case 0x0e: //pattern
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x00: // Recall Factory
break;


case 0x03: // Show Ver
break;
case 0x04: // IC Type
CDdcciFactoryReturnCommand(_READ_IC_TYPE);
break;
case 0x05: // 32 Grays
CDdcciFactoryReturnCommand(_32_GRAYS_MSG);
break;
case 0x06: // White Pattern
CDdcciFactoryReturnCommand(_WHITE_PATTEN_MSG);
break;
case 0x07: // Black Pattern
CDdcciFactoryReturnCommand(_BLACK_PATTEN_MSG);
break;
case 0x08: // Red Pattern
CDdcciFactoryReturnCommand(_RED_PATTEN_MSG);
break;
case 0x09: // Green Pattern
CDdcciFactoryReturnCommand(_GREEN_PATTEN_MSG);
break;
case 0x0a: // Blue Pattern
break;
case 0x0b: // Close Pattern

break;
case 0x20:
break;
default:
CDdcciFactoryReturnNG();
break;
}
break;
case 0x01: //Set User Model
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x00: // Set color temp to User
break;
case 0x01: // Set color temp to SRGB
break;
default:
CDdcciFactoryReturnNG();
break;
}
break;
case 0x05:
case 0x06:
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x05:
break;
default:
break;
}
break;
case 0x07:
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x02:
break;
default:
CDdcciFactoryReturnNG();
break;


}
break;
case 0x07:
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x05:
break;
default:
break;
}
break;
case 0x09:
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x03
break;
default:
CDdcciFactoryReturnNG();
break;
}
break;
case 0x11: //Save User Model
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x10: // Save User
break;
#if(_COLORTEMP_SRGB == _ON)
case 0x11: // Save SRGB
break;
default:
CDdcciFactoryReturnNG();
break;
}
break;
case 0x15: //Save 5400K-WARM
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x14: // Save 5400-Warm
break;
case 0x15: // Save 5500
break;
#endif // End of (_COLORTEMP_5500 == _ON)
case 0x17: // Save 5700-Warm
break;
default:
break;
}
break;
case 0x16: //Save 6500K-WARM
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x15: // Save 6500-Warm
break;
default:
CDdcciFactoryReturnNG();
break;
}
break;
case 0x17: //Save 7500K-WARM
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x12: // Save 7500-Warm
break;
default:
break;
}
break;
case 0x17: //Save 7500K-WARM
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x15: // Save 7500-Warm
break;
default:
break;
}
break;
case 0x19: //Save 9300K-COOL
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x13: // Save 9300-Cool

break;
default:
break;
}
break;
case 0x40: //write command
switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
{
case 0x00: // Brightness
break;
case 0x01: // Contrast
break;
case 0x02: //R-Gain
break;
case 0x03: //G-Gain
break;
case 0x04: //B-Gain


break;
case 0x05: //Write Text mode PWM
break;
case 0x06: // Save Text mode PWM

break;


case 0x07: //Read Text mode PWM


break;


case 0x08: // color reset

break;

。。。。。。。。详见连接

[解决办法]
挺好的,优化什么?
[解决办法]
每个大的case,都可以做出一个函数
[解决办法]
自己做一下吧
[解决办法]
一个函数咋能搞这么长了, 还要往下拖半天, 还是分割成多个函数吧,
还有建议把那数字换成宏

读书人网 >C++

热点推荐