mod request;
mod response;
pub use request::*;
pub use response::*;
pub type TaskId = String;
pub type PointId = String;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum ApiRequest {
State(StateApi),
Control(ControlApi),
Nav(NavApi),
Config(ConfigApi),
Kernel(KernelApi),
Peripheral(PeripheralApi),
Push(PushApi),
}
impl ApiRequest {
pub fn api_no(&self) -> u16 {
match *self {
ApiRequest::State(api) => api as u16,
ApiRequest::Control(api) => api as u16,
ApiRequest::Nav(api) => api as u16,
ApiRequest::Config(api) => api as u16,
ApiRequest::Kernel(api) => api as u16,
ApiRequest::Peripheral(api) => api as u16,
ApiRequest::Push(api) => api as u16,
}
}
}
macro_rules! impl_api_request {
($req_type:ident, $api_variant:expr, res: $res_type:ty $(, $docs:literal)?) => {
$(#[doc = $docs])?
#[derive(Debug, Clone, Default)]
pub struct $req_type;
impl $req_type {
pub fn new() -> Self {
Self
}
}
impl $crate::api::ToRequestBody for $req_type {
fn to_request_body(&self) -> Result<String, serde_json::Error> {
Ok(String::new())
}
fn to_api_request(&self) -> ApiRequest {
$api_variant
}
}
impl $crate::api::FromResponseBody for $req_type {
type Response = $res_type;
}
};
($req_type:ident, $api_variant:expr, req: $req_body_type:ty, res: $res_type:ty $(, $docs:literal)?) => {
$(#[doc = $docs])?
#[derive(Debug, Clone)]
pub struct $req_type {
pub req_body: $req_body_type,
}
impl $req_type {
pub fn new(req_body: $req_body_type) -> Self {
Self { req_body }
}
}
impl $req_body_type {
pub fn into_request(self) -> $req_type {
$req_type { req_body: self }
}
}
impl $crate::api::ToRequestBody for $req_type {
fn to_request_body(&self) -> Result<String, serde_json::Error> {
serde_json::to_string(&self.req_body)
}
fn to_api_request(&self) -> ApiRequest {
$api_variant
}
}
impl $crate::api::FromResponseBody for $req_type {
type Response = $res_type;
}
};
}
impl_api_request!(CommonInfoRequest, ApiRequest::State(StateApi::Info), res: CommonInfo);
impl_api_request!(OperationInfoRequest, ApiRequest::State(StateApi::Run), res: OperationInfo);
impl_api_request!(RobotPoseRequest, ApiRequest::State(StateApi::Loc), res: RobotPose);
impl_api_request!(RobotSpeedRequest, ApiRequest::State(StateApi::Speed), res: StatusMessage);
impl_api_request!(BlockStatusRequest, ApiRequest::State(StateApi::Block), res: BlockStatus);
impl_api_request!(BatteryStatusRequest, ApiRequest::State(StateApi::Battery), res: BatteryStatus);
impl_api_request!(RobotLidarDataRequest, ApiRequest::State(StateApi::Laser), res: StatusMessage);
impl_api_request!(RobotCurrentAreaRequest, ApiRequest::State(StateApi::Area), res: StatusMessage);
impl_api_request!(RobotEmergencyStatusRequest, ApiRequest::State(StateApi::Emergency), res: StatusMessage);
impl_api_request!(RobotIODataRequest, ApiRequest::State(StateApi::Io), res: StatusMessage);
impl_api_request!(NavStatusRequest, ApiRequest::State(StateApi::Nav), req: GetNavStatus, res: NavStatus);
impl_api_request!(TaskStatusRequest, ApiRequest::State(StateApi::TaskPackage), req: GetTaskStatus, res: TaskPackage);
impl_api_request!(RobotRelocationStatusRequest, ApiRequest::State(StateApi::Reloc), res: StatusMessage);
impl_api_request!(RobotLoadMapStatusRequest, ApiRequest::State(StateApi::LoadMap), res: StatusMessage);
impl_api_request!(RobotSlamStatusRequest, ApiRequest::State(StateApi::Slam), res: StatusMessage);
impl_api_request!(JackStatusRequest, ApiRequest::State(StateApi::Jack), res: StatusMessage);
impl_api_request!(RobotAlarmStatusRequest, ApiRequest::State(StateApi::Alarm), res: StatusMessage);
impl_api_request!(RobotAllStatus1Request, ApiRequest::State(StateApi::All1), res: StatusMessage);
impl_api_request!(RobotAllStatus2Request, ApiRequest::State(StateApi::All2), res: StatusMessage);
impl_api_request!(RobotAllStatus3Request, ApiRequest::State(StateApi::All3), res: StatusMessage);
impl_api_request!(RobotMapInfoRequest, ApiRequest::State(StateApi::Map), res: StatusMessage);
impl_api_request!(RobotParamsRequest, ApiRequest::State(StateApi::Params), res: StatusMessage);
impl_api_request!(StopExerciseRequest, ApiRequest::Control(ControlApi::Stop), res: StatusMessage);
impl_api_request!(RelocateRequest, ApiRequest::Control(ControlApi::Reloc), res: StatusMessage);
impl_api_request!(ConfirmLocationRequest, ApiRequest::Control(ControlApi::ComfirmLoc), res: StatusMessage);
impl_api_request!(OpenLoopMotionRequest, ApiRequest::Control(ControlApi::Motion), res: StatusMessage);
impl_api_request!(SwitchMapRequest, ApiRequest::Control(ControlApi::LoadMap), res: StatusMessage);
impl_api_request!(PauseTaskRequest, ApiRequest::Nav(NavApi::Pause), res: StatusMessage);
impl_api_request!(ResumeTaskRequest, ApiRequest::Nav(NavApi::Resume), res: StatusMessage);
impl_api_request!(CancelTaskRequest, ApiRequest::Nav(NavApi::Cancel), res: StatusMessage);
impl_api_request!(MoveToTargetRequest, ApiRequest::Nav(NavApi::MoveToTarget), req: MoveToTarget, res: StatusMessage);
impl_api_request!(TranslateRequest, ApiRequest::Nav(NavApi::Translate), res: StatusMessage);
impl_api_request!(TurnRequest, ApiRequest::Nav(NavApi::Turn), res: StatusMessage);
impl_api_request!(MoveDesignedPathRequest, ApiRequest::Nav(NavApi::MoveToTargetList), req: MoveDesignedPath, res: StatusMessage);
impl_api_request!(LoadJackRequest, ApiRequest::Peripheral(PeripheralApi::JackLoad), res: StatusMessage);
impl_api_request!(UnloadJackRequest, ApiRequest::Peripheral(PeripheralApi::JackUnload), res: StatusMessage);
impl_api_request!(StopJackRequest, ApiRequest::Peripheral(PeripheralApi::JackStop), res: StatusMessage);
impl_api_request!(SetJackHeightRequest, ApiRequest::Peripheral(PeripheralApi::JackSetHeight), req: SetJackHeight, res: StatusMessage);
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum StateApi {
Info = 1000,
Run = 1002,
Loc = 1004,
Speed = 1005,
Block = 1006,
Battery = 1007,
Laser = 1009,
Area = 1011,
Emergency = 1012,
Io = 1013,
Imu = 1014,
Rfid = 1015,
Ultrasonic = 1016,
Pgv = 1017,
Encoder = 1018,
Nav = 1020,
Reloc = 1021,
LoadMap = 1022,
Slam = 1025,
Jack = 1027,
Fork = 1028,
Roller = 1029,
Motor = 1040,
Alarm = 1050,
CurrentLock = 1060,
Modbus = 1071,
All1 = 1100,
All2 = 1101,
All3 = 1102,
TaskPackage = 1110,
Map = 1300,
Station = 1301,
MapMd5 = 1302,
GetPath = 1303,
Params = 1400,
Model = 1500,
ScriptInfo = 1506,
ScriptDetailsList = 1507,
ScriptArgs = 1508,
CalibSupportList = 1509,
CalibStatus = 1510,
CalibData = 1511,
Tag3D = 1665,
ArmStatus = 1669,
ArmCalculate = 1670,
ArmTask = 1671,
ArmMove = 1673,
ArmOperation = 1674,
CloudProjection = 1675,
RecoFiles = 1676,
CanFrame = 1750,
GnssCheck = 1760,
GnssList = 1761,
ListFile = 1798,
UploadFile = 1799,
DownloadFile = 1800,
Bins = 1803,
Sound = 1850,
JoystickKeymap = 1852,
TransparentData = 1900,
StartBatteryScript = 1901,
StopBatteryScript = 1902,
StartDmxScript = 1903,
StopDmxScript = 1904,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum ControlApi {
Stop = 2000,
Reloc = 2002,
ComfirmLoc = 2003,
CancelReloc = 2004,
Motion = 2010,
LoadMap = 2022,
ClearMotorEncoder = 2024,
UploadAndLoadMap = 2025,
ClearWeightdevvalue = 2026,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum NavApi {
Pause = 3001,
Resume = 3002,
Cancel = 3003,
MoveToTarget = 3051,
TargetPath = 3053,
Translate = 3055,
Turn = 3056,
Spin = 3057,
Circular = 3058,
Path = 3059,
MoveToTargetList = 3066,
ClearTargetList = 3067,
SafeClearMovements = 3068,
TaskListStatus = 3101,
TaskListName = 3106,
TaskListList = 3115,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum ConfigApi {
Lock = 4005,
Unlock = 4006,
ClearAllErrors = 4009,
UploadMap = 4010,
DownloadMap = 4011,
RemoveMap = 4012,
UploadScript = 4021,
DownloadScript = 4022,
RemoveScript = 4023,
Push = 4091,
SetParams = 4100,
SaveParams = 4101,
ReloadParams = 4102,
Ultrasonic = 4130,
Di = 4140,
MotorCalib = 4150,
MotorClearFault = 4151,
Model = 4200,
CalibPushData = 4201,
CalibConfirm = 4202,
CalibClear = 4203,
CalibClearAll = 4209,
AddObstacle = 4350,
AddGObstacle = 4351,
RemoveObstacle = 4352,
Tag3DMapping = 4353,
ClearGoodsShape = 4356,
SetShelfShape = 4357,
SendCanFrame = 4400,
ClearOdo = 4450,
ResetGnss = 4460,
SetGnssBaudrate = 4461,
SetGnssRover = 4462,
JoystickBindKeymap = 4470,
SetError = 4800,
ClearError = 4801,
SetWarning = 4802,
ClearWarning = 4803,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum KernelApi {
Shutdown = 5000,
Reboot = 5003,
ResetFirmware = 5005,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum PeripheralApi {
PlayAudio = 6000,
SetDo = 6001,
SetDos = 6002,
SetRelay = 6003,
SoftEmc = 6004,
SetChargingRelay = 6005,
PauseAudio = 6010,
ResumeAudio = 6011,
StopAudio = 6012,
SetVdi = 6020,
UploadAudio = 6030,
DownloadAudio = 6031,
AudioList = 6033,
SetForkHeight = 6040,
StopFork = 6041,
WritePeripheralData = 6049,
RollerFrontRoll = 6051,
RollerBackRoll = 6052,
RollerLeftRoll = 6053,
RollerRightRoll = 6054,
RollerFrontLoad = 6055,
RollerFrontUnload = 6056,
RollerFrontPreLoad = 6057,
RollerBackLoad = 6058,
RollerBackUnload = 6059,
RollerBackPreLoad = 6060,
RollerLeftLoad = 6061,
RollerLeftUnload = 6062,
RollerRightLoad = 6063,
RollerRightUnload = 6064,
RollerLeftPreLoad = 6065,
RollerRightPreLoad = 6066,
RollerStop = 6067,
RollerLeftRightInverse = 6068,
RollerFrontBackInverse = 6069,
JackLoad = 6070,
JackUnload = 6071,
JackStop = 6072,
JackSetHeight = 6073,
ResetCargo = 6080,
HookLoad = 6082,
HookUnload = 6083,
SetModbus = 6086,
Slam = 6100,
EndSlam = 6101,
Calibrate = 6110,
EndCalibrate = 6111,
CalibResult = 6112,
CalibAllinone2 = 6115,
SetMotorEnable = 6201,
ClearGoods = 6801,
ClearContainer = 6802,
ClearAllContainersGoods = 6803,
SetContainerGoods = 6804,
UpdateTransparentData = 6900,
BinDetect = 6901,
Replay = 6910,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u16)]
pub enum PushApi {
Config = 9300,
Push = 19301,
}