package models

import (
	"github.com/fiskerinc/cloud-services/pkg/common"
)

func NewCANSignal(position int, name string, convert func(value float64) interface{}) CANSignal {
	return CANSignal{
		Position:     position,
		Name:         name,
		RedisKey:     name,
		ConvertValue: convert,
	}
}

type CANSignal struct {
	Position     int
	Name         string
	RedisKey     string
	ConvertValue func(value float64) interface{}
}

func (c *CANSignal) ParseState(signal common.CANSignal) interface{} {
	return c.getValue(signal.Value)
}

func (c *CANSignal) getValue(value float64) interface{} {
	if c.ConvertValue == nil {
		return value
	}

	return c.ConvertValue(value)
}
