89 lines
2.8 KiB
Go
89 lines
2.8 KiB
Go
package api
|
|
|
|
import (
|
|
"hands/device"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Server API v2 服务器结构体
|
|
type Server struct {
|
|
deviceManager *device.DeviceManager
|
|
startTime time.Time
|
|
version string
|
|
}
|
|
|
|
// NewServer 创建新的 API v1 服务器实例
|
|
func NewServer(deviceManager *device.DeviceManager) *Server {
|
|
return &Server{
|
|
deviceManager: deviceManager,
|
|
startTime: time.Now(),
|
|
version: "1.0.0",
|
|
}
|
|
}
|
|
|
|
// SetupRoutes 设置 API v1 路由
|
|
func (s *Server) SetupRoutes(r *gin.Engine) {
|
|
r.StaticFile("/", "./static/index.html")
|
|
r.Static("/static", "./static")
|
|
|
|
// API v1 路由组
|
|
v2 := r.Group("/api/v1")
|
|
{
|
|
// 设备管理路由
|
|
devices := v2.Group("/devices")
|
|
{
|
|
devices.GET("", s.handleGetDevices) // 获取所有设备列表
|
|
devices.POST("", s.handleCreateDevice) // 创建新设备
|
|
devices.GET("/:deviceId", s.handleGetDevice) // 获取设备详情
|
|
devices.DELETE("/:deviceId", s.handleDeleteDevice) // 删除设备
|
|
devices.PUT("/:deviceId/hand-type", s.handleSetHandType) // 设置手型
|
|
|
|
// 设备级别的功能路由
|
|
deviceRoutes := devices.Group("/:deviceId")
|
|
{
|
|
// 姿态控制路由
|
|
poses := deviceRoutes.Group("/poses")
|
|
{
|
|
poses.POST("/fingers", s.handleSetFingerPose) // 设置手指姿态
|
|
poses.POST("/palm", s.handleSetPalmPose) // 设置手掌姿态
|
|
poses.POST("/preset/:pose", s.handleSetPresetPose) // 设置预设姿势
|
|
poses.POST("/reset", s.handleResetPose) // 重置姿态
|
|
|
|
// 新的预设姿势 API
|
|
poses.GET("/presets", s.GetSupportedPresets) // 获取支持的预设姿势列表
|
|
poses.POST("/presets/:presetName", s.ExecutePresetPose) // 执行预设姿势
|
|
}
|
|
|
|
// 动画控制路由
|
|
animations := deviceRoutes.Group("/animations")
|
|
{
|
|
animations.GET("", s.handleGetAnimations) // 获取可用动画列表
|
|
animations.POST("/start", s.handleStartAnimation) // 启动动画
|
|
animations.POST("/stop", s.handleStopAnimation) // 停止动画
|
|
animations.GET("/status", s.handleAnimationStatus) // 获取动画状态
|
|
}
|
|
|
|
// 传感器数据路由
|
|
sensors := deviceRoutes.Group("/sensors")
|
|
{
|
|
sensors.GET("", s.handleGetSensors) // 获取所有传感器数据
|
|
sensors.GET("/:sensorId", s.handleGetSensorData) // 获取特定传感器数据
|
|
}
|
|
|
|
// 设备状态路由
|
|
deviceRoutes.GET("/status", s.handleGetDeviceStatus) // 获取设备状态
|
|
}
|
|
}
|
|
|
|
// 系统管理路由
|
|
system := v2.Group("/system")
|
|
{
|
|
system.GET("/models", s.handleGetSupportedModels) // 获取支持的设备型号
|
|
system.GET("/status", s.handleGetSystemStatus) // 获取系统状态
|
|
system.GET("/health", s.handleHealthCheck) // 健康检查
|
|
}
|
|
}
|
|
}
|