Skip to content
English
  • There are no suggestions because the search field is empty.

.Touch-Sensor-v1.0

Customer Documentation

Customer Documentation: Neonode® Touch Sensor Module User's Guide : .Touch Sensor v1.0

Customer Documentation: Neonode® Touch Sensor Module User's Guide : .Touch Sensor v1.0

There are a number of different touch sensor products that can co-exist on the same physical device. There are some product-specific commands, but the ones listed here are general.

The zForce AIR Touch Sensor will be used as example, which means the device address will be that of the first zForce Air virtual device

address
'0200'H

Operation Mode

The operationMode command sets what processing to perform on sensor signals, and what diagnostics that are exposed.

The following example sets the operation mode to normal object detection:

request command
  operationMode {    detection TRUE,    signals FALSE,    ledLevels FALSE,    detectionHid FALSE,    gestures FALSE  }
command response
  operationMode {    detection TRUE,    signals FALSE,    ledLevels FALSE,    detectionHid FALSE  }

As can be seen gestures are missing in the response. This is a valid response, since the device is built with a subset of the protocol, or an older forward-compatible version.


Touch Format

The touchFormat command retrieves the binary format of the detected objects. 

request command
  touchFormat {  }
command response
  touchFormat {    touchDescriptor { id, event, loc-x-byte1, loc-x-byte2, loc-y-byte1, loc-y-byte2, size-x-byte1, size-y-byte1 }  }

The touchDescriptor is a bit string, where each bit signifies one byte of payload being included in the touchNotification octet strings. A touchNotification is the concatenation of those bytes. The following table lists all bits. Bits used in the example are marked green.

Location and size coordinates can be specified with up to 3 bytes. The byte order in decreasing significance - big-endian. For example:

  • 1 byte: location x = loc-x-byte1
  • 2 bytes: location x = (loc-x-byte1 << 8) + loc-x-byte2
  • 3 bytes: location x = (loc-x-byte1 << 16) + (loc-x-byte2 << 8) + loc-x-byte3

Location is signed, and size is not.

The location coordinate scale is one of two systems, depending on which detector is used:

  • Physical: Robair Air and Core detectors: The unit is 0.1 mm. A coordinate value of 463 thus means 46.3 mm from origin.
  • Relative: Triangles and Shape Air detectors: Fraction of the largest screen dimension as fixed point with 14 bits after the radix point (q14). On a widescreen display, the horizontal axis ranges [0, 214[, and vertical [0, 214 * 9/16[ ([0, 16383], [0, 9215]).

The zForce AIR Touch Sensor uses Robair, thus the unit is 0.1 mm.

Size is in mm.

Confidence and pressure are fractions of the full values, in percent.

Enable Execution

The enable command activates the touch sensor, and notifications of detections start to stream.

request command
  enable {    enable 0  }
command response
  enable {    enable  }


To deactivate the touch sensor, send the disable command:

request command
  enable {    disable NULL  }
command response
  enable {    disable NULL  }

Touch Notifications

A detected object is reported with a touchNotification. The touchNotification payload is a touchDescriptor bit string. Every concurrently tracked object is represented by its own touchNotification payload.

notification
notificationMessage touchNotifications: {    '0001013600730A0A64'H  },

The following table shows the value of the example payload interpreted with the touch descriptor.  

The touchNotification is from a Core device and translates to "Object 0 moved. Location is (31.0, 11.5) mm. Size is 10x10 mm."

Information

The command deviceInformation retrieves some information about the virtual device instance.

request command
  deviceInformation {  }
command response
  deviceInformation {    deviceInstanceInformation {      productVersionMajor 1,      productVersionMinor 38,      physicalWidth 1584,      physicalHeight 1341,      numberOfSignalAxes 0    }  }

The response contains the deviceInstanceInformation structure, with the following parts:

Configuration

Some configurations of the touch sensor device can be changed at run-time. The deviceConfiguration request command and command response are identical, except some configuration items in the request may be omitted in order to leave them in their current state.

For instance, to set object size restrictions only, omit all other items:


request command
  deviceConfiguration {    sizeRestriction {      maxSizeEnabled TRUE,      maxSize 100,      minSizeEnabled FALSE    }  }

The command response contains the state of all configuration items:

command response
  deviceConfiguration {    subTouchActiveArea {      lowBoundX 0,      lowBoundY 0,      highBoundX 1584,      highBoundY 1341,      reverseX FALSE,      reverseY FALSE,      flipXY FALSE,      offsetX 0,      offsetY 0    },    sizeRestriction {      maxSizeEnabled FALSE,      maxSize 0,      minSizeEnabled FALSE,      minSize 0    },    detectionMode default,    numberOfReportedTouches 2,    hidDisplaySize {      x 1584,      y 1341    }  }

The items are:

  • subTouchActiveArea: Crop the touch sensor to a rectangle between the specified low and high coordinates in each dimension. Offset can be applied and flip the X and Y axis. Origin of reported locations is set to low coordinates, or if reversed, the high coordinate with increasing coordinates toward low.
  • sizeRestriction: Limit detection to objects within this size range. Unit is 0.1 mm.
  • detectionMode, one of the following:
    • default: finger and stylus
    • finger: Finger only
    • mergeTouches: Merges all touch objects into one
    • insensitiveFTIR: Unsupported
  • numberOfReportedTouches: Maximum number of reported tracked objects.
  • hidDisplaySize: Scaling the coordinate system when using the sensor in HID Touch Digitizer mode.