-
Notifications
You must be signed in to change notification settings - Fork 15
/
index.html
507 lines (478 loc) · 29.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
<!DOCTYPE html>
<html lang="en" class="h-100">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="" />
<meta name="author" content="" />
<title>ESP Launchpad</title>
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet" />
<link href="css/custom.css" rel="stylesheet" />
<link href="css/xterm.css" rel="stylesheet" />
<link href="minimal-launchpad/minimal_ui_styles.css" rel="stylesheet" />
</head>
<body class="d-flex flex-column h-100">
<!-- Modal for flashiing status-->
<div class="container" id="mainContainer">
<button type="button" class="btn btn-info btn-lg" data-bs-toggle="modal" data-bs-target="#myModal" id="statusModal" hidden>Open Modal</button>
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<img src="./assets/esp-logo.png" width="42" height="42" style="vertical-align:middle"></img> 
<h4 class="modal-title"><span style="color: #17a2b8;"> ESP Firmware Flashing Status </span></h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" id="closeFlashComplete"></button>
</div>
<div class="modal-body" id="preview_body">
<div><p>Flashing of firmware is completed! Click the <b>'Reset Device'</b> button on the Console Tab to reset your device with the new flashed firnware.
<br><br>
<span id="appDownloadLink"></span>
<br /><br />
<span id="setupPayloadInfoText"></span>
</p>
</div>
<hr>
<div id='qrcodeContainer' style='display:flex'>
<div id="qrAndroidRow">
<div id="androidAppLogo" style="padding-bottom: 5px;"></div>
<div id='qrcodeAndroidApp' style="padding-right: 40px;"></div>
</div>
<div id="qrIOSRow">
<div id="iosAppLogo" style="padding-bottom: 5px;"></div>
<div id='qrcodeIOSApp' style="padding-right: 40px;"></div>
</div>
<div id="setupPayloadRow" class="ms-auto">
<div id="setupLogoContainer" style="padding-bottom: 5px;"></div>
<div id='setupQRCodeContainer'></div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="app-button btn btn-outline-dark" type="button" id="done" data-bs-dismiss="modal">Done</button>
</div>
</div>
</div>
</div>
</div>
<!-- Modal for flashing status section ends-->
<!-- Modal for reset device starts-->
<div class="container" id="mainContainer">
<button type="button" class="btn btn-info btn-lg" data-bs-toggle="modal" data-bs-target="#resetModal" id="resetConfirmation" hidden>Open Modal</button>
<div class="modal fade" id="resetModal" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<img src="./assets/esp-logo.png" width="42" height="42" style="vertical-align:middle"></img> 
<h4 class="modal-title"><span style="color: #17a2b8;"> ESP Reset Device Confirmation </span></h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" id="closeResetModal"></button>
</div>
<div class="modal-body" id="preview_body">
<div id="resetMessage">
<p>This will reset your device. Click on 'Confirm' to continue.</p>
<button class="app-button btn btn-outline-dark" type="button" id="resetButton" data-toggle="tooltip"
data-placement="right" title="Confirm to Reset your device">Confirm</button>
<div><br></div>
</div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</div>
<div id="main">
<!-- Responsive navbar-->
<nav class="navbar navbar-expand-lg">
<div class="container">
<h4 class="topic" data-target-tab-panel-id="about">
<img src="assets/logo-v1.png" class="logo" />
</h4>
<!-- <span>A serial flasher utility for Espressif chips</span> -->
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item active" data-role="nav-menu-tab" data-target-tab-panel-id="quickstart">
<button class="nav-link icon-button">
<img src="assets/icons/quickstart.png" class="icon" />
<span>Quick Start</span>
</button>
</li>
<li class="nav-item" data-role="nav-menu-tab" data-target-tab-panel-id="diy">
<button class="nav-link icon-button">
<img src="assets/icons/diy.png" class="icon" />
<span>DIY</span>
</button>
</li>
<li class="nav-item">
<button class="nav-link icon-button" id="connectButton">
<img src="assets/icons/connect.png" class="icon" />
<span>Connect</span>
</button>
<button class="nav-link icon-button" id="disconnectButton">
<img src="assets/icons/disconnect.png" class="icon" />
<span>Disconnect</span>
</button>
</li>
<li class="nav-item" data-role="nav-menu-tab" data-target-tab-panel-id="console">
<button class="nav-link icon-button" id="v-pills-console-tab">
<img src="assets/icons/console.png" class="icon" />
<span>Console</span>
</button>
</li>
<li class="nav-item" data-role="nav-menu-tab" data-target-tab-panel-id="settings">
<button class="nav-link icon-button">
<img src="assets/icons/settings.png" class="icon" />
<span>Settings</span>
</button>
</li>
<li class="nav-item" data-role="nav-menu-tab" data-target-tab-panel-id="about">
<button class="nav-link icon-button" id="aboutButton">
<img src="assets/icons/about-us.png" class="icon" />
<span>About</span>
</button>
</li>
</ul>
</div>
</div>
</nav>
<!-- Page content-->
<div class="container" id="alert-container">
<div class="text-center mt-3 intro-text">
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<label style="display:none" id="lblConnTo"><b>Connected to device: </b></label>
<p><span>ESP Launchpad helps you to flash the selected firmware image onto your device.</span>
<br /><span id="ensureConnect"> Ensure you have connected your device to the serial USB port. Click on the 'Connect' button in the top menu option, to connect to your attached device.
Note : Once you flash your device, any earlier firmware would be overwritten.</span>
</p>
</div>
</div>
</div>
<!-- Quick start tab content - start -->
<div class="container tabs-section main-page-tab-panel" data-tab-panel-id="quickstart">
<h5 class="pt-4 pb-2 lh-lg"><span id="qtLabel">Choose from some of ESP's pre-built, out-of-the-box examples to flash and play</span></h5>
<div class="form">
<div class="d-flex justify-content-between flex-wrap form-config-info-container-wrapper">
<div class="form-container">
<div class="field-container">
<label>
Select Application
</label>
<div class="field">
<select name="device" id="device">
</select>
</div>
</div>
<div class="field-container">
<label>
ESP Chipset Type
</label>
<div class="field">
<div id="chipsets">
<div class="form-check-inline">
<label class="form-check-label" for="radio1">ESP32
<input type="radio" checked class="form-check-input" name="chipType" id="radio1" value="esp32_matter_all-clusters-app_te6_merged.bin">
</label>
</div>
<div class="form-check-inline">
<label class="form-check-label" for="radio2">ESP32-C3
<input type="radio" class="form-check-input" name="chipType" id="radio2" value="esp32c3_matter_all-clusters-app_te6_merged.bin">
</label>
</div>
</div>
</div>
</div>
<div class="field-container" id ="developKitsContainer" style="display: none">
<label>
ESP Develop Kits
</label>
<div class="field">
<div id="developKits">
<div class="form-check-inline">
<label class="form-check-label" for="radio3">ESP32-S3-DevKits
<input type="radio" checked class="form-check-input" name="developKitsType" id="radio3" value="">
</label>
</div>
<div class="form-check-inline">
<label class="form-check-label" for="radio4">ESP32-S3-DevKits
<input type="radio" class="form-check-input" name="developKitsType" id="radio4" value="">
</label>
</div>
</div>
</div>
</div>
<div class="field-container" id="appDescriptionContainer" style="display: none; align-items: baseline;">
<label>
Application Description
</label>
<span class="appdescription-text" id="appDescription">
</span>
</div>
<div class="field-container">
<div class="field-container" title="Click on 'Connect' button in top Menu" style="display:inline-block" data-toggle="tooltip" id="flashWrapper">
<button class="app-button submit-form-button btn btn-outline-dark" id="flashButton" disabled>Flash</button>
</div>
<div id="appInfoTriggerContainer" class="field-container app-info-trigger-container" style="display: none;">
<a href="#" role="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Show Application Information</a>
</div>
</div>
</div>
<div class="offcanvas offcanvas-end w-50" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
<div class="offcanvas-header">
<h2 id="offcanvasRightLabel">Application Information</h2>
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div id="appInfo"></div>
</div>
</div>
<div class="card text-dark bg-light app-config-info-container" id="appConfigInfoContainer" style="display: none;">
<div class="card-header">Application Configuration:</div>
<div class="card-body overflow-auto" id="appConfigInfo"></div>
</div>
</div>
<div class="mt-xl-5" id="progressMsgContainerQS" style="display:none">
<span id="progressMsgQS" style="display:none"><i>This may take a short while. Check console for the progress</i></span>
<br /><br />
<span id="setupPayloadInfoTextQS"></span>
<br><br>
</div>
<div id='qrcodeContainerQS' style='display:flex'>
<div id="qrAndroidRowQS">
<div id="androidAppLogoQS" style="padding-bottom: 5px;"></div>
<div id='qrcodeAndroidAppQS' style="padding-right: 40px;"></div>
</div>
<div id="qrIOSRowQS">
<div id="iosAppLogoQS" style="padding-bottom: 5px;"></div>
<div id='qrcodeIOSAppQS' style="padding-right: 40px;"></div>
</div>
<div id="setupPayloadRowQS" class="ms-auto">
<div id="setupLogoContainerQS" style="padding-bottom: 5px;"></div>
<div id='setupQRCodeContainerQS'></div>
</div>
</div>
</div>
</div>
<!-- Quick start tab content - end -->
<!-- DIY tab content - start -->
<div class="container tabs-section main-page-tab-panel" data-tab-panel-id="diy">
<h5 class="pt-4 pb-2 lh-lg">Choose your own built firmware image from the local storage to flash and use.</h5>
<br>
<input class="btn btn-danger btn-sm" type="button" id="eraseButton" value="Erase Flash" data-toggle="tooltip"
data-placement="top" title="Erase firmware on your device"/>
<div class="alert alert-danger alert-dismissible fade-in-down" id="alertDiv" style="display:none; margin-top:10px">
<a href="#" class="close" aria-label="close" onclick="$('.alert').hide()">×</a>
<span id="alertmsg"></span>
</div>
<div id="files">
<table id="fileTable">
<thead>
<tr>
<th>Flash Address</th>
<th>Selected File</th>
<th> </th>
</tr>
</thead>
<tbody id="tableBody">
<tr id="row0">
<td class="input-col"><input type="text" id="offset1" name="offset1" value="0x1000"></td>
<td class="input-col"><input type="file" id="selectFile1" name="selected_file1"></td>
<td><input type="image" src="assets/icons/remove.png"></td>
</tr>
</tbody>
</table>
<div class="button-container text-end mb-sm-3">
<button type="button" class="app-button submit-form-button btn btn-outline-dark" id="addFile"
data-toggle="tooltip" data-placement="right" title="Add another file to flash set" style="margin-right:10px;">Add File</button>
<div class="field-container" data-toggle="tooltip" data-placement="right" title="Click on 'Connect' button in top menu" id="programwrapper" style="display:inline-block">
<button type="button" class="app-button submit-form-button btn btn-outline-dark" id="programButton" disabled>Program</button>
</div>
</div>
</div>
<output id="list"></output>
<hr/>
<span id="progressMsgDIY" style="display:none"><i>This may take a short while. Check console for the progress</i></span>
</div>
<!-- DIY tab content - end -->
<!-- Console tab content - start -->
<div class="container main-page-tab-panel" data-tab-panel-id="console">
<div class="row" id="consolePageWrapper">
<div class="appinfo-flash-container col-6" id="appInfoFlashContainer" style="display:none;">
<div id="appInfoFlash"></div>
</div>
<div class="col-12 fade-in-down" id="terminalContainer" style="display:none;">
<div class="button-container text-end mb-sm-3">
<div class="field-container" data-toggle="tooltip" data-placement="right" title="Reset your device" style="display:inline-block;">
<button type="button" class="app-button btn btn-outline-dark" id="consoleStartButton" disabled>
Reset Device
</button>
</div>
</div>
<div id="terminal"></div>
</div>
</div>
</div>
<!-- Console tab content - end -->
<!-- Settings tab content - start -->
<div class="container main-page-tab-panel" data-tab-panel-id="settings">
<div class="row">
<div class="col-xs-12 ">
<div class="form">
<div id="baudRateSettings" class="lh-lg">
<span><b>Configure the baudrate's for serial communication as per your application:</b></span>
</div>
<hr/>
<div class="d-flex justify-content-around">
<div class="field-container">
<label>
Flashing Baudrate
</label>
<div class="field" id="flashingBaudrateSettings">
<select name="flashingBaudrateSelect" id="flashingBaudrateSelect">
<option value="921600">921600</option>
<option value="460800">460800</option>
<option value="230400">230400</option>
<option value="115200">115200</option>
</select>
</div>
</div>
<div class="field-container">
<label>
Console Baudrate
</label>
<div class="field" id="consoleBaudrateSettings">
<select name="consoleBaudrateSelect" id="consoleBaudrateSelect">
<option value="115200">115200</option>
<option value="74880">74880</option>
</select>
</div>
</div>
</div>
<div id="settingsWarning" style="display:none" class="mt-3">
<div class="mb-1">
<i>
** Flashing baudrate cannot be changed for a connected device. Please disconnect the device and then change the flashing baudrate.
</i>
</div>
<div>
<i>
** If you haven't configured the console baudrate in the TOML file as mentioned
<a href="https://github.com/espressif/esp-launchpad/blob/main/config/config.toml" target="_blank">here</a>
or are using DIY mode, you can change it in between device resets.
</i>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Settings tab content - end -->
<!-- About us tab content - start -->
<div class="container main-page-tab-panel mt-5 about-container" data-tab-panel-id="about">
<div class="row">
<div class="col-xs-12">
<span>
ESP Launchpad is a web based tool, available for flashing firmware application to the ESP32 device connected via
USB serial port.
</span>
<p>
There are two modes available for using this tool:
<ul>
<li><a class="anchor" href="#qsDiv">Quick Start</a> : 4 Easy Steps - Plug, Connect, Choose Built-In Firmware Image, Flash!</li>
<li><a class="anchor" href="#diyDiv">DIY</a> : For Advanced Users, use your own pre-built Firmware Image from local storage and Flash!</li>
</ul>
You can even build and <a class="anchor" href="#publishDiv">Publish your own Apps </a> for ESP32 using ESP Launchpad.
</p>
</div>
<!-- Quick Try -->
<div class="col-xs-12 mt-5 " id="qsDiv">
<h4 class="topic mb-4"><b>Quick Start</b></h4>
<p>
ESP currently provides a few built in, ready to use examples that can be flashed on the ESP32 devices. You can
choose one of the built in firmware application for either RainMaker or Matter, and as per the chipset type.
Just plug in your ESP32 device to the serial USB port. Use connect option in the menu to connect to your ESP32 device. Choose
the firmware from the built-in firmware example set. Click Flash!
</p>
<p>The firmware will be flashed on to your connected device. You can watch the progress of the firmware flashing in
the console window.</p>
<p>This easy, 4 step process will flash the firmware on to the connected device and bring it into play as you want it to be.</p>
<h6 class="trynow mb-4" data-target-tab-panel-id="quickstart"><b>Try Now !</b></h6>
</div>
<!-- DIY -->
<div class="col-xs-12 mt-5 " id="diyDiv">
<h4 class="topic mb-4" ><b>DIY</b></h4>
<p>
You can build your own firmware binaries using the ESP IDF tools. These firmware images can then be flashed from
your local machine to the connected device. Just connect your ESP32 device to the serial USB port. Using the web
based tool, connect to your device. You can then select the firmware application from the local storage of the
machine. Choose the memory address where to flash the firmware. Firmware can be a single file or a set of
multiple files to be flashed at particular memory addresses.
</p>
<p><b>Click Flash!</b></p>
<p>The firmware will be flashed on to your connected device. You can watch the progress of the firmware flashing in
the console window.
</p>
<h6 class="trynow mb-4" data-target-tab-panel-id="diy"><b>Try Now !</b></h6>
</div>
<!-- Publish your own firmware apps -->
<div class="col-xs-12 mt-5" id="publishDiv">
<h4 class=" mb-4" style="color: #e63f36;"><b>Publish your own firmware apps</b></h4>
<p>ESP Launchpad also lets you easily publish your firmware apps for others to try.</p>
<p>The ESP Launchpad Quick Start page would be rendered by referring to a TOML configuration file, where you can configure where to pick
all the component images of your firmware, and the supported hardware. You could also link to any support phone apps to work along with
this firmware. A sample TOML config file can be viewed <a href="https://espressif.github.io/esp-launchpad/config/config.toml"> here </a> </p>
<p>Rest of the flashing procedure is same easy 4 step process as the Quick Start one above.</p>
<p>Once ready, you can use the following image and add following html code on your website for supporting ESPaunchpad with your configuration.
Edit the query parameter in the href, replacing URL_TO_YOUR_CONFIG_TOML value where your TOML config file is hosted.
</p>
<div style="padding-bottom: 40px;">
<div style="padding-bottom: 10px;">
<img alt="Try it with ESP Launchpad" src="./assets/try_with_launchpad.png"
width="250" height="70">
</div>
<div>
<textarea readonly cols="160" rows="3"><a href="https://espressif.github.io/esp-launchpad/?flashConfigURL=URL_TO_YOUR_CONFIG_TOML">
<img alt="Try it with ESP Launchpad" src="https://espressif.github.io/esp-launchpad/assets/try_with_launchpad.png" width="250" height="70">
</a>
</textarea>
</div>
</div>
</div>
</div>
</div>
<!-- About us tab content - end -->
</div>
<!-- Safari & FireFox not supported error message-->
<div id="unsupportedBrowserErr" style="display:none"><p align="center" style="color:red">
This tool is not supported on Safari & Firefox browsers yet! Please try using another browser like Google Chrome.
<br> <br>
ESP Launchpad makes use of WebUSB to communicate with the device. Currently Safari & Firefox browsers don't support it yet.
We will add support for this browser as soon as Safari & Firefox starts supporting WebUSB.
</p>
</div>
<footer class="mt-auto py-3">
<div class="container text-center">
<span class="text-muted">Copyright © 2024 Espressif Systems</span>
</div>
</footer>
<!-- Third party libraries-->
<script src="node_modules/xterm/lib/xterm.js"></script>
<script src="node_modules/xterm-addon-fit/lib/xterm-addon-fit.js"></script>
<script src="node_modules/crypto-js/crypto-js.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pako/2.0.3/pako.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/2.1.0/showdown.min.js"></script>
<script src="js/index.js" type="module"></script>
<!-- Bootstrap core JS-->
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/qrcode.min.js"></script>
<!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>-->
<!-- Core theme JS-->
<script src="js/scripts.js"></script>
</body>
</html>