feat(legacy): implement status handler
This commit is contained in:
parent
4ce098c514
commit
eb4f060cad
@ -527,3 +527,94 @@ func (s *LegacyServer) handleSensors(c *gin.Context) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handleStatus 系统状态处理函数
|
||||||
|
func (s *LegacyServer) handleStatus(c *gin.Context) {
|
||||||
|
// 构建动画状态
|
||||||
|
animationStatus := make(map[string]bool)
|
||||||
|
|
||||||
|
// 获取手型配置
|
||||||
|
allHandConfigs := s.mapper.GetAllHandConfigs()
|
||||||
|
handConfigsData := make(map[string]any)
|
||||||
|
|
||||||
|
// 构建接口状态信息
|
||||||
|
interfaceStatuses := make(map[string]any)
|
||||||
|
|
||||||
|
// 检查 CAN 服务状态 - 通过尝试获取设备状态来判断
|
||||||
|
canStatus := make(map[string]bool)
|
||||||
|
|
||||||
|
for _, ifName := range config.Config.AvailableInterfaces {
|
||||||
|
// 获取对应的设备
|
||||||
|
dev, err := s.mapper.GetDeviceForInterface(ifName)
|
||||||
|
if err != nil {
|
||||||
|
// 设备不可用
|
||||||
|
animationStatus[ifName] = false
|
||||||
|
canStatus[ifName] = false
|
||||||
|
handConfigsData[ifName] = map[string]any{
|
||||||
|
"handType": "right",
|
||||||
|
"handId": define.HAND_TYPE_RIGHT,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 获取动画状态
|
||||||
|
animEngine := dev.GetAnimationEngine()
|
||||||
|
animationStatus[ifName] = animEngine.IsRunning()
|
||||||
|
|
||||||
|
// 获取设备状态来判断 CAN 服务状态
|
||||||
|
status, err := dev.GetStatus()
|
||||||
|
if err != nil {
|
||||||
|
canStatus[ifName] = false
|
||||||
|
} else {
|
||||||
|
canStatus[ifName] = status.IsConnected && status.IsActive
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取手型配置
|
||||||
|
if handConfig, exists := allHandConfigs[ifName]; exists {
|
||||||
|
handConfigsData[ifName] = map[string]any{
|
||||||
|
"handType": handConfig.HandType,
|
||||||
|
"handId": handConfig.HandId,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 从设备获取当前手型
|
||||||
|
handType := dev.GetHandType()
|
||||||
|
handTypeStr := "right"
|
||||||
|
handId := uint32(define.HAND_TYPE_RIGHT)
|
||||||
|
if handType == define.HAND_TYPE_LEFT {
|
||||||
|
handTypeStr = "left"
|
||||||
|
handId = uint32(define.HAND_TYPE_LEFT)
|
||||||
|
}
|
||||||
|
handConfigsData[ifName] = map[string]any{
|
||||||
|
"handType": handTypeStr,
|
||||||
|
"handId": handId,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建接口状态
|
||||||
|
interfaceStatuses[ifName] = map[string]any{
|
||||||
|
"active": canStatus[ifName],
|
||||||
|
"animationActive": animationStatus[ifName],
|
||||||
|
"handConfig": handConfigsData[ifName],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算活跃接口数量
|
||||||
|
activeInterfacesCount := 0
|
||||||
|
for _, active := range canStatus {
|
||||||
|
if active {
|
||||||
|
activeInterfacesCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, define.ApiResponse{
|
||||||
|
Status: "success",
|
||||||
|
Data: map[string]any{
|
||||||
|
"interfaces": interfaceStatuses,
|
||||||
|
"uptime": time.Since(s.startTime).String(),
|
||||||
|
"canServiceURL": config.Config.CanServiceURL,
|
||||||
|
"defaultInterface": config.Config.DefaultInterface,
|
||||||
|
"availableInterfaces": config.Config.AvailableInterfaces,
|
||||||
|
"activeInterfaces": activeInterfacesCount,
|
||||||
|
"handConfigs": handConfigsData,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user