Skip to content

Commit 362b5eb

Browse files
Update protocol docs for new response codes and signal reporting
1 parent 5ccd99e commit 362b5eb

1 file changed

Lines changed: 32 additions & 27 deletions

File tree

docs/kiss_modem_protocol.md

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -110,36 +110,41 @@ MeshCore-specific functionality uses the standard KISS SetHardware command. The
110110
| GetDeviceName | `0x16` | - |
111111
| Ping | `0x17` | - |
112112
| Reboot | `0x18` | - |
113+
| SetSignalReport | `0x19` | Enable (1): 0x00=disable, nonzero=enable |
114+
| GetSignalReport | `0x1A` | - |
113115

114116
### Response Sub-commands (TNC to Host)
115117

118+
Response codes use the high-bit convention: `response = command | 0x80`. Generic and unsolicited responses use the `0xF0`+ range.
119+
116120
| Sub-command | Value | Data |
117121
|-------------|-------|------|
118-
| Identity | `0x21` | PubKey (32) |
119-
| Random | `0x22` | Random bytes (1-64) |
120-
| Verify | `0x23` | Result (1): 0x00=invalid, 0x01=valid |
121-
| Signature | `0x24` | Signature (64) |
122-
| Encrypted | `0x25` | MAC (2) + Ciphertext |
123-
| Decrypted | `0x26` | Plaintext |
124-
| SharedSecret | `0x27` | Shared secret (32) |
125-
| Hash | `0x28` | SHA-256 hash (32) |
126-
| OK | `0x29` | - |
127-
| Error | `0x2A` | Error code (1) |
128-
| Radio | `0x2B` | Freq (4) + BW (4) + SF (1) + CR (1) |
129-
| TxPower | `0x2C` | Power dBm (1) |
130-
| CurrentRssi | `0x2D` | RSSI dBm (1, signed) |
131-
| ChannelBusy | `0x2E` | Result (1): 0x00=clear, 0x01=busy |
132-
| Airtime | `0x2F` | Milliseconds (4) |
133-
| NoiseFloor | `0x30` | dBm (2, signed) |
134-
| Version | `0x31` | Version (1) + Reserved (1) |
135-
| Stats | `0x32` | RX (4) + TX (4) + Errors (4) |
136-
| Battery | `0x33` | Millivolts (2) |
137-
| MCUTemp | `0x34` | Temperature (2, signed) |
138-
| Sensors | `0x35` | CayenneLPP payload |
139-
| DeviceName | `0x36` | Name (variable, UTF-8) |
140-
| Pong | `0x37` | - |
141-
| TxDone | `0x38` | Result (1): 0x00=failed, 0x01=success |
142-
| RxMeta | `0x39` | SNR (1) + RSSI (1) |
122+
| Identity | `0x81` | PubKey (32) |
123+
| Random | `0x82` | Random bytes (1-64) |
124+
| Verify | `0x83` | Result (1): 0x00=invalid, 0x01=valid |
125+
| Signature | `0x84` | Signature (64) |
126+
| Encrypted | `0x85` | MAC (2) + Ciphertext |
127+
| Decrypted | `0x86` | Plaintext |
128+
| SharedSecret | `0x87` | Shared secret (32) |
129+
| Hash | `0x88` | SHA-256 hash (32) |
130+
| Radio | `0x8B` | Freq (4) + BW (4) + SF (1) + CR (1) |
131+
| TxPower | `0x8C` | Power dBm (1) |
132+
| CurrentRssi | `0x8D` | RSSI dBm (1, signed) |
133+
| ChannelBusy | `0x8E` | Result (1): 0x00=clear, 0x01=busy |
134+
| Airtime | `0x8F` | Milliseconds (4) |
135+
| NoiseFloor | `0x90` | dBm (2, signed) |
136+
| Version | `0x91` | Version (1) + Reserved (1) |
137+
| Stats | `0x92` | RX (4) + TX (4) + Errors (4) |
138+
| Battery | `0x93` | Millivolts (2) |
139+
| MCUTemp | `0x94` | Temperature (2, signed) |
140+
| Sensors | `0x95` | CayenneLPP payload |
141+
| DeviceName | `0x96` | Name (variable, UTF-8) |
142+
| Pong | `0x97` | - |
143+
| SignalReport | `0x9A` | Status (1): 0x00=disabled, 0x01=enabled |
144+
| OK | `0xF0` | - |
145+
| Error | `0xF1` | Error code (1) |
146+
| TxDone | `0xF8` | Result (1): 0x00=failed, 0x01=success |
147+
| RxMeta | `0xF9` | SNR (1) + RSSI (1) |
143148

144149
### Error Codes
145150

@@ -156,9 +161,9 @@ MeshCore-specific functionality uses the standard KISS SetHardware command. The
156161

157162
The TNC sends these SetHardware frames without a preceding request:
158163

159-
**TxDone (0x38)**: Sent after a packet has been transmitted. Contains a single byte: 0x01 for success, 0x00 for failure.
164+
**TxDone (0xF8)**: Sent after a packet has been transmitted. Contains a single byte: 0x01 for success, 0x00 for failure.
160165

161-
**RxMeta (0x39)**: Sent immediately after each standard data frame (type 0x00) with metadata for the received packet. Contains SNR (1 byte, signed, value x4 for 0.25 dB precision) followed by RSSI (1 byte, signed, dBm). Standard KISS clients ignore this frame.
166+
**RxMeta (0xF9)**: Sent immediately after each standard data frame (type 0x00) with metadata for the received packet. Contains SNR (1 byte, signed, value x4 for 0.25 dB precision) followed by RSSI (1 byte, signed, dBm). Enabled by default; can be toggled with SetSignalReport. Standard KISS clients ignore this frame.
162167

163168
## Data Formats
164169

0 commit comments

Comments
 (0)