Files
tecamino-json_data/models/drivers.go
2025-07-30 17:14:46 +02:00

36 lines
728 B
Go

package models
// collection of drivers ordered in map
type Drivers map[string]*Driver
func (d *Drivers) AddNewDriver(typ string) *Driver {
if drv, ok := (*d)[typ]; ok {
return drv
}
(*d)[typ] = &Driver{Type: typ}
return (*d)[typ]
}
func (d *Drivers) AddDriver(drv *Driver) {
if driver, ok := (*d)[drv.Type]; ok {
driver.AddBuses(drv.Buses)
(*d)[drv.Type] = driver
return
}
(*d)[drv.Type] = drv
}
func (d *Drivers) RemoveDriver(drv *Driver) {
if driver, ok := (*d)[drv.Type]; ok {
driver.RemoveBuses(drv.Buses)
if len(driver.Buses) == 1 {
if len(driver.Buses[0].Address) == 0 && driver.Buses[0].Topic == nil {
(*d)[drv.Type] = &Driver{}
return
}
}
(*d)[drv.Type] = driver
return
}
}