补齐任务读取演示接口拆分

main
wangqiyang 2 days ago
parent 3b62ad9654
commit cd538abd9a

@ -92,6 +92,11 @@ func (s *automaticModeDemoStore) getStartTask(mode uint8) m9z.ControlTask {
return cloneAutomaticControlTask(s.startTasks[normalizeAutomaticMode(mode)])
}
func (s *automaticModeDemoStore) getStartTaskProgram(mode uint8) (*m9z.TaskProgram, error) {
normalizedMode := normalizeAutomaticMode(mode)
return m9z.ControlTaskToTaskProgram(s.getStartTask(normalizedMode), normalizedMode)
}
func (s *automaticModeDemoStore) setStartTask(mode uint8, task m9z.ControlTask) {
s.mu.Lock()
defer s.mu.Unlock()
@ -104,6 +109,11 @@ func (s *automaticModeDemoStore) getStopTask(mode uint8) m9z.ControlTask {
return cloneAutomaticControlTask(s.stopTasks[normalizeAutomaticMode(mode)])
}
func (s *automaticModeDemoStore) getStopTaskProgram(mode uint8) (*m9z.TaskProgram, error) {
normalizedMode := normalizeAutomaticMode(mode)
return m9z.ControlTaskToTaskProgram(s.getStopTask(normalizedMode), normalizedMode)
}
func (s *automaticModeDemoStore) setStopTask(mode uint8, task m9z.ControlTask) {
s.mu.Lock()
defer s.mu.Unlock()
@ -116,6 +126,11 @@ func (s *automaticModeDemoStore) getMiddleTask(mode uint8) m9z.MiddleControlTask
return cloneAutomaticMiddleTask(s.middleTasks[normalizeAutomaticMode(mode)])
}
func (s *automaticModeDemoStore) getMiddleTaskProgram(mode uint8) (*m9z.TaskProgram, error) {
normalizedMode := normalizeAutomaticMode(mode)
return m9z.MiddleControlTaskToTaskProgram(s.getMiddleTask(normalizedMode), normalizedMode)
}
func (s *automaticModeDemoStore) setMiddleTask(mode uint8, task m9z.MiddleControlTask) {
s.mu.Lock()
defer s.mu.Unlock()

@ -1,6 +1,10 @@
package m9zApi
import "testing"
import (
"testing"
"tgk-touch/internal/library/m9z"
)
func TestAutomaticModeDemoStoreReturnsCopies(t *testing.T) {
store := newAutomaticModeDemoStore()
@ -37,3 +41,31 @@ func TestNormalizeAutomaticMode(t *testing.T) {
t.Fatalf("normalizeAutomaticMode(3) = %d, want 0", got)
}
}
func TestAutomaticModeDemoStoreBuildsTaskPrograms(t *testing.T) {
store := newAutomaticModeDemoStore()
programs := map[string]func(uint8) (*m9z.TaskProgram, error){
"start": store.getStartTaskProgram,
"middle": store.getMiddleTaskProgram,
"stop": store.getStopTaskProgram,
}
for name, build := range programs {
t.Run(name, func(t *testing.T) {
program, err := build(1)
if err != nil {
t.Fatalf("build %s demo task program failed: %v", name, err)
}
if program == nil {
t.Fatalf("%s demo task program is nil", name)
}
if program.Index != 1 {
t.Fatalf("%s demo task program index = %d, want 1", name, program.Index)
}
if len(program.Instructions) == 0 {
t.Fatalf("%s demo task program should include instructions", name)
}
})
}
}

@ -316,6 +316,24 @@ func getDeviceSunRiseTime(rpc towgo.JsonRpcConnection) {
// 读取开始任务 (优化指令 CMD=0x13)
func getStartTask(rpc towgo.JsonRpcConnection) {
if automaticModeUseDemoAPI {
getStartTaskDemo(rpc)
return
}
getStartTaskReal(rpc)
}
func getStartTaskDemo(rpc towgo.JsonRpcConnection) {
var p automaticModeTaskReq
rpc.ReadParams(&p)
program, err := automaticModeDemo.getStartTaskProgram(p.Mode)
if err != nil {
panic(err)
}
rpc.WriteResult(program)
}
func getStartTaskReal(rpc towgo.JsonRpcConnection) {
var p struct {
CommUid string `json:"comm_uid"`
Mode uint8 `json:"mode"` // 0x00-0x02
@ -343,6 +361,24 @@ func getStartTask(rpc towgo.JsonRpcConnection) {
// 读取中间任务 (优化指令 CMD=0x14)
func getMiddleTaskRead(rpc towgo.JsonRpcConnection) {
if automaticModeUseDemoAPI {
getMiddleTaskReadDemo(rpc)
return
}
getMiddleTaskReadReal(rpc)
}
func getMiddleTaskReadDemo(rpc towgo.JsonRpcConnection) {
var p automaticModeTaskReq
rpc.ReadParams(&p)
program, err := automaticModeDemo.getMiddleTaskProgram(p.Mode)
if err != nil {
panic(err)
}
rpc.WriteResult(program)
}
func getMiddleTaskReadReal(rpc towgo.JsonRpcConnection) {
var p struct {
CommUid string `json:"comm_uid"`
Mode uint8 `json:"mode"` // 0x00-0x02
@ -361,6 +397,24 @@ func getMiddleTaskRead(rpc towgo.JsonRpcConnection) {
// 读取结束任务 (优化指令 CMD=0x15)
func getStopTaskRead(rpc towgo.JsonRpcConnection) {
if automaticModeUseDemoAPI {
getStopTaskReadDemo(rpc)
return
}
getStopTaskReadReal(rpc)
}
func getStopTaskReadDemo(rpc towgo.JsonRpcConnection) {
var p automaticModeTaskReq
rpc.ReadParams(&p)
program, err := automaticModeDemo.getStopTaskProgram(p.Mode)
if err != nil {
panic(err)
}
rpc.WriteResult(program)
}
func getStopTaskReadReal(rpc towgo.JsonRpcConnection) {
var p struct {
CommUid string `json:"comm_uid"`
Mode uint8 `json:"mode"` // 0x00-0x02

Loading…
Cancel
Save