feat(legacy): implement preset handler
This commit is contained in:
parent
ab2138be1e
commit
98fa37952d
@ -257,3 +257,76 @@ func (s *LegacyServer) handlePalm(c *gin.Context) {
|
|||||||
Data: map[string]any{"interface": req.Interface, "pose": req.Pose},
|
Data: map[string]any{"interface": req.Interface, "pose": req.Pose},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handlePreset 预设姿势处理函数
|
||||||
|
func (s *LegacyServer) handlePreset(c *gin.Context) {
|
||||||
|
pose := c.Param("pose")
|
||||||
|
|
||||||
|
// 从查询参数获取接口名称和手型
|
||||||
|
ifName := c.Query("interface")
|
||||||
|
// handType := c.Query("handType") // TODO: 旧版 API 中声明但未使用,先放着,等 reivew 时候看看
|
||||||
|
|
||||||
|
if ifName == "" {
|
||||||
|
ifName = config.Config.DefaultInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证接口
|
||||||
|
if !s.mapper.IsValidInterface(ifName) {
|
||||||
|
c.JSON(http.StatusBadRequest, define.ApiResponse{
|
||||||
|
Status: "error",
|
||||||
|
Error: fmt.Sprintf("无效的接口 %s,可用接口: %v", ifName, config.Config.AvailableInterfaces),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取对应的设备
|
||||||
|
dev, err := s.mapper.GetDeviceForInterface(ifName)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, define.ApiResponse{
|
||||||
|
Status: "error",
|
||||||
|
Error: "获取设备失败:" + err.Error(),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 停止当前动画
|
||||||
|
if err := s.mapper.StopAllAnimations(ifName); err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, define.ApiResponse{
|
||||||
|
Status: "error",
|
||||||
|
Error: "停止动画失败:" + err.Error(),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取预设姿势详细信息(用于返回具体参数)
|
||||||
|
presetDetails, exists := dev.GetPresetDetails(pose)
|
||||||
|
if !exists {
|
||||||
|
c.JSON(http.StatusBadRequest, define.ApiResponse{
|
||||||
|
Status: "error",
|
||||||
|
Error: "无效的预设姿势",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用设备的预设姿势方法
|
||||||
|
if err := dev.ExecutePreset(pose); err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, define.ApiResponse{
|
||||||
|
Status: "error",
|
||||||
|
Error: "无效的预设姿势",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取预设姿势的描述
|
||||||
|
description := dev.GetPresetDescription(pose)
|
||||||
|
message := fmt.Sprintf("已设置预设姿势: %s", pose)
|
||||||
|
if description != "" {
|
||||||
|
message = fmt.Sprintf("已设置%s", description)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, define.ApiResponse{
|
||||||
|
Status: "success",
|
||||||
|
Message: message,
|
||||||
|
Data: map[string]any{"interface": ifName, "pose": presetDetails.FingerPose},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -26,6 +26,7 @@ type Device interface {
|
|||||||
GetSupportedPresets() []string // 获取支持的预设姿势列表
|
GetSupportedPresets() []string // 获取支持的预设姿势列表
|
||||||
ExecutePreset(presetName string) error // 执行预设姿势
|
ExecutePreset(presetName string) error // 执行预设姿势
|
||||||
GetPresetDescription(presetName string) string // 获取预设姿势描述
|
GetPresetDescription(presetName string) string // 获取预设姿势描述
|
||||||
|
GetPresetDetails(presetName string) (PresetPose, bool) // 获取预设姿势详细信息
|
||||||
}
|
}
|
||||||
|
|
||||||
// Command 代表一个发送给设备的指令
|
// Command 代表一个发送给设备的指令
|
||||||
|
@ -378,3 +378,8 @@ func (h *L10Hand) ExecutePreset(presetName string) error {
|
|||||||
func (h *L10Hand) GetPresetDescription(presetName string) string {
|
func (h *L10Hand) GetPresetDescription(presetName string) string {
|
||||||
return h.presetManager.GetPresetDescription(presetName)
|
return h.presetManager.GetPresetDescription(presetName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetPresetDetails 获取预设姿势详细信息
|
||||||
|
func (h *L10Hand) GetPresetDetails(presetName string) (device.PresetPose, bool) {
|
||||||
|
return h.presetManager.GetPreset(presetName)
|
||||||
|
}
|
||||||
|
@ -27,6 +27,7 @@ type Device interface {
|
|||||||
GetSupportedPresets() []string
|
GetSupportedPresets() []string
|
||||||
ExecutePreset(presetName string) error
|
ExecutePreset(presetName string) error
|
||||||
GetPresetDescription(presetName string) string
|
GetPresetDescription(presetName string) string
|
||||||
|
GetPresetDetails(presetName string) (PresetPose, bool)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user