package com.battery.device.bts;
|
|
import java.time.Instant;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import com.battery.device.api.DeviceAdapter;
|
import com.battery.device.api.model.AdapterCapabilities;
|
import com.battery.device.api.model.ChannelIdentity;
|
import com.battery.device.api.model.DetectedChannel;
|
import com.battery.device.api.model.RealtimeSnapshot;
|
|
public final class BtsDeviceAdapter implements DeviceAdapter
|
{
|
private final String adapterCode;
|
private final BtsTransport transport;
|
private final BtsXmlCodec codec;
|
private final AdapterCapabilities capabilities;
|
|
public BtsDeviceAdapter(String adapterCode, BtsTransport transport, BtsXmlCodec codec)
|
{
|
this(adapterCode, transport, codec, AdapterCapabilities.observeOnly());
|
}
|
|
public BtsDeviceAdapter(String adapterCode, BtsTransport transport, BtsXmlCodec codec,
|
AdapterCapabilities capabilities)
|
{
|
this.adapterCode = adapterCode;
|
this.transport = transport;
|
this.codec = codec;
|
this.capabilities = capabilities;
|
}
|
|
@Override
|
public String adapterCode()
|
{
|
return adapterCode;
|
}
|
|
@Override
|
public AdapterCapabilities capabilities()
|
{
|
return capabilities;
|
}
|
|
@Override
|
public List<DetectedChannel> discoverChannels()
|
{
|
return codec.parseDeviceInfo(transport.exchange(codec.getDeviceInfoRequest()));
|
}
|
|
@Override
|
public Map<ChannelIdentity, RealtimeSnapshot> inquire(Set<ChannelIdentity> channels)
|
{
|
if (channels == null || channels.isEmpty()) return Map.of();
|
return codec.parseSnapshots(transport.exchange(codec.inquireRequest(channels, false)), Instant.now());
|
}
|
|
|
|
@Override
|
public void close()
|
{
|
transport.close();
|
}
|
}
|