Ejemplo n.º 1
0
        /// <summary>
        /// Records the receipt and contents of the CEMHello message from the connected device.
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        ///
        public void NoteCEMHelloMsg(Msg_CEMHello msg)
        {
            if (msg == null)
            {
                throw new ArgumentNullException("msg");
            }

            // NOTE: The CEMHello message will be sent in the following circumstances:
            // 1) At CEM startup (automatic).
            // 2) On loss of RCM communication (automatic).
            // 3) On resumption of normal RCM communication (automatic).
            // 4) In response to a CEMHello sent by the PC.
            // 5) At the start and end of a GPS module reset cycle (15 sec TSM power cycle).
            //
            // Because of the automatic cases, we always want to copy data from the message, because
            // the CEM or RCM versions may have changed (the former in the case of a CEM firmware
            // update; the latter in the case of normal startup or a TSM disconnect, reconnect, or
            // failure.

            //MainWindow.Log.WriteToLog(LogConfigAURA.ADUConnect, "CONNECT: Got CEMHello msg.");

            GotCEMHello     = true;
            DeviceIsPresent = true;

            CEMVersion    = msg.CEMVersion;
            ConfigVersion = msg.ConfigVersion;
            MachineName   = msg.MachineName;
            CEMInfoFlags  = msg.Flags;

            // General note concerning Address and RCMVersion: it's possible that the DNT subsystem
            // is working fine (required for the CEM to get the DNT MAC address) but the RCM subsystem
            // isn't, or that this msg was sent after DNT "radio ready" but before the RCM "get status"
            // has completed. In these cases we can have an Address but no RCMVersion. This "state" isn't
            // covered by the "Got" predicates. We don't really need to add a predicate for it, though
            // - we can deduce this by seeing a meaningful address but RCMVersion is null. It *is*
            // important information, however: if an RCM board fails (serial communication or power),
            // we'd see the MAC address but no RCM version information.

            Address   = msg.Address;
            NetworkId = msg.NetworkId;

            RCMVersion = msg.RCMVersion.IsValid ? msg.RCMVersion : null;

            RaiseCompleteActionIfComplete();
        }
Ejemplo n.º 2
0
        private void HandleCEMHello(Msg_CEMHello msg)
        {
            //menuManager.DeviceInfo.CEM = msg.CEMVersion.Major.ToString("00") + "."
            //					+ msg.CEMVersion.Minor.ToString("00") + "."
            //					+ msg.CEMVersion.Revision.ToString("00");
            //menuManager.DeviceInfo.RCM = msg.RCMVersion.Major.ToString("00") + "."
            //					+ msg.RCMVersion.Minor.ToString("00") + "."
            //					+ msg.RCMVersion.Revision.ToString("00");
            ////deviceInfoModel.Name = msg.MachineName.Substring(0, 2) + " " + msg.MachineName.Substring(3);
            //menuManager.DeviceInfo.MAC = msg.Address == AURADef.InvalidMACAddress ? "" : msg.Address.ToString("x6");//
            //menuManager.DeviceInfo.GroupID = msg.NetworkId;
            //cemConfig.DNTNetworkId = msg.NetworkId;
            ConfigVersion = msg.ConfigVersion;
            //devInfo_ = msg.ConfigVersion;
            //cemConfig.Flags = (CEMConfigFlag)msg.Flags;

            //menuManager.CreateDeviceInfoValuesList();

            //SendMgmtMsg(new Msg_UIMHello());
            devInfo_.NoteCEMHelloMsg(msg);
            SendMgmtMsg(new Msg_UIGetCEMConfigADU());
            SendMgmtMsg(new Msg_UIGetUIMConfig());
        }