static VM_DRV_TP_BOOL ctp_goodix_gt9xx_get_data( vm_drv_tp_multiple_event_t *tpes) { VMUINT8 lvalue = 0; VMUINT32 model = 0; VMUINT8 buf_status; VM_DRV_TP_BOOL ret = VM_DRV_TP_TRUE; VMUINT8 rst_char = 0; tpes->time_stamp = (VMUINT16) vm_drv_tp_get_time_stamp(); tpes->padding = VM_DRV_TP_PATTERN; CTP_I2C_read(CTP_TOUCH_INFO_REG_BASE, &lvalue, 1); model = (VMUINT32) (lvalue & CTP_STAT_NUMBER_TOUCH); buf_status = lvalue & 0xF0; //vm_log_info( "model:%d buf_status:%d", model,buf_status); if (model > 5) //goodix only support 5 fingers { ret = VM_DRV_TP_FALSE; goto exit_get_data; } tpes->model = (VMUINT16) model; //read out all touch points coordinates. if (model == 0) { ret = VM_DRV_TP_FALSE; CTP_I2C_read(CTP_POINT_INFO_REG_BASE + 1, &lvalue, 1); goto exit_get_data; } if (model <= 10) { if ((buf_status & 0x80) != 0) { ctp_read_all_point(tpes, model); } else { goto exit_get_data; } } else { if (model == 0x0d) { //TODO: check this event } else if (model == 0x0e) { //TODO: check this event } else { //TODO: check this event } goto exit_get_data; } exit_get_data: CTP_I2C_send(CTP_TOUCH_INFO_REG_BASE, &rst_char, 1); return ret; }
kal_bool ctp_cypress_cy8ctma340_get_data(TouchPanelMultipleEventStruct *tpes) { kal_bool i2c_ret; kal_uint8 reg[2]; kal_uint32 model = 0; ASSERT(tpes); tpes->time_stamp = (kal_uint16)L1I_GetTimeStamp(); tpes->padding = CTP_PATTERN; i2c_ret = CTP_I2C_read(TT_MODE_ADDR, reg, 2); if(i2c_ret == KAL_FALSE) { ctp_cypress_cy8ctma340_toggle(); return KAL_FALSE; } if(reg[0] & TT_MODE_BUFFER_INVALID) { drv_trace0(TRACE_GROUP_10, CTP_CAPACITIVE_GET_DATA_INVALID); ctp_cypress_cy8ctma340_toggle(); return KAL_FALSE; } model = (kal_uint32)(reg[1] & TT_STAT_NUMBER_TOUCH); drv_trace1(TRACE_GROUP_10, CTP_CAPACITIVE_MODEL, model); if(model > 4) //cypress only support 4 fingers { ctp_cypress_cy8ctma340_toggle(); return KAL_FALSE; } tpes->model = (kal_uint16)model; //read out all touch points coordinates. if(model == 0) { ctp_cypress_cy8ctma340_toggle(); return KAL_FALSE; } ctp_read_all_point(tpes, model); ctp_cypress_cy8ctma340_toggle(); return KAL_TRUE; }