"There's no multitouch in X10 – and I also can confirm that it's not only related to [software] but also to [hardware]," said product manager Rikard Skogberg at the official company blog.
Edited by douginoz, 29 March 2010 - 11:05 AM.
Edited by douginoz, 29 March 2010 - 11:05 AM.
Sony Ericsson Xperia X10a || X10 TripNMiUI-Iris v1.2.4 || Gingerbread 2.3.4
Baseband: 2.1.71 || Kernel: 2.6.29-00054-g5f01537 || Build: TripNMiUI-Iris 1.2.4
Quadrant Standard: 1167 || Linpack: 35.811 MFLOPS
(updated: August 6, 2011)
Search for topics before you post.
The Hero, on Mar 30 2010, 00:23, said:
natalie1981_cutie, on Mar 30 2010, 13:43, said:
The Hero, on Mar 31 2010, 13:43, said:
Agility Luke, on Apr 1 2010, 03:57, said:
The Hero, on Apr 1 2010, 20:39, said:
Sony Ericsson Xperia X10a || X10 TripNMiUI-Iris v1.2.4 || Gingerbread 2.3.4
Baseband: 2.1.71 || Kernel: 2.6.29-00054-g5f01537 || Build: TripNMiUI-Iris 1.2.4
Quadrant Standard: 1167 || Linpack: 35.811 MFLOPS
(updated: August 6, 2011)
Search for topics before you post.
static void synaptics_ts_work_func(struct work_struct *work)
{
int i;
int ret;
int bad_data = 0;
struct i2c_msg msg[2];
uint8_t start_reg;
uint8_t buf[15];
uint16_t x, y;
uint8_t z;
int32_t w;
uint8_t finger;
uint8_t gesture;
uint8_t magnitude;
static uint16_t last_x = 0;
static uint16_t last_y = 0;
static bool is_first_point = true;
int x2;
int y2;
int finger2_pressed;
struct synaptics_ts_data *ts = container_of(work, struct synaptics_ts_data, work);
msg[0].addr = ts->client->addr;
msg[0].flags = 0;
msg[0].len = 1;
msg[0].buf = &start_reg;
start_reg = 0x00;
msg[1].addr = ts->client->addr;
msg[1].flags = I2C_M_RD;
msg[1].len = sizeof(buf);
msg[1].buf = buf;
SYNAPITICS_DEBUG("synaptics_ts_work_func\n");
//input_set_abs_params(ts->input_dev, ABS_TOOL_WIDTH, 0, 15, 0, 0);
for (i = 0; i < ((ts->use_irq && !bad_data) ? 1 : 10); i++) {
ret = i2c_transfer(ts->client->adapter, msg, 2);
if (ret < 0) {
SYNAPITICS_DEBUG(KERN_ERR "synaptics_ts_work_func: i2c_transfer failed\n");
bad_data = 1;
} else {
//Here comes the important part:
bad_data = 0;
x = buf[3] | (uint16_t)(buf[2] & 0x1f) << 8;
y = buf[5] | (uint16_t)(buf[4] & 0x1f) << 8;
z = buf[1];
w = buf[0] >> 4;
finger = buf[0] & 7;
x2 = buf[3+6] | (uint16_t)(buf[2+6] & 0x1f) << 8;
y2 = buf[5+6] | (uint16_t)(buf[4+6] & 0x1f) << 8;
int z2 = buf[1+6];
int w2 = buf[0+6] >> 4;
int finger2 = buf[0+6] & 7;
//int dx = (int8_t)buf[12];
//int dy = (int8_t)buf[13];
finger2_pressed = finger > 1 && finger != 7;
SYNAPITICS_DEBUG("x = %d y = %d z = %d w = %d finger = %d gesture = %x magnitude = %d\n",
x, y, z, w, finger,gesture,magnitude);
//And here we print out the values:
printk("\nx %4d, y %4d, z %3d, w %2d, F %d, \n2nd: x %4d, y %4d, z %3d, w %2d, F %d",
x, y, z, w, finger,
x2, y2, z2, w2, finger2);
if (z) {
if (!finger2_pressed) {
/* No multitouch -- force width to zero */;
}
if (finger2_pressed) {
// You don't need this at the moment, it just makes things more complicated
}
/*
* always report the first point whether slip or click
*/
if (is_first_point) {
swap(x, y);
input_report_abs(ts->input_dev, ABS_X, x);
input_report_abs(ts->input_dev, ABS_Y, 5880-y);
last_x = x;
last_y = y;
is_first_point = false;
}
else {
/*
* except the first point, also report the following points
* 1) x aixes is 3 larger or smaller than the last reported point
* 2) y aixes is 3 larger or smaller than the last reported point.
*
*/
if ((( x - last_x) >= TS_X_OFFSET)
|| ((last_x - x) >= TS_X_OFFSET)
|| ((y - last_y) >= TS_Y_OFFSET)
|| ((last_y - y) >= TS_Y_OFFSET)) {
swap(x, y);
input_report_abs(ts->input_dev, ABS_X, x);
input_report_abs(ts->input_dev, ABS_Y, 5880-y);
last_x = x;
last_y = y;
}
}
}
else
/*
* The next point must be first point whether slip or click after
* this up event
*/
is_first_point = true;
swap(x, y);
input_report_abs(ts->input_dev, ABS_PRESSURE, z);
input_report_abs(ts->input_dev, ABS_TOOL_WIDTH, w);
input_report_key(ts->input_dev, BTN_TOUCH, finger);
input_sync(ts->input_dev);
}
}
if (ts->use_irq) {
enable_irq(ts->client->irq);
SYNAPITICS_DEBUG("enable irq\n");
}
}
x 3442, y 1609, z 104, w 1, F 1, 2nd: x 256, y 0, z 0, w 0, F 0
Edited by BigBearMDC, 04 April 2010 - 04:06 PM.

look for the ![]()
Edited by saltorio, 04 April 2010 - 10:09 PM.
Sony Ericsson Xperia X10a || X10 TripNMiUI-Iris v1.2.4 || Gingerbread 2.3.4
Baseband: 2.1.71 || Kernel: 2.6.29-00054-g5f01537 || Build: TripNMiUI-Iris 1.2.4
Quadrant Standard: 1167 || Linpack: 35.811 MFLOPS
(updated: August 6, 2011)
Search for topics before you post.
saltorio, on Apr 4 2010, 23:09, said:

look for the ![]()
BigBearMDC, on Apr 5 2010, 06:43, said:
Sony Ericsson Xperia X10a || X10 TripNMiUI-Iris v1.2.4 || Gingerbread 2.3.4
Baseband: 2.1.71 || Kernel: 2.6.29-00054-g5f01537 || Build: TripNMiUI-Iris 1.2.4
Quadrant Standard: 1167 || Linpack: 35.811 MFLOPS
(updated: August 6, 2011)
Search for topics before you post.
GodDriven, on Apr 8 2010, 01:05, said:
Sony Ericsson Xperia X10a || X10 TripNMiUI-Iris v1.2.4 || Gingerbread 2.3.4
Baseband: 2.1.71 || Kernel: 2.6.29-00054-g5f01537 || Build: TripNMiUI-Iris 1.2.4
Quadrant Standard: 1167 || Linpack: 35.811 MFLOPS
(updated: August 6, 2011)
Search for topics before you post.
saltorio, on Apr 5 2010, 13:25, said:
vorcigernix, on Apr 9 2010, 17:47, said:
Edited by zendroid, 02 May 2010 - 05:21 PM.
0 members, 0 guests, 0 anonymous users