/// <summary> /// Get module identification. /// </summary> /// <param name="addr">Address of the module.</param> /// <returns>A correctly typed Module instance.</returns> private IModule GetModuleIdent(byte addr) { IModule module = null; var answer = new BICCPData(); if (Biccp.RequestToModule(addr, answer, ICCConstants.BICCP_GRP_CONF, ICCConstants.BICCP_CMD_CONF_VERSION)) { int iMajor = answer.Data[0]; int iMinor = answer.Data[1]; int iBuild = answer.Data[2]; if (Biccp.RequestToModule(addr, answer, ICCConstants.BICCP_GRP_CONF, ICCConstants.BICCP_CMD_CONF_IDENT)) { module = ModuleFactory.CreateInstance(answer.Data[1]); module.Major = iMajor; module.Minor = iMinor; module.Build = iBuild; module.Description = string.Empty; for (int i = 0; i < ICCConstants.DESCSIZE; i++) { if (answer.Data[i + 2] != 0) { module.Description += (char)answer.Data[i + 2]; } } } } Log.LogMessage((module != null), "Module identification", addr); return(module); }