<!-- mIv 5 Dec 2020 -->
<phyphox locale="en" version="1.7">
    <title>Light intensity and orientation (accelerometers)</title>
    <category>Texas Instruments SensorTag</category>
    <icon>POL</icon>
    <description>Light intensity and orientation are measured using optical sensor and 3 accelerometers of     CC2650 Sensor Tag by Texas Instruments.
The interval between measurements is set 0.8s (default for optical sensor, otherwise peaks to 0 observed). 
Can be used for angular dependence of the light intensity.</description>
    <data-containers>
        <container size="1" static="false">RawInt</container> <!-- Raw from light sensor -->
        <container size="1" static="false">count</container>
        <container size="1" static="false">time</container>
        <container size="0" static="false">TIME</container>
        <container size="1" static="false">AxRaw</container>
        <container size="1" static="false">AyRaw</container>
        <container size="1" static="false">AzRaw</container>
        <container size="1" static="false">Ax</container>
        <container size="1" static="false">Ay</container>
        <container size="1" static="false">Az</container>
        <container size="0" static="false">aX</container>
        <container size="0" static="false">aY</container>
        <container size="0" static="false">aZ</container>
        <container size="1" static="false">phi</container> <!-- Rotation in x,y plane -->
        <container size="0" static="false">PHI</container>
        <!-- For the light illuminance conversion -->
        <container size="1" static="false">e</container>
        <container size="1" static="false">m</container>
        <container size="1" static="false">factor</container>
        <container size="1" static="false">lux</container>
        <container size="0" static="false">LUX</container>
    </data-containers>
    <input>
	<!-- Optical Sensor -->
        <bluetooth name="SensorTag"  mode="notification" rate="1" subscribeOnStart="false">
            <config char="F000AA72-0451-4000-B000-000000000000" conversion="hexadecimal">01</config>
            <config char="F000AA73-0451-4000-B000-000000000000" conversion="hexadecimal">50</config> <!-- 0.8 sec -->
            <output char="F000AA71-0451-4000-B000-000000000000" conversion="uInt16LittleEndian" offset="0" length="2">RawInt</output>
        </bluetooth>
	<!-- Motion sensor, 3 accelerations only -->
        <bluetooth name="SensorTag"  mode="notification" rate="1" subscribeOnStart="false">
            <config char="F000AA82-0451-4000-B000-000000000000" conversion="hexadecimal">3800</config>
            <config char="F000AA83-0451-4000-B000-000000000000" conversion="hexadecimal">50</config>  <!-- also 0.8 sec -->
            <output char="F000AA81-0451-4000-B000-000000000000" conversion="int16LittleEndian" offset="6" length="2">AxRaw</output>
            <output char="F000AA81-0451-4000-B000-000000000000" conversion="int16LittleEndian" offset="8" length="2">AyRaw</output>
            <output char="F000AA81-0451-4000-B000-000000000000" conversion="int16LittleEndian" offset="10" length="2">AzRaw</output>
        </bluetooth>
    </input>
    <output>
    </output>
    <analysis sleep="0"  onUserInput="false">

        <multiply>
            <input as="factor" clear="true">AxRaw</input>
            <input as="factor" type="value">0.0005985504</input>
            <output as="product">Ax</output>
        </multiply>
        <multiply>
            <input as="factor" clear="true">AyRaw</input>
            <input as="factor" type="value">0.0005985504</input>
            <output as="product">Ay</output>
        </multiply>
        <multiply>
            <input as="factor" clear="true">AzRaw</input>
            <input as="factor" type="value">0.0005985504</input>
            <output as="product">Az</output>
        </multiply>

        <!-- Transformation of RawInt to LUX -->
        <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="true">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>
        <append>
            <input as="in" clear="false">LUX</input>
            <input as="in" clear="true">lux</input>
            <output as="out">LUX</output>
        </append>

        <!-- Time from LUX (optical sensor) -->
        <count>
            <input as="buffer" clear="false">LUX</input>
            <output as="count">count</output>
        </count>
        <formula formula="([1]-1)*0.8">
            <input as="in" clear="false">count</input>
            <output as="out">time</output>
        </formula>
        <ramp>
            <input as="start" type="value">0</input>
            <input as="stop">time</input>
            <input as="length">count</input>
            <output as="out">TIME</output>
        </ramp>

        <!-- Angles -->
        <formula formula="atan2([1],[2])*180/3.14">
            <input as="in" clear="false">Ay</input>
            <input as="in" clear="false">Ax</input>
            <output as="out">phi</output>
        </formula>
        <append>
            <input as="in" clear="false">PHI</input>
            <input as="in" clear="true">phi</input>
            <output as="out">PHI</output>
        </append>

        <append>
            <input as="in" clear="false">aX</input>
            <input as="in" clear="true">Ax</input>
            <output as="out">aX</output>
        </append>
        <append>
            <input as="in" clear="false">aY</input>
            <input as="in" clear="true">Ay</input>
            <output as="out">aY</output>
        </append>
        <append>
            <input as="in" clear="false">aZ</input>
            <input as="in" clear="true">Az</input>
            <output as="out">aZ</output>
        </append>

    </analysis>

    <views>
        <view label="Polarization">
            <graph label="I(phi)" aspectRatio="2.5" style="dots" lineWidth="1" color="ff7e22" partialUpdate="true" history="1" labelX="angle" labelY="I" labelZ="" unitX="°" unitY="LUX" 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">PHI</input>
                <input axis="y">LUX</input>
            </graph>
            <value label="phi" size="2" precision="2" scientific="false" unit="°" factor="1" >
                <input>PHI</input>
            </value>
            <value label="Illum." size="2" precision="2" scientific="false" unit="LUX" factor="1" >
                <input>LUX</input>
            </value>
            <value label="time" size="2" precision="1" scientific="false" unit="s" factor="1" >
                <input>TIME</input>
            </value>
        </view>

        <view label="Accelerometer">
            <value label="aX" size="2" precision="2" scientific="false" unit="m/s²" factor="1" >
                <input>aX</input>
            </value>
            <value label="aY" size="2" precision="2" scientific="false" unit="m/s²" factor="1" >
                <input>aY</input>
            </value>
            <value label="aZ" size="2" precision="2" scientific="false" unit="m/s²" factor="1" >
                <input>aZ</input>
            </value>
        </view>
    </views>
    <export>
        <set name="Data_tIAxyz">
            <data name="time (s)">TIME</data>
            <data name="Illum (LUX)">LUX</data>
            <data name="phi (deg)">PHI</data>
            <data name="acc X (m/s^2)">aX</data>
            <data name="acc Y (m/s^2)">aY</data>
            <data name="acc Z (m/s^2)">aZ</data>
        </set>
    </export>
</phyphox>
