balazsgrill/wscgo

View on GitHub
integration/gpio.go

Summary

Maintainability
B
4 hrs
Test Coverage
package integration

import (
    "github.com/home2mqtt/wscgo/config"
    "github.com/home2mqtt/wscgo/devices"
    "github.com/home2mqtt/wscgo/protocol"
)

type inputConfigPartParser struct{}

func (*inputConfigPartParser) ParseConfiguration(section config.ConfigurationSection, context config.ConfigurationContext) error {
    s := &devices.InputConfig{}
    section.FillData(s)
    c := protocol.CreateDInputConfig(section.GetID())
    section.FillData(&c.BasicDeviceConfig)
    section.FillData(c)
    context.AddDeviceInitializer(config.SLDevice, func(context config.RuntimeContext) error {
        device, err := devices.CreateInput(s)
        if err != nil {
            return err
        }
        context.AddDevice(device)
        context.AddProtocol(protocol.IntegrateInput(device, c))
        return nil
    })
    return nil
}

type outputConfigPartParser struct{}

func (*outputConfigPartParser) ParseConfiguration(section config.ConfigurationSection, context config.ConfigurationContext) error {
    s := &devices.OutputConfig{}
    section.FillData(s)
    c := protocol.CreateSwitchConfig(section.GetID())
    section.FillData(&c.BasicDeviceConfig)
    section.FillData(c)
    context.AddDeviceInitializer(config.SLDevice, func(context config.RuntimeContext) error {
        device, err := devices.CreateOutput(s)
        if err != nil {
            return err
        }
        context.AddDevice(device)
        context.AddProtocol(protocol.IntegrateSwitch(device, c))
        return nil
    })
    return nil
}

func init() {
    config.RegisterConfigurationPartParser("dinput", &inputConfigPartParser{})
    config.RegisterConfigurationPartParser("switch", &outputConfigPartParser{})
}