package core

import (
	"sync"
	"th7/data/core"
	"th7/ports"
)

type TH7Adapter struct {
	pcbPort ports.PCBPort
	dbPort  ports.DBPort
	mu      sync.Mutex
	data    core.Data
	run     bool
}

func NewTH7Adapter(pcbPort ports.PCBPort, dbPort ports.DBPort) *TH7Adapter {

	var adapter TH7Adapter

	adapter.pcbPort = pcbPort
	adapter.dbPort = dbPort

	adapter.run = true

	go startDBLoggerService(&adapter)
	go startProxyService(&adapter)

	return &adapter
}

func startProxyService(t *TH7Adapter) {

}

func startDBLoggerService(t *TH7Adapter) {

}

func (t *TH7Adapter) GetChannel(id int) (core.Channel, error) {
	t.mu.Lock()
	defer t.mu.Unlock()

	return t.data.Channels[0], nil
}

func (t *TH7Adapter) GetAll() core.Data {
	t.mu.Lock()
	defer t.mu.Unlock()

	return t.data
}

func (t *TH7Adapter) GetVref() float64 {
	t.mu.Lock()
	defer t.mu.Unlock()

	return 0
}

func (t *TH7Adapter) GetVadj() float64 {
	t.mu.Lock()
	defer t.mu.Unlock()

	return 0
}

func (t *TH7Adapter) GetPivdd() float64 {
	t.mu.Lock()
	defer t.mu.Unlock()

	return 0
}