<phyphox xmlns="http://phyphox.org/xml" xmlns:editor="http://phyphox.org/editor/xml" version="1.7" editor:version="1.0" locale="">
    <title>MI : HID Mouse and Intensity</title>
    <category>Bluetooth</category>
    <description>A generic HID mouse in boot protocol mode + Intensity of 
    SensorTag. Attention times are differents having different intervals. 
    </description>
    <data-containers>
        <container size="1" static="false">last</container>
        <container size="1000" static="false">new</container>
        <container size="1000" static="false">newInt</container>
        <container size="1000" static="false">newInt+last</container>
        <container size="1" static="false">count</container>
        <container size="0" static="false">dx</container>
        <container size="0" static="false">dy</container>
        <container size="1000" static="false">-dy</container>
        <container size="0" static="false">t</container>
        <container size="0" init="0" static="false">x</container>
        <container size="0" init="0" static="false">y</container>
        <container size="1" static="false">count (1)</container>
        <container size="1" static="false">last (1)</container>
        <container size="1" static="false">count (2)</container>
        <container size="1000" static="false">new (1)</container>
        <container size="1" static="false">count (3)</container>
        <container size="1000" static="false">newInt (1)</container>
        <container size="1000" static="false">newInt+last (1)</container>
        <container size="0" static="false">RawInt</container>
        <container size="0" static="false">e</container>
        <container size="0" static="false">m</container>
        <container size="0" static="false">LUX</container>
        <container size="1" static="false">countI</container>
        <container size="1" static="false">tmax</container>
        <container size="0" static="false">time</container>
        <container size="0" static="false">factor</container>
    </data-containers>
    <input>
        <bluetooth uuid="00001812-0000-1000-8000-00805f9b34fb" mode="notification" rate="1" subscribeOnStart="false">
            <config char="00002A4e-0000-1000-8000-00805F9B34FB" conversion="hexadecimal">00</config>
            <output char="00002A33-0000-1000-8000-00805F9B34FB" conversion="int8" offset="1" length="1">dx</output>
            <output char="00002A33-0000-1000-8000-00805F9B34FB" conversion="int8" offset="2" length="1">-dy</output>
            <output char="00002A33-0000-1000-8000-00805F9B34FB" conversion="string" extra="time">t</output>
        </bluetooth>
        <bluetooth id="Optical sensor" name="SensorTag"  mode="notification" rate="1" subscribeOnStart="false">
            <config char="F000AA73-0451-4000-B000-000000000000" conversion="hexadecimal">50</config>
            <config char="F000AA72-0451-4000-B000-000000000000" conversion="hexadecimal">01</config>
            <output char="F000AA71-0451-4000-B000-000000000000" conversion="uInt16LittleEndian" offset="0" length="2">RawInt</output>
        </bluetooth>
    </input>
    <output>
    </output>
    <analysis sleep="0"  onUserInput="false">
        <multiply editor:uuid="691">
            <input as="factor">-dy</input>
            <input as="factor" type="value">-1</input>
            <output as="product" clear="false">dy</output>
        </multiply>
        <append editor:uuid="692">
            <input as="in" clear="false">x</input>
            <output as="out">last</output>
        </append>
        <count editor:uuid="693">
            <input as="buffer" clear="false">x</input>
            <output as="count">count</output>
        </count>
        <subrange editor:uuid="694">
            <input as="in" clear="false">dx</input>
            <input as="from">count</input>
            <output as="out">new</output>
        </subrange>
        <count editor:uuid="695">
            <input as="buffer" clear="false">new</input>
            <output as="count">count (1)</output>
        </count>
        <integrate editor:uuid="696">
            <input as="in">new</input>
            <output as="out">newInt</output>
        </integrate>
        <add editor:uuid="697">
            <input as="summand">newInt</input>
            <input as="summand">last</input>
            <output as="sum">newInt+last</output>
        </add>
        <if editor:uuid="698" less="false" equal="false" greater="true">
            <input as="a">count (1)</input>
            <input as="b" type="value">0</input>
            <input as="true">newInt+last</input>
            <output as="result" clear="false">x</output>
        </if>
        <append editor:uuid="699">
            <input as="in" clear="false">y</input>
            <output as="out">last (1)</output>
        </append>
        <count editor:uuid="700">
            <input as="buffer" clear="false">y</input>
            <output as="count">count (2)</output>
        </count>
        <subrange editor:uuid="701">
            <input as="in" clear="false">dy</input>
            <input as="from">count (2)</input>
            <output as="out">new (1)</output>
        </subrange>
        <count editor:uuid="702">
            <input as="buffer" clear="false">new (1)</input>
            <output as="count">count (3)</output>
        </count>
        <integrate editor:uuid="703">
            <input as="in">new (1)</input>
            <output as="out">newInt (1)</output>
        </integrate>
        <add editor:uuid="704">
            <input as="summand">newInt (1)</input>
            <input as="summand">last (1)</input>
            <output as="sum">newInt+last (1)</output>
        </add>
        <if editor:uuid="705" less="false" equal="false" greater="true">
            <input as="a">count (3)</input>
            <input as="b" type="value">0</input>
            <input as="true">newInt+last (1)</input>
            <output as="result" clear="false">y</output>
        </if>
        <formula formula="floor([1_]/4096)">
            <input as="in" clear="false">RawInt</input>
            <output as="out">e</output>
        </formula>
        <formula formula="[2_]-[1_]*4096">
            <input as="in" clear="false">e</input>
            <input as="in" clear="false">RawInt</input>
            <output as="out">m</output>
        </formula>
        <power>
            <input as="base" type="value">2</input>
            <input as="exponent" clear="false">e</input>
            <output as="power">factor</output>
        </power>
        <formula formula="[2_]*(0.01*[1_])">
            <input as="in" clear="false">factor</input>
            <input as="in" clear="false">m</input>
            <output as="out">LUX</output>
        </formula>
        <count>
            <input as="buffer" clear="false">RawInt</input>
            <output as="count">countI</output>
        </count>
        <formula formula="([1]-1)*0.8">
            <input as="in" clear="false">countI</input>
            <output as="out">tmax</output>
        </formula>
        <ramp>
            <input as="start" type="value">0</input>
            <input as="stop">tmax</input>
            <input as="length">countI</input>
            <output as="out">time</output>
        </ramp>
    </analysis>
    <views>
        <view label="Distance">
            <graph editor:uuid="712" label="Light Intensity" aspectRatio="2.5" style="lines" lineWidth="1" color="ff7e22" partialUpdate="true" history="1" labelX="t" labelY="x" labelZ="" unitX="s" unitY="a.u." unitZ="" logX="false" logY="false" logZ="false" xPrecision="3" yPrecision="3" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0"       >
                <input axis="x">time</input>
                <input axis="y">LUX</input>
            </graph>
            <graph editor:uuid="713" label="Integrated Distance y" aspectRatio="2.5" style="lines" lineWidth="1" color="ff7e22" partialUpdate="true" history="1" labelX="t" labelY="y" labelZ="" unitX="s" unitY="a.u." unitZ="" logX="false" logY="false" logZ="false" xPrecision="3" yPrecision="3" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0"       >
                <input axis="x">t</input>
                <input axis="y">y</input>
            </graph>
            <info editor:uuid="714" label="Avoid rotating the mouse! Rotations cannot be recognized and it is impossible to calculate the total distance when axes change due to the rotation." >
            </info>
        </view>
        <view label="Position 2D">
            <graph editor:uuid="715" label="Integrated Position" aspectRatio="1" style="lines" lineWidth="1" color="ff7e22" partialUpdate="false" history="1" labelX="x" labelY="y" labelZ="" unitX="a.u." unitY="a.u." unitZ="" logX="false" logY="false" logZ="false" xPrecision="3" yPrecision="3" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0"       >
                <input axis="x">x</input>
                <input axis="y">y</input>
            </graph>
            <info editor:uuid="716" label="Avoid rotating the mouse! Rotations cannot be recognized and it is impossible to calculate the total distance when axes change due to the rotation." >
            </info>
        </view>
        <view label="Raw Data">
            <graph editor:uuid="717" label="Reported Differences x" aspectRatio="2.5" style="lines" lineWidth="1" color="ff7e22" partialUpdate="true" history="1" labelX="t" labelY="x" labelZ="" unitX="s" unitY="a.u." unitZ="" logX="false" logY="false" logZ="false" xPrecision="3" yPrecision="3" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0"       >
                <input axis="x">t</input>
                <input axis="y">dx</input>
            </graph>
            <graph editor:uuid="718" label="Reported Differences y" aspectRatio="2.5" style="lines" lineWidth="1" color="ff7e22" partialUpdate="true" history="1" labelX="t" labelY="y" labelZ="" unitX="s" unitY="a.u." unitZ="" logX="false" logY="false" logZ="false" xPrecision="3" yPrecision="3" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0"       >
                <input axis="x">t</input>
                <input axis="y">dy</input>
            </graph>
            <info editor:uuid="719" label="Mice do not report absolute position, but differences. These do not necessarily represent velocity as they may be reported over different time intervals." >
            </info>
        </view>
        <view label="Raw 2D">
            <graph editor:uuid="720" label="Reported Differences" aspectRatio="1" style="lines" lineWidth="1" color="ff7e22" partialUpdate="false" history="1" labelX="x" labelY="y" labelZ="" unitX="a.u." unitY="a.u." unitZ="" logX="false" logY="false" logZ="false" xPrecision="3" yPrecision="3" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0"       >
                <input axis="x">dx</input>
                <input axis="y">dy</input>
            </graph>
            <info editor:uuid="721" label="Mice do not report absolute position, but differences. These do not necessarily represent velocity as they may be reported over different time intervals." >
            </info>
        </view>
	<view label="Values">
            <value label="X distance" size="2" precision="3" scientific="true" unit="a.u." factor="1" >
                <input>x</input>
            </value>
            <value label="Y distance" size="2" precision="3" scientific="true" unit="a.u." factor="1" >
                <input>y</input>
            </value>
            <value label="Intensity" size="2" precision="2" scientific="false" unit="LUX" factor="1" color="ff0000">
                <input>LUX</input>
            </value>
	</view>
    </views>
    <export>
        <set name="Mouse data">
            <data name="Time (s)">t</data>
            <data name="dx (a.u.)">dx</data>
            <data name="dy (a.u.)">dy</data>
            <data name="x (a.u.)">x</data>
            <data name="y (a.u.)">y</data>
        </set>
        <set name="TestIntensity">
            <data name="time (s)">time</data>
            <data name="Intensity (LUX)">LUX</data>
            <data name="RawInt">RawInt</data>
            <data name="factor">factor</data>
        </set>
    </export>
</phyphox>
