package pjisuv_msgs

import (
	"github.com/bluenviron/goroslib/v2/pkg/msg"
	"github.com/bluenviron/goroslib/v2/pkg/msgs/actionlib_msgs"
	"github.com/bluenviron/goroslib/v2/pkg/msgs/geometry_msgs"
	"github.com/bluenviron/goroslib/v2/pkg/msgs/std_msgs"
	"time"
)

type ExecFootstepsAction struct {
	msg.Package    `ros:"jsk_footstep_msgs"`
	ActionGoal     ExecFootstepsActionGoal
	ActionResult   ExecFootstepsActionResult
	ActionFeedback ExecFootstepsActionFeedback
}
type ExecFootstepsActionFeedback struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Header      std_msgs.Header
	Status      actionlib_msgs.GoalStatus
	Feedback    ExecFootstepsFeedback
}
type ExecFootstepsActionGoal struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Header      std_msgs.Header
	GoalId      actionlib_msgs.GoalID
	Goal        ExecFootstepsGoal
}
type ExecFootstepsActionResult struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Header      std_msgs.Header
	Status      actionlib_msgs.GoalStatus
	Result      ExecFootstepsResult
}
type ExecFootstepsFeedback struct {
	msg.Package `ros:"jsk_footstep_msgs"`
}
type ExecFootstepsGoal struct {
	msg.Package     `ros:"jsk_footstep_msgs"`
	msg.Definitions `ros:"uint8 NEW_TARGET=0,uint8 RESUME=1"`
	Footstep        FootstepArray
	Strategy        uint8
}
type ExecFootstepsResult struct {
	msg.Package `ros:"jsk_footstep_msgs"`
}
type Footstep struct {
	msg.Package     `ros:"jsk_footstep_msgs"`
	msg.Definitions `ros:"uint8 RIGHT=2,uint8 LEFT=1,uint8 REJECTED=3,uint8 APPROVED=4,uint8 LLEG=1,uint8 RLEG=2,uint8 LARM=5,uint8 RARM=6"`
	Leg             uint8
	Pose            geometry_msgs.Pose
	Duration        time.Duration
	FootstepGroup   uint32
	Dimensions      geometry_msgs.Vector3
	Offset          geometry_msgs.Vector3
	SwingHeight     float32
	Cost            float32
}
type FootstepArray struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Header      std_msgs.Header
	Footsteps   []Footstep
}
type PlanFootstepsAction struct {
	msg.Package    `ros:"jsk_footstep_msgs"`
	ActionGoal     PlanFootstepsActionGoal
	ActionResult   PlanFootstepsActionResult
	ActionFeedback PlanFootstepsActionFeedback
}
type PlanFootstepsActionFeedback struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Header      std_msgs.Header
	Status      actionlib_msgs.GoalStatus
	Feedback    PlanFootstepsFeedback
}

type PlanFootstepsActionGoal struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Header      std_msgs.Header
	GoalId      actionlib_msgs.GoalID
	Goal        PlanFootstepsGoal
}

type PlanFootstepsActionResult struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Header      std_msgs.Header
	Status      actionlib_msgs.GoalStatus
	Result      PlanFootstepsResult
}
type PlanFootstepsFeedback struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Feedback    FootstepArray
}

type PlanFootstepsGoal struct {
	msg.Package     `ros:"jsk_footstep_msgs"`
	GoalFootstep    FootstepArray
	InitialFootstep FootstepArray
	Timeout         time.Duration
}

type PlanFootstepsResult struct {
	msg.Package `ros:"jsk_footstep_msgs"`
	Result      FootstepArray
}
