90 lines
1.9 KiB
Rust
90 lines
1.9 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
use crate::model::AppMode;
|
|
|
|
pub const DEVTOOLS_PROTOCOL_VERSION: u32 = 1;
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
#[serde(tag = "type")]
|
|
pub enum DebugCommand {
|
|
#[serde(rename = "ok")]
|
|
Ok,
|
|
#[serde(rename = "start")]
|
|
Start,
|
|
#[serde(rename = "pause")]
|
|
Pause,
|
|
#[serde(rename = "resume")]
|
|
Resume,
|
|
#[serde(rename = "step")]
|
|
Step,
|
|
#[serde(rename = "stepFrame")]
|
|
StepFrame,
|
|
#[serde(rename = "getState")]
|
|
GetState,
|
|
#[serde(rename = "setBreakpoint")]
|
|
SetBreakpoint { pc: usize },
|
|
#[serde(rename = "listBreakpoints")]
|
|
ListBreakpoints,
|
|
#[serde(rename = "clearBreakpoint")]
|
|
ClearBreakpoint { pc: usize },
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
#[serde(tag = "type")]
|
|
pub enum DebugResponse {
|
|
#[serde(rename = "handshake")]
|
|
Handshake {
|
|
protocol_version: u32,
|
|
runtime_version: String,
|
|
cartridge: HandshakeCartridge,
|
|
},
|
|
#[serde(rename = "state")]
|
|
State {
|
|
pc: usize,
|
|
stack_top: Vec<i64>,
|
|
frame_index: u64,
|
|
app_id: u32,
|
|
},
|
|
#[serde(rename = "breakpoints")]
|
|
Breakpoints {
|
|
pcs: Vec<usize>,
|
|
},
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct HandshakeCartridge {
|
|
pub app_id: u32,
|
|
pub title: String,
|
|
pub app_version: String,
|
|
pub app_mode: AppMode,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
#[serde(tag = "event")]
|
|
pub enum DebugEvent {
|
|
#[serde(rename = "breakpointHit")]
|
|
BreakpointHit {
|
|
pc: usize,
|
|
frame_index: u64,
|
|
},
|
|
#[serde(rename = "log")]
|
|
Log {
|
|
level: String,
|
|
source: String,
|
|
msg: String,
|
|
},
|
|
#[serde(rename = "telemetry")]
|
|
Telemetry {
|
|
frame_index: u64,
|
|
vm_steps: u32,
|
|
syscalls: u32,
|
|
cycles: u64,
|
|
},
|
|
#[serde(rename = "cert")]
|
|
Cert {
|
|
rule: String,
|
|
used: u64,
|
|
limit: u64,
|
|
frame_index: u64,
|
|
},
|
|
}
|