mirror of
https://github.com/meshtastic/meshtastic.git
synced 2025-01-13 15:01:19 -08:00
Merge branch 'master' into jsonChannel
This commit is contained in:
commit
9fd0b78abc
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
@ -19,7 +19,7 @@ jobs:
|
|||
version: latest
|
||||
|
||||
- name: Run Biome
|
||||
run: biome ci .
|
||||
run: biome ci . --diagnostic-level=error
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
@ -40,4 +40,4 @@ jobs:
|
|||
run: pnpm install
|
||||
|
||||
- name: Build Package
|
||||
run: pnpm run build
|
||||
run: pnpm run build
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"enabled": true
|
||||
},
|
||||
"files": {
|
||||
"ignoreUnknown": true
|
||||
"ignoreUnknown": true,
|
||||
"ignore": ["*.json"]
|
||||
},
|
||||
"vcs": {
|
||||
"enabled": true,
|
||||
|
|
|
@ -21,6 +21,10 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group.
|
|||
- [YYC Mesh](https://yycmesh.com/)
|
||||
|
||||
## United States
|
||||
|
||||
### Arkansas
|
||||
- [Fort Smith Mesh](https://discord.com/invite/nwsvcXeqMX)
|
||||
|
||||
### California
|
||||
- [SoCal Mesh](https://socalmesh.org)
|
||||
- [Laguna Mesh](https://lagunamesh.com)
|
||||
|
@ -28,6 +32,9 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group.
|
|||
- [Bay Area Mesh](https://canvis.app/z2k8a8)
|
||||
- [San Diego Mesh](https://discord.gg/HzE248x2)
|
||||
|
||||
### Colorado
|
||||
- [Denver Mesh](https://denvermesh.org)
|
||||
|
||||
### Hawaii
|
||||
- [Hawaii Meshnet](https://www.hawaiimesh.net/)
|
||||
|
||||
|
|
|
@ -4,137 +4,137 @@ require("dotenv").config();
|
|||
|
||||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
title: "Meshtastic",
|
||||
tagline:
|
||||
"An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices",
|
||||
url: "https://meshtastic.org",
|
||||
baseUrl: "/",
|
||||
trailingSlash: true,
|
||||
onBrokenLinks: "throw",
|
||||
onBrokenMarkdownLinks: "warn",
|
||||
favicon: "design/web/favicon.ico",
|
||||
organizationName: "meshtastic",
|
||||
projectName: "meshtastic",
|
||||
themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ {
|
||||
docs: {
|
||||
sidebar: {
|
||||
autoCollapseCategories: true,
|
||||
},
|
||||
},
|
||||
navbar: {
|
||||
title: "Meshtastic",
|
||||
hideOnScroll: true,
|
||||
logo: {
|
||||
alt: "Meshtastic Logo",
|
||||
src: "design/logo/svg/Mesh_Logo_Black.svg",
|
||||
srcDark: "design/logo/svg/Mesh_Logo_White.svg",
|
||||
},
|
||||
items: [
|
||||
{
|
||||
label: "Docs",
|
||||
to: "docs/introduction",
|
||||
},
|
||||
{
|
||||
label: "Downloads",
|
||||
to: "downloads",
|
||||
},
|
||||
{
|
||||
label: "About",
|
||||
position: "right",
|
||||
items: [
|
||||
{
|
||||
label: "Introduction",
|
||||
to: "docs/introduction",
|
||||
},
|
||||
{
|
||||
label: "Getting Started",
|
||||
to: "docs/getting-started",
|
||||
},
|
||||
{
|
||||
label: "Contributing",
|
||||
to: "docs/contributing",
|
||||
},
|
||||
{
|
||||
label: "Legal",
|
||||
to: "docs/legal",
|
||||
},
|
||||
{
|
||||
label: "FAQs",
|
||||
to: "docs/faq",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
href: "https://github.com/meshtastic",
|
||||
position: "right",
|
||||
className: "header-github-link",
|
||||
"aria-label": "GitHub repository",
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
copyright: `<a href="https://vercel.com/?utm_source=meshtastic&utm_campaign=oss">Powered by ▲ Vercel</a> | Meshtastic® is a registered trademark of Meshtastic LLC. | <a href="/docs/legal">Legal Information</a>.`,
|
||||
},
|
||||
algolia: {
|
||||
appId: "IG2GQB8L3V",
|
||||
apiKey: "2e4348812173ec7ea6f7879c7032bb21",
|
||||
indexName: "meshtastic",
|
||||
contextualSearch: false,
|
||||
searchPagePath: "search",
|
||||
},
|
||||
colorMode: {
|
||||
respectPrefersColorScheme: true,
|
||||
},
|
||||
mermaid: {
|
||||
theme: { light: "base", dark: "base" },
|
||||
options: {
|
||||
themeVariables: {
|
||||
primaryColor: "#67EA94",
|
||||
primaryTextColor: "var(--tw-prose-headings)",
|
||||
primaryBorderColor: "#4D4D4D",
|
||||
lineColor: "#EAD667",
|
||||
secondaryColor: "#EA67BD",
|
||||
tertiaryColor: "#677CEA",
|
||||
},
|
||||
},
|
||||
},
|
||||
title: "Meshtastic",
|
||||
tagline:
|
||||
"An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices",
|
||||
url: "https://meshtastic.org",
|
||||
baseUrl: "/",
|
||||
trailingSlash: true,
|
||||
onBrokenLinks: "throw",
|
||||
onBrokenMarkdownLinks: "warn",
|
||||
favicon: "design/web/favicon.ico",
|
||||
organizationName: "meshtastic",
|
||||
projectName: "meshtastic",
|
||||
themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ {
|
||||
docs: {
|
||||
sidebar: {
|
||||
autoCollapseCategories: true,
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
() => {
|
||||
return {
|
||||
name: "docusaurus-tailwindcss",
|
||||
configurePostCss(postcssOptions) {
|
||||
postcssOptions.plugins.push(require("tailwindcss"));
|
||||
postcssOptions.plugins.push(require("autoprefixer"));
|
||||
return postcssOptions;
|
||||
},
|
||||
};
|
||||
navbar: {
|
||||
title: "Meshtastic",
|
||||
hideOnScroll: true,
|
||||
logo: {
|
||||
alt: "Meshtastic Logo",
|
||||
src: "design/logo/svg/Mesh_Logo_Black.svg",
|
||||
srcDark: "design/logo/svg/Mesh_Logo_White.svg",
|
||||
},
|
||||
items: [
|
||||
{
|
||||
label: "Docs",
|
||||
to: "docs/introduction",
|
||||
},
|
||||
],
|
||||
presets: [
|
||||
[
|
||||
"@docusaurus/preset-classic",
|
||||
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||
{
|
||||
label: "Downloads",
|
||||
to: "downloads",
|
||||
},
|
||||
{
|
||||
label: "About",
|
||||
position: "right",
|
||||
items: [
|
||||
{
|
||||
docs: {
|
||||
sidebarPath: require.resolve("./sidebars.js"),
|
||||
editUrl: "https://github.com/meshtastic/meshtastic/edit/master/",
|
||||
breadcrumbs: false,
|
||||
showLastUpdateAuthor: true,
|
||||
},
|
||||
theme: {
|
||||
customCss: require.resolve("./src/css/custom.css"),
|
||||
},
|
||||
label: "Introduction",
|
||||
to: "docs/introduction",
|
||||
},
|
||||
],
|
||||
{
|
||||
label: "Getting Started",
|
||||
to: "docs/getting-started",
|
||||
},
|
||||
{
|
||||
label: "Contributing",
|
||||
to: "docs/contributing",
|
||||
},
|
||||
{
|
||||
label: "Legal",
|
||||
to: "docs/legal",
|
||||
},
|
||||
{
|
||||
label: "FAQs",
|
||||
to: "docs/faq",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
href: "https://github.com/meshtastic",
|
||||
position: "right",
|
||||
className: "header-github-link",
|
||||
"aria-label": "GitHub repository",
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
copyright: `<a href="https://vercel.com/?utm_source=meshtastic&utm_campaign=oss">Powered by ▲ Vercel</a> | Meshtastic® is a registered trademark of Meshtastic LLC. | <a href="/docs/legal">Legal Information</a>.`,
|
||||
},
|
||||
algolia: {
|
||||
appId: "IG2GQB8L3V",
|
||||
apiKey: "2e4348812173ec7ea6f7879c7032bb21",
|
||||
indexName: "meshtastic",
|
||||
contextualSearch: false,
|
||||
searchPagePath: "search",
|
||||
},
|
||||
colorMode: {
|
||||
respectPrefersColorScheme: true,
|
||||
},
|
||||
mermaid: {
|
||||
theme: { light: "base", dark: "base" },
|
||||
options: {
|
||||
themeVariables: {
|
||||
primaryColor: "#67EA94",
|
||||
primaryTextColor: "var(--tw-prose-headings)",
|
||||
primaryBorderColor: "#4D4D4D",
|
||||
lineColor: "#EAD667",
|
||||
secondaryColor: "#EA67BD",
|
||||
tertiaryColor: "#677CEA",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
() => {
|
||||
return {
|
||||
name: "docusaurus-tailwindcss",
|
||||
configurePostCss(postcssOptions) {
|
||||
postcssOptions.plugins.push(require("tailwindcss"));
|
||||
postcssOptions.plugins.push(require("autoprefixer"));
|
||||
return postcssOptions;
|
||||
},
|
||||
};
|
||||
},
|
||||
],
|
||||
presets: [
|
||||
[
|
||||
"@docusaurus/preset-classic",
|
||||
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||
{
|
||||
docs: {
|
||||
sidebarPath: require.resolve("./sidebars.js"),
|
||||
editUrl: "https://github.com/meshtastic/meshtastic/edit/master/",
|
||||
breadcrumbs: false,
|
||||
showLastUpdateAuthor: true,
|
||||
},
|
||||
theme: {
|
||||
customCss: require.resolve("./src/css/custom.css"),
|
||||
},
|
||||
},
|
||||
],
|
||||
customFields: {
|
||||
API_URL: process.env.API_URL,
|
||||
},
|
||||
markdown: {
|
||||
mermaid: true,
|
||||
},
|
||||
themes: ["@docusaurus/theme-mermaid"],
|
||||
],
|
||||
customFields: {
|
||||
API_URL: process.env.API_URL,
|
||||
},
|
||||
markdown: {
|
||||
mermaid: true,
|
||||
},
|
||||
themes: ["@docusaurus/theme-mermaid"],
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
"tailwindcss": "^3.4.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "^1.5.0",
|
||||
"@biomejs/biome": "^1.5.3",
|
||||
"@buf/meshtastic_protobufs.bufbuild_es": "1.6.0-20240106203407-94f78518ac45.1",
|
||||
"@docusaurus/module-type-aliases": "3.1.0",
|
||||
"@tailwindcss/typography": "^0.5.10",
|
||||
|
|
|
@ -65,8 +65,8 @@ dependencies:
|
|||
|
||||
devDependencies:
|
||||
'@biomejs/biome':
|
||||
specifier: ^1.5.0
|
||||
version: 1.5.0
|
||||
specifier: ^1.5.3
|
||||
version: 1.5.3
|
||||
'@buf/meshtastic_protobufs.bufbuild_es':
|
||||
specifier: 1.6.0-20240106203407-94f78518ac45.1
|
||||
version: 1.6.0-20240106203407-94f78518ac45.1(@bufbuild/protobuf@1.6.0)
|
||||
|
@ -1551,24 +1551,24 @@ packages:
|
|||
to-fast-properties: 2.0.0
|
||||
dev: false
|
||||
|
||||
/@biomejs/biome@1.5.0:
|
||||
resolution: {integrity: sha512-ln+o5jbs109qpeDoA+5n+vlAPai3DhlK0tHtZXzQvu4tswFgxNiJCeIXmlW1DYHziTmtBImV3Y0uhbm2iVSE3Q==}
|
||||
/@biomejs/biome@1.5.3:
|
||||
resolution: {integrity: sha512-yvZCa/g3akwTaAQ7PCwPWDCkZs3Qa5ONg/fgOUT9e6wAWsPftCjLQFPXBeGxPK30yZSSpgEmRCfpGTmVbUjGgg==}
|
||||
engines: {node: '>=14.*'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
'@biomejs/cli-darwin-arm64': 1.5.0
|
||||
'@biomejs/cli-darwin-x64': 1.5.0
|
||||
'@biomejs/cli-linux-arm64': 1.5.0
|
||||
'@biomejs/cli-linux-arm64-musl': 1.5.0
|
||||
'@biomejs/cli-linux-x64': 1.5.0
|
||||
'@biomejs/cli-linux-x64-musl': 1.5.0
|
||||
'@biomejs/cli-win32-arm64': 1.5.0
|
||||
'@biomejs/cli-win32-x64': 1.5.0
|
||||
'@biomejs/cli-darwin-arm64': 1.5.3
|
||||
'@biomejs/cli-darwin-x64': 1.5.3
|
||||
'@biomejs/cli-linux-arm64': 1.5.3
|
||||
'@biomejs/cli-linux-arm64-musl': 1.5.3
|
||||
'@biomejs/cli-linux-x64': 1.5.3
|
||||
'@biomejs/cli-linux-x64-musl': 1.5.3
|
||||
'@biomejs/cli-win32-arm64': 1.5.3
|
||||
'@biomejs/cli-win32-x64': 1.5.3
|
||||
dev: true
|
||||
|
||||
/@biomejs/cli-darwin-arm64@1.5.0:
|
||||
resolution: {integrity: sha512-3+D7axf04dpadGMOaqb2q+zyQnhWW0o/Imt7TJBWsoE0N3/+28Wht8g3UEHHcUL5FPuGIfsE+NcYntBaaAsEIg==}
|
||||
/@biomejs/cli-darwin-arm64@1.5.3:
|
||||
resolution: {integrity: sha512-ImU7mh1HghEDyqNmxEZBoMPr8SxekkZuYcs+gynKlNW+TALQs7swkERiBLkG9NR0K1B3/2uVzlvYowXrmlW8hw==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
@ -1576,8 +1576,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-darwin-x64@1.5.0:
|
||||
resolution: {integrity: sha512-8k5aaLWE/B6ZAXLC+z/Vwh9ogyiSaiRIfvg+F9foxuneHl2R/D/2Iy7pvd3Yoi4Kf6/MBdowekPVezGP4/Kbcw==}
|
||||
/@biomejs/cli-darwin-x64@1.5.3:
|
||||
resolution: {integrity: sha512-vCdASqYnlpq/swErH7FD6nrFz0czFtK4k/iLgj0/+VmZVjineFPgevOb+Sr9vz0tk0GfdQO60bSpI74zU8M9Dw==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
@ -1585,8 +1585,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-linux-arm64-musl@1.5.0:
|
||||
resolution: {integrity: sha512-+1B3J8tWLTOvP3+00Cap+XhEXMvxwCHvVfuywUsB7Sqd66NWic3wKJuGbGcS3PuCWtGuIFsiQMNAGqiOXG4uBQ==}
|
||||
/@biomejs/cli-linux-arm64-musl@1.5.3:
|
||||
resolution: {integrity: sha512-DYuMizUYUBYfS0IHGjDrOP1RGipqWfMGEvNEJ398zdtmCKLXaUvTimiox5dvx4X15mBK5M2m8wgWUgOP1giUpQ==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
@ -1594,8 +1594,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-linux-arm64@1.5.0:
|
||||
resolution: {integrity: sha512-RiecxG71E1jnqiJZ3FaikVBDRkk2ohIxBo0O4o68g87y6Hug//G0S83sj6Wqyn8DgKMCRWQg+XYMgk5CwLVowA==}
|
||||
/@biomejs/cli-linux-arm64@1.5.3:
|
||||
resolution: {integrity: sha512-cupBQv0sNF1OKqBfx7EDWMSsKwRrBUZfjXawT4s6hKV6ALq7p0QzWlxr/sDmbKMLOaLQtw2Qgu/77N9rm+f9Rg==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
@ -1603,8 +1603,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-linux-x64-musl@1.5.0:
|
||||
resolution: {integrity: sha512-4S2rLluc0WT+XTbLTgcm9+5EEFwJmoGiUEzR6N0P2sIjZD8c5KNf9Ou46BP1Pdg5AgqV+IIClGPK1I80ApSh1Q==}
|
||||
/@biomejs/cli-linux-x64-musl@1.5.3:
|
||||
resolution: {integrity: sha512-UUHiAnlDqr2Y/LpvshBFhUYMWkl2/Jn+bi3U6jKuav0qWbbBKU/ByHgR4+NBxpKBYoCtWxhnmatfH1bpPIuZMw==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
@ -1612,8 +1612,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-linux-x64@1.5.0:
|
||||
resolution: {integrity: sha512-TlTsG+ptSmnDTUsAAYsXyGOXMcFiF8SiwhPdj4YsNkJRgx9M2curEVcTVm66FINIPK6VJTUcEDahFlx3NPUOzA==}
|
||||
/@biomejs/cli-linux-x64@1.5.3:
|
||||
resolution: {integrity: sha512-YQrSArQvcv4FYsk7Q91Yv4uuu5F8hJyORVcv3zsjCLGkjIjx2RhjYLpTL733SNL7v33GmOlZY0eFR1ko38tuUw==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
@ -1621,8 +1621,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-win32-arm64@1.5.0:
|
||||
resolution: {integrity: sha512-sWOi1SR+YqJuXElBncGRnWBR7IN7ni6GQY4Zm/vTpP6nVA0dX5C301eQUW1N/VnFQb6fyrJTcBslDUKyemsN/g==}
|
||||
/@biomejs/cli-win32-arm64@1.5.3:
|
||||
resolution: {integrity: sha512-HxatYH7vf/kX9nrD+pDYuV2GI9GV8EFo6cfKkahAecTuZLPxryHx1WEfJthp5eNsE0+09STGkKIKjirP0ufaZA==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
@ -1630,8 +1630,8 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/@biomejs/cli-win32-x64@1.5.0:
|
||||
resolution: {integrity: sha512-OoqgUXyzmRwX466bklOsWS7WdcvWtBuxF94DXATNe7bUiBa2tlW8QX7VVZvPnMKH57E5J619AkB3b5fhzyUhXA==}
|
||||
/@biomejs/cli-win32-x64@1.5.3:
|
||||
resolution: {integrity: sha512-fMvbSouZEASU7mZH8SIJSANDm5OqsjgtVXlbUqxwed6BP7uuHRSs396Aqwh2+VoW8fwTpp6ybIUoC9FrzB0kyA==}
|
||||
engines: {node: '>=14.*'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
|
12
sidebars.js
12
sidebars.js
|
@ -2,10 +2,10 @@
|
|||
|
||||
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
|
||||
module.exports = {
|
||||
Sidebar: [
|
||||
{
|
||||
type: "autogenerated",
|
||||
dirName: ".",
|
||||
},
|
||||
],
|
||||
Sidebar: [
|
||||
{
|
||||
type: "autogenerated",
|
||||
dirName: ".",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React from "react";
|
||||
import type React from "react";
|
||||
|
||||
export interface ColorModeProps {
|
||||
children: React.ReactNode;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React from "react";
|
||||
import type React from "react";
|
||||
|
||||
import Layout from "@theme/Layout";
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React from "react";
|
||||
import type React from "react";
|
||||
|
||||
import { FiExternalLink } from "react-icons/fi";
|
||||
|
||||
|
|
|
@ -2,11 +2,11 @@ import { Protobuf, Types } from "@meshtastic/js";
|
|||
import React, { useEffect } from "react";
|
||||
|
||||
interface Region {
|
||||
freq_start: number;
|
||||
freq_end: number;
|
||||
duty_cycle: number;
|
||||
freqStart: number;
|
||||
freqEnd: number;
|
||||
dutyCycle: number;
|
||||
spacing: number;
|
||||
power_limit: number;
|
||||
powerLimit: number;
|
||||
}
|
||||
|
||||
interface Modem {
|
||||
|
@ -22,181 +22,181 @@ const RegionData = new Map<
|
|||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.US,
|
||||
{
|
||||
freq_start: 902.0,
|
||||
freq_end: 928.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 902.0,
|
||||
freqEnd: 928.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 30,
|
||||
powerLimit: 30,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.EU_433,
|
||||
{
|
||||
freq_start: 433.0,
|
||||
freq_end: 434.0,
|
||||
duty_cycle: 10,
|
||||
freqStart: 433.0,
|
||||
freqEnd: 434.0,
|
||||
dutyCycle: 10,
|
||||
spacing: 0,
|
||||
power_limit: 12,
|
||||
powerLimit: 12,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.EU_868,
|
||||
{
|
||||
freq_start: 869.4,
|
||||
freq_end: 869.65,
|
||||
duty_cycle: 10,
|
||||
freqStart: 869.4,
|
||||
freqEnd: 869.65,
|
||||
dutyCycle: 10,
|
||||
spacing: 0,
|
||||
power_limit: 27,
|
||||
powerLimit: 27,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.CN,
|
||||
{
|
||||
freq_start: 470.0,
|
||||
freq_end: 510.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 470.0,
|
||||
freqEnd: 510.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 19,
|
||||
powerLimit: 19,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.JP,
|
||||
{
|
||||
freq_start: 920.8,
|
||||
freq_end: 927.8,
|
||||
duty_cycle: 100,
|
||||
freqStart: 920.8,
|
||||
freqEnd: 927.8,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 16,
|
||||
powerLimit: 16,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.ANZ,
|
||||
{
|
||||
freq_start: 915.0,
|
||||
freq_end: 928.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 915.0,
|
||||
freqEnd: 928.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 30,
|
||||
powerLimit: 30,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.RU,
|
||||
{
|
||||
freq_start: 868.7,
|
||||
freq_end: 869.2,
|
||||
duty_cycle: 100,
|
||||
freqStart: 868.7,
|
||||
freqEnd: 869.2,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 20,
|
||||
powerLimit: 20,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.KR,
|
||||
{
|
||||
freq_start: 920.0,
|
||||
freq_end: 923.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 920.0,
|
||||
freqEnd: 923.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 0,
|
||||
powerLimit: 0,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.TW,
|
||||
{
|
||||
freq_start: 920.0,
|
||||
freq_end: 925.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 920.0,
|
||||
freqEnd: 925.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 0,
|
||||
powerLimit: 0,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.IN,
|
||||
{
|
||||
freq_start: 865.0,
|
||||
freq_end: 867.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 865.0,
|
||||
freqEnd: 867.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 30,
|
||||
powerLimit: 30,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.NZ_865,
|
||||
{
|
||||
freq_start: 864.0,
|
||||
freq_end: 868.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 864.0,
|
||||
freqEnd: 868.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 36,
|
||||
powerLimit: 36,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.TH,
|
||||
{
|
||||
freq_start: 920.0,
|
||||
freq_end: 925.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 920.0,
|
||||
freqEnd: 925.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 16,
|
||||
powerLimit: 16,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.UA_433,
|
||||
{
|
||||
freq_start: 433.0,
|
||||
freq_end: 434.7,
|
||||
duty_cycle: 10,
|
||||
freqStart: 433.0,
|
||||
freqEnd: 434.7,
|
||||
dutyCycle: 10,
|
||||
spacing: 0,
|
||||
power_limit: 10,
|
||||
powerLimit: 10,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.UA_868,
|
||||
{
|
||||
freq_start: 868.0,
|
||||
freq_end: 868.6,
|
||||
duty_cycle: 1,
|
||||
freqStart: 868.0,
|
||||
freqEnd: 868.6,
|
||||
dutyCycle: 1,
|
||||
spacing: 0,
|
||||
power_limit: 14,
|
||||
powerLimit: 14,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.MY_433,
|
||||
{
|
||||
freq_start: 433.0,
|
||||
freq_end: 435.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 433.0,
|
||||
freqEnd: 435.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 20,
|
||||
powerLimit: 20,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.MY_919,
|
||||
{
|
||||
freq_start: 919.0,
|
||||
freq_end: 924.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 919.0,
|
||||
freqEnd: 924.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 27,
|
||||
powerLimit: 27,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.LORA_24,
|
||||
{
|
||||
freq_start: 2400.0,
|
||||
freq_end: 2483.5,
|
||||
duty_cycle: 100,
|
||||
freqStart: 2400.0,
|
||||
freqEnd: 2483.5,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 10,
|
||||
powerLimit: 10,
|
||||
},
|
||||
],
|
||||
[
|
||||
Protobuf.Config.Config_LoRaConfig_RegionCode.UNSET,
|
||||
{
|
||||
freq_start: 902.0,
|
||||
freq_end: 928.0,
|
||||
duty_cycle: 100,
|
||||
freqStart: 902.0,
|
||||
freqEnd: 928.0,
|
||||
dutyCycle: 100,
|
||||
spacing: 0,
|
||||
power_limit: 30,
|
||||
powerLimit: 30,
|
||||
},
|
||||
],
|
||||
]);
|
||||
|
@ -290,7 +290,7 @@ export const FrequencyCalculator = (): JSX.Element => {
|
|||
const selectedRegion = RegionData.get(region);
|
||||
const selectedModemPreset = modemPresets.get(modemPreset);
|
||||
const calculatedNumChannels = Math.floor(
|
||||
(selectedRegion.freq_end - selectedRegion.freq_start) /
|
||||
(selectedRegion.freqEnd - selectedRegion.freqStart) /
|
||||
(selectedRegion.spacing + selectedModemPreset.bw / 1000),
|
||||
);
|
||||
|
||||
|
@ -304,7 +304,7 @@ export const FrequencyCalculator = (): JSX.Element => {
|
|||
setChannel(updatedChannel);
|
||||
|
||||
setChannelFrequency(
|
||||
selectedRegion.freq_start +
|
||||
selectedRegion.freqStart +
|
||||
selectedModemPreset.bw / 2000 +
|
||||
updatedChannel * (selectedModemPreset.bw / 1000),
|
||||
);
|
||||
|
@ -318,7 +318,7 @@ export const FrequencyCalculator = (): JSX.Element => {
|
|||
value={modemPreset}
|
||||
onChange={(e) =>
|
||||
setModemPreset(
|
||||
parseInt(
|
||||
Number.parseInt(
|
||||
e.target.value,
|
||||
) as Protobuf.Config.Config_LoRaConfig_ModemPreset,
|
||||
)
|
||||
|
@ -335,7 +335,7 @@ export const FrequencyCalculator = (): JSX.Element => {
|
|||
<label>Region:</label>
|
||||
<select
|
||||
value={region}
|
||||
onChange={(e) => setRegion(parseInt(e.target.value))}
|
||||
onChange={(e) => setRegion(Number.parseInt(e.target.value))}
|
||||
>
|
||||
{Array.from(RegionData.keys()).map((key) => (
|
||||
<option key={key} value={key}>
|
||||
|
@ -348,7 +348,7 @@ export const FrequencyCalculator = (): JSX.Element => {
|
|||
<label>Channel:</label>
|
||||
<select
|
||||
value={channel}
|
||||
onChange={(e) => setChannel(parseInt(e.target.value))}
|
||||
onChange={(e) => setChannel(Number.parseInt(e.target.value))}
|
||||
>
|
||||
{Array.from(Array(numChannels).keys()).map((key) => (
|
||||
<option key={key} value={key}>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { DeviceFirmwareResource } from "../../../utils/apiTypes";
|
||||
import type { DeviceFirmwareResource } from "../../../utils/apiTypes";
|
||||
|
||||
export interface releaseCardProps {
|
||||
variant: string;
|
||||
|
@ -66,7 +66,9 @@ export const PlaceholderFirmwareCard = (): JSX.Element => {
|
|||
<div className="rounded-md bg-gray-500 w-32 h-4" />
|
||||
</div>
|
||||
<div className="card__body rounded-md bg-gray-500 h-12" />
|
||||
<a className="button disabled button--primary button--block"> </a>
|
||||
<span className="button disabled button--primary button--block" href="#">
|
||||
|
||||
</span>
|
||||
<div className="rounded-md bg-gray-500 w-32 h-8" />
|
||||
<div className="rounded-md bg-gray-500 w-44 h-4" />
|
||||
<div className="rounded-md bg-gray-500 w-36 h-4" />
|
||||
|
|
|
@ -10,7 +10,7 @@ import {
|
|||
} from "@heroicons/react/24/solid";
|
||||
import Layout from "@theme/Layout";
|
||||
|
||||
import { FirmwareReleases } from "../../utils/apiTypes";
|
||||
import type { FirmwareReleases } from "../../utils/apiTypes";
|
||||
import { fetcher } from "../../utils/swr";
|
||||
import {
|
||||
FirmwareCard,
|
||||
|
@ -63,7 +63,8 @@ const Firmware = (): JSX.Element => {
|
|||
<div className="card__body">
|
||||
<p>
|
||||
Devices such as T-Echo, RAK4631, and RAK11300 are flashed via
|
||||
filesystem. Use the web flasher to download applicable firmware.
|
||||
filesystem. Use the web flasher to download applicable
|
||||
firmware.
|
||||
</p>
|
||||
</div>
|
||||
<div className="card__footer mt-auto">
|
||||
|
|
|
@ -4,7 +4,10 @@ import useBaseUrl from "@docusaurus/useBaseUrl";
|
|||
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
||||
import Layout from "@theme/Layout";
|
||||
|
||||
import { SocialCard, SocialCardProps } from "../components/homepage/SocialCard";
|
||||
import {
|
||||
SocialCard,
|
||||
type SocialCardProps,
|
||||
} from "../components/homepage/SocialCard";
|
||||
|
||||
const SocialCards: SocialCardProps[] = [
|
||||
{
|
||||
|
|
|
@ -85,7 +85,7 @@ const OEM = (): JSX.Element => {
|
|||
<span>Font</span>
|
||||
<select
|
||||
onChange={(e) => {
|
||||
setOemFont(parseInt(e.target.value));
|
||||
setOemFont(Number.parseInt(e.target.value));
|
||||
}}
|
||||
>
|
||||
{enumOptions.map(([name, value]) => (
|
||||
|
@ -102,7 +102,7 @@ const OEM = (): JSX.Element => {
|
|||
readFile(e.target.files[0]).then((data) => {
|
||||
setOemIconBits(
|
||||
new Uint8Array(
|
||||
data.split(",").map((s) => parseInt(s.trim(), 16)),
|
||||
data.split(",").map((s) => Number.parseInt(s.trim(), 16)),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
@ -113,7 +113,7 @@ const OEM = (): JSX.Element => {
|
|||
type="number"
|
||||
name="oemIconHeight"
|
||||
onChange={(e) => {
|
||||
setOemIconHeight(parseInt(e.target.value));
|
||||
setOemIconHeight(Number.parseInt(e.target.value));
|
||||
}}
|
||||
/>
|
||||
<span>Logo Width</span>
|
||||
|
@ -121,7 +121,7 @@ const OEM = (): JSX.Element => {
|
|||
type="number"
|
||||
name="oemIconWidth"
|
||||
onChange={(e) => {
|
||||
setOemIconWidth(parseInt(e.target.value));
|
||||
setOemIconWidth(Number.parseInt(e.target.value));
|
||||
}}
|
||||
/>
|
||||
<span>Boot Text</span>
|
||||
|
@ -132,7 +132,7 @@ const OEM = (): JSX.Element => {
|
|||
setOemText(e.target.value);
|
||||
}}
|
||||
/>
|
||||
<a
|
||||
<button
|
||||
className="cursor-pointer rounded-md bg-tertiary p-2 hover:brightness-90"
|
||||
download="OEM.bin"
|
||||
onClick={() => {
|
||||
|
@ -141,9 +141,10 @@ const OEM = (): JSX.Element => {
|
|||
});
|
||||
window.open(URL.createObjectURL(blob));
|
||||
}}
|
||||
type="button"
|
||||
>
|
||||
Download
|
||||
</a>
|
||||
</button>
|
||||
{oemBytes.toString()}
|
||||
</div>
|
||||
</Layout>
|
||||
|
|
|
@ -5,10 +5,10 @@ export default function calculateADC() {
|
|||
const batFullPercent = 1;
|
||||
//variable
|
||||
const batteryChargePercent =
|
||||
parseFloat(
|
||||
Number.parseFloat(
|
||||
(<HTMLInputElement>document.getElementById("batteryChargePercent")).value,
|
||||
) / 100;
|
||||
const operativeAdcMultiplier = parseFloat(
|
||||
const operativeAdcMultiplier = Number.parseFloat(
|
||||
(<HTMLInputElement>document.getElementById("operativeAdcMultiplier")).value,
|
||||
);
|
||||
const result =
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
import typography from "@tailwindcss/typography";
|
||||
import type { Config } from "tailwindcss";
|
||||
import typography from '@tailwindcss/typography'
|
||||
|
||||
export default {
|
||||
content: ["./src/**/*.{js,jsx,ts,tsx}"],
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
accent: "var(--accent)",
|
||||
base: "var(--base)",
|
||||
primary: "var(--primary)",
|
||||
secondary: "var(--secondary)",
|
||||
tertiary: "var(--tertiary)",
|
||||
mute: "var(--mute)",
|
||||
primaryInv: "var(--primaryInv)",
|
||||
secondaryInv: "var(--secondaryInv)",
|
||||
tertiaryInv: "var(--tertiaryInv)",
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [typography()],
|
||||
content: ["./src/**/*.{js,jsx,ts,tsx}"],
|
||||
darkMode: "class",
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
accent: "var(--accent)",
|
||||
base: "var(--base)",
|
||||
primary: "var(--primary)",
|
||||
secondary: "var(--secondary)",
|
||||
tertiary: "var(--tertiary)",
|
||||
mute: "var(--mute)",
|
||||
primaryInv: "var(--primaryInv)",
|
||||
secondaryInv: "var(--secondaryInv)",
|
||||
tertiaryInv: "var(--tertiaryInv)",
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [typography()],
|
||||
} satisfies Config;
|
||||
|
|
Loading…
Reference in a new issue