r## 背景
本章节详细的描述了再实战过程中,代码实现功能的代码框架
核心说明一点:其实就是对你自己设定的数据结构操作进行封装,
案例一 数据获取
函数依赖:
typedef int OPERATE_LIGHT;
#ifndef IN
#define IN
#endif
#ifndef OUT
#define OUT
#endif
函数命名规则为 XXXGet
OPERATE_LIGHT opLightCtrlDataTemperatureGet(OUT USHORT_T *pTemperature)
{
if(NULL == pTemperature) {
return LIGHT_INVALID_PARM;
}
if((tLightCfgData.eLightWay != LIGHT_RGBCW) && (tLightCfgData.eLightWay != LIGHT_CW)) {
return LIGHT_COM_ERROR;
}
*pTemperature = tLightCtrlData.usTemper;
return LIGHT_OK;
}
格式说明:
- 参数可以使用 IN 和OUT说明参数是输入还是输出
- 对输入的指针做必要的判断
if(NULL == pTemperature) {
return LIGHT_INVALID_PARM;
} - 参数处理部分 *pTemperature = tLightCtrlData.usTemper;
- 最后就是返回值
案例二 数据装填
函数命名规则为 XXXSet
OPERATE_LIGHT opLightCtrlDataSwitchSet(IN BOOL_T bONOFF)
{
BOOL_T bLastStatus ;
bLastStatus = tLightCtrlData.bSwitch;
if( TRUE == bONOFF ) {
tLightCtrlData.bSwitch = TRUE;
if(SCENE_MODE == tLightCtrlData.eMode) { /* restart scene mode */
tLightCtrlData.bSceneFirstSet = TRUE;
}
} else {
tLightCtrlData.bSwitch = FALSE;
}
vLightCtrlDataSwitchRespone(bONOFF); /* reponse property */
if(bONOFF == bLastStatus) {
PR_DEBUG("the same switch set");
return LIGHT_INVALID_PARM;
}
return LIGHT_OK;
}
参数说明
- vLightCtrlDataSwitchRespone(bONOFF);
WEAK VOID vLightCtrlDataSwitchRespone(OUT BOOL_T bONOFF)
{
;
}
数据装填回传 - tLightCtrlData.bSwitch = FALSE;
- 返回参数 LIGHT_OK