package main

// Outlet Initial Status
const (
	OutletInitialStatusOFF  uint = 0
	OutletInitialStatusON   uint = 1
	OutletInitialStatusLAST uint = 2 // if hardware supported
)

// Outlet def
type Outlet struct {
	Name          string    `json:"name"`
	Location      string    `json:"location"`
	HasPowerMeter bool      `json:"haspowermeter"`
	InitialStatus uint      `json:"initialstatus"`
	Command       Boardlink `json:"command"`
	PowerMeter    Boardlink `json:"powermeter"`
}

// PowerON def
func (o Outlet) PowerON() error {
	return o.Command.PowerON()
}

// PowerOFF def
func (o Outlet) PowerOFF() error {
	return o.Command.PowerOFF()
}

// PowerToggle def
func (o Outlet) PowerToggle() error {
	return o.Command.PowerToggle()
}

// PowerInitial def
func (o Outlet) PowerInitial() error {
	switch o.InitialStatus {
	case OutletInitialStatusOFF:
		return o.Command.PowerOFF()
	case OutletInitialStatusON:
		return o.Command.PowerON()
	}
	return nil
}

// PowerStatus def
func (o Outlet) PowerStatus() (bool, error) {
	return o.Command.PowerStatus()
}
