xref: /aosp_15_r20/tools/netsim/ui/dist/js/packet-info.js (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Workerimport{__decorate as t}from"../node_modules/tslib/tslib.es6.js";import{css as e,LitElement as i,html as o}from"https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";import{property as a,customElement as n}from"https://cdn.skypack.dev/pin/[email protected]/mode=imports/optimized/lit/decorators.js";import{simulationState as r}from"./device-observer.js";let d=class extends i{constructor(){super(...arguments),this.captureData=[],this.deviceData=[]}connectedCallback(){super.connectedCallback(),r.registerObserver(this)}disconnectedCallback(){r.removeObserver(this),super.disconnectedCallback()}onNotify(t){this.captureData=t.captures,this.deviceData=t.devices,this.requestUpdate()}toggleCapture(t){let e=t.id.toString(),i=t.state?"0":"1";r.patchCapture(e,i)}handleGetChips(t){var e,i,a,n,r,d,s,l;let c=o``,p=o``,b=o``;if("chips"in t&&t.chips)for(const h of t.chips){if("bt"in h&&h.bt){let t=o``,r=o``;"lowEnergy"in h.bt&&h.bt.lowEnergy&&(t=o`
2*cf78ab8cSAndroid Build Coastguard Worker              <tr>
3*cf78ab8cSAndroid Build Coastguard Worker                <td>BLE</td>
4*cf78ab8cSAndroid Build Coastguard Worker                <td>${null!==(e=h.bt.lowEnergy.rxCount)&&void 0!==e?e:0}</td>
5*cf78ab8cSAndroid Build Coastguard Worker                <td>${null!==(i=h.bt.lowEnergy.txCount)&&void 0!==i?i:0}</td>
6*cf78ab8cSAndroid Build Coastguard Worker              </tr>
7*cf78ab8cSAndroid Build Coastguard Worker            `),"classic"in h.bt&&h.bt.classic&&(r=o`
8*cf78ab8cSAndroid Build Coastguard Worker              <tr>
9*cf78ab8cSAndroid Build Coastguard Worker                <td>Bluetooth Classic</td>
10*cf78ab8cSAndroid Build Coastguard Worker                <td>${null!==(a=h.bt.classic.rxCount)&&void 0!==a?a:0}</td>
11*cf78ab8cSAndroid Build Coastguard Worker                <td>${null!==(n=h.bt.classic.txCount)&&void 0!==n?n:0}</td>
12*cf78ab8cSAndroid Build Coastguard Worker              </tr>
13*cf78ab8cSAndroid Build Coastguard Worker            `),c=o`${t} ${r}`}"uwb"in h&&h.uwb&&(p=o`
14*cf78ab8cSAndroid Build Coastguard Worker            <tr>
15*cf78ab8cSAndroid Build Coastguard Worker              <td>UWB</td>
16*cf78ab8cSAndroid Build Coastguard Worker              <td>${null!==(r=h.uwb.rxCount)&&void 0!==r?r:0}</td>
17*cf78ab8cSAndroid Build Coastguard Worker              <td>${null!==(d=h.uwb.txCount)&&void 0!==d?d:0}</td>
18*cf78ab8cSAndroid Build Coastguard Worker            </tr>
19*cf78ab8cSAndroid Build Coastguard Worker          `),"wifi"in h&&h.wifi&&(b=o`
20*cf78ab8cSAndroid Build Coastguard Worker            <tr>
21*cf78ab8cSAndroid Build Coastguard Worker              <td>WIFI</td>
22*cf78ab8cSAndroid Build Coastguard Worker              <td>${null!==(s=h.wifi.rxCount)&&void 0!==s?s:0}</td>
23*cf78ab8cSAndroid Build Coastguard Worker              <td>${null!==(l=h.wifi.txCount)&&void 0!==l?l:0}</td>
24*cf78ab8cSAndroid Build Coastguard Worker            </tr>
25*cf78ab8cSAndroid Build Coastguard Worker          `)}return o`
26*cf78ab8cSAndroid Build Coastguard Worker      ${c}
27*cf78ab8cSAndroid Build Coastguard Worker      ${p}
28*cf78ab8cSAndroid Build Coastguard Worker      ${b}
29*cf78ab8cSAndroid Build Coastguard Worker    `}handleListCaptures(t){return o`
30*cf78ab8cSAndroid Build Coastguard Worker      <tr>
31*cf78ab8cSAndroid Build Coastguard Worker        <td>${t.deviceName}</td>
32*cf78ab8cSAndroid Build Coastguard Worker        <td>${t.chipKind}</td>
33*cf78ab8cSAndroid Build Coastguard Worker        <td>${t.size}</td>
34*cf78ab8cSAndroid Build Coastguard Worker        <td>${t.records}</td>
35*cf78ab8cSAndroid Build Coastguard Worker        <td>
36*cf78ab8cSAndroid Build Coastguard Worker        <input
37*cf78ab8cSAndroid Build Coastguard Worker                type="checkbox"
38*cf78ab8cSAndroid Build Coastguard Worker                class="switch_1"
39*cf78ab8cSAndroid Build Coastguard Worker                .checked=${t.state}
40*cf78ab8cSAndroid Build Coastguard Worker                @click=${()=>{this.toggleCapture(t)}}
41*cf78ab8cSAndroid Build Coastguard Worker              />
42*cf78ab8cSAndroid Build Coastguard Worker        </td>
43*cf78ab8cSAndroid Build Coastguard Worker        <td>
44*cf78ab8cSAndroid Build Coastguard Worker          <a
45*cf78ab8cSAndroid Build Coastguard Worker            href="./v1/captures/${t.id}"
46*cf78ab8cSAndroid Build Coastguard Worker            target="_blank"
47*cf78ab8cSAndroid Build Coastguard Worker            type="application/vnd.tcpdump.pcap"
48*cf78ab8cSAndroid Build Coastguard Worker            ><button>Download</button></a
49*cf78ab8cSAndroid Build Coastguard Worker          >
50*cf78ab8cSAndroid Build Coastguard Worker        </td>
51*cf78ab8cSAndroid Build Coastguard Worker      </tr>
52*cf78ab8cSAndroid Build Coastguard Worker    `}render(){return o`
53*cf78ab8cSAndroid Build Coastguard Worker      <div class="panel">
54*cf78ab8cSAndroid Build Coastguard Worker        <div class="title">Packet Info</div>
55*cf78ab8cSAndroid Build Coastguard Worker        ${this.deviceData.map((t=>o`
56*cf78ab8cSAndroid Build Coastguard Worker              <div class="label">${t.name}</div>
57*cf78ab8cSAndroid Build Coastguard Worker              <table class="styled-table">
58*cf78ab8cSAndroid Build Coastguard Worker                <tr>
59*cf78ab8cSAndroid Build Coastguard Worker                  <th>Radio</th>
60*cf78ab8cSAndroid Build Coastguard Worker                  <th>RX Count</th>
61*cf78ab8cSAndroid Build Coastguard Worker                  <th>TX Count</th>
62*cf78ab8cSAndroid Build Coastguard Worker                </tr>
63*cf78ab8cSAndroid Build Coastguard Worker                ${this.handleGetChips(t)}
64*cf78ab8cSAndroid Build Coastguard Worker              </table>
65*cf78ab8cSAndroid Build Coastguard Worker            `))}
66*cf78ab8cSAndroid Build Coastguard Worker      </div>
67*cf78ab8cSAndroid Build Coastguard Worker      <div class="panel">
68*cf78ab8cSAndroid Build Coastguard Worker        <div class="title">Packet Capture</div>
69*cf78ab8cSAndroid Build Coastguard Worker        <table class="styled-table">
70*cf78ab8cSAndroid Build Coastguard Worker          <tr>
71*cf78ab8cSAndroid Build Coastguard Worker            <th>Device Name</th>
72*cf78ab8cSAndroid Build Coastguard Worker            <th>Chip Kind</th>
73*cf78ab8cSAndroid Build Coastguard Worker            <th>Bytes</th>
74*cf78ab8cSAndroid Build Coastguard Worker            <th>Records</th>
75*cf78ab8cSAndroid Build Coastguard Worker            <th>Capture State</th>
76*cf78ab8cSAndroid Build Coastguard Worker            <th>Download Pcap</th>
77*cf78ab8cSAndroid Build Coastguard Worker          </tr>
78*cf78ab8cSAndroid Build Coastguard Worker          ${this.captureData.map((t=>this.handleListCaptures(t)))}
79*cf78ab8cSAndroid Build Coastguard Worker        </table>
80*cf78ab8cSAndroid Build Coastguard Worker      </div>
81*cf78ab8cSAndroid Build Coastguard Worker    `}};d.styles=e`
82*cf78ab8cSAndroid Build Coastguard Worker    :host {
83*cf78ab8cSAndroid Build Coastguard Worker      display: flex;
84*cf78ab8cSAndroid Build Coastguard Worker      justify-content: center;
85*cf78ab8cSAndroid Build Coastguard Worker      align-items: flex-start;
86*cf78ab8cSAndroid Build Coastguard Worker      height: 100vh;
87*cf78ab8cSAndroid Build Coastguard Worker    }
88*cf78ab8cSAndroid Build Coastguard Worker
89*cf78ab8cSAndroid Build Coastguard Worker    .panel {
90*cf78ab8cSAndroid Build Coastguard Worker      cursor: pointer;
91*cf78ab8cSAndroid Build Coastguard Worker      display: grid;
92*cf78ab8cSAndroid Build Coastguard Worker      place-content: center;
93*cf78ab8cSAndroid Build Coastguard Worker      color: black;
94*cf78ab8cSAndroid Build Coastguard Worker      font-size: 25px;
95*cf78ab8cSAndroid Build Coastguard Worker      font-family: 'Lato', sans-serif;
96*cf78ab8cSAndroid Build Coastguard Worker      border: 5px solid black;
97*cf78ab8cSAndroid Build Coastguard Worker      border-radius: 12px;
98*cf78ab8cSAndroid Build Coastguard Worker      margin: 10px;
99*cf78ab8cSAndroid Build Coastguard Worker      padding: 10px;
100*cf78ab8cSAndroid Build Coastguard Worker      background-color: #ffffff;
101*cf78ab8cSAndroid Build Coastguard Worker      max-width: max-content;
102*cf78ab8cSAndroid Build Coastguard Worker      float: left;
103*cf78ab8cSAndroid Build Coastguard Worker    }
104*cf78ab8cSAndroid Build Coastguard Worker
105*cf78ab8cSAndroid Build Coastguard Worker    .title {
106*cf78ab8cSAndroid Build Coastguard Worker      font-weight: bold;
107*cf78ab8cSAndroid Build Coastguard Worker      text-transform: uppercase;
108*cf78ab8cSAndroid Build Coastguard Worker      text-align: center;
109*cf78ab8cSAndroid Build Coastguard Worker      margin-bottom: 10px;
110*cf78ab8cSAndroid Build Coastguard Worker    }
111*cf78ab8cSAndroid Build Coastguard Worker
112*cf78ab8cSAndroid Build Coastguard Worker    .label {
113*cf78ab8cSAndroid Build Coastguard Worker      text-align: left;
114*cf78ab8cSAndroid Build Coastguard Worker    }
115*cf78ab8cSAndroid Build Coastguard Worker
116*cf78ab8cSAndroid Build Coastguard Worker    .styled-table {
117*cf78ab8cSAndroid Build Coastguard Worker      border-collapse: collapse;
118*cf78ab8cSAndroid Build Coastguard Worker      margin: 25px 0;
119*cf78ab8cSAndroid Build Coastguard Worker      font-size: 20px;
120*cf78ab8cSAndroid Build Coastguard Worker      font-family: sans-serif;
121*cf78ab8cSAndroid Build Coastguard Worker      width: 100%;
122*cf78ab8cSAndroid Build Coastguard Worker      box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
123*cf78ab8cSAndroid Build Coastguard Worker    }
124*cf78ab8cSAndroid Build Coastguard Worker
125*cf78ab8cSAndroid Build Coastguard Worker    .styled-table thead tr {
126*cf78ab8cSAndroid Build Coastguard Worker      background-color: #009879;
127*cf78ab8cSAndroid Build Coastguard Worker      color: #ffffff;
128*cf78ab8cSAndroid Build Coastguard Worker      text-align: left;
129*cf78ab8cSAndroid Build Coastguard Worker    }
130*cf78ab8cSAndroid Build Coastguard Worker
131*cf78ab8cSAndroid Build Coastguard Worker    .styled-table th,
132*cf78ab8cSAndroid Build Coastguard Worker    .styled-table td {
133*cf78ab8cSAndroid Build Coastguard Worker      padding: 12px 15px;
134*cf78ab8cSAndroid Build Coastguard Worker      text-align: left;
135*cf78ab8cSAndroid Build Coastguard Worker    }
136*cf78ab8cSAndroid Build Coastguard Worker
137*cf78ab8cSAndroid Build Coastguard Worker    .styled-table tbody tr {
138*cf78ab8cSAndroid Build Coastguard Worker      border-bottom: 1px solid #dddddd;
139*cf78ab8cSAndroid Build Coastguard Worker    }
140*cf78ab8cSAndroid Build Coastguard Worker
141*cf78ab8cSAndroid Build Coastguard Worker    .styled-table tbody tr:nth-of-type(even) {
142*cf78ab8cSAndroid Build Coastguard Worker      background-color: #cac0c0;
143*cf78ab8cSAndroid Build Coastguard Worker    }
144*cf78ab8cSAndroid Build Coastguard Worker
145*cf78ab8cSAndroid Build Coastguard Worker    input[type='button'] {
146*cf78ab8cSAndroid Build Coastguard Worker      height: 2rem;
147*cf78ab8cSAndroid Build Coastguard Worker      font-size: inherit;
148*cf78ab8cSAndroid Build Coastguard Worker    }
149*cf78ab8cSAndroid Build Coastguard Worker
150*cf78ab8cSAndroid Build Coastguard Worker    input[type='checkbox'].switch_1 {
151*cf78ab8cSAndroid Build Coastguard Worker      font-size: 30px;
152*cf78ab8cSAndroid Build Coastguard Worker      -webkit-appearance: none;
153*cf78ab8cSAndroid Build Coastguard Worker      -moz-appearance: none;
154*cf78ab8cSAndroid Build Coastguard Worker      appearance: none;
155*cf78ab8cSAndroid Build Coastguard Worker      width: 3.5em;
156*cf78ab8cSAndroid Build Coastguard Worker      height: 1.5em;
157*cf78ab8cSAndroid Build Coastguard Worker      background: #ddd;
158*cf78ab8cSAndroid Build Coastguard Worker      border-radius: 3em;
159*cf78ab8cSAndroid Build Coastguard Worker      position: relative;
160*cf78ab8cSAndroid Build Coastguard Worker      cursor: pointer;
161*cf78ab8cSAndroid Build Coastguard Worker      outline: none;
162*cf78ab8cSAndroid Build Coastguard Worker      -webkit-transition: all 0.2s ease-in-out;
163*cf78ab8cSAndroid Build Coastguard Worker      transition: all 0.2s ease-in-out;
164*cf78ab8cSAndroid Build Coastguard Worker    }
165*cf78ab8cSAndroid Build Coastguard Worker
166*cf78ab8cSAndroid Build Coastguard Worker    input[type='checkbox'].switch_1:checked {
167*cf78ab8cSAndroid Build Coastguard Worker      background: #0ebeff;
168*cf78ab8cSAndroid Build Coastguard Worker    }
169*cf78ab8cSAndroid Build Coastguard Worker
170*cf78ab8cSAndroid Build Coastguard Worker    input[type='checkbox'].switch_1:after {
171*cf78ab8cSAndroid Build Coastguard Worker      position: absolute;
172*cf78ab8cSAndroid Build Coastguard Worker      content: '';
173*cf78ab8cSAndroid Build Coastguard Worker      width: 1.5em;
174*cf78ab8cSAndroid Build Coastguard Worker      height: 1.5em;
175*cf78ab8cSAndroid Build Coastguard Worker      border-radius: 50%;
176*cf78ab8cSAndroid Build Coastguard Worker      background: #fff;
177*cf78ab8cSAndroid Build Coastguard Worker      -webkit-box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.3);
178*cf78ab8cSAndroid Build Coastguard Worker      box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.3);
179*cf78ab8cSAndroid Build Coastguard Worker      -webkit-transform: scale(0.7);
180*cf78ab8cSAndroid Build Coastguard Worker      transform: scale(0.7);
181*cf78ab8cSAndroid Build Coastguard Worker      left: 0;
182*cf78ab8cSAndroid Build Coastguard Worker      -webkit-transition: all 0.2s ease-in-out;
183*cf78ab8cSAndroid Build Coastguard Worker      transition: all 0.2s ease-in-out;
184*cf78ab8cSAndroid Build Coastguard Worker    }
185*cf78ab8cSAndroid Build Coastguard Worker
186*cf78ab8cSAndroid Build Coastguard Worker    input[type='checkbox'].switch_1:checked:after {
187*cf78ab8cSAndroid Build Coastguard Worker      left: calc(100% - 1.5em);
188*cf78ab8cSAndroid Build Coastguard Worker    }
189*cf78ab8cSAndroid Build Coastguard Worker
190*cf78ab8cSAndroid Build Coastguard Worker    button {
191*cf78ab8cSAndroid Build Coastguard Worker      display: inline-block;
192*cf78ab8cSAndroid Build Coastguard Worker      padding: 12px 24px;
193*cf78ab8cSAndroid Build Coastguard Worker      background-color: #4CAF50;
194*cf78ab8cSAndroid Build Coastguard Worker      color: #FFFFFF;
195*cf78ab8cSAndroid Build Coastguard Worker      font-size: 18px;
196*cf78ab8cSAndroid Build Coastguard Worker      font-weight: bold;
197*cf78ab8cSAndroid Build Coastguard Worker      text-align: center;
198*cf78ab8cSAndroid Build Coastguard Worker      text-decoration: none;
199*cf78ab8cSAndroid Build Coastguard Worker      border: none;
200*cf78ab8cSAndroid Build Coastguard Worker      cursor: pointer;
201*cf78ab8cSAndroid Build Coastguard Worker      transition: background-color 0.3s ease;
202*cf78ab8cSAndroid Build Coastguard Worker    }
203*cf78ab8cSAndroid Build Coastguard Worker
204*cf78ab8cSAndroid Build Coastguard Worker    button:hover {
205*cf78ab8cSAndroid Build Coastguard Worker      background-color: #45a049;
206*cf78ab8cSAndroid Build Coastguard Worker      transition: 0.5s;
207*cf78ab8cSAndroid Build Coastguard Worker    }
208*cf78ab8cSAndroid Build Coastguard Worker  `,t([a()],d.prototype,"captureData",void 0),t([a()],d.prototype,"deviceData",void 0),d=t([n("ns-packet-info")],d);export{d as PacketInformation};
209