# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: pymammotion/proto/mctrl_driver.proto
# plugin: python-betterproto
from dataclasses import dataclass


import betterproto


@dataclass
class DrvMotionCtrl(betterproto.Message):
    set_linear_speed: int = betterproto.int32_field(1)
    set_angular_speed: int = betterproto.int32_field(2)


@dataclass
class DrvKnifeHeight(betterproto.Message):
    knife_height: int = betterproto.int32_field(1)


@dataclass
class DrvSrSpeed(betterproto.Message):
    rw: int = betterproto.int32_field(1)
    speed: float = betterproto.float_field(2)


@dataclass
class DrvKnifeStatus(betterproto.Message):
    knife_status: int = betterproto.int32_field(1)


@dataclass
class DrvKnifeChangeReport(betterproto.Message):
    is_start: int = betterproto.int32_field(1)
    start_high: int = betterproto.int32_field(2)
    end_high: int = betterproto.int32_field(3)


@dataclass
class DrvMowCtrlByHand(betterproto.Message):
    main_ctrl: int = betterproto.int32_field(1)
    cut_knife_ctrl: int = betterproto.int32_field(2)
    cut_knife_height: int = betterproto.int32_field(3)
    max_run__speed: float = betterproto.float_field(4)


@dataclass
class RtkCfgReqT(betterproto.Message):
    cmd_length: int = betterproto.int32_field(1)
    cmd_req: str = betterproto.string_field(2)


@dataclass
class RtkCfgReqAckT(betterproto.Message):
    cmd_length: int = betterproto.int32_field(1)
    cmd_response: str = betterproto.string_field(2)


@dataclass
class RtkSysMaskQueryT(betterproto.Message):
    sat_system: int = betterproto.uint32_field(1)


@dataclass
class RtkSysMaskQueryAckT(betterproto.Message):
    sat_system: int = betterproto.uint32_field(1)
    system_mask_bits: list[int] = betterproto.uint32_field(2)


@dataclass
class MctlDriver(betterproto.Message):
    todev_devmotion_ctrl: "DrvMotionCtrl" = betterproto.message_field(
        1, group="SubDrvMsg"
    )
    todev_knife_height_set: "DrvKnifeHeight" = betterproto.message_field(
        2, group="SubDrvMsg"
    )
    bidire_speed_read_set: "DrvSrSpeed" = betterproto.message_field(
        3, group="SubDrvMsg"
    )
    bidire_knife_height_report: "DrvKnifeHeight" = betterproto.message_field(
        4, group="SubDrvMsg"
    )
    toapp_knife_status: "DrvKnifeStatus" = betterproto.message_field(
        5, group="SubDrvMsg"
    )
    mow_ctrl_by_hand: "DrvMowCtrlByHand" = betterproto.message_field(
        6, group="SubDrvMsg"
    )
    rtk_cfg_req: "RtkCfgReqT" = betterproto.message_field(7, group="SubDrvMsg")
    rtk_cfg_req_ack: "RtkCfgReqAckT" = betterproto.message_field(8, group="SubDrvMsg")
    rtk_sys_mask_query: "RtkSysMaskQueryT" = betterproto.message_field(
        9, group="SubDrvMsg"
    )
    rtk_sys_mask_query_ack: "RtkSysMaskQueryAckT" = betterproto.message_field(
        10, group="SubDrvMsg"
    )
    toapp_knife_status_change: "DrvKnifeChangeReport" = betterproto.message_field(
        11, group="SubDrvMsg"
    )
