isessionlayer.cs

来自「zwave 无线通讯协议 PC controller 控制器源码」· CS 代码 · 共 240 行

CS
240
字号
//////////////////////////////////////////////////////////////////////////////////////////////// 
//
//          #######
//          #   ##    ####   #####    #####  ##  ##   #####
//             ##    ##  ##  ##  ##  ##      ##  ##  ##
//            ##  #  ######  ##  ##   ####   ##  ##   ####
//           ##  ##  ##      ##  ##      ##   #####      ##
//          #######   ####   ##  ##  #####       ##  #####
//                                           #####
//          Z-Wave, the wireless language.
//
//          Copyright Zensys A/S, 2005
//
//          All Rights Reserved
//
//          Description:   
//
//          Author:   Morten Damsgaard, Linkage A/S
//
//          Last Changed By:  $Author: jrm $
//          Revision:         $Revision: 1.5 $
//          Last Changed:     $Date: 2007/01/26 12:22:19 $
//
//////////////////////////////////////////////////////////////////////////////////////////////
#region Using directives

using System;
using System.Xml;

#endregion

namespace Zensys.ZWave.Communication
{
  /// <summary>
  /// Summary description for ZWaveITransportLayer.
  /// </summary>
  public interface ISessionLayer
  {
    /// <summary>
    /// 
    /// </summary>
    bool IsReady{get;}
    /// <summary>
    /// 
    /// </summary>
    /// <param name="frameLayer"></param>
    /// <param name="transportLayer"></param>
    /// <param name="connectionString"></param>
    void Open(IFrameLayer frameLayer, ITransportLayer transportLayer, String connectionString);
    /// <summary>
    /// 
    /// </summary>
    void Close();
    /// <summary>
    /// 
    /// </summary>
    /// <param name="handler"></param>
    void SetCallbackHandler(ISessionLayerAsyncCallback handler);
    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    SessionStatistics GetStatistics();

    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="request"></param>
    /// <returns></returns>
    bool RequestWithNoResponse(DataFrame.CommandType cmd, DataPacket request);
    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="request"></param>
    /// <param name="response"></param>
    /// <param name="sequenceCheck"></param>
    /// <param name="timeout"></param>
    /// <returns></returns>
    TXStatus RequestWithResponse(DataFrame.CommandType cmd, DataPacket request, 
      out DataPacket response, bool sequenceCheck, int timeout);
    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="request"></param>
    /// <param name="response"></param>
    /// <param name="sequenceCheck"></param>
    /// <returns></returns>
    TXStatus RequestWithResponse(DataFrame.CommandType cmd, DataPacket request, 
      out DataPacket response, bool sequenceCheck);
    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="request"></param>
    /// <param name="response"></param>
    /// <returns></returns>
    TXStatus RequestWithResponse(DataFrame.CommandType cmd, DataPacket request, out DataPacket response);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="request"></param>
    /// <param name="responses"></param>
    /// <returns></returns>
    TXStatus RequestWithMultipleResponses(DataFrame.CommandType cmd,
      DataPacket request,
      ref DataPacket[] responses);
    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="request"></param>
    /// <param name="responses"></param>
    /// <param name="sequenceCheck"></param>
    /// <returns></returns>
    TXStatus RequestWithMultipleResponses(DataFrame.CommandType cmd,
      DataPacket request,
      ref DataPacket[] responses,
      bool sequenceCheck);
    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="request"></param>
    /// <param name="responses"></param>
    /// <param name="sequenceCheck"></param>
    /// <param name="timeout"></param>
    /// <returns></returns>
    TXStatus RequestWithMultipleResponses(DataFrame.CommandType cmd,
      DataPacket request,
      ref DataPacket[] responses,
      bool sequenceCheck,
      int timeout);
    /// <summary>
    /// Requests a command which may give different numbers of callbacks.
    /// Supply with Responses array that have room for worst case number of callbacks
    /// </summary>
    /// <param name="cmd">Zwave Cmd</param>
    /// <param name="request">Parms for command</param>
    /// <param name="responses">Max number of responses</param>
    /// <param name="breakVal">Values to end one</param>
    /// <param name="sequenceCheck">if true use sequence check</param>
    /// <param name="timeout">Timeout in ms</param>
    /// <returns></returns>
    TXStatus RequestWithVariableResponses(DataFrame.CommandType cmd,
        DataPacket request,
        ref DataPacket[] responses,
        byte[] breakVal,
        bool sequenceCheck,
        int timeout);
   

     /// <summary>
    /// Requests a command which may give different numbers of callbacks.
    /// Supply with Responses array that have room for worst case number of callbacks
    /// </summary>
    /// <param name="cmd">Zwave Cmd</param>
    /// <param name="request">Parms for command</param>
    /// <param name="responses">Max number of responses</param>
    /// <param name="breakVal">Values to end one</param>
    /// <param name="sequenceCheck">if true use sequence check</param>
    /// <param name="timeout">Timeout in ms</param>
    /// <returns></returns>
    TXStatus RequestWithVariableReturnsAndResponses(DataFrame.CommandType cmd,
        DataPacket request,
        ref DataPacket[] responses,
        byte[] breakVal,
        bool sequenceCheck,
        int timeout);
  }


  /// <summary>
  /// ZWaveISessionLayerAsyncCallback interface
  /// </summary>
  public interface ISessionLayerAsyncCallback
  {
    /// <summary>
    /// 
    /// </summary>
    /// <param name="cmd"></param>
    /// <param name="packet"></param>
    void DataPacketReceived(DataFrame.CommandType cmd, DataPacket packet);
  }
  
  /// <summary>
  /// ZWaveSessionStatistics class
  /// </summary>
  public class SessionStatistics
  {
    /// <summary>
    /// 
    /// </summary>
    public SessionStatistics()
    {
    }
    
    /// <summary>
    /// 
    /// </summary>
    /// <param name="stats"></param>
    public SessionStatistics(SessionStatistics stats)
    {
      if (stats == null)
      {
        throw new ArgumentNullException("stats");
      } 
      this.transmittedPackets = stats.transmittedPackets;
      this.receivedPackets = stats.receivedPackets;
      this.duplicatePackets = stats.duplicatePackets;
      this.asyncPackets = stats.asyncPackets;
      this.receiveTimeouts = stats.receiveTimeouts;
    }
    /// <summary>
    /// 
    /// </summary>
    internal int transmittedPackets;
    /// <summary>
    /// 
    /// </summary>
    internal int receivedPackets;
    /// <summary>
    /// 
    /// </summary>
    internal int duplicatePackets;
    /// <summary>
    /// 
    /// </summary>
    internal int asyncPackets;
    /// <summary>
    /// 
    /// </summary>
    internal int receiveTimeouts;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?