package com.ruoyi.config;
|
|
import java.io.IOException;
|
import java.util.List;
|
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Profile;
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
import com.battery.device.api.NoopDeviceAdapterFactory;
|
import com.battery.device.bts.BtsDeviceAdapterFactory;
|
import com.battery.device.simulator.BtsDevelopmentSimulator;
|
import com.battery.device.model.AdapterCapabilities;
|
import com.battery.device.registry.AdapterInstanceConfig;
|
import com.battery.device.registry.DeviceAdapterRegistry;
|
import com.battery.device.simulator.BtsSimulatorStateStore;
|
|
/** 装配单进程设备适配器运行时。 */
|
@Configuration
|
@EnableScheduling
|
public class DeviceAdapterRuntimeConfig
|
{
|
@Bean(destroyMethod = "close")
|
@Profile("!dev-simulator & !bts")
|
public DeviceAdapterRegistry noopDeviceAdapterRegistry()
|
{
|
return new DeviceAdapterRegistry(List.of(new NoopDeviceAdapterFactory()));
|
}
|
|
@Bean(destroyMethod = "close")
|
@Profile({ "dev-simulator", "bts" })
|
public DeviceAdapterRegistry deviceAdapterRegistry()
|
{
|
return new DeviceAdapterRegistry(List.of(new BtsDeviceAdapterFactory()));
|
}
|
|
@Bean(destroyMethod = "close")
|
@Profile("dev-simulator")
|
public BtsDevelopmentSimulator btsDevelopmentSimulator(BtsSimulatorStateStore stateStore,
|
@Value("${battery.dev-simulator.port:15020}") int simulatorPort) throws IOException
|
{
|
return new BtsDevelopmentSimulator(simulatorPort, stateStore);
|
}
|
|
@Bean
|
@Profile("dev-simulator")
|
public ApplicationRunner registerDevelopmentSimulatorAdapter(DeviceAdapterRegistry registry,
|
@Value("${battery.dev-simulator.port:15020}") int simulatorPort)
|
{
|
// 固定开发装配不进入 t_device_adapter,直接注册运行时实例。
|
return arguments -> registry.synchronize(developmentSimulatorRuntimeConfig(simulatorPort));
|
}
|
|
private AdapterInstanceConfig developmentSimulatorRuntimeConfig(int simulatorPort)
|
{
|
return new AdapterInstanceConfig(BtsDevelopmentSimulator.ADAPTER_CODE, "BTS", BtsDevelopmentSimulator.HOST,
|
simulatorPort, BtsDevelopmentSimulator.POLL_INTERVAL_MS,
|
"Asia/Hong_Kong", true,
|
new AdapterCapabilities(true, true, false, false));
|
}
|
}
|