Example #1
0
static void mmi_em_misc_rf_desense_mode_ctp_no_sweep(void) {
  rf_desense_set_curr_mode(RF_DESENSE_MODE_CTP_NO_SWEEP);
#if defined(__TOUCH_PANEL_CAPACITY__)
    touch_panel_capacitive_power_on(KAL_FALSE);
#endif // #if defined(__TOUCH_PANEL_CAPACITY__)
}
DCL_STATUS DclSTS_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data)
{
    if(DCL_STS_IS_HANDLE_MAGIC(handle) == 0)
    {
        return STATUS_INVALID_ARGUMENT;
    }

    switch(cmd)
    {
    case STS_CMD_GET_EVENT:
    {
        kal_bool  fg;
        TouchPanelMultipleEventStruct prTouchData;
        STS_CTRL_GET_T  *prCtrlGE;

        prCtrlGE = &(data->rTSCtrlGE);
        fg = touch_panel_get_event_(&prTouchData);

        if(fg!=KAL_FALSE)
            CopyEvent(prCtrlGE, &prTouchData); // copy prTouchData to prCtrlGE
        return fg;
    }
    case STS_CMD_PEEK_EVENT:
    {
        extern kal_bool touch_panel_peek_event_(TouchPanelMultipleEventStruct *touch_data);
        kal_bool  fg;
        TouchPanelMultipleEventStruct prTouchData;
        STS_CTRL_GET_T  *prCtrlGE;

        prCtrlGE = &(data->rTSCtrlGE);
        fg = touch_panel_peek_event_(&prTouchData);
        if(fg!=KAL_FALSE)
        {
            CopyEvent(prCtrlGE, &prTouchData); // copy prTouchData to prCtrlPE
        }
        return fg;
    }
    case STS_CMD_ENABLE:
    {
        STS_CTRL_EN_T  *prCtrlEN;
        prCtrlEN = &(data->rTSCtrlEN);
        touch_panel_enable_((kal_bool)prCtrlEN->fgEnable);/*enable/disable touch panel*/
        break;
    }
    case STS_CMD_FLUSH:
    {
        touch_panel_flush_();/*flsuh data in ring buffer*/
        break;
    }
    case STS_CMD_START_CALI:
    {
        STS_CTRL_SC_T  *prCtrlSC;
        prCtrlSC = &(data->rTSCtrlSC);
        touch_panel_start_cali_((TouchPanelCoordStruct *)(prCtrlSC->rpPoint), prCtrlSC->u2Num);
        break;
    }
    case STS_CMD_STOP_CALI:
    {
        touch_panel_stop_cali_();
        break;
    }
    case STS_CMD_READ_CALI:
    {
        STS_CTRL_RC_T  *prCtrlRC;
        TouchPanelCaliStruct rTPCali;

        prCtrlRC = &(data->rTSCtrlRC);
        touch_panel_read_cali_(&rTPCali );
        prCtrlRC->rCali.x_slope  = rTPCali.x_slope;
        prCtrlRC->rCali.x_offset = rTPCali.x_offset;
        prCtrlRC->rCali.y_slope  = rTPCali.y_slope;
        prCtrlRC->rCali.y_offset = rTPCali.y_offset;

        break;
    }
    case STS_CMD_SET_CALI:
    {
        STS_CTRL_SETC_T  *prCtrlSETC;
        TouchPanelCaliStruct rTPCali;

        prCtrlSETC = &(data->rTSCtrlSETC);
        rTPCali.x_slope  = prCtrlSETC->rCali.x_slope;
        rTPCali.x_offset = prCtrlSETC->rCali.x_offset;
        rTPCali.y_slope  = prCtrlSETC->rCali.y_slope;
        rTPCali.y_offset = prCtrlSETC->rCali.y_offset;
        touch_panel_set_cali_(rTPCali);
        break;
    }
    case STS_CMD_RESET:
    {
        STS_CTRL_RESET_T  *prCtrlRESET;
        prCtrlRESET = &(data->rTSCtrlRESET);
        touch_panel_reset_((kal_bool)prCtrlRESET->fgSkipUnreleaseEnable);
        break;
    }
    case STS_CMD_RESET_HANDWRITING:
    {
        touch_panel_reset_handwriting_();
        break;
    }
    case STS_CMD_CONF_SAMPLE_PERIOD:
    {
        STS_CTRL_CSP_T  *prCtrlCSP;
        prCtrlCSP = &(data->rTSCtrlCSP);
        touch_panle_conf_sample_period_(prCtrlCSP->u4Low, prCtrlCSP->u4High);
        break;
    }
    case STS_CMD_CONF_MOVE_OFFSET:
    {
        STS_CTRL_CMO_T  *prCtrlCMO;
        prCtrlCMO = &(data->rTSCtrlCMO);
        touch_panel_conf_move_offset_(prCtrlCMO->u2Pen_offset, prCtrlCMO->u2Stroke_offset,
                                      prCtrlCMO->u2Longtap_pen_offset,
                                      prCtrlCMO->u2Longtap_stroke_offset);
        break;
    }
    case STS_CMD_CONF_HANDWRITING:
    {
        STS_CTRL_CHW_T  *prCtrlCHW;
        prCtrlCHW = &(data->rTSCtrlCHW);
        touch_panel_conf_handwriting_((TouchPanelHandAreaStruct*)(prCtrlCHW->rArea), prCtrlCHW->u2n,
                                      (TouchPanelHandAreaStruct*)(prCtrlCHW->rExtArea) );
        break;
    }
    case STS_CMD_CONF_TIMEOUT_PERIOD:
    {
        STS_CTRL_CTP_T  *prCtrlCTP;
        prCtrlCTP = &(data->rTSCtrlCTP);
        touch_panle_conf_timeout_period_(prCtrlCTP->u4Longtap, prCtrlCTP->u4Repeat,
                                         prCtrlCTP->u4Handwriting_longtap);
        break;
    }
    case STS_CMD_POWER_ON:
    {
#if defined(__TOUCH_PANEL_CAPACITY__)
        STS_CTRL_POWER_ON_T  *prCtrlPO;
        prCtrlPO = &(data->rTSCtrlPO);

        touch_panel_capacitive_power_on((kal_bool)prCtrlPO->fgPowerOn);
#endif
        break;
    }
    case STS_CMD_SET_DEVICE:
    {
#if defined(__TOUCH_PANEL_CAPACITY__)
        STS_CTRL_SET_DEVICE_T *prCtrlSD;
        prCtrlSD = &(data->rTSCtrlSD);

        touch_panel_capacitive_set_device((ctp_device_mode_enum)prCtrlSD->mode);
#endif
        break;
    }
    case STS_CMD_COMMAND:
    {
#if defined(__TOUCH_PANEL_CAPACITY__)
        STS_CTRL_COMMAND_T *prCtrlCmd;
        prCtrlCmd = &(data->rTSCtrlCmd);

        touch_panel_capacitive_command(prCtrlCmd->u4Command, prCtrlCmd->pVoid1, prCtrlCmd->pVoid2);
#endif
        break;
    }
    case STS_CMD_CTRL_CUSTOM_PARAM:
    {
        DCL_CTRL_CUSTOM_PARAM_T* prCtrlCCP;
        prCtrlCCP = &(data->rTSCtrlCustomParam);
        Touch_Panel_Ctrl_Param(*prCtrlCCP);
        break;
    }
    case STS_CMD_CTRL_CUSTOM_PARAM_RANGE:
    {
        DCL_CTRL_CUSTOM_PARAM_RANGE_T* prCtrlCPR;
        prCtrlCPR = &(data->rTSCtrlCustomParamRang);
        Touch_Panel_Ctrl_Param_Range(*prCtrlCPR);
        break;
    }
    case STS_CMD_CTRL_MICRONMETER_TO_COORD:
    {
        DCL_CTRL_MICRONMETER_COORD_T* prCtrlCMP;
        prCtrlCMP = &(data->rTSCtrlMicronMeter_Pixel);
        Touch_Panel_MicronMeter_To_Coord(prCtrlCMP);

        break;
    }
    case STS_CMD_CTRL_COORD_TO_MICRONMETER:
    {
        DCL_CTRL_MICRONMETER_COORD_T* prCtrlCM;
        prCtrlCM = &(data->rTSCtrlMicronMeter_Pixel);
        Touch_Panel_Pixel_To_MicronMeter(prCtrlCM);
        break;
    }
    case STS_CMD_QUERY_TP_TYPE:
    {
        DCL_TP_TYPE_T* prCtrlTP;
        prCtrlTP = &(data->rTSCtrlTouchPanelType);
#if defined(__TOUCH_PANEL_CAPACITY__)
        prCtrlTP->TouchPanelType = CTP_Type;
#else
        prCtrlTP->TouchPanelType = RTP_Type;
#endif

        break;
    }
    default:
    {
        return STATUS_INVALID_CMD;
    }
    }
    return STATUS_OK;
}