Hello.
I’m currently creating a driver in order to expose tags on the Ignition OPCUA Server from an external source.
I made a first draft version to have the communications running correctly and now, I would like to make a clean version the would fit in the Gateway webpage as a driver. And that is driving me crazy.
The module installs without error (even if it is around 25Mb !?) and starts correctly but my devices list does not show my new driver.
Here is the code is used for this driver:
ModuleHook
public class ModuleHook extends AbstractDriverModuleHook{
private Logger logger = LoggerFactory.getLogger(getClass());
private static final List<DriverType> DRIVER_TYPES = new ArrayList();
static {
DRIVER_TYPES.add(new MiosBoxTcpDriverType());
}
private GatewayContext context;
@Override
public void setup(GatewayContext gatewayContext) {
logger.info("MiosBox Driver : setup()");
this.context = gatewayContext;
BundleUtil.get().addBundle("MiosBoxDriver", getClass(), "MiosBoxDriver");
super.setup(context);
logger.info("MiosBox Driver : setup() - END");
}
@Override
public void startup(LicenseState activationState) {
logger.info("MiosBox Driver : startup()");
super.startup(activationState);
logger.info("MiosBox Driver : startup() - END");
}
@Override
public void shutdown() {
logger.info("MiosBox Driver : shutdown()");
BundleUtil.get().removeBundle("MiosBoxDriver");
super.shutdown();
}
@Override
public void serviceReady(Class<?> serviceClass) {
logger.info("ServiceReady pour : " + serviceClass.toString());
super.serviceReady(serviceClass);
logger.info("ServiceReady - END");
}
@Override
protected List<DriverType> getDriverTypes() {
logger.info("getDriverTypes(): Liste des drivers : " + DRIVER_TYPES.toString());
return DRIVER_TYPES;
}
@Override
protected int getExpectedAPIVersion() {
logger.info("getExpectedAPIVersion Called.");
return 4;
}
}
The MiosBoxTcpDriverType extends from DriverType.
The initialization seems good but the overridden method serviceReady() is never called and I cannot figure why.
Here are the logs after an install/restart of the driver:
Time Logger Message
(I) 18:07:44 ModuleHook MiosBox Driver : startup() - END
(I) 18:07:44 ModuleHook getExpectedAPIVersion Called.
(I) 18:07:44 ModuleHook MiosBox Driver : startup()
(I) 18:07:44 ModuleManager Starting up module 'MiosBoxDriver' v1.0.0 (b0)...
(I) 18:07:44 ModuleHook MiosBox Driver : setup() - END
(I) 18:07:44 ModuleHook getDriverTypes(): Liste des drivers : [com.mios.MiosBoxDriverGateway.settings.MiosBoxTcpDriverType@190a7a23]
(I) 18:07:44 ModuleHook MiosBox Driver : setup()
(I) 18:07:36 ModuleManager Starting up module 'MiosBoxDriver' (v1.0.0 (b0))...
(I) 18:07:35 ModuleManager Installing module: "MiosBoxDriver"
I cannot figure why the driver is not added to the drivers list (under OPC > Devices > Add).
I can provide more code and/or clarifications if needed, do not hesitate to ask.