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 void CheckIntervalElapsed()
		{
			_needData = NeedDataEnum.CheckTemperature;
		}
		internal void SetNeedData(NeedDataEnum needData)
		{
			NeedData = needData;
		}