<!-- Show pressure from Arduino Nano 33 BLE sense
     and CC2650 Sensor Tag of Texas Instrument:
     in hPa.
     mIv Fev 13, 2021 -->
<phyphox version="1.7" locale="en"> 
    <title>Pressure from Arduino and SensorTag</title>
    <category>Arduino Experiments</category>
    <description>
        Show pressure from Arduino Nano 33 BLE sense and CC2650 Sensor Tag of Texas Instrument in hPa. The measurement rate is fastest for the Sensor Tag (100 ms).
    </description>

    <icon>ASB</icon> <!-- Arduino nano Sensor tag BAr -->
    <color>red</color>

    <data-containers>
<!-- BLE channels -->
	    <container size="0" static="false" init="">pressure</container> <!-- CH1, hPa -->
	    <container size="0" static="false" init="">time</container> <!-- CH0 -->

            <container size="0" static="false" init="">relative</container>

<!-- Sensor Tag -->
        <container size="0" static="false">t</container>
        <container size="1" static="false">count</container>
        <container size="1" static="false">tmax</container>
        <container size="0" static="false">pRaw</container>
        <container size="0" static="false">pCal</container>
    </data-containers>

    <input> 
        <!-- From Arduino using phyphox BLE -->
        <bluetooth name="phyphox" mode="notification" rate="1" subscribeOnStart="false" id="Sense">
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="0">pressure</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" extra="time">time</output>
        </bluetooth>

        <!-- Sensor Tag -->
        <bluetooth id="Pressure/Temperature" name="SensorTag"  mode="notification" rate="1" subscribeOnStart="false">
        <!-- Measurement rate set to maximum = 100 ms (0A) -->
            <config char="F000AA44-0451-4000-B000-000000000000" conversion="hexadecimal">0A</config>
            <config char="F000AA42-0451-4000-B000-000000000000" conversion="hexadecimal">01</config>
            <output char="F000AA41-0451-4000-B000-000000000000" conversion="uInt24LittleEndian" offset="3" length="3">pRaw</output>
        </bluetooth>
    </input>

    <output>
    </output>

  <views>
    <view label="Arduino and SensorTag">
           <graph label="Pressure" aspectRatio="2.5" style="lines" lineWidth="1" partialUpdate="true" history="1" labelX="t" labelY="p" labelZ="" unitX="s" unitY="hPa" unitZ="" logX="false" xPrecision="3" yPrecision="6" 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" color="blue">time</input>
                <input axis="y">relative</input>
                <input axis="x" color="red">t</input>
                <input axis="y">pCal</input>
            </graph>

      <value label="Arduino pressure" size="1" precision="2" unit="hPa" color="blue">
        <input>relative</input>
      </value>
      <value label="SensorTag pressure" size="1" precision="2" unit="hPa" color="red">
        <input>pCal</input>
      </value>

    </view>
  </views>

  <analysis sleep="0" onUserInput="false">
        <multiply>
            <input as="factor" type="value">0.01</input>
            <input as="factor" clear="false">pRaw</input>
            <output as="product">pCal</output>
        </multiply>

        <!-- Sensor Tag time is approximately determined using
             the measurement rate (100 ms) -->
        <count>
            <input as="buffer" clear="false">pRaw</input>
            <output as="count">count</output>
        </count>
        <formula formula="([1]-1)*0.1">
            <input as="in" clear="false">count</input>
            <output as="out">tmax</output>
        </formula>
        <ramp>
            <input as="start" type="value">0</input>
            <input as="stop">tmax</input>
            <input as="length">count</input>
            <output as="out">t</output>
        </ramp>

        <!-- Partial correction of Arduino pressure by -1.5 hPa relatively
             to SensorTag for better comparison on the graph. 
             Data are saved without this correction -->
        <subtract>
            <input clear="false">pressure</input>
            <input type="value">1.5</input>
            <output >relative</output>
        </subtract>
  </analysis>

        <!-- Saved raw data -->
  <export>
    <set name="Arduino_pressure">
      <data name="time (s)">time</data>
      <data name="p (hPa)">pressure</data>
    </set>
    <set name="SensorTag_pressure">
      <data name="time (s)">t</data>
      <data name="p (hPa)">pCal</data>
    </set>
  </export>

</phyphox>