feat: add legacy router and models

This commit is contained in:
Eli Yip 2025-06-03 09:26:49 +08:00
parent 7cc69bc977
commit e04e311ff4
No known key found for this signature in database
GPG Key ID: C98B69D4CF7D7EC5
2 changed files with 97 additions and 0 deletions

33
api/legacy/models.go Normal file
View File

@ -0,0 +1,33 @@
package legacy
// FingerPoseRequest 手指姿态设置请求
type FingerPoseRequest struct {
Interface string `json:"interface,omitempty"`
Pose []byte `json:"pose" binding:"required,len=6"`
HandType string `json:"handType,omitempty"` // 新增:手型类型
HandId uint32 `json:"handId,omitempty"` // 新增CAN ID
}
// PalmPoseRequest 掌部姿态设置请求
type PalmPoseRequest struct {
Interface string `json:"interface,omitempty"`
Pose []byte `json:"pose" binding:"required,len=4"`
HandType string `json:"handType,omitempty"` // 新增:手型类型
HandId uint32 `json:"handId,omitempty"` // 新增CAN ID
}
// AnimationRequest 动画控制请求
type AnimationRequest struct {
Interface string `json:"interface,omitempty"`
Type string `json:"type" binding:"required,oneof=wave sway stop"`
Speed int `json:"speed" binding:"min=0,max=2000"`
HandType string `json:"handType,omitempty"` // 新增:手型类型
HandId uint32 `json:"handId,omitempty"` // 新增CAN ID
}
// HandTypeRequest 手型设置请求
type HandTypeRequest struct {
Interface string `json:"interface" binding:"required"`
HandType string `json:"handType" binding:"required,oneof=left right"`
HandId uint32 `json:"handId" binding:"required"`
}

64
api/legacy/router.go Normal file
View File

@ -0,0 +1,64 @@
package legacy
import (
"time"
"hands/device"
"github.com/gin-gonic/gin"
)
type LegacyServer struct {
mapper *InterfaceDeviceMapper
startTime time.Time
}
// NewLegacyServer 创建新的兼容层 API 服务器实例
func NewLegacyServer(deviceManager *device.DeviceManager) (*LegacyServer, error) {
mapper, err := NewInterfaceDeviceMapper(deviceManager)
if err != nil {
return nil, err
}
return &LegacyServer{
mapper: mapper,
startTime: time.Now(),
}, nil
}
// SetupRoutes 设置兼容层 API 路由
func (s *LegacyServer) SetupRoutes(r *gin.Engine) {
// 兼容层 API 路由组
legacy := r.Group("/api/legacy")
{
// 手型设置 API
legacy.POST("/hand-type", s.handleHandType)
// 手指姿态 API
legacy.POST("/fingers", s.handleFingers)
// 掌部姿态 API
legacy.POST("/palm", s.handlePalm)
// 预设姿势 API
legacy.POST("/preset/:pose", s.handlePreset)
// 动画控制 API
legacy.POST("/animation", s.handleAnimation)
// 获取传感器数据 API
legacy.GET("/sensors", s.handleSensors)
// 系统状态 API
legacy.GET("/status", s.handleStatus)
// 获取可用接口列表 API
legacy.GET("/interfaces", s.handleInterfaces)
// 获取手型配置 API
legacy.GET("/hand-configs", s.handleHandConfigs)
// 健康检查端点
legacy.GET("/health", s.handleHealth)
}
}