I'll explain the rationale behind the code inline. Let's see if that helps or not.
Ping On Fri, Jan 7, 2011 at 7:49 AM, Chris Bagwell <[email protected]> wrote: > The following area of code in wcmCommon.c seems suspicious to me: > > if (!priv->oldProximity) > priv->minPressure = filtered.pressure; > else > priv->minPressure = min(priv->minPressure, > filtered.pressure); minPressure is the minum pressure we get from the tool. In theory, it should be 0. However, after the tool used heavily, i.e., hard pressure applied often, the tip would "register" an initial pressure (this could be Andrew's case). This initial pressure needs to be considered otherwise users don't get a click or press with the default threshold set. The above code is to check for the smallest pressure we got so far. > /* normalize pressure to FILTER_PRESSURE_RES */ > tmpP = (filtered.pressure - priv->minPressure) > * FILTER_PRESSURE_RES; > tmpP /= (common->wcmMaxZ - priv->minPressure); > filtered.pressure = (int)tmpP; This chunk is only to apply the formula in two steps instead of one. The formula is: normP = (currentP - minP) * NOMP / (maxP - minP). > The whole block is in a feedback loop as best I can tell. The logic > is invoked every time a package is received from HW; even if pressure > does not change in the packet. So we can normalizing pressure values > that have already been normalized which would explain it being scaled > to high. The filtered.pressure in the first block was from the device. So, it is raw. The filtered.pressure after the second block is normalized. This value never goes back to the first block. So, there is no loop back for filtered.pressure. The potential changing factor is only minPressure. > Another concern is that in first tmpP statement, it acts like > minPressure is un-normalized and in second tmpP statement, it acts > like minPressure is already normalized. I would think that has some > side affect on outcome as well. We do not normalize minPressure. minPressure is only used as a parameter for normalization. > I see no pressure issues in my usage of Bamboo but perhaps its > pressure range is same as FILTER_PRESSURE_RES and so hides problems. No, Bamboo has a pressure range of 0 - 511 (I think). FILTER_PRESSURE_RES is 2048, which is at Intuos4 max. Good guess though ;). Ping ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Linuxwacom-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
