summaryrefslogtreecommitdiff
path: root/index.html
blob: 4de36b866bd6afd3893b5852bf4a1ec21a4e76be (plain)
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
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ORION-RF Installer</title>

    <script
        type="module"
        src="https://unpkg.com/esp-web-tools@10/dist/web/install-button.js">
    </script>

    <style>
        body {
            font-family: sans-serif;
            max-width: 700px;
            margin: auto;
            padding: 2rem;
        }

        .card {
            border: 1px solid #ddd;
            border-radius: 10px;
            padding: 20px;
        }

        select {
            width: 100%;
            padding: 10px;
            margin-bottom: 20px;
        }
    </style>
</head>
<body>

<h1>ORION-RF Installer</h1>

<div class="card">
    <h2>Select Firmware Version</h2>

    <select id="versionSelect"></select>

    <div id="installer"></div>
</div>

<script>
const BASE_URL =
    "https://krolyxon.github.io/orion-rf";

async function loadVersions() {
    const response =
        await fetch(`${BASE_URL}/versions.json`);

    const versions =
        await response.json();

    const select =
        document.getElementById("versionSelect");

    select.innerHTML = "";

    versions.forEach(version => {
        const option =
            document.createElement("option");

        option.value = version;
        option.textContent = version;

        select.appendChild(option);
    });

    buildInstaller();
}

function buildInstaller() {
    const version =
        document.getElementById("versionSelect").value;

    const manifest = {
        name: "ORION-RF",
        version: version,
        builds: [
            {
                chipFamily: "ESP32-S3",
                parts: [
                    {
                        path:
                        `${BASE_URL}/firmware/${version}/bootloader.bin`,
                        offset: 0
                    },
                    {
                        path:
                        `${BASE_URL}/firmware/${version}/partitions.bin`,
                        offset: 32768
                    },
                    {
                        path:
                        `${BASE_URL}/firmware/${version}/firmware.bin`,
                        offset: 65536
                    }
                ]
            }
        ]
    };

    const blob =
        new Blob(
            [JSON.stringify(manifest)],
            { type: "application/json" }
        );

    const manifestUrl =
        URL.createObjectURL(blob);

    document.getElementById("installer").innerHTML = `
        <esp-web-install-button
            manifest="${manifestUrl}">
        </esp-web-install-button>
    `;
}

document
    .getElementById("versionSelect")
    .addEventListener("change", buildInstaller);

loadVersions();
</script>

</body>
</html>