/// <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);
        }