50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package models
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"plcopenxmlbuilder/utils"
|
|
"schema"
|
|
)
|
|
|
|
type Resourse struct {
|
|
XMLName xml.Name `xml:"resource"`
|
|
Name string `xml:"name,attr"`
|
|
Task []*Task `xml:"task"`
|
|
GlobalVars *GlobalVars `xml:"globalVars,omitempty"`
|
|
}
|
|
|
|
func (r *Resourse) AddTasks(dev *schema.Device) error {
|
|
for _, task := range dev.Tasks {
|
|
if err := utils.CheckKindOfTask(task.KindOfTask); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := utils.CheckIntervalUnit(task.IntervalUnit); err != nil {
|
|
return err
|
|
}
|
|
|
|
t, err := r.AddTask(task.Name, task.KindOfTask, task.IntervalUnit, task.Interval, task.Priority)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
t.AddPouInstances(task)
|
|
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (r *Resourse) AddTask(name, kindOfTask, intervalUnit string, interval, priority int) (*Task, error) {
|
|
t := &Task{
|
|
Name: name,
|
|
Priority: priority,
|
|
}
|
|
t.SetInterval(interval)
|
|
|
|
err := t.AddAddData(kindOfTask, intervalUnit, interval)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
r.Task = append(r.Task, t)
|
|
return t, nil
|
|
}
|