docs/Architecture-signed-its.drawio (with a PNG export beside it, like Architecture2): PKI (today's demo chain, and dashed the future EU C-ITS path with the lab's registered root), the phone app's transmit and receive path, the USB-C and BLE links with their heartbeats, the ESP32-C5 firmware (link endpoints, session, signing through vanetza-idf with the key in NVS, the unsigned geonet.c path, radio and raw receive), the ITS-G5 air and the bench receivers (V2X2MAP with signature check, CiT One, RSU, sim car), and a legend of the station-link messages and recovery behaviour.
1 line
25 KiB
Plaintext
1 line
25 KiB
Plaintext
<mxfile host="app.diagrams.net" type="device"><diagram id="signed-its" name="Signed ITS architecture"><mxGraphModel dx="1600" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2150" pageHeight="850" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="title" value="<b>MicrOBU: signed ITS-G5 (CAM / VAM) with the ESP32-C5 station</b><br><font style="font-size:10px">Signing happens on the ESP32-C5. The phone builds the messages and sends time, position and data over USB-C or BLE.</font>" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=16;" vertex="1" parent="1"><mxGeometry x="330" y="0" width="1180" height="50" as="geometry"/></mxCell><mxCell id="k_demo" value="<b>Today: demo PKI (throwaway)</b><br><font style="font-size:10px">Demo Root 6E7D0374FB021901<br>→ Demo AA B3312F29844299E0<br>→ AT B80B49387A4C12EB<br>psid 36 (CAM, SSP 010000) + 638 (VAM, SSP 01)<br>Not EU-registered: EU verifiers drop it</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"><mxGeometry x="20" y="60" width="280" height="140" as="geometry"/></mxCell><mxCell id="k_real" value="<b>Future: real PKI (EU C-ITS CCMS)</b><br><font style="font-size:10px">ECTL / trust list<br>→ UML L0 Root CA (registered 2026-09-11,<br> colleague repo: pki/uml-l0-rca)<br>→ Enrolment Authority (EA)<br>→ Authorization Authority (AA)<br>→ pool of ATs (pseudonyms, short validity,<br> region + permissions)</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffe6cc;strokeColor=#d79b00;dashed=1;" vertex="1" parent="1"><mxGeometry x="20" y="240" width="280" height="170" as="geometry"/></mxCell><mxCell id="k_paths" value="<b>How real credentials reach the board</b><br><font style="font-size:10px">(a) Offline: bundle file (VCR1) issued by the<br> key holder → copied to the phone<br>(b) Online: TS 102 941 enrolment + authorization<br> from the phone (ECIES, HTTP to EA/AA),<br> renewing tickets before they expire<br>Both end in CREDENTIALS_PROVISION → NVS</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;dashed=1;" vertex="1" parent="1"><mxGeometry x="20" y="450" width="280" height="150" as="geometry"/></mxCell><mxCell id="phone" value="<b>Phone app (Android, MicrOBU)</b>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;arcSize=3;container=1;collapsible=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"><mxGeometry x="330" y="60" width="470" height="640" as="geometry"/></mxCell><mxCell id="p_sens" value="<b>Sensors</b><br><font style="font-size:10px">GNSS (fused location) + IMU</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="15" y="40" width="210" height="50" as="geometry"/></mxCell><mxCell id="p_time" value="<b>GnssTimeSource</b><br><font style="font-size:10px">phone clock → GNSS time<br>keeps last error indoors</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="245" y="40" width="210" height="50" as="geometry"/></mxCell><mxCell id="p_pseu" value="<b>PseudonymManager</b><br><font style="font-size:10px">station ID + MAC, rotated together</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="245" y="105" width="210" height="50" as="geometry"/></mxCell><mxCell id="p_loop" value="<b>CamTransmitLoop / CamPinger</b><br><font style="font-size:10px">CAM: 1 Hz baseline, faster on events<br>VAM: TS 103 300-3 clause 6.4 rules</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="15" y="105" width="210" height="70" as="geometry"/></mxCell><mxCell id="p_enc" value="<b>UPER encoders</b><br><font style="font-size:10px">CamUperCodec · VamUperCodec</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="15" y="195" width="210" height="50" as="geometry"/></mxCell><mxCell id="p_set" value="<b>Settings</b><br><font style="font-size:10px">link: USB-C / Bluetooth<br>transmit: CAM / VAM<br>sign outgoing: on / off</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="245" y="175" width="210" height="70" as="geometry"/></mxCell><mxCell id="p_cred" value="<b>Credentials</b><br><font style="font-size:10px">today: assets/demo-chain.vcr<br>future: bundle file or<br>TS 102 941 client</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="15" y="270" width="210" height="75" as="geometry"/></mxCell><mxCell id="p_link" value="<b>Esp32Link</b><br><font style="font-size:10px">session: configure, provision<br>PoTi per new fix (clock never back)<br>detects old / new firmware</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="245" y="270" width="210" height="75" as="geometry"/></mxCell><mxCell id="p_usb" value="<b>UsbSerialTransport</b><br><font style="font-size:10px">watchdog: no frame 3.5 s → ERROR</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="245" y="370" width="210" height="55" as="geometry"/></mxCell><mxCell id="p_ble" value="<b>BleLinkTransport</b><br><font style="font-size:10px">pair (passkey 123456), MTU 517<br>auto-reconnect with backoff</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="245" y="440" width="210" height="55" as="geometry"/></mxCell><mxCell id="p_rx" value="<b>Receive path</b><br><font style="font-size:10px">CamUseCaseRepository: CAM · DENM · SPATEM decode<br>use-case detection, own-TX loopback filter</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="15" y="515" width="440" height="50" as="geometry"/></mxCell><mxCell id="p_ui" value="<b>UI</b><br><font style="font-size:10px">connection card (link, passkey, signing counters) · V2X map · dashboard</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="phone"><mxGeometry x="15" y="580" width="440" height="45" as="geometry"/></mxCell><mxCell id="l_usb" value="<b>USB-C (native port)</b><br><font style="font-size:10px">USB Serial/JTAG, CDC-ACM<br>frames 0xAA55, type 0x10<br>STATUS every 1 s = heartbeat</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1"><mxGeometry x="830" y="400" width="180" height="80" as="geometry"/></mxCell><mxCell id="l_ble" value="<b>Bluetooth LE</b><br><font style="font-size:10px">GATT service 0000C175-…<br>encrypted + bonded<br>STATUS 1 s, 4 s supervision</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1"><mxGeometry x="830" y="495" width="180" height="80" as="geometry"/></mxCell><mxCell id="l_note" value="<b>Only one link at a time</b><br><font style="font-size:10px">BLE advertising pauses while USB is in use<br>(shared RF front end with ITS-G5)</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"><mxGeometry x="830" y="600" width="180" height="60" as="geometry"/></mxCell><mxCell id="esp" value="<b>ESP32-C5 (obu-firmware + external/vanetza-idf, ESP-IDF 6.0.2)</b>" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=4;fontSize=14;arcSize=3;container=1;collapsible=0;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1"><mxGeometry x="1040" y="60" width="560" height="640" as="geometry"/></mxCell><mxCell id="e_nvs" value="<b>NVS (80 KB)</b><br><font style="font-size:10px">root, AA, AT + private key<br>BLE bond</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="195" y="40" width="160" height="70" as="geometry"/></mxCell><mxCell id="e_sec" value="<b>Security entity</b><br><font style="font-size:10px">TS 103 097: signs with the<br>AT key (ECDSA P-256)</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="375" y="40" width="170" height="70" as="geometry"/></mxCell><mxCell id="e_geo" value="<b>geonet.c</b><br><font style="font-size:10px">unsigned GN SHB + BTP-B</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="15" y="160" width="160" height="60" as="geometry"/></mxCell><mxCell id="e_sta" value="<b>Station</b><br><font style="font-size:10px">config, ITS clock from PoTi<br>counters, DCC</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="195" y="160" width="160" height="65" as="geometry"/></mxCell><mxCell id="e_van" value="<b>vanetza-idf</b><br><font style="font-size:10px">BTP-B + GeoNetworking<br>SHB, secured</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="375" y="160" width="170" height="60" as="geometry"/></mxCell><mxCell id="e_radio" value="<b>C5Radio</b><br><font style="font-size:10px">802.11p, ch 180 = 5 900 MHz<br>20 dBm, promiscuous RX</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="375" y="280" width="170" height="70" as="geometry"/></mxCell><mxCell id="e_link" value="<b>LinkService</b><br><font style="font-size:10px">station-link v1<br>+ V2X_RX (0x85)<br>STATUS every second</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="195" y="290" width="160" height="150" as="geometry"/></mxCell><mxCell id="e_ser" value="<b>serial_link</b><br><font style="font-size:10px">native USB Serial/JTAG</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="15" y="365" width="160" height="55" as="geometry"/></mxCell><mxCell id="e_unwrap" value="<b>gn_unwrap.c (raw RX)</b><br><font style="font-size:10px">every frame, signed or not</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="375" y="400" width="170" height="60" as="geometry"/></mxCell><mxCell id="e_ble" value="<b>simple_ble</b><br><font style="font-size:10px">NimBLE GATT, micrOBU-XXXX</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="esp"><mxGeometry x="15" y="475" width="160" height="55" as="geometry"/></mxCell><mxCell id="e_con" value="<b>Console on UART0 (CH343, COM3)</b><br><font style="font-size:10px">logs, boot messages, task watchdog</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="esp"><mxGeometry x="15" y="565" width="530" height="50" as="geometry"/></mxCell><mxCell id="air" value="<b>ITS-G5 air</b><br><font style="font-size:10px">5.9 GHz, ch 180</font>" style="ellipse;whiteSpace=wrap;html=1;fontSize=11;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"><mxGeometry x="1650" y="320" width="160" height="110" as="geometry"/></mxCell><mxCell id="r_map" value="<b>V2X2MAP bridge (COM10)</b><br><font style="font-size:10px">decodes signed CAM / VAM<br>verify.py --trust: signature<br>verified / INVALID / not verified</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"><mxGeometry x="1870" y="60" width="240" height="85" as="geometry"/></mxCell><mxCell id="r_cit" value="<b>CiT One OBU</b><br><font style="font-size:10px">receives our signed CAMs<br>(MQTT v2x/rx, no security info)</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"><mxGeometry x="1870" y="175" width="240" height="70" as="geometry"/></mxCell><mxCell id="r_rsu" value="<b>RSU</b><br><font style="font-size:10px">CAM · SPATEM · MAPEM<br>signed under the EU PKI</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"><mxGeometry x="1870" y="560" width="240" height="65" as="geometry"/></mxCell><mxCell id="r_sim" value="<b>Sim car (obu-cam-transmistter)</b><br><font style="font-size:10px">unsigned CAM, ~3 Hz</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"><mxGeometry x="1870" y="645" width="240" height="55" as="geometry"/></mxCell><mxCell id="legend" value="<b>Station-link messages</b><br><font style="font-size:10px">phone → board: STATION_CONFIGURE (pseudonym MAC, starts radio) · CREDENTIALS_PROVISION (bundle, once) · POTI_UPDATE (position + ITS time, per new fix) · BTP_DATA_REQUEST (CAM port 2001 / psid 36, VAM port 2018 / psid 638; signed or unsigned)<br>board → phone: RESULT · STATUS (1 s: tickets, signed, refused, radio counters) · V2X_RX (every received ITS message)<br>Recovery: USB watchdog 3.5 s · BLE supervision 4 s + reconnect · board reset → app reconfigures · app restart → new session, stored BLE bond</font>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=11;arcSize=8;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;align=left;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="330" y="725" width="1270" height="95" as="geometry"/></mxCell><mxCell id="x1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;" edge="1" parent="1" source="p_sens" target="p_loop"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x2" value="fix time" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.5;entryX=1;entryY=0.2;" edge="1" parent="1" source="p_time" target="p_loop"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.5;entryX=1;entryY=0.75;" edge="1" parent="1" source="p_pseu" target="p_loop"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;" edge="1" parent="1" source="p_loop" target="p_enc"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x5" value="UPER" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.25;" edge="1" parent="1" source="p_enc" target="p_link"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.75;exitY=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="p_set" target="p_link"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x7" value="bundle" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.7;entryX=0;entryY=0.7;" edge="1" parent="1" source="p_cred" target="p_link"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="p_link" target="p_usb"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.85;entryX=0;entryY=0.5;" edge="1" parent="1" source="p_link" target="p_ble"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="p_usb" target="l_usb"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x11" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="p_ble" target="l_ble"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="l_usb" target="e_ser"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x13" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="l_ble" target="e_ble"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.66;" edge="1" parent="1" source="e_ser" target="e_link"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x15" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0.3;entryY=1;" edge="1" parent="1" source="e_ble" target="e_link"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x16" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.5;exitY=0;entryX=0.5;entryY=1;" edge="1" parent="1" source="e_link" target="e_sta"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x17" value="signed" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="e_sta" target="e_van"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x18" value="unsigned" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="e_sta" target="e_geo"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x19" value="sign" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.5;exitY=0;entryX=0.5;entryY=1;" edge="1" parent="1" source="e_van" target="e_sec"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x20" value="key" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.5;entryX=1;entryY=0.5;startArrow=block;startFill=1;" edge="1" parent="1" source="e_sec" target="e_nvs"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x21" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.75;exitY=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="e_van" target="e_radio"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x22" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.25;entryY=0;" edge="1" parent="1" source="e_geo" target="e_radio"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x23" value="TX" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.3;entryX=0;entryY=0.35;" edge="1" parent="1" source="e_radio" target="air"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x24" value="RX" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.7;entryX=1;entryY=0.8;" edge="1" parent="1" source="air" target="e_radio"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x24b" value="frames" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="e_radio" target="e_unwrap"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x25" value="V2X_RX" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.5;entryX=1;entryY=0.87;" edge="1" parent="1" source="e_unwrap" target="e_link"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x26" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.3;exitY=0;entryX=0;entryY=0.5;" edge="1" parent="1" source="air" target="r_map"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x27" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0.7;exitY=0;entryX=0;entryY=0.5;" edge="1" parent="1" source="air" target="r_cit"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x28" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.5;entryX=0.7;entryY=1;" edge="1" parent="1" source="r_rsu" target="air"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x29" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=0;exitY=0.5;entryX=0.3;entryY=1;" edge="1" parent="1" source="r_sim" target="air"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x30" value="VCR1 bundle" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.3;" edge="1" parent="1" source="k_demo" target="p_cred"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x31" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;dashed=1;" edge="1" parent="1" source="k_real" target="k_paths"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x32" value="future" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;dashed=1;exitX=1;exitY=0.3;entryX=0;entryY=0.8;" edge="1" parent="1" source="k_paths" target="p_cred"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x33" value="V2X_RX" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;dashed=1;exitX=0.5;exitY=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="p_ble" target="p_rx"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="x34" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;fontSize=10;endArrow=block;endFill=1;" edge="1" parent="1" source="p_rx" target="p_ui"><mxGeometry relative="1" as="geometry"/></mxCell></root></mxGraphModel></diagram></mxfile> |