diff --git a/src/add-ons/kernel/bus_managers/ps2/Jamfile b/src/add-ons/kernel/bus_managers/ps2/Jamfile index 3cfd51fdbb..b8db612e17 100644 --- a/src/add-ons/kernel/bus_managers/ps2/Jamfile +++ b/src/add-ons/kernel/bus_managers/ps2/Jamfile @@ -9,7 +9,7 @@ KernelAddon ps2 : ps2_dev.c ps2_keyboard.c ps2_module.c - ps2_standart_mouse.c + ps2_standard_mouse.c ps2_synaptics.c ps2_trackpoint.c ps2_service.c diff --git a/src/add-ons/kernel/bus_managers/ps2/movement_maker.c b/src/add-ons/kernel/bus_managers/ps2/movement_maker.c index 1a19791fa0..b9894f8b51 100644 --- a/src/add-ons/kernel/bus_managers/ps2/movement_maker.c +++ b/src/add-ons/kernel/bus_managers/ps2/movement_maker.c @@ -7,8 +7,7 @@ # define INFO(x...) #endif -typedef union -{ +typedef union { float value; /* FIXME: Assumes 32 bit int. */ unsigned int word; @@ -41,23 +40,23 @@ floorf(float x) uint32 i; GET_FLOAT_WORD(i0,x); j0 = ((i0>>23)&0xff)-0x7f; - if(j0<23) { - if(j0<0) { /* raise inexact if x != 0 */ - if(huge+x>(float)0.0) {/* return 0*sign(x) if |x|<1 */ - if(i0>=0) {i0=0;} - else if((i0&0x7fffffff)!=0) + if (j0<23) { + if (j0<0) { /* raise inexact if x != 0 */ + if (huge+x>(float)0.0) {/* return 0*sign(x) if |x|<1 */ + if (i0>=0) {i0=0;} + else if ((i0&0x7fffffff)!=0) { i0=0xbf800000;} } } else { i = (0x007fffff)>>j0; - if((i0&i)==0) return x; /* x is integral */ - if(huge+x>(float)0.0) { /* raise inexact flag */ - if(i0<0) i0 += (0x00800000)>>j0; + if ((i0&i)==0) return x; /* x is integral */ + if (huge+x>(float)0.0) { /* raise inexact flag */ + if (i0<0) i0 += (0x00800000)>>j0; i0 &= (~i); } } } else { - if(j0==0x80) return x+x; /* inf or NaN */ + if (j0==0x80) return x+x; /* inf or NaN */ else return x; /* x is integral */ } SET_FLOAT_WORD(x,i0); @@ -73,22 +72,22 @@ ceilf(float x) GET_FLOAT_WORD(i0,x); j0 = ((i0>>23)&0xff)-0x7f; - if(j0<23) { - if(j0<0) { /* raise inexact if x != 0 */ - if(huge+x>(float)0.0) {/* return 0*sign(x) if |x|<1 */ - if(i0<0) {i0=0x80000000;} - else if(i0!=0) { i0=0x3f800000;} + if (j0<23) { + if (j0<0) { /* raise inexact if x != 0 */ + if (huge+x>(float)0.0) {/* return 0*sign(x) if |x|<1 */ + if (i0<0) {i0=0x80000000;} + else if (i0!=0) { i0=0x3f800000;} } } else { i = (0x007fffff)>>j0; - if((i0&i)==0) return x; /* x is integral */ - if(huge+x>(float)0.0) { /* raise inexact flag */ - if(i0>0) i0 += (0x00800000)>>j0; + if ((i0&i)==0) return x; /* x is integral */ + if (huge+x>(float)0.0) { /* raise inexact flag */ + if (i0>0) i0 += (0x00800000)>>j0; i0 &= (~i); } } } else { - if(j0==0x80) return x+x; /* inf or NaN */ + if (j0==0x80) return x+x; /* inf or NaN */ else return x; /* x is integral */ } SET_FLOAT_WORD(x,i0); @@ -108,25 +107,25 @@ sqrtf(float x) GET_FLOAT_WORD(ix,x); /* take care of Inf and NaN */ - if((ix&0x7f800000)==0x7f800000) { + if ((ix&0x7f800000)==0x7f800000) { return x*x+x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf sqrt(-inf)=sNaN */ } /* take care of zero */ - if(ix<=0) { - if((ix&(~sign))==0) return x;/* sqrt(+-0) = +-0 */ - else if(ix<0) + if (ix<=0) { + if ((ix&(~sign))==0) return x;/* sqrt(+-0) = +-0 */ + else if (ix<0) return (x-x)/(x-x); /* sqrt(-ve) = sNaN */ } /* normalize x */ m = (ix>>23); - if(m==0) { /* subnormal x */ + if (m==0) { /* subnormal x */ for(i=0;(ix&0x00800000)==0;i++) ix<<=1; m -= i-1; } m -= 127; /* unbias exponent */ ix = (ix&0x007fffff)|0x00800000; - if(m&1) /* odd m, double x to make it even */ + if (m&1) /* odd m, double x to make it even */ ix += ix; m >>= 1; /* m = [m/2] */ @@ -137,7 +136,7 @@ sqrtf(float x) while(r!=0) { t = s+r; - if(t<=ix) { + if (t<=ix) { s = t+r; ix -= t; q += r; @@ -147,7 +146,7 @@ sqrtf(float x) } /* use floating add to find out rounding direction */ - if(ix!=0) { + if (ix!=0) { z = one-tiny; /* trigger inexact flag */ if (z>=one) { z = one+tiny; @@ -165,8 +164,9 @@ sqrtf(float x) int32 -make_small(float value){ - if(value > 0) +make_small(float value) +{ + if (value > 0) return floorf(value); else return ceilf(value); @@ -181,15 +181,14 @@ get_raw_movement(movement_maker *move, uint32 posX, uint32 posY) float meanX = 0, meanY = 0; // calculate mean - for(i = 0; i < move->n_points; i++){ + for (i = 0; i < move->n_points; i++) { meanXOld+= move->historyX[i]; meanYOld+= move->historyY[i]; } - if(move->n_points == 0){ + if (move->n_points == 0) { meanXOld = posX; meanYOld = posY; - } - else{ + } else { meanXOld = meanXOld / move->n_points; meanYOld = meanYOld / move->n_points; } @@ -198,14 +197,14 @@ get_raw_movement(movement_maker *move, uint32 posX, uint32 posY) meanY = (meanYOld + posY) / 2; // fill history - for(i = 0; i < HISTORY_SIZE - 1; i++){ + for (i = 0; i < HISTORY_SIZE - 1; i++) { move->historyX[i] = move->historyX[i + 1]; move->historyY[i] = move->historyY[i + 1]; } move->historyX[HISTORY_SIZE - 1] = meanX; move->historyY[HISTORY_SIZE - 1] = meanY; - if(move->n_points < HISTORY_SIZE){ + if (move->n_points < HISTORY_SIZE) { move->n_points++; move->xDelta = 0; move->yDelta = 0; @@ -266,9 +265,9 @@ get_scrolling(movement_maker *move, uint32 posX, uint32 posY) void start_new_movment(movement_maker *move) { - if(move->scrolling_xStep <= 0) + if (move->scrolling_xStep <= 0) move->scrolling_xStep = 1; - if(move->scrolling_yStep <= 0) + if (move->scrolling_yStep <= 0) move->scrolling_yStep = 1; move->n_points = 0; diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c b/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c index 896c33915c..a99eea9d32 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c @@ -12,7 +12,7 @@ #include "ps2_dev.h" #include "ps2_service.h" -#include "ps2_standart_mouse.h" +#include "ps2_standard_mouse.h" #include "ps2_synaptics.h" #include "ps2_trackpoint.h" @@ -22,12 +22,12 @@ ps2_dev ps2_device[PS2_DEVICE_COUNT] = { - { .name = "input/mouse/ps2/0", .active = false, .idx = 0, .result_sem = -1, .command = standart_command_timeout }, - { .name = "input/mouse/ps2/1", .active = false, .idx = 1, .result_sem = -1, .command = standart_command_timeout }, - { .name = "input/mouse/ps2/2", .active = false, .idx = 2, .result_sem = -1, .command = standart_command_timeout }, - { .name = "input/mouse/ps2/3", .active = false, .idx = 3, .result_sem = -1, .command = standart_command_timeout }, + { .name = "input/mouse/ps2/0", .active = false, .idx = 0, .result_sem = -1, .command = standard_command_timeout }, + { .name = "input/mouse/ps2/1", .active = false, .idx = 1, .result_sem = -1, .command = standard_command_timeout }, + { .name = "input/mouse/ps2/2", .active = false, .idx = 2, .result_sem = -1, .command = standard_command_timeout }, + { .name = "input/mouse/ps2/3", .active = false, .idx = 3, .result_sem = -1, .command = standard_command_timeout }, { .name = "input/mouse/ps2/synaptics_passthrough", .active = false, .result_sem = -1, .command = passthrough_command}, - { .name = "input/keyboard/at/0", .active = false, .result_sem = -1, .flags = PS2_FLAG_KEYB, .command = standart_command_timeout } + { .name = "input/keyboard/at/0", .active = false, .result_sem = -1, .flags = PS2_FLAG_KEYB, .command = standard_command_timeout } }; @@ -67,29 +67,29 @@ ps2_dev_detect_pointing(ps2_dev *dev, device_hooks **hooks) // the probe function has to set the dev name and the dev packet size status = probe_trackpoint(dev); - if (status == B_OK){ - *hooks = &gStandartMouseDeviceHooks; + if (status == B_OK) { + *hooks = &gStandardMouseDeviceHooks; goto dev_found; } status = probe_synaptics(dev); - if (status == B_OK){ + if (status == B_OK) { *hooks = &gSynapticsDeviceHooks; goto dev_found; } - status = probe_standart_mouse(dev); - if (status == B_OK){ - *hooks = &gStandartMouseDeviceHooks; + status = probe_standard_mouse(dev); + if (status == B_OK) { + *hooks = &gStandardMouseDeviceHooks; goto dev_found; } return B_ERROR; dev_found: - if(dev == &(ps2_device[PS2_DEVICE_SYN_PASSTHROUGH])){ + if (dev == &(ps2_device[PS2_DEVICE_SYN_PASSTHROUGH])) synaptics_pt_set_packagesize(dev, dev->packet_size); - } + return B_OK; } @@ -134,13 +134,12 @@ ps2_dev_publish(ps2_dev *dev) if (dev->active) return; - if(atomic_get(&dev->flags) & PS2_FLAG_KEYB){ + if (atomic_get(&dev->flags) & PS2_FLAG_KEYB) { status = devfs_publish_device(dev->name, &gKeyboardDeviceHooks); - } - else{ + } else { device_hooks *hooks; status = ps2_dev_detect_pointing(dev, &hooks); - if(status == B_OK){ + if (status == B_OK) { status = devfs_publish_device(dev->name, hooks); } @@ -265,7 +264,7 @@ pass_to_handler: status_t -standart_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count, bigtime_t timeout) +standard_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count, bigtime_t timeout) { status_t res; bigtime_t start; diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_dev.h b/src/add-ons/kernel/bus_managers/ps2/ps2_dev.h index c54d2f1d8f..ebd311b562 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_dev.h +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_dev.h @@ -41,7 +41,8 @@ struct ps2_dev // functions void (*disconnect)(ps2_dev *); int32 (*handle_int)(ps2_dev *); - status_t (*command)(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count, bigtime_t timeout); + status_t (*command)(ps2_dev *dev, uint8 cmd, const uint8 *out, + int out_count, uint8 *in, int in_count, bigtime_t timeout); }; #define PS2_DEVICE_COUNT 6 @@ -52,13 +53,13 @@ extern ps2_dev ps2_device[PS2_DEVICE_COUNT]; #define PS2_DEVICE_SYN_PASSTHROUGH 4 #define PS2_DEVICE_KEYB 5 -#define PS2_FLAG_KEYB (1<<0) -#define PS2_FLAG_OPEN (1<<1) -#define PS2_FLAG_ENABLED (1<<2) -#define PS2_FLAG_CMD (1<<3) -#define PS2_FLAG_ACK (1<<4) -#define PS2_FLAG_NACK (1<<5) -#define PS2_FLAG_GETID (1<<6) +#define PS2_FLAG_KEYB (1 << 0) +#define PS2_FLAG_OPEN (1 << 1) +#define PS2_FLAG_ENABLED (1 << 2) +#define PS2_FLAG_CMD (1 << 3) +#define PS2_FLAG_ACK (1 << 4) +#define PS2_FLAG_NACK (1 << 5) +#define PS2_FLAG_GETID (1 << 6) void ps2_dev_send(ps2_dev *dev, uint8 data); @@ -67,10 +68,13 @@ status_t ps2_dev_detect_pointing(ps2_dev *dev, device_hooks **hooks); status_t ps2_dev_init(void); void ps2_dev_exit(void); -status_t standart_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count, bigtime_t timeout); +status_t standard_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out, + int out_count, uint8 *in, int in_count, bigtime_t timeout); -status_t ps2_dev_command(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count); -status_t ps2_dev_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count, bigtime_t timeout); +status_t ps2_dev_command(ps2_dev *dev, uint8 cmd, const uint8 *out, + int out_count, uint8 *in, int in_count); +status_t ps2_dev_command_timeout(ps2_dev *dev, uint8 cmd, const uint8 *out, + int out_count, uint8 *in, int in_count, bigtime_t timeout); void ps2_dev_publish(ps2_dev *dev); void ps2_dev_unpublish(ps2_dev *dev); diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_standart_mouse.c b/src/add-ons/kernel/bus_managers/ps2/ps2_standard_mouse.c similarity index 68% rename from src/add-ons/kernel/bus_managers/ps2/ps2_standart_mouse.c rename to src/add-ons/kernel/bus_managers/ps2/ps2_standard_mouse.c index bd2df7bd52..cb894dccff 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_standart_mouse.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_standard_mouse.c @@ -58,17 +58,22 @@ #include "kb_mouse_driver.h" #include "ps2_service.h" -#include "ps2_standart_mouse.h" +#include "ps2_standard_mouse.h" -const char* kStandartMousePath[4] = {"input/mouse/ps2/standart_0", - "input/mouse/ps2/standart_1", - "input/mouse/ps2/standart_2", - "input/mouse/ps2/standart_3"}; -const char* kIntelliMousePath[4] = {"input/mouse/ps2/intelli_0", - "input/mouse/ps2/intelli_1", - "input/mouse/ps2/intelli_2", - "input/mouse/ps2/intelli_3"}; +const char* kStandardMousePath[4] = { + "input/mouse/ps2/standard_0", + "input/mouse/ps2/standard_1", + "input/mouse/ps2/standard_2", + "input/mouse/ps2/standard_3" +}; +const char* kIntelliMousePath[4] = { + "input/mouse/ps2/intelli_0", + "input/mouse/ps2/intelli_1", + "input/mouse/ps2/intelli_2", + "input/mouse/ps2/intelli_3" +}; + /** Set sampling rate of the ps2 port. */ static inline status_t @@ -81,7 +86,8 @@ ps2_set_sample_rate(ps2_dev *dev, uint8 rate) /** Converts a packet received by the mouse to a "movement". */ static void -ps2_packet_to_movement(standart_mouse_cookie *cookie, uint8 packet[], mouse_movement *pos) +ps2_packet_to_movement(standard_mouse_cookie *cookie, uint8 packet[], + mouse_movement *pos) { int buttons = packet[0] & 7; int xDelta = ((packet[0] & 0x10) ? ~0xff : 0) | packet[1]; @@ -107,7 +113,7 @@ ps2_packet_to_movement(standart_mouse_cookie *cookie, uint8 packet[], mouse_move yDeltaWheel |= ~0x07; } /* - if (cookie->flags & F_standart_mouse_TYPE_2WHEELS) { + if (cookie->flags & F_standard_mouse_TYPE_2WHEELS) { switch (packet[3] & 0x0F) { case 0x01: yDeltaWheel = +1; break; // wheel 1 down case 0x0F: yDeltaWheel = -1; break; // wheel 1 up @@ -117,9 +123,10 @@ ps2_packet_to_movement(standart_mouse_cookie *cookie, uint8 packet[], mouse_move } */ -// TRACE("packet: %02x %02x %02x %02x: xd %d, yd %d, 0x%x (%d), w-xd %d, w-yd %d\n", -// packet[0], packet[1], packet[2], packet[3], -// xDelta, yDelta, buttons, cookie->click_count, xDeltaWheel, yDeltaWheel); +// TRACE("packet: %02x %02x %02x %02x: xd %d, yd %d, 0x%x (%d), w-xd %d, " +// "w-yd %d\n", packet[0], packet[1], packet[2], packet[3], +// xDelta, yDelta, buttons, cookie->click_count, xDeltaWheel, +// yDeltaWheel); if (pos) { pos->xdelta = xDelta; @@ -131,7 +138,8 @@ ps2_packet_to_movement(standart_mouse_cookie *cookie, uint8 packet[], mouse_move pos->wheel_ydelta = yDeltaWheel; pos->wheel_xdelta = xDeltaWheel; - TRACE("ps2: ps2_packet_to_movement xdelta: %d, ydelta: %d, buttons %x, clicks: %d, timestamp %Ld\n", + TRACE("ps2: ps2_packet_to_movement xdelta: %d, ydelta: %d, buttons %x, " + "clicks: %d, timestamp %Ld\n", xDelta, yDelta, buttons, cookie->click_count, currentTime); } } @@ -140,24 +148,27 @@ ps2_packet_to_movement(standart_mouse_cookie *cookie, uint8 packet[], mouse_move /** Read a mouse event from the mouse events chain buffer. */ static status_t -standart_mouse_read_event(standart_mouse_cookie *cookie, mouse_movement *movement) +standard_mouse_read_event(standard_mouse_cookie *cookie, + mouse_movement *movement) { uint8 packet[PS2_MAX_PACKET_SIZE]; status_t status; - TRACE("ps2: standart_mouse_read_event\n"); + TRACE("ps2: standard_mouse_read_event\n"); - status = acquire_sem_etc(cookie->standart_mouse_sem, 1, B_CAN_INTERRUPT, 0); - TRACE("ps2: standart_mouse_read_event acquired\n"); + status = acquire_sem_etc(cookie->standard_mouse_sem, 1, B_CAN_INTERRUPT, 0); + TRACE("ps2: standard_mouse_read_event acquired\n"); if (status < B_OK) return status; if (!cookie->dev->active) { - TRACE("ps2: standart_mouse_read_event: Error device no longer active\n"); + TRACE("ps2: standard_mouse_read_event: Error device no longer " + "active\n"); return B_ERROR; } - if (packet_buffer_read(cookie->standart_mouse_buffer, packet, cookie->dev->packet_size) != cookie->dev->packet_size) { + if (packet_buffer_read(cookie->standard_mouse_buffer, packet, + cookie->dev->packet_size) != cookie->dev->packet_size) { TRACE("ps2: error copying buffer\n"); return B_ERROR; } @@ -171,12 +182,12 @@ standart_mouse_read_event(standart_mouse_cookie *cookie, mouse_movement *movemen void -standart_mouse_disconnect(ps2_dev *dev) +standard_mouse_disconnect(ps2_dev *dev) { // the mouse device might not be opened at this point - INFO("ps2: ps2_standart_mouse_disconnect %s\n", dev->name); + INFO("ps2: ps2_standard_mouse_disconnect %s\n", dev->name); if (dev->flags & PS2_FLAG_OPEN) - release_sem(((standart_mouse_cookie *)dev->cookie)->standart_mouse_sem); + release_sem(((standard_mouse_cookie *)dev->cookie)->standard_mouse_sem); } @@ -187,12 +198,12 @@ standart_mouse_disconnect(ps2_dev *dev) * calls to the handler, each holds a different byte on the data port. */ int32 -standart_mouse_handle_int(ps2_dev *dev) +standard_mouse_handle_int(ps2_dev *dev) { - standart_mouse_cookie *cookie = (standart_mouse_cookie*)dev->cookie; + standard_mouse_cookie *cookie = (standard_mouse_cookie*)dev->cookie; const uint8 data = dev->history[0].data; - TRACE("ps2: standart mouse: %1x\t%1x\t%1x\t%1x\t%1x\t%1x\t%1x\t%1x\n", + TRACE("ps2: standard mouse: %1x\t%1x\t%1x\t%1x\t%1x\t%1x\t%1x\t%1x\n", data >> 7 & 1, data >> 6 & 1, data >> 5 & 1, data >> 4 & 1, data >> 3 & 1, data >> 2 & 1, data >> 1 & 1, data >> 0 & 1); @@ -209,17 +220,21 @@ standart_mouse_handle_int(ps2_dev *dev) return B_HANDLED_INTERRUPT; } if (cookie->packet_index == 1) { - int xDelta = ((cookie->packet_buffer[0] & 0x10) ? 0xFFFFFF00 : 0) | data; + int xDelta + = ((cookie->packet_buffer[0] & 0x10) ? 0xFFFFFF00 : 0) | data; if (xDelta < -100 || xDelta > 100) { - INFO("ps2: strange mouse data, x-delta %d, trying resync\n", xDelta); + INFO("ps2: strange mouse data, x-delta %d, trying resync\n", + xDelta); cookie->packet_index = 0; return B_HANDLED_INTERRUPT; } } if (cookie->packet_index == 2) { - int yDelta = ((cookie->packet_buffer[0] & 0x20) ? 0xFFFFFF00 : 0) | data; + int yDelta + = ((cookie->packet_buffer[0] & 0x20) ? 0xFFFFFF00 : 0) | data; if (yDelta < -100 || yDelta > 100) { - INFO("ps2: strange mouse data, y-delta %d, trying resync\n", yDelta); + INFO("ps2: strange mouse data, y-delta %d, trying resync\n", + yDelta); cookie->packet_index = 0; return B_HANDLED_INTERRUPT; } @@ -235,12 +250,13 @@ standart_mouse_handle_int(ps2_dev *dev) // complete packet is assembled cookie->packet_index = 0; - if (packet_buffer_write(cookie->standart_mouse_buffer, cookie->packet_buffer, dev->packet_size) != dev->packet_size) { + if (packet_buffer_write(cookie->standard_mouse_buffer, + cookie->packet_buffer, dev->packet_size) != dev->packet_size) { // buffer is full, drop new data return B_HANDLED_INTERRUPT; } - release_sem_etc(cookie->standart_mouse_sem, 1, B_DO_NOT_RESCHEDULE); + release_sem_etc(cookie->standard_mouse_sem, 1, B_DO_NOT_RESCHEDULE); return B_INVOKE_SCHEDULER; } @@ -249,7 +265,7 @@ standart_mouse_handle_int(ps2_dev *dev) status_t -probe_standart_mouse(ps2_dev * dev) +probe_standard_mouse(ps2_dev * dev) { status_t status; uint8 deviceId = 0; @@ -269,16 +285,18 @@ probe_standart_mouse(ps2_dev * dev) status = ps2_set_sample_rate(dev, 200); status |= ps2_set_sample_rate(dev, 100); status |= ps2_set_sample_rate(dev, 80); - status |= ps2_dev_command(dev, PS2_CMD_GET_DEVICE_ID, NULL, 0, &alternate_device_id, 1); + status |= ps2_dev_command(dev, PS2_CMD_GET_DEVICE_ID, NULL, 0, + &alternate_device_id, 1); if (status == 0) { - TRACE("ps2: probe_mouse alternate device id: %2x\n", alternate_device_id); + TRACE("ps2: probe_mouse alternate device id: %2x\n", + alternate_device_id); deviceId = alternate_device_id; } } if (deviceId == PS2_DEV_ID_STANDARD) { INFO("ps2: probe_mouse Standard PS/2 mouse found\n"); - dev->name = kStandartMousePath[dev->idx]; + dev->name = kStandardMousePath[dev->idx]; dev->packet_size = PS2_PACKET_STANDARD; } else if (deviceId == PS2_DEV_ID_INTELLIMOUSE) { dev->name = kIntelliMousePath[dev->idx]; @@ -298,14 +316,14 @@ probe_standart_mouse(ps2_dev * dev) status_t -standart_mouse_open(const char *name, uint32 flags, void **_cookie) +standard_mouse_open(const char *name, uint32 flags, void **_cookie) { - standart_mouse_cookie *cookie; + standard_mouse_cookie *cookie; status_t status; ps2_dev *dev = NULL; int i; - TRACE("ps2: standart_mouse_open %s\n", name); + TRACE("ps2: standard_mouse_open %s\n", name); for (dev = NULL, i = 0; i < PS2_DEVICE_COUNT; i++) { if (0 == strcmp(ps2_device[i].name, name)) { @@ -327,7 +345,7 @@ standart_mouse_open(const char *name, uint32 flags, void **_cookie) if (atomic_or(&dev->flags, PS2_FLAG_OPEN) & PS2_FLAG_OPEN) return B_BUSY; - cookie = malloc(sizeof(standart_mouse_cookie)); + cookie = malloc(sizeof(standard_mouse_cookie)); if (cookie == NULL) goto err1; @@ -336,26 +354,26 @@ standart_mouse_open(const char *name, uint32 flags, void **_cookie) cookie->dev = dev; dev->cookie = cookie; - dev->disconnect = &standart_mouse_disconnect; - dev->handle_int = &standart_mouse_handle_int; + dev->disconnect = &standard_mouse_disconnect; + dev->handle_int = &standard_mouse_handle_int; - if(strstr(dev->name, "standard_mouse") != NULL){ + if (strstr(dev->name, "standard_mouse") != NULL) cookie->flags = F_pointing_dev_TYPE_STANDARD; - } - if(strstr(dev->name, "intelli_mouse") != NULL){ + + if (strstr(dev->name, "intelli_mouse") != NULL) cookie->flags = F_pointing_dev_TYPE_INTELLIMOUSE; - } - cookie->standart_mouse_buffer = create_packet_buffer(standart_mouse_HISTORY_SIZE * dev->packet_size); - if (cookie->standart_mouse_buffer == NULL) { + cookie->standard_mouse_buffer + = create_packet_buffer(standard_mouse_HISTORY_SIZE * dev->packet_size); + if (cookie->standard_mouse_buffer == NULL) { TRACE("ps2: can't allocate mouse actions buffer\n"); goto err2; } // create the mouse semaphore, used for synchronization between // the interrupt handler and the read operation - cookie->standart_mouse_sem = create_sem(0, "ps2_standart_mouse_sem"); - if (cookie->standart_mouse_sem < 0) { + cookie->standard_mouse_sem = create_sem(0, "ps2_standard_mouse_sem"); + if (cookie->standard_mouse_sem < 0) { TRACE("ps2: failed creating PS/2 mouse semaphore!\n"); goto err3; } @@ -369,54 +387,55 @@ standart_mouse_open(const char *name, uint32 flags, void **_cookie) atomic_or(&dev->flags, PS2_FLAG_ENABLED); - TRACE("ps2: standart_mouse_open %s success\n", name); + TRACE("ps2: standard_mouse_open %s success\n", name); return B_OK; err4: - delete_sem(cookie->standart_mouse_sem); + delete_sem(cookie->standard_mouse_sem); err3: - delete_packet_buffer(cookie->standart_mouse_buffer); + delete_packet_buffer(cookie->standard_mouse_buffer); err2: free(cookie); err1: atomic_and(&dev->flags, ~PS2_FLAG_OPEN); - TRACE("ps2: standart_mouse_open %s failed\n", name); + TRACE("ps2: standard_mouse_open %s failed\n", name); return B_ERROR; } status_t -standart_mouse_close(void *_cookie) +standard_mouse_close(void *_cookie) { - standart_mouse_cookie *cookie = (standart_mouse_cookie*)_cookie; + standard_mouse_cookie *cookie = (standard_mouse_cookie*)_cookie; - TRACE("ps2: standart_mouse_close %s enter\n", cookie->dev->name); + TRACE("ps2: standard_mouse_close %s enter\n", cookie->dev->name); - ps2_dev_command_timeout(cookie->dev, PS2_CMD_DISABLE, NULL, 0, NULL, 0, 150000); + ps2_dev_command_timeout(cookie->dev, PS2_CMD_DISABLE, NULL, 0, NULL, 0, + 150000); - delete_packet_buffer(cookie->standart_mouse_buffer); - delete_sem(cookie->standart_mouse_sem); + delete_packet_buffer(cookie->standard_mouse_buffer); + delete_sem(cookie->standard_mouse_sem); atomic_and(&cookie->dev->flags, ~PS2_FLAG_OPEN); atomic_and(&cookie->dev->flags, ~PS2_FLAG_ENABLED); - TRACE("ps2: standart_mouse_close %s done\n", cookie->dev->name); + TRACE("ps2: standard_mouse_close %s done\n", cookie->dev->name); return B_OK; } status_t -standart_mouse_freecookie(void *_cookie) +standard_mouse_freecookie(void *_cookie) { - standart_mouse_cookie *cookie = (standart_mouse_cookie*)_cookie; + standard_mouse_cookie *cookie = (standard_mouse_cookie*)_cookie; free(cookie); return B_OK; } static status_t -standart_mouse_read(void *cookie, off_t pos, void *buffer, size_t *_length) +standard_mouse_read(void *cookie, off_t pos, void *buffer, size_t *_length) { *_length = 0; return B_NOT_ALLOWED; @@ -424,7 +443,8 @@ standart_mouse_read(void *cookie, off_t pos, void *buffer, size_t *_length) static status_t -standart_mouse_write(void *cookie, off_t pos, const void *buffer, size_t *_length) +standard_mouse_write(void *cookie, off_t pos, const void *buffer, + size_t *_length) { *_length = 0; return B_NOT_ALLOWED; @@ -432,16 +452,16 @@ standart_mouse_write(void *cookie, off_t pos, const void *buffer, size_t *_lengt status_t -standart_mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) +standard_mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) { - standart_mouse_cookie *cookie = (standart_mouse_cookie*)_cookie; + standard_mouse_cookie *cookie = (standard_mouse_cookie*)_cookie; switch (op) { case MS_NUM_EVENTS: { int32 count; TRACE("ps2: ioctl MS_NUM_EVENTS\n"); - get_sem_count(cookie->standart_mouse_sem, &count); + get_sem_count(cookie->standard_mouse_sem, &count); return count; } @@ -450,10 +470,11 @@ standart_mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) mouse_movement movement; status_t status; TRACE("ps2: ioctl MS_READ\n"); - if ((status = standart_mouse_read_event(cookie, &movement)) < B_OK) + if ((status = standard_mouse_read_event(cookie, &movement)) < B_OK) return status; // TRACE("%s %d %d %d %d\n", cookie->dev->name, -// movement.xdelta, movement.ydelta, movement.buttons, movement.clicks); +// movement.xdelta, movement.ydelta, movement.buttons, +// movement.clicks); return user_memcpy(buffer, &movement, sizeof(movement)); } @@ -462,15 +483,18 @@ standart_mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) return B_BAD_VALUE; case MS_SET_MAP: - TRACE("ps2: ioctl MS_SET_MAP (set mouse mapping) not implemented\n"); + TRACE("ps2: ioctl MS_SET_MAP (set mouse mapping) not " + "implemented\n"); return B_BAD_VALUE; case MS_GET_ACCEL: - TRACE("ps2: ioctl MS_GET_ACCEL (get mouse acceleration) not implemented\n"); + TRACE("ps2: ioctl MS_GET_ACCEL (get mouse acceleration) not " + "implemented\n"); return B_BAD_VALUE; case MS_SET_ACCEL: - TRACE("ps2: ioctl MS_SET_ACCEL (set mouse acceleration) not implemented\n"); + TRACE("ps2: ioctl MS_SET_ACCEL (set mouse acceleration) not " + "implemented\n"); return B_BAD_VALUE; case MS_SET_CLICKSPEED: @@ -484,11 +508,11 @@ standart_mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) } -device_hooks gStandartMouseDeviceHooks = { - standart_mouse_open, - standart_mouse_close, - standart_mouse_freecookie, - standart_mouse_ioctl, - standart_mouse_read, - standart_mouse_write, +device_hooks gStandardMouseDeviceHooks = { + standard_mouse_open, + standard_mouse_close, + standard_mouse_freecookie, + standard_mouse_ioctl, + standard_mouse_read, + standard_mouse_write, }; diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_standart_mouse.h b/src/add-ons/kernel/bus_managers/ps2/ps2_standard_mouse.h similarity index 54% rename from src/add-ons/kernel/bus_managers/ps2/ps2_standart_mouse.h rename to src/add-ons/kernel/bus_managers/ps2/ps2_standard_mouse.h index 630fbb50c9..d5ce4eed02 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_standart_mouse.h +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_standard_mouse.h @@ -12,14 +12,14 @@ * Clemens Zeidler */ -#ifndef __PS2_STANDART_standart_mouse_H -#define __PS2_STANDART_standart_mouse_H +#ifndef __PS2_STANDARD_standard_mouse_H +#define __PS2_STANDARD_standard_mouse_H #include #include "packet_buffer.h" -#define standart_mouse_HISTORY_SIZE 256 +#define standard_mouse_HISTORY_SIZE 256 // we record that many mouse packets before we start to drop them #define F_pointing_dev_TYPE_STANDARD 0x1 @@ -29,8 +29,8 @@ typedef struct { ps2_dev * dev; - sem_id standart_mouse_sem; - packet_buffer * standart_mouse_buffer; + sem_id standard_mouse_sem; + packet_buffer * standard_mouse_buffer; bigtime_t click_last_time; bigtime_t click_speed; int click_count; @@ -39,21 +39,22 @@ typedef struct size_t packet_index; uint8 packet_buffer[PS2_MAX_PACKET_SIZE]; -} standart_mouse_cookie; +} standard_mouse_cookie; -status_t probe_standart_mouse(ps2_dev *dev); +status_t probe_standard_mouse(ps2_dev *dev); -status_t standart_mouse_open(const char *name, uint32 flags, void **_cookie); -status_t standart_mouse_close(void *_cookie); -status_t standart_mouse_freecookie(void *_cookie); -status_t standart_mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length); +status_t standard_mouse_open(const char *name, uint32 flags, void **_cookie); +status_t standard_mouse_close(void *_cookie); +status_t standard_mouse_freecookie(void *_cookie); +status_t standard_mouse_ioctl(void *_cookie, uint32 op, void *buffer, + size_t length); -int32 standart_mouse_handle_int(ps2_dev *dev); -void standart_mouse_disconnect(ps2_dev *dev); +int32 standard_mouse_handle_int(ps2_dev *dev); +void standard_mouse_disconnect(ps2_dev *dev); -device_hooks gStandartMouseDeviceHooks; +device_hooks gStandardMouseDeviceHooks; -#endif +#endif /* __PS2_STANDARD_standard_mouse_H */ diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c b/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c index 92f370f6c2..143336909f 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_synaptics.c @@ -16,13 +16,15 @@ #include "ps2_synaptics.h" #include "kb_mouse_driver.h" -const char* kSynapticsPath[4] = {"input/touchpad/ps2/synaptics_0", - "input/touchpad/ps2/synaptics_1", - "input/touchpad/ps2/synaptics_2", - "input/touchpad/ps2/synaptics_3"}; +const char* kSynapticsPath[4] = { + "input/touchpad/ps2/synaptics_0", + "input/touchpad/ps2/synaptics_1", + "input/touchpad/ps2/synaptics_2", + "input/touchpad/ps2/synaptics_3" +}; -static touchpad_info g_touchpad_info; -ps2_dev *g_passthrough_dev = &ps2_device[PS2_DEVICE_SYN_PASSTHROUGH]; +static touchpad_info gTouchpadInfo; +ps2_dev *gPassthroughDevice = &ps2_device[PS2_DEVICE_SYN_PASSTHROUGH]; void @@ -37,7 +39,8 @@ synaptics_pt_set_packagesize(ps2_dev *dev, uint8 size) { synaptics_cookie* syn_cookie = dev->parent_dev->cookie; - status_t status = ps2_dev_command(dev->parent_dev, PS2_CMD_DISABLE, NULL, 0, NULL, 0); + status_t status = ps2_dev_command(dev->parent_dev, PS2_CMD_DISABLE, NULL, + 0, NULL, 0); if (status < B_OK) { INFO("SYNAPTICS: cannot disable touchpad %s\n", dev->parent_dev->name); return B_ERROR; @@ -45,12 +48,10 @@ synaptics_pt_set_packagesize(ps2_dev *dev, uint8 size) syn_cookie->packet_index = 0; - if(size == 4){ + if (size == 4) syn_cookie->mode|= SYN_FOUR_BYTE_CHILD; - } - else{ + else syn_cookie->mode&= ~SYN_FOUR_BYTE_CHILD; - } set_touchpad_mode(dev->parent_dev, syn_cookie->mode); status = ps2_dev_command(dev->parent_dev, PS2_CMD_ENABLE, NULL, 0, NULL, 0); @@ -63,16 +64,18 @@ synaptics_pt_set_packagesize(ps2_dev *dev, uint8 size) status_t -send_touchpad_arg(ps2_dev *dev, uint8 arg){ +send_touchpad_arg(ps2_dev *dev, uint8 arg) +{ return send_touchpad_arg_timeout(dev, arg, 4000000); } status_t -send_touchpad_arg_timeout(ps2_dev *dev, uint8 arg, bigtime_t timeout){ +send_touchpad_arg_timeout(ps2_dev *dev, uint8 arg, bigtime_t timeout) +{ int8 i; uint8 val[8]; - for(i = 0; i < 4; i++){ + for (i = 0; i < 4; i++) { val[2*i] = (arg >> (6-2*i)) & 3; val[2*i + 1] = 0xE8; } @@ -85,12 +88,14 @@ set_touchpad_mode(ps2_dev *dev, uint8 mode) { uint8 sample_rate = SYN_CHANGE_MODE; send_touchpad_arg(dev, mode); - return ps2_dev_command(dev, PS2_CMD_SET_SAMPLE_RATE, &sample_rate, 1, NULL, 0); + return ps2_dev_command(dev, PS2_CMD_SET_SAMPLE_RATE, &sample_rate, 1, + NULL, 0); } status_t -passthrough_command(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, uint8 *in, int in_count, bigtime_t timeout) +passthrough_command(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, + uint8 *in, int in_count, bigtime_t timeout) { status_t status; uint8 pt_cmd = SYN_PASSTHROUGH_CMD; @@ -101,51 +106,45 @@ passthrough_command(ps2_dev *dev, uint8 cmd, const uint8 *out, int out_count, ui TRACE("SYNAPTICS: passthrough command 0x%x\n", cmd); - status = ps2_dev_command(dev->parent_dev, PS2_CMD_DISABLE, NULL, 0, NULL, 0); - if(status != B_OK){ + status = ps2_dev_command(dev->parent_dev, PS2_CMD_DISABLE, NULL, 0, + NULL, 0); + if (status != B_OK) return status; - } for (i = -1; i < out_count; i++) { - if (i == -1) { + if (i == -1) val = cmd; - } else { + else val = out[i]; - } status = send_touchpad_arg_timeout(dev->parent_dev, val, timeout); - if(status != B_OK){ + if (status != B_OK) return status; - } - if(i != out_count -1){ - status = ps2_dev_command_timeout(dev->parent_dev, PS2_CMD_SET_SAMPLE_RATE, - &pt_cmd, 1, NULL, 0, timeout); - if(status != B_OK){ + if (i != out_count -1) { + status = ps2_dev_command_timeout(dev->parent_dev, + PS2_CMD_SET_SAMPLE_RATE, &pt_cmd, 1, NULL, 0, timeout); + if (status != B_OK) return status; - } } } status = ps2_dev_command_timeout(dev->parent_dev, PS2_CMD_SET_SAMPLE_RATE, - &pt_cmd, 1, pt_in, pt_in_count, timeout); - if(status != B_OK){ + &pt_cmd, 1, pt_in, pt_in_count, timeout); + if (status != B_OK) return status; - } - for(i = 0; i < in_count + 1; i++){ + for (i = 0; i < in_count + 1; i++) { uint8 *inPointer = &(pt_in[i * 6]); - if(!IS_SYN_PT_PACKAGE(inPointer)){ + if (!IS_SYN_PT_PACKAGE(inPointer)) { TRACE("SYNAPTICS: not a pass throught package\n"); return B_OK; } - if(i == 0){ + if (i == 0) continue; - } in[i - 1] = pt_in[i * 6 + 1]; } status = ps2_dev_command(dev->parent_dev, PS2_CMD_ENABLE, NULL, 0, NULL, 0); - if(status != B_OK){ + if (status != B_OK) return status; - } return B_OK; } @@ -157,36 +156,31 @@ edge_motion(mouse_movement *movement, touch_event *event, bool validStart) int32 xdelta = 0; int32 ydelta = 0; - if(event->xPosition < SYN_AREA_START_X + SYN_EDGE_MOTION_WIDTH){ + if (event->xPosition < SYN_AREA_START_X + SYN_EDGE_MOTION_WIDTH) xdelta = -SYN_EDGE_MOTION_SPEED; - } - else if(event->xPosition > SYN_AREA_END_X - SYN_EDGE_MOTION_WIDTH){ + else if (event->xPosition > SYN_AREA_END_X - SYN_EDGE_MOTION_WIDTH) xdelta = SYN_EDGE_MOTION_SPEED; - } - if(event->yPosition < SYN_AREA_START_Y + SYN_EDGE_MOTION_WIDTH){ + if (event->yPosition < SYN_AREA_START_Y + SYN_EDGE_MOTION_WIDTH) ydelta = -SYN_EDGE_MOTION_SPEED; - } - else if(event->yPosition > SYN_AREA_END_Y - SYN_EDGE_MOTION_WIDTH){ + else if (event->yPosition > SYN_AREA_END_Y - SYN_EDGE_MOTION_WIDTH) ydelta = SYN_EDGE_MOTION_SPEED; - } - if(xdelta && validStart){ + if (xdelta && validStart) movement->xdelta = xdelta; - } - if(ydelta && validStart){ + if (ydelta && validStart) movement->ydelta = ydelta; - } - if((xdelta || ydelta) && !validStart){ + if ((xdelta || ydelta) && !validStart) return false; - } + return true; } status_t -touchevent_to_movement(synaptics_cookie* cookie, touch_event *event, mouse_movement *movement) +touchevent_to_movement(synaptics_cookie* cookie, touch_event *event, + mouse_movement *movement) { bool isSideScrollingV = false; bool isSideScrollingH = false; @@ -196,9 +190,8 @@ touchevent_to_movement(synaptics_cookie* cookie, touch_event *event, mouse_movem bigtime_t currentTime = system_time(); touchpad_settings * settings = &(cookie->settings); - if(!movement){ + if (!movement) return B_ERROR; - } movement->xdelta = 0; movement->ydelta = 0; @@ -209,62 +202,57 @@ touchevent_to_movement(synaptics_cookie* cookie, touch_event *event, mouse_movem movement->clicks = 0; movement->timestamp = currentTime; - if((currentTime - cookie->tap_time) > SYN_TAP_TIMEOUT){ + if ((currentTime - cookie->tap_time) > SYN_TAP_TIMEOUT) { TRACE("SYNAPTICS: tap gesture timed out\n"); cookie->tap_started = false; - if(!cookie->double_click || (currentTime - cookie->tap_time) > 2 * SYN_TAP_TIMEOUT) + if (!cookie->double_click + || (currentTime - cookie->tap_time) > 2 * SYN_TAP_TIMEOUT) { cookie->tap_clicks = 0; + } } - if(event->buttons != 0){ + if (event->buttons != 0) { cookie->tap_clicks = 0; cookie->tapdrag_started = false; cookie->tap_started = false; cookie->valid_edge_motion = false; } - if(event->zPressure >= MIN_PRESSURE && event->zPressure < MAX_PRESSURE + if (event->zPressure >= MIN_PRESSURE && event->zPressure < MAX_PRESSURE && ((event->wValue >=4 && event->wValue <=7) || event->wValue == 0 || event->wValue == 1) - && (event->xPosition != 0 || event->yPosition != 0)) - { + && (event->xPosition != 0 || event->yPosition != 0)) { isInTouch = true; } - if(isInTouch) - { - if((SYN_AREA_END_X - SYN_AREA_WIDTH_X * settings->scroll_rightrange + if (isInTouch) { + if ((SYN_AREA_END_X - SYN_AREA_WIDTH_X * settings->scroll_rightrange < event->xPosition && !cookie->movement_started && settings->scroll_rightrange > 0.000001) - || settings->scroll_rightrange > 0.999999) - { + || settings->scroll_rightrange > 0.999999) { isSideScrollingV = true; } - if((SYN_AREA_START_Y + SYN_AREA_WIDTH_Y * settings->scroll_bottomrange + if ((SYN_AREA_START_Y + SYN_AREA_WIDTH_Y * settings->scroll_bottomrange > event->yPosition && !cookie->movement_started && settings->scroll_bottomrange > 0.000001) - || settings->scroll_bottomrange > 0.999999) - { + || settings->scroll_bottomrange > 0.999999) { isSideScrollingH = true; } - if(isSideScrollingV || isSideScrollingH + if (isSideScrollingV || isSideScrollingH ||(event->wValue == 0 && settings->scroll_twofinger) - ||(event->wValue == 1 && settings->scroll_multifinger)) - { - goto scrooling; - } - else{ + ||(event->wValue == 1 && settings->scroll_multifinger)) { + goto scrolling; + } else { cookie->scrolling_started = false; } goto movement; - } - else{ + } else { goto notouch; } movement: TRACE("SYNAPTICS: movement event\n"); - if(!cookie->movement_started){ + if (!cookie->movement_started) { isStartOfMovement = true; cookie->movement_started = true; start_new_movment(&(cookie->movement_maker)); @@ -279,24 +267,25 @@ movement: cookie->tap_delta_x+= cookie->movement_maker.xDelta; cookie->tap_delta_y+= cookie->movement_maker.yDelta; - if(cookie->tapdrag_started){ + if (cookie->tapdrag_started) { movement->buttons = 0x01; // left button movement->clicks = 0; - cookie->valid_edge_motion = edge_motion(movement, event, cookie->valid_edge_motion); + cookie->valid_edge_motion = edge_motion(movement, event, + cookie->valid_edge_motion); TRACE("SYNAPTICS: tap drag\n"); - } - else{ + } else { TRACE("SYNAPTICS: movement set buttons\n"); movement->buttons = event->buttons; } - // use only a fraction of pressure range, the max pressure seems to be to high - sens = 20 * (event->zPressure - MIN_PRESSURE) / (MAX_PRESSURE - MIN_PRESSURE - 100); - if(!cookie->tap_started + // use only a fraction of pressure range, the max pressure seems to be + // to high + sens = 20 * (event->zPressure - MIN_PRESSURE) + / (MAX_PRESSURE - MIN_PRESSURE - 100); + if (!cookie->tap_started && isStartOfMovement - && settings->tapgesture_sensibility > (20 - sens)) - { + && settings->tapgesture_sensibility > (20 - sens)) { TRACE("SYNAPTICS: tap started\n"); cookie->tap_started = true; cookie->tap_time = system_time(); @@ -306,26 +295,25 @@ movement: return B_OK; -scrooling: +scrolling: TRACE("SYNAPTICS: scroll event\n"); cookie->tap_started = false; cookie->tap_clicks = 0; cookie->tapdrag_started = false; cookie->valid_edge_motion = false; - if(!cookie->scrolling_started){ + if (!cookie->scrolling_started) { cookie->scrolling_started = true; start_new_movment(&(cookie->movement_maker)); } - get_scrolling(&(cookie->movement_maker), event->xPosition, event->yPosition); + get_scrolling(&(cookie->movement_maker), event->xPosition, + event->yPosition); movement->wheel_ydelta = cookie->movement_maker.yDelta; movement->wheel_xdelta = cookie->movement_maker.xDelta; - if(isSideScrollingV && !isSideScrollingH){ + if (isSideScrollingV && !isSideScrollingH) movement->wheel_xdelta = 0; - } - else if(isSideScrollingH && !isSideScrollingV){ + else if (isSideScrollingH && !isSideScrollingV) movement->wheel_ydelta = 0; - } return B_OK; notouch: @@ -333,41 +321,38 @@ notouch: cookie->scrolling_started = false; cookie->movement_started = false; movement->buttons = event->buttons; - if(event->buttons) + if (event->buttons) movement->clicks = 1; - if(cookie->tapdrag_started - && (currentTime - cookie->tap_time) < SYN_TAP_TIMEOUT) - { + if (cookie->tapdrag_started + && (currentTime - cookie->tap_time) < SYN_TAP_TIMEOUT) { movement->buttons = 0x01; movement->clicks = 0; } // if the movement stopped switch off the dap trag when timeout is expired - if((currentTime - cookie->tap_time) > SYN_TAP_TIMEOUT){ + if ((currentTime - cookie->tap_time) > SYN_TAP_TIMEOUT) { cookie->tapdrag_started = false; cookie->valid_edge_motion = false; TRACE("SYNAPTICS: tap drag gesture timed out\n"); } - if(abs(cookie->tap_delta_x) > 15 || abs(cookie->tap_delta_y) > 15){ + if (abs(cookie->tap_delta_x) > 15 || abs(cookie->tap_delta_y) > 15) { cookie->tap_started = false; cookie->tap_clicks = 0; } - if(cookie->tap_started || cookie->double_click) - { + if (cookie->tap_started || cookie->double_click) { TRACE("SYNAPTICS: tap gesture\n"); cookie->tap_clicks++; - if(cookie->tap_clicks > 1){ + if (cookie->tap_clicks > 1) { TRACE("SYNAPTICS: empty click\n"); movement->buttons = 0x00; movement->clicks = 0; cookie->tap_clicks = 0; cookie->double_click = true; - } - else{ + } else { movement->buttons = 0x01; movement->clicks = 1; cookie->tap_started = false; @@ -399,7 +384,8 @@ get_synaptics_movment(synaptics_cookie* cookie, mouse_movement *movement) return B_ERROR; } - if (packet_buffer_read(cookie->synaptics_ring_buffer, event_buffer, cookie->dev->packet_size) != cookie->dev->packet_size) { + if (packet_buffer_read(cookie->synaptics_ring_buffer, event_buffer, + cookie->dev->packet_size) != cookie->dev->packet_size) { TRACE("SYNAPTICS: error copying buffer\n"); return B_ERROR; } @@ -407,7 +393,7 @@ get_synaptics_movment(synaptics_cookie* cookie, mouse_movement *movement) event.buttons = event_buffer[0] & 3; event.zPressure = event_buffer[2]; - if(g_touchpad_info.capExtended){ + if (gTouchpadInfo.capExtended) { wValue0 = event_buffer[3] >> 2 & 1; wValue1 = event_buffer[0] >> 2 & 1; wValue2 = event_buffer[0] >> 4 & 1; @@ -420,10 +406,9 @@ get_synaptics_movment(synaptics_cookie* cookie, mouse_movement *movement) event.wValue = wValue; event.gesture = false; - } - else{ + } else { bool finger = event_buffer[0] >> 5 & 1; - if(finger){ + if (finger) { // finger with normal width event.wValue = 4; } @@ -456,18 +441,18 @@ query_capability(ps2_dev *dev) send_touchpad_arg(dev, 0x02); ps2_dev_command(dev, 0xE9, NULL, 0, val, 3); - g_touchpad_info.capExtended = val[0] >> 7 & 1; + gTouchpadInfo.capExtended = val[0] >> 7 & 1; TRACE("SYNAPTICS: extended mode %2x\n", val[0] >> 7 & 1); TRACE("SYNAPTICS: sleep mode %2x\n", val[2] >> 4 & 1); - g_touchpad_info.capSleep = val[2] >> 4 & 1; + gTouchpadInfo.capSleep = val[2] >> 4 & 1; TRACE("SYNAPTICS: four buttons %2x\n", val[2] >> 3 & 1); - g_touchpad_info.capFourButtons = val[2] >> 3 & 1; + gTouchpadInfo.capFourButtons = val[2] >> 3 & 1; TRACE("SYNAPTICS: multi finger %2x\n", val[2] >> 1 & 1); - g_touchpad_info.capMultiFinger = val[2] >> 1 & 1; + gTouchpadInfo.capMultiFinger = val[2] >> 1 & 1; TRACE("SYNAPTICS: palm detection %2x\n", val[2] & 1); - g_touchpad_info.capPalmDetection = val[2] & 1; + gTouchpadInfo.capPalmDetection = val[2] & 1; TRACE("SYNAPTICS: pass through %2x\n", val[2] >> 7 & 1); - g_touchpad_info.capPassThrough = val[2] >> 7 & 1; + gTouchpadInfo.capPassThrough = val[2] >> 7 & 1; } @@ -481,18 +466,20 @@ probe_synaptics(ps2_dev *dev) send_touchpad_arg(dev, 0x00); ps2_dev_command(dev, 0xE9, NULL, 0, val, 3); - g_touchpad_info.minorVersion = val[0]; + gTouchpadInfo.minorVersion = val[0]; deviceId = val[1]; - if(deviceId != SYN_TOUCHPAD){ + if (deviceId != SYN_TOUCHPAD) { TRACE("SYNAPTICS: not found\n"); return B_ERROR; } TRACE("SYNAPTICS: Touchpad found id:l %2x\n", deviceId); - g_touchpad_info.majorVersion = val[2] & 0x0F; - TRACE("SYNAPTICS: version %d.%d\n", g_touchpad_info.majorVersion, g_touchpad_info.minorVersion); + gTouchpadInfo.majorVersion = val[2] & 0x0F; + TRACE("SYNAPTICS: version %d.%d\n", gTouchpadInfo.majorVersion, + gTouchpadInfo.minorVersion); // version >= 4.0? - if(g_touchpad_info.minorVersion <= 2 && g_touchpad_info.majorVersion <= 3){ + if (gTouchpadInfo.minorVersion <= 2 + && gTouchpadInfo.majorVersion <= 3) { TRACE("SYNAPTICS: too old touchpad not supported\n"); return B_ERROR; } @@ -541,7 +528,8 @@ synaptics_open(const char *name, uint32 flags, void **_cookie) cookie->movement_maker.speed = 1; cookie->movement_maker.scrolling_xStep = cookie->settings.scroll_xstepsize; cookie->movement_maker.scrolling_yStep = cookie->settings.scroll_ystepsize; - cookie->movement_maker.scroll_acceleration = cookie->settings.scroll_acceleration; + cookie->movement_maker.scroll_acceleration + = cookie->settings.scroll_acceleration; cookie->movement_started = false; cookie->scrolling_started = false; cookie->tap_started = false; @@ -550,7 +538,8 @@ synaptics_open(const char *name, uint32 flags, void **_cookie) dev->packet_size = PS2_PACKET_SYNAPTICS; - cookie->synaptics_ring_buffer = create_packet_buffer(synaptics_HISTORY_SIZE * dev->packet_size); + cookie->synaptics_ring_buffer + = create_packet_buffer(synaptics_HISTORY_SIZE * dev->packet_size); if (cookie->synaptics_ring_buffer == NULL) { TRACE("ps2: can't allocate mouse actions buffer\n"); goto err2; @@ -566,20 +555,19 @@ synaptics_open(const char *name, uint32 flags, void **_cookie) query_capability(dev); // create pass through dev - if(g_touchpad_info.capPassThrough){ + if (gTouchpadInfo.capPassThrough) { TRACE("SYNAPTICS: pass through detected\n"); - g_passthrough_dev->parent_dev = dev; - g_passthrough_dev->idx = dev->idx; - ps2_service_notify_device_added(g_passthrough_dev); + gPassthroughDevice->parent_dev = dev; + gPassthroughDevice->idx = dev->idx; + ps2_service_notify_device_added(gPassthroughDevice); } // Set Mode - if(g_touchpad_info.capExtended){ + if (gTouchpadInfo.capExtended) cookie->mode = SYN_ABSOLUTE_W_MODE; - } - else{ + else cookie->mode = SYN_ABSOLUTE_MODE; - } + status = set_touchpad_mode(dev, cookie->mode); if (status < B_OK) { INFO("SYNAPTICS: cannot set mode %s\n", name); @@ -606,7 +594,7 @@ err2: err1: atomic_and(&dev->flags, ~PS2_FLAG_OPEN); - TRACE("ps2: standart_mouse_open %s failed\n", name); + TRACE("SYNAPTICS: synaptics_open %s failed\n", name); return B_ERROR; } @@ -616,7 +604,8 @@ synaptics_close(void *_cookie) { synaptics_cookie *cookie = _cookie; - ps2_dev_command_timeout(cookie->dev, PS2_CMD_DISABLE, NULL, 0, NULL, 0, 150000); + ps2_dev_command_timeout(cookie->dev, PS2_CMD_DISABLE, NULL, 0, NULL, 0, + 150000); delete_packet_buffer(cookie->synaptics_ring_buffer); delete_sem(cookie->synaptics_sem); @@ -624,9 +613,8 @@ synaptics_close(void *_cookie) atomic_and(&cookie->dev->flags, ~PS2_FLAG_OPEN); atomic_and(&cookie->dev->flags, ~PS2_FLAG_ENABLED); - if(g_touchpad_info.capPassThrough){ - ps2_service_notify_device_removed(g_passthrough_dev); - } + if (gTouchpadInfo.capPassThrough) + ps2_service_notify_device_removed(gPassthroughDevice); TRACE("SYNAPTICS: close %s done\n", cookie->dev->name); return B_OK; @@ -667,7 +655,7 @@ synaptics_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) switch (op) { case MS_READ: TRACE("SYNAPTICS: MS_READ get event\n"); - if((status = get_synaptics_movment(cookie, &movement)) != B_OK) + if ((status = get_synaptics_movment(cookie, &movement)) != B_OK) return status; return user_memcpy(buffer, &movement, sizeof(movement)); case MS_IS_TOUCHPAD: @@ -676,9 +664,12 @@ synaptics_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) case MS_SET_TOUCHPAD_SETTINGS: TRACE("SYNAPTICS: MS_SET_TOUCHPAD_SETTINGS"); user_memcpy(&(cookie->settings), buffer, sizeof(touchpad_settings)); - cookie->movement_maker.scrolling_xStep = cookie->settings.scroll_xstepsize; - cookie->movement_maker.scrolling_yStep = cookie->settings.scroll_ystepsize; - cookie->movement_maker.scroll_acceleration = cookie->settings.scroll_acceleration; + cookie->movement_maker.scrolling_xStep + = cookie->settings.scroll_xstepsize; + cookie->movement_maker.scrolling_yStep + = cookie->settings.scroll_ystepsize; + cookie->movement_maker.scroll_acceleration + = cookie->settings.scroll_acceleration; return B_OK; default: TRACE("SYNAPTICS: unknown opcode: %ld\n", op); @@ -700,11 +691,11 @@ synaptics_handle_int(ps2_dev *dev) cookie->packet_index = 0; goto unhandled; } - if(cookie->packet_index == 0 && val >> 6 != 0x02){ + if (cookie->packet_index == 0 && val >> 6 != 0x02) { TRACE("SYNAPTICS: first package begins not with bit 1, 0\n"); goto unhandled; } - if(cookie->packet_index == 3 && val >> 6 != 0x03){ + if (cookie->packet_index == 3 && val >> 6 != 0x03) { TRACE("SYNAPTICS: third package begins not with bit 1, 1\n"); cookie->packet_index = 0; goto unhandled; @@ -712,32 +703,33 @@ synaptics_handle_int(ps2_dev *dev) cookie->packet_buffer[cookie->packet_index] = val; cookie->packet_index++; - if(cookie->packet_index >= 6){ + if (cookie->packet_index >= 6) { cookie->packet_index = 0; // check if package is a pass through package if true pass it // too the pass through interrupt handle - if(g_passthrough_dev->active - && g_passthrough_dev->handle_int != NULL - && IS_SYN_PT_PACKAGE(cookie->packet_buffer)) - { + if (gPassthroughDevice->active + && gPassthroughDevice->handle_int != NULL + && IS_SYN_PT_PACKAGE(cookie->packet_buffer)) { status_t status; - g_passthrough_dev->history[0].data = cookie->packet_buffer[1]; - g_passthrough_dev->handle_int(g_passthrough_dev); - g_passthrough_dev->history[0].data = cookie->packet_buffer[4]; - g_passthrough_dev->handle_int(g_passthrough_dev); - g_passthrough_dev->history[0].data = cookie->packet_buffer[5]; - status = g_passthrough_dev->handle_int(g_passthrough_dev); + gPassthroughDevice->history[0].data = cookie->packet_buffer[1]; + gPassthroughDevice->handle_int(gPassthroughDevice); + gPassthroughDevice->history[0].data = cookie->packet_buffer[4]; + gPassthroughDevice->handle_int(gPassthroughDevice); + gPassthroughDevice->history[0].data = cookie->packet_buffer[5]; + status = gPassthroughDevice->handle_int(gPassthroughDevice); - if(cookie->dev->packet_size == 4){ - g_passthrough_dev->history[0].data = cookie->packet_buffer[2]; - status = g_passthrough_dev->handle_int(g_passthrough_dev); + if (cookie->dev->packet_size == 4) { + gPassthroughDevice->history[0].data = cookie->packet_buffer[2]; + status = gPassthroughDevice->handle_int(gPassthroughDevice); } return status; } - if (packet_buffer_write(cookie->synaptics_ring_buffer, cookie->packet_buffer, cookie->dev->packet_size) != cookie->dev->packet_size) { + if (packet_buffer_write(cookie->synaptics_ring_buffer, + cookie->packet_buffer, cookie->dev->packet_size) + != cookie->dev->packet_size) { // buffer is full, drop new data return B_HANDLED_INTERRUPT; } @@ -757,7 +749,7 @@ synaptics_disconnect(ps2_dev *dev) { synaptics_cookie *cookie = dev->cookie; // the mouse device might not be opened at this point - INFO("ps2: ps2_standart_mouse_disconnect %s\n", dev->name); + INFO("SYNAPTICS: synaptics_disconnect %s\n", dev->name); if (dev->flags & PS2_FLAG_OPEN) release_sem(cookie->synaptics_sem); } diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.c b/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.c index a10e93d8b3..8fc95c2118 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.c @@ -4,21 +4,23 @@ #include "kb_mouse_driver.h" #include "ps2_trackpoint.h" -const char* kTrackpointPath[4] = {"input/mouse/ps2/ibm_trackpoint_0", - "input/mouse/ps2/ibm_trackpoint_1", - "input/mouse/ps2/ibm_trackpoint_2", - "input/mouse/ps2/ibm_trackpoint_3"}; +const char* kTrackpointPath[4] = { + "input/mouse/ps2/ibm_trackpoint_0", + "input/mouse/ps2/ibm_trackpoint_1", + "input/mouse/ps2/ibm_trackpoint_2", + "input/mouse/ps2/ibm_trackpoint_3" +}; status_t -probe_trackpoint(ps2_dev *dev) +probe_trackpoint(ps2_dev* dev) { uint8 val[2]; TRACE("TRACKPOINT: probe\n"); ps2_dev_command(dev, 0xE1, NULL, 0, val, 2); - if(val[0] != 0x01){ + if (val[0] != 0x01) { TRACE("TRACKPOINT: not found\n"); return B_ERROR; } diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.h b/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.h index 2ac7e5e099..e3e8e2b5e9 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.h +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_trackpoint.h @@ -1,5 +1,5 @@ -#ifndef SYNAPTICS_H -#define SYNAPTICS_H +#ifndef TRACKPOINT_H +#define TRACKPOINT_H #include @@ -9,4 +9,4 @@ status_t probe_trackpoint(ps2_dev *dev); -#endif +#endif /* TRACKPOINT_H */