<mxfile host="Electron" agent="AI-Drawio-Replicator">
  <diagram id="page-1" name="传感器OPS架构">
    <mxGraphModel dx="2020" dy="1975" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#ffffff" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0f7ff;strokeColor=#2b579a;strokeWidth=2;fontSize=14;fontFamily=Times New Roman;" value="&lt;div style=&quot;display:flex;align-items:center;justify-content:center;gap:20px;font-size:24px;font-weight:bold;&quot;&gt;&lt;div style=&quot;font-size:48px;color:#2b579a;&quot;&gt;👤&lt;/div&gt;&lt;div&gt;调用者 / 上层&lt;br&gt;&lt;span style=&quot;font-size:18px;font-weight:normal;&quot;&gt;（只认识 sensor_ops）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="120" width="620" x="270" y="90" as="geometry" />
        </mxCell>
        <mxCell id="3" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0f9f9;strokeColor=#2385bb;strokeWidth=3;fontSize=14;fontFamily=Times New Roman;" value="&lt;div style=&quot;display:flex;align-items:center;justify-content:center;gap:20px;font-size:28px;font-weight:bold;&quot;&gt;&lt;div style=&quot;font-size:48px;color:#2385bb;&quot;&gt;🏷️&lt;/div&gt;&lt;div&gt;ops 句柄&lt;br&gt;&lt;span style=&quot;font-size: 22px; font-weight: normal;&quot;&gt;{ init, read, close }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="120" width="380" x="390" y="340" as="geometry" />
        </mxCell>
        <mxCell id="4" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0f7ff;strokeColor=#2b579a;strokeWidth=2;fontSize=14;fontFamily=Times New Roman;" value="&lt;div style=&quot;display:flex;align-items:center;justify-content:center;gap:15px;font-size:22px;font-weight:bold;&quot;&gt;&lt;div style=&quot;font-size:48px;color:#2b579a;&quot;&gt;🌡️&lt;/div&gt;&lt;div&gt;温度传感器&lt;br&gt;&lt;span style=&quot;font-size: 18px; font-weight: normal;&quot;&gt;temp_read()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="100" width="250" x="210" y="620" as="geometry" />
        </mxCell>
        <mxCell id="5" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f0f7ff;strokeColor=#2b579a;strokeWidth=2;fontSize=14;fontFamily=Times New Roman;" value="&lt;div style=&quot;display:flex;align-items:center;justify-content:center;gap:15px;font-size:22px;font-weight:bold;&quot;&gt;&lt;div style=&quot;font-size:48px;color:#2b579a;&quot;&gt;🔲&lt;/div&gt;&lt;div&gt;加速度传感器&lt;br&gt;&lt;span style=&quot;font-size: 18px; font-weight: normal;&quot;&gt;accel_read()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="100" width="250" x="700" y="620" as="geometry" />
        </mxCell>
        <mxCell id="6" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Times New Roman;" value="&lt;div style=&quot;font-size:20px;color:#2b579a;font-weight:bold;&quot;&gt;接口边界&lt;/div&gt;" vertex="1">
          <mxGeometry height="30" width="120" x="860" y="385" as="geometry" />
        </mxCell>
        <mxCell id="7" edge="1" parent="1" style="endArrow=none;html=1;strokeColor=#2b579a;strokeWidth=2;dashed=1;dashPattern=4 4;fontFamily=Times New Roman;startArrow=block;startFill=1;endFill=0;" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="790" y="399.58" as="sourcePoint" />
            <mxPoint x="870" y="399.58" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="8" edge="1" parent="1" source="2" style="endArrow=classic;html=1;strokeColor=#1a365d;strokeWidth=3;labelPosition=top;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontFamily=Times New Roman;" target="3" value="&lt;div style=&quot;font-size: 20px;&quot;&gt;ops-&amp;gt;read(ctx, &amp;amp;v)&lt;/div&gt;">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="580" y="210" as="sourcePoint" />
            <mxPoint x="580" y="340" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9" edge="1" parent="1" style="html=1;strokeColor=#1a365d;strokeWidth=3;fontFamily=Times New Roman;" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="580" y="460" as="sourcePoint" />
            <mxPoint x="580" y="540" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="10" parent="1" style="ellipse;whiteSpace=wrap;html=1;fillColor=#1a365d;strokeColor=#1a365d;strokeWidth=2;fontFamily=Times New Roman;" value="" vertex="1">
          <mxGeometry height="20" width="20" x="570" y="535" as="geometry" />
        </mxCell>
        <mxCell id="11" edge="1" parent="1" style="endArrow=classic;html=1;strokeColor=#1a365d;strokeWidth=3;edgeStyle=orthogonalEdgeStyle;rounded=0;curved=0;fontFamily=Times New Roman;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="4" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="580" y="545" as="sourcePoint" />
            <mxPoint x="325" y="620" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="12" edge="1" parent="1" style="endArrow=classic;html=1;strokeColor=#1a365d;strokeWidth=3;rounded=0;edgeStyle=orthogonalEdgeStyle;fontFamily=Times New Roman;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="5" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="580" y="545" as="sourcePoint" />
            <mxPoint x="835" y="620" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="13" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;labelBackgroundColor=#ffffff;fontFamily=Times New Roman;" value="&lt;div style=&quot;font-size:18px;&quot;&gt;函数指针实际指向&lt;/div&gt;" vertex="1">
          <mxGeometry height="30" width="200" x="630" y="500" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
