internal void ReceiveMessage(Message message) { if (_needData != NeedDataEnum.NoNeed) { State.SetNeedData(_needData); _needData = NeedDataEnum.NoNeed; } var processingMessage = State.ProcessMessage(message, _confirmMessage, _newState, _needsConfirm); if (processingMessage == null) return; if (processingMessage.ResponseMessage != null) { SendMessage(processingMessage); } else { _needsConfirm = false; _confirmMessage = null; _newState = null; if (processingMessage.NewState != null) { State = processingMessage.NewState; processingMessage = State.StateChanged(); if (processingMessage != null) SendMessage(processingMessage); } } }
internal override ProcessingMesssage ProcessMessage(Message message, byte[] confirmMessage, AbstractState newState, bool needsConfirm) { var response = GetEchoResponse(message); if (response != null) return new ProcessingMesssage() { NewState = new InicializaceState() }; return null; }
public static void SetInfo(Message message) { var data = message.Data; SerioveCislo = string.Format("{0:X2}{1:X2}{2:X2}", data[2], data[3], data[4]); PhPlus = data[5].GetBit(0); Ot = data[5].GetBit(1); JenEkvitermniRegulace = data[5].GetBit(2); AnglickaVerze = data[5].GetBit(3); MaGsmModul = data[5].GetBit(4); MaBtModul = data[5].GetBit(5); MaEeprom = data[5].GetBit(6); PocetPripojeni = data[6]; }
protected ProcessingMesssage GetEchoResponse(Message message) { if (message.Id == Request.NextChange.Id) { return new ProcessingMesssage() { ResponseMessage = Response.KeepAlive.Data, Text = Response.KeepAlive.Text, NeedsConfirm = false }; } if (message.Id == Request.NextChange.Id) { CJ.SetFirmware(message); return new ProcessingMesssage() { ResponseMessage = Response.KeepAlive.Data, Text = Response.KeepAlive.Text, NeedsConfirm = false }; } if (message.Id == Request.CurrentDate.Id) { CJ.SetInfo(message); return new ProcessingMesssage() { ResponseMessage = Response.GetCurrentDateTime(), Text = "Nastavuji datum a čas", NeedsConfirm = true }; } return null; }
internal abstract ProcessingMesssage ProcessMessage(Message message, byte[] confirmMessage, AbstractState newState, bool needsConfirm);
internal static void SetFirmware(Message message) { var data = message.Data; Firmware = string.Format("{0:X2}{1:X2}{2:X2}{3:X2}", data[2], data[3], data[4], data[5]); }