mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
deploy: 295f67d4fa
This commit is contained in:
parent
b4fce9d1fd
commit
9883f380cd
16 changed files with 2486 additions and 9 deletions
27
404.html
27
404.html
|
|
@ -349,6 +349,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/meshcore/kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="/meshcore/nrf52_power_management/" class="md-nav__link">
|
<a href="/meshcore/nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1437,6 +1437,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
@ -3099,7 +3126,7 @@
|
||||||
<h4 id="dump-all-defined-regions-and-flood-permissions">Dump all defined regions and flood permissions</h4>
|
<h4 id="dump-all-defined-regions-and-flood-permissions">Dump all defined regions and flood permissions</h4>
|
||||||
<p><strong>Usage:</strong>
|
<p><strong>Usage:</strong>
|
||||||
- <code>region</code></p>
|
- <code>region</code></p>
|
||||||
<p><strong>Serial Only:</strong> Yes</p>
|
<p><strong>Serial Only:</strong> For firmware older than 1.12.0</p>
|
||||||
<hr />
|
<hr />
|
||||||
<h3 id="region-examples">Region Examples</h3>
|
<h3 id="region-examples">Region Examples</h3>
|
||||||
<p><strong>Example 1: Using F Flag with Named Public Region</strong></p>
|
<p><strong>Example 1: Using F Flag with Named Public Region</strong></p>
|
||||||
|
|
|
||||||
|
|
@ -922,6 +922,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -418,6 +418,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
<link rel="prev" href="../docs/">
|
<link rel="prev" href="../docs/">
|
||||||
|
|
||||||
|
|
||||||
<link rel="next" href="../nrf52_power_management/">
|
<link rel="next" href="../kiss_modem_protocol/">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1380,6 +1380,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
27
index.html
27
index.html
|
|
@ -368,6 +368,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="nrf52_power_management/" class="md-nav__link">
|
<a href="nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
2126
kiss_modem_protocol/index.html
Normal file
2126
kiss_modem_protocol/index.html
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -13,7 +13,7 @@
|
||||||
<link rel="canonical" href="https://meshcore-dev.github.io/meshcore/nrf52_power_management/">
|
<link rel="canonical" href="https://meshcore-dev.github.io/meshcore/nrf52_power_management/">
|
||||||
|
|
||||||
|
|
||||||
<link rel="prev" href="../faq/">
|
<link rel="prev" href="../kiss_modem_protocol/">
|
||||||
|
|
||||||
|
|
||||||
<link rel="next" href="../packet_format/">
|
<link rel="next" href="../packet_format/">
|
||||||
|
|
@ -358,6 +358,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -360,6 +360,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -360,6 +360,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -360,6 +360,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -20,6 +20,10 @@
|
||||||
<loc>https://meshcore-dev.github.io/meshcore/faq/</loc>
|
<loc>https://meshcore-dev.github.io/meshcore/faq/</loc>
|
||||||
<lastmod>2026-02-15</lastmod>
|
<lastmod>2026-02-15</lastmod>
|
||||||
</url>
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://meshcore-dev.github.io/meshcore/kiss_modem_protocol/</loc>
|
||||||
|
<lastmod>2026-02-15</lastmod>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://meshcore-dev.github.io/meshcore/nrf52_power_management/</loc>
|
<loc>https://meshcore-dev.github.io/meshcore/nrf52_power_management/</loc>
|
||||||
<lastmod>2026-02-15</lastmod>
|
<lastmod>2026-02-15</lastmod>
|
||||||
|
|
|
||||||
BIN
sitemap.xml.gz
BIN
sitemap.xml.gz
Binary file not shown.
|
|
@ -360,6 +360,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
@ -1237,7 +1264,7 @@
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h2 id="resp_code_stats-stats_type_packets-24-2">RESP_CODE_STATS + STATS_TYPE_PACKETS (24, 2)</h2>
|
<h2 id="resp_code_stats-stats_type_packets-24-2">RESP_CODE_STATS + STATS_TYPE_PACKETS (24, 2)</h2>
|
||||||
<p><strong>Total Frame Size:</strong> 26 bytes</p>
|
<p><strong>Total Frame Size:</strong> 26 bytes (legacy) or 30 bytes (includes <code>recv_errors</code>)</p>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -1314,6 +1341,14 @@
|
||||||
<td>Packets received via direct routing</td>
|
<td>Packets received via direct routing</td>
|
||||||
<td>0 - 4,294,967,295</td>
|
<td>0 - 4,294,967,295</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>26</td>
|
||||||
|
<td>4</td>
|
||||||
|
<td>uint32_t</td>
|
||||||
|
<td>recv_errors</td>
|
||||||
|
<td>Receive/CRC errors (RadioLib); present only in 30-byte frame</td>
|
||||||
|
<td>0 - 4,294,967,295</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<h3 id="notes">Notes</h3>
|
<h3 id="notes">Notes</h3>
|
||||||
|
|
@ -1321,6 +1356,7 @@
|
||||||
<li>Counters are cumulative from boot and may wrap.</li>
|
<li>Counters are cumulative from boot and may wrap.</li>
|
||||||
<li><code>recv = flood_rx + direct_rx</code></li>
|
<li><code>recv = flood_rx + direct_rx</code></li>
|
||||||
<li><code>sent = flood_tx + direct_tx</code></li>
|
<li><code>sent = flood_tx + direct_tx</code></li>
|
||||||
|
<li>Clients should accept frame length ≥ 26; if length ≥ 30, parse <code>recv_errors</code> at offset 26.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3 id="example-structure-cc_2">Example Structure (C/C++)</h3>
|
<h3 id="example-structure-cc_2">Example Structure (C/C++)</h3>
|
||||||
<pre><code class="language-c">struct StatsPackets {
|
<pre><code class="language-c">struct StatsPackets {
|
||||||
|
|
@ -1332,6 +1368,7 @@
|
||||||
uint32_t direct_tx;
|
uint32_t direct_tx;
|
||||||
uint32_t flood_rx;
|
uint32_t flood_rx;
|
||||||
uint32_t direct_rx;
|
uint32_t direct_rx;
|
||||||
|
uint32_t recv_errors; // present when frame size is 30
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
@ -1382,11 +1419,12 @@ def parse_stats_radio(frame):
|
||||||
}
|
}
|
||||||
|
|
||||||
def parse_stats_packets(frame):
|
def parse_stats_packets(frame):
|
||||||
"""Parse RESP_CODE_STATS + STATS_TYPE_PACKETS frame (26 bytes)"""
|
"""Parse RESP_CODE_STATS + STATS_TYPE_PACKETS frame (26 or 30 bytes)"""
|
||||||
|
assert len(frame) >= 26, "STATS_TYPE_PACKETS frame too short"
|
||||||
response_code, stats_type, recv, sent, flood_tx, direct_tx, flood_rx, direct_rx = \
|
response_code, stats_type, recv, sent, flood_tx, direct_tx, flood_rx, direct_rx = \
|
||||||
struct.unpack('<B B I I I I I I', frame)
|
struct.unpack('<B B I I I I I I', frame[:26])
|
||||||
assert response_code == 24 and stats_type == 2, "Invalid response type"
|
assert response_code == 24 and stats_type == 2, "Invalid response type"
|
||||||
return {
|
result = {
|
||||||
'recv': recv,
|
'recv': recv,
|
||||||
'sent': sent,
|
'sent': sent,
|
||||||
'flood_tx': flood_tx,
|
'flood_tx': flood_tx,
|
||||||
|
|
@ -1394,6 +1432,10 @@ def parse_stats_packets(frame):
|
||||||
'flood_rx': flood_rx,
|
'flood_rx': flood_rx,
|
||||||
'direct_rx': direct_rx
|
'direct_rx': direct_rx
|
||||||
}
|
}
|
||||||
|
if len(frame) >= 30:
|
||||||
|
(recv_errors,) = struct.unpack('<I', frame[26:30])
|
||||||
|
result['recv_errors'] = recv_errors
|
||||||
|
return result
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h2 id="command-usage-example-javascripttypescript">Command Usage Example (JavaScript/TypeScript)</h2>
|
<h2 id="command-usage-example-javascripttypescript">Command Usage Example (JavaScript/TypeScript)</h2>
|
||||||
|
|
@ -1442,6 +1484,7 @@ interface StatsPackets {
|
||||||
direct_tx: number;
|
direct_tx: number;
|
||||||
flood_rx: number;
|
flood_rx: number;
|
||||||
direct_rx: number;
|
direct_rx: number;
|
||||||
|
recv_errors?: number; // present when frame is 30 bytes
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseStatsCore(buffer: ArrayBuffer): StatsCore {
|
function parseStatsCore(buffer: ArrayBuffer): StatsCore {
|
||||||
|
|
@ -1477,12 +1520,15 @@ function parseStatsRadio(buffer: ArrayBuffer): StatsRadio {
|
||||||
|
|
||||||
function parseStatsPackets(buffer: ArrayBuffer): StatsPackets {
|
function parseStatsPackets(buffer: ArrayBuffer): StatsPackets {
|
||||||
const view = new DataView(buffer);
|
const view = new DataView(buffer);
|
||||||
|
if (buffer.byteLength < 26) {
|
||||||
|
throw new Error('STATS_TYPE_PACKETS frame too short');
|
||||||
|
}
|
||||||
const response_code = view.getUint8(0);
|
const response_code = view.getUint8(0);
|
||||||
const stats_type = view.getUint8(1);
|
const stats_type = view.getUint8(1);
|
||||||
if (response_code !== 24 || stats_type !== 2) {
|
if (response_code !== 24 || stats_type !== 2) {
|
||||||
throw new Error('Invalid response type');
|
throw new Error('Invalid response type');
|
||||||
}
|
}
|
||||||
return {
|
const result: StatsPackets = {
|
||||||
recv: view.getUint32(2, true),
|
recv: view.getUint32(2, true),
|
||||||
sent: view.getUint32(6, true),
|
sent: view.getUint32(6, true),
|
||||||
flood_tx: view.getUint32(10, true),
|
flood_tx: view.getUint32(10, true),
|
||||||
|
|
@ -1490,6 +1536,10 @@ function parseStatsPackets(buffer: ArrayBuffer): StatsPackets {
|
||||||
flood_rx: view.getUint32(18, true),
|
flood_rx: view.getUint32(18, true),
|
||||||
direct_rx: view.getUint32(22, true)
|
direct_rx: view.getUint32(22, true)
|
||||||
};
|
};
|
||||||
|
if (buffer.byteLength >= 30) {
|
||||||
|
result.recv_errors = view.getUint32(26, true);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
|
||||||
|
|
@ -358,6 +358,33 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
MeshCore KISS Modem Protocol
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../nrf52_power_management/" class="md-nav__link">
|
<a href="../nrf52_power_management/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue