- .NET API: Added Client.ReportControlBlock.HasResvTms method

- updated CHANGELOG
pull/147/head
Michael Zillgith 7 years ago
parent e803003441
commit d7e01738eb

@ -1,3 +1,17 @@
Changes to version 1.3.3
------------------------
- IEC 61850 server: optimized report buffer handling for buffered reporting (save memory and encoding time)
- IEC 61850 client: fixed problem - IedConnection cannot be reused after IedConnection_close (github #124)
- IEC 61850 server: added support for pre configured client with ClientLN
- IEC 61850 client: added function ClientReportControlBlock_hasResvTms
- IEC 61850 server: don't clear owner when client disables BRCB (RptEna = false)
- IED Server: added ResvTms handling for BRCB
- SV publisher: fixed length calculation
- IEC 61850 server: added support for segmented reporting
- fixed bug in windows socket abstraction
- fixed client TCP keep alive problem (see github #115)
- MMS server: read service - return data access error for component access to simple variable
Changes to version 1.3.2
------------------------
- MMS client/server: added support for component alternate access for generic variable read requests

@ -36,10 +36,10 @@ namespace IEC61850
/// </summary>
/// <param name="report">represents the received report. DON'T use this object
/// outside the scope of the report handler!</param>
public delegate void ReportHandler (Report report, object parameter);
public delegate void ReportHandler(Report report, object parameter);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void InternalReportHandler (IntPtr parameter, IntPtr report);
internal delegate void InternalReportHandler(IntPtr parameter, IntPtr report);
/// <summary>
/// Report control block (RCB) representation.
@ -52,102 +52,106 @@ namespace IEC61850
public class ReportControlBlock : IDisposable
{
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr ClientReportControlBlock_create (string dataAttributeReference);
static extern IntPtr ClientReportControlBlock_create(string dataAttributeReference);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_destroy (IntPtr self);
static extern void ClientReportControlBlock_destroy(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_isBuffered (IntPtr self);
static extern bool ClientReportControlBlock_isBuffered(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr ClientReportControlBlock_getRptId (IntPtr self);
static extern IntPtr ClientReportControlBlock_getRptId(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setRptId (IntPtr self, string rptId);
static extern void ClientReportControlBlock_setRptId(IntPtr self, string rptId);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getRptEna (IntPtr self);
static extern bool ClientReportControlBlock_getRptEna(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setRptEna(IntPtr self, [MarshalAs(UnmanagedType.I1)] bool rptEna);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getResv (IntPtr self);
static extern bool ClientReportControlBlock_getResv(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setResv (IntPtr self, [MarshalAs(UnmanagedType.I1)] bool resv);
static extern void ClientReportControlBlock_setResv(IntPtr self, [MarshalAs(UnmanagedType.I1)] bool resv);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr ClientReportControlBlock_getDataSetReference (IntPtr self);
static extern IntPtr ClientReportControlBlock_getDataSetReference(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setDataSetReference (IntPtr self, string dataSetReference);
static extern void ClientReportControlBlock_setDataSetReference(IntPtr self, string dataSetReference);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern UInt32 ClientReportControlBlock_getConfRev (IntPtr self);
static extern UInt32 ClientReportControlBlock_getConfRev(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern int ClientReportControlBlock_getOptFlds (IntPtr self);
static extern int ClientReportControlBlock_getOptFlds(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setOptFlds (IntPtr self, int optFlds);
static extern void ClientReportControlBlock_setOptFlds(IntPtr self, int optFlds);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern UInt32 ClientReportControlBlock_getBufTm (IntPtr self);
static extern UInt32 ClientReportControlBlock_getBufTm(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setBufTm (IntPtr self, UInt32 bufTm);
static extern void ClientReportControlBlock_setBufTm(IntPtr self, UInt32 bufTm);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern UInt16 ClientReportControlBlock_getSqNum (IntPtr self);
static extern UInt16 ClientReportControlBlock_getSqNum(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern int ClientReportControlBlock_getTrgOps (IntPtr self);
static extern int ClientReportControlBlock_getTrgOps(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setTrgOps (IntPtr self, int trgOps);
static extern void ClientReportControlBlock_setTrgOps(IntPtr self, int trgOps);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern UInt32 ClientReportControlBlock_getIntgPd (IntPtr self);
static extern UInt32 ClientReportControlBlock_getIntgPd(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setIntgPd (IntPtr self, UInt32 intgPd);
static extern void ClientReportControlBlock_setIntgPd(IntPtr self, UInt32 intgPd);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getGI (IntPtr self);
static extern bool ClientReportControlBlock_getGI(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setGI (IntPtr self, [MarshalAs(UnmanagedType.I1)] bool gi);
static extern void ClientReportControlBlock_setGI(IntPtr self, [MarshalAs(UnmanagedType.I1)] bool gi);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getPurgeBuf (IntPtr self);
static extern bool ClientReportControlBlock_getPurgeBuf(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setPurgeBuf (IntPtr self, [MarshalAs(UnmanagedType.I1)] bool purgeBuf);
static extern void ClientReportControlBlock_setPurgeBuf(IntPtr self, [MarshalAs(UnmanagedType.I1)] bool purgeBuf);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern Int16 ClientReportControlBlock_getResvTms (IntPtr self);
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_hasResvTms(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern Int16 ClientReportControlBlock_getResvTms(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setResvTms (IntPtr self, Int16 resvTms);
static extern void ClientReportControlBlock_setResvTms(IntPtr self, Int16 resvTms);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr ClientReportControlBlock_getEntryId (IntPtr self);
static extern IntPtr ClientReportControlBlock_getEntryId(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setEntryId (IntPtr self, IntPtr entryId);
static extern void ClientReportControlBlock_setEntryId(IntPtr self, IntPtr entryId);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern UInt64 ClientReportControlBlock_getEntryTime (IntPtr self);
static extern UInt64 ClientReportControlBlock_getEntryTime(IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr ClientReportControlBlock_getOwner (IntPtr self);
static extern IntPtr ClientReportControlBlock_getOwner(IntPtr self);
private IntPtr self;
private IedConnection iedConnection = null;
@ -172,7 +176,7 @@ namespace IEC61850
private bool reportHandlerInstalled = false;
private event InternalReportHandler internalHandler = null;
private void resetSendFlags ()
private void resetSendFlags()
{
flagRptId = false;
flagRptEna = false;
@ -192,28 +196,31 @@ namespace IEC61850
private Report report = null;
private void internalReportHandler (IntPtr parameter, IntPtr report)
private void internalReportHandler(IntPtr parameter, IntPtr report)
{
try
{
try {
if (this.report == null)
this.report = new Report (report);
this.report = new Report(report);
if (reportHandler != null)
reportHandler(this.report, reportHandlerParameter);
} catch (Exception e)
}
catch (Exception e)
{
// older versions of mono 2.10 (for linux?) cause this exception
Console.WriteLine(e.Message);
}
}
internal ReportControlBlock (string objectReference, IedConnection iedConnection, IntPtr connection)
internal ReportControlBlock(string objectReference, IedConnection iedConnection, IntPtr connection)
{
self = ClientReportControlBlock_create (objectReference);
self = ClientReportControlBlock_create(objectReference);
if (self != IntPtr.Zero) {
if (self != IntPtr.Zero)
{
this.iedConnection = iedConnection;
this.objectReference = objectReference;
}
@ -229,14 +236,16 @@ namespace IEC61850
/// <see cref="IEC61850.Client.ReportControlBlock"/> was occupying.</remarks>
public void Dispose()
{
lock (this) {
if (self != IntPtr.Zero) {
lock (this)
{
if (self != IntPtr.Zero)
{
iedConnection.UninstallReportHandler (objectReference);
iedConnection.UninstallReportHandler(objectReference);
iedConnection.RemoveRCB (this);
iedConnection.RemoveRCB(this);
ClientReportControlBlock_destroy (self);
ClientReportControlBlock_destroy(self);
self = IntPtr.Zero;
}
@ -245,10 +254,10 @@ namespace IEC61850
~ReportControlBlock()
{
Dispose ();
Dispose();
}
public string GetObjectReference ()
public string GetObjectReference()
{
return this.objectReference;
}
@ -267,22 +276,23 @@ namespace IEC61850
/// <param name='parameter'>
/// parameter is passed to the handler when the handler is invoked.
/// </param>
public void InstallReportHandler (ReportHandler reportHandler, object parameter)
public void InstallReportHandler(ReportHandler reportHandler, object parameter)
{
this.reportHandler = new ReportHandler(reportHandler);
this.reportHandlerParameter = parameter;
if (reportHandlerInstalled == false) {
if (reportHandlerInstalled == false)
{
string reportId = this.GetRptId ();
string reportId = this.GetRptId();
if (internalHandler == null)
{
internalHandler = new InternalReportHandler(internalReportHandler);
}
iedConnection.InstallReportHandler (objectReference, reportId, internalHandler);
iedConnection.InstallReportHandler(objectReference, reportId, internalHandler);
reportHandlerInstalled = true;
}
@ -292,14 +302,14 @@ namespace IEC61850
/// Read all RCB values from the server
/// </summary>
/// <exception cref="IedConnectionException">This exception is thrown if there is a connection or service error</exception>
public void GetRCBValues ()
public void GetRCBValues()
{
int error;
iedConnection.GetRCBValues (out error, objectReference, self);
iedConnection.GetRCBValues(out error, objectReference, self);
if (error != 0)
throw new IedConnectionException ("getRCBValues service failed", error);
throw new IedConnectionException("getRCBValues service failed", error);
}
/// <summary>
@ -310,9 +320,9 @@ namespace IEC61850
/// The RCB values are sent by a single MMS write request.
/// </description>
/// <exception cref="IedConnectionException">This exception is thrown if there is a connection or service error</exception>
public void SetRCBValues ()
public void SetRCBValues()
{
SetRCBValues (true);
SetRCBValues(true);
}
/// <summary>
@ -325,7 +335,7 @@ namespace IEC61850
/// <param name='singleRequest'>
/// If true the values are sent by single MMS write request. Otherwise the values are all sent by their own MMS write requests.
/// </param>
public void SetRCBValues (bool singleRequest)
public void SetRCBValues(bool singleRequest)
{
UInt32 parametersMask = 0;
@ -373,16 +383,18 @@ namespace IEC61850
int error;
iedConnection.SetRCBValues (out error, self, parametersMask, singleRequest);
iedConnection.SetRCBValues(out error, self, parametersMask, singleRequest);
resetSendFlags();
if (error != 0)
throw new IedConnectionException ("setRCBValues service failed", error);
throw new IedConnectionException("setRCBValues service failed", error);
if (flagRptId) {
if (flagRptId)
{
if (reportHandlerInstalled) {
if (reportHandlerInstalled)
{
reportHandlerInstalled = false;
InstallReportHandler(this.reportHandler, this.reportHandlerParameter);
}
@ -395,9 +407,9 @@ namespace IEC61850
/// <returns>
/// <c>true</c> if this instance is a buffered RCB; otherwise, <c>false</c>.
/// </returns>
public bool IsBuffered ()
public bool IsBuffered()
{
return ClientReportControlBlock_isBuffered (self);
return ClientReportControlBlock_isBuffered(self);
}
/// <summary>
@ -409,9 +421,9 @@ namespace IEC61850
/// <returns>
/// The entry time as ms timestamp
/// </returns>
public UInt64 GetEntryTime ()
public UInt64 GetEntryTime()
{
return ClientReportControlBlock_getEntryTime (self);
return ClientReportControlBlock_getEntryTime(self);
}
/// <summary>
@ -423,13 +435,13 @@ namespace IEC61850
/// <returns>
/// The entry time as DataTimeOffset
/// </returns>
public DateTimeOffset GetEntryTimeAsDateTimeOffset ()
public DateTimeOffset GetEntryTimeAsDateTimeOffset()
{
UInt64 entryTime = GetEntryTime ();
UInt64 entryTime = GetEntryTime();
DateTimeOffset retVal = new DateTimeOffset (1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
DateTimeOffset retVal = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
return retVal.AddMilliseconds (entryTime);
return retVal.AddMilliseconds(entryTime);
}
/// <summary>
@ -441,14 +453,15 @@ namespace IEC61850
/// <returns>The entry ID</returns>
public byte[] GetEntryID()
{
IntPtr entryIdRef = ClientReportControlBlock_getEntryId (self);
IntPtr entryIdRef = ClientReportControlBlock_getEntryId(self);
if (entryIdRef == IntPtr.Zero)
return null;
else {
MmsValue entryId = new MmsValue (entryIdRef);
else
{
MmsValue entryId = new MmsValue(entryIdRef);
return entryId.getOctetString ();
return entryId.getOctetString();
}
}
@ -458,11 +471,11 @@ namespace IEC61850
MmsValue entryID = MmsValue.NewOctetString (entryId.Length);
MmsValue entryID = MmsValue.NewOctetString(entryId.Length);
entryID.setOctetString (entryId);
entryID.setOctetString(entryId);
ClientReportControlBlock_setEntryId (self, entryID.valueReference);
ClientReportControlBlock_setEntryId(self, entryID.valueReference);
}
@ -474,11 +487,11 @@ namespace IEC61850
/// <returns>
/// The data set reference.
/// </returns>
public string GetDataSetReference ()
public string GetDataSetReference()
{
IntPtr dataSetRefPtr = ClientReportControlBlock_getDataSetReference (self);
IntPtr dataSetRefPtr = ClientReportControlBlock_getDataSetReference(self);
return Marshal.PtrToStringAnsi (dataSetRefPtr);
return Marshal.PtrToStringAnsi(dataSetRefPtr);
}
/// <summary>
@ -487,9 +500,9 @@ namespace IEC61850
/// <returns>
/// The data set reference.
/// </returns>
public void SetDataSetReference (string dataSetReference)
public void SetDataSetReference(string dataSetReference)
{
ClientReportControlBlock_setDataSetReference (self, dataSetReference);
ClientReportControlBlock_setDataSetReference(self, dataSetReference);
flagDataSetReference = true;
}
@ -500,11 +513,11 @@ namespace IEC61850
/// <returns>
/// The report identifier.
/// </returns>
public string GetRptId ()
public string GetRptId()
{
IntPtr rptIdPtr = ClientReportControlBlock_getRptId (self);
IntPtr rptIdPtr = ClientReportControlBlock_getRptId(self);
return Marshal.PtrToStringAnsi (rptIdPtr);
return Marshal.PtrToStringAnsi(rptIdPtr);
}
/// <summary>
@ -513,7 +526,7 @@ namespace IEC61850
/// <param name='rptId'>
/// The new RptId
/// </param>
public void SetRptId (string rptId)
public void SetRptId(string rptId)
{
ClientReportControlBlock_setRptId(self, rptId);
flagRptId = true;
@ -525,9 +538,9 @@ namespace IEC61850
/// <returns>
/// true, if reporting is enabled, false otherwise
/// </returns>
public bool GetRptEna ()
public bool GetRptEna()
{
return ClientReportControlBlock_getRptEna (self);
return ClientReportControlBlock_getRptEna(self);
}
/// <summary>
@ -536,9 +549,9 @@ namespace IEC61850
/// <param name='rptEna'>
/// true to enable reporting, false to disable
/// </param>
public void SetRptEna (bool rptEna)
public void SetRptEna(bool rptEna)
{
ClientReportControlBlock_setRptEna (self, rptEna);
ClientReportControlBlock_setRptEna(self, rptEna);
flagRptEna = true;
}
@ -546,7 +559,7 @@ namespace IEC61850
/// Get the purgeBuf flag of the report control block
/// </summary>
/// <returns>the prugeBuf value</returns>
public bool GetPurgeBuf ()
public bool GetPurgeBuf()
{
return ClientReportControlBlock_getPurgeBuf(self);
}
@ -556,7 +569,7 @@ namespace IEC61850
/// </summary>
/// <description>This is only for buffered RCBs. If set to true the report buffer of a buffered RCB will be cleaned.</description>
/// <param name="purgeBuf">set to true to flush report buffer</param>
public void SetPurgeBuf (bool purgeBuf)
public void SetPurgeBuf(bool purgeBuf)
{
ClientReportControlBlock_setPurgeBuf(self, purgeBuf);
flagPurgeBuf = true;
@ -570,7 +583,7 @@ namespace IEC61850
/// </returns>
public UInt32 GetBufTm()
{
return ClientReportControlBlock_getBufTm (self);
return ClientReportControlBlock_getBufTm(self);
}
/// <summary>
@ -579,9 +592,9 @@ namespace IEC61850
/// <param name='bufTm'>
/// Buffer time is ms.
/// </param>
public void SetBufTm (UInt32 bufTm)
public void SetBufTm(UInt32 bufTm)
{
ClientReportControlBlock_setBufTm (self, bufTm);
ClientReportControlBlock_setBufTm(self, bufTm);
flagBufTm = true;
}
@ -592,9 +605,9 @@ namespace IEC61850
/// <returns>
/// true, if GI flag is set
/// </returns>
public bool GetGI ()
public bool GetGI()
{
return ClientReportControlBlock_getGI (self);
return ClientReportControlBlock_getGI(self);
}
/// <summary>
@ -603,9 +616,9 @@ namespace IEC61850
/// <param name='GI'>
/// request general interrogation of true
/// </param>
public void SetGI (bool GI)
public void SetGI(bool GI)
{
ClientReportControlBlock_setGI (self, GI);
ClientReportControlBlock_setGI(self, GI);
flagGI = true;
}
@ -615,9 +628,9 @@ namespace IEC61850
/// <returns>
/// true, the RCB is reserver by a client
/// </returns>
public bool GetResv ()
public bool GetResv()
{
return ClientReportControlBlock_getResv (self);
return ClientReportControlBlock_getResv(self);
}
/// <summary>
@ -626,9 +639,9 @@ namespace IEC61850
/// <returns>
/// The conf rev.
/// </returns>
public UInt32 GetConfRev ()
public UInt32 GetConfRev()
{
return ClientReportControlBlock_getConfRev (self);
return ClientReportControlBlock_getConfRev(self);
}
/// <summary>
@ -637,9 +650,9 @@ namespace IEC61850
/// <param name='resv'>
/// true: reserver this RCB for exclusive use
/// </param>
public void SetResv (bool resv)
public void SetResv(bool resv)
{
ClientReportControlBlock_setResv (self, resv);
ClientReportControlBlock_setResv(self, resv);
flagResv = true;
}
@ -651,7 +664,7 @@ namespace IEC61850
/// </returns>
public TriggerOptions GetTrgOps()
{
return (TriggerOptions) ClientReportControlBlock_getTrgOps (self);
return (TriggerOptions)ClientReportControlBlock_getTrgOps(self);
}
/// <summary>
@ -662,7 +675,7 @@ namespace IEC61850
/// </param>
public void SetTrgOps(TriggerOptions trgOps)
{
ClientReportControlBlock_setTrgOps (self, (int) trgOps);
ClientReportControlBlock_setTrgOps(self, (int)trgOps);
flagTrgOps = true;
}
@ -673,9 +686,9 @@ namespace IEC61850
/// <returns>
/// integrity period in ms
/// </returns>
public UInt32 GetIntgPd ()
public UInt32 GetIntgPd()
{
return ClientReportControlBlock_getIntgPd (self);
return ClientReportControlBlock_getIntgPd(self);
}
/// <summary>
@ -684,9 +697,9 @@ namespace IEC61850
/// <param name='intgPd'>
/// integrity period in ms
/// </param>
public void SetIntgPd (UInt32 intgPd)
public void SetIntgPd(UInt32 intgPd)
{
ClientReportControlBlock_setIntgPd (self, intgPd);
ClientReportControlBlock_setIntgPd(self, intgPd);
flagIntgPd = true;
}
@ -698,7 +711,7 @@ namespace IEC61850
/// </returns>
public ReportOptions GetOptFlds()
{
return (ReportOptions) ClientReportControlBlock_getOptFlds (self);
return (ReportOptions)ClientReportControlBlock_getOptFlds(self);
}
/// <summary>
@ -709,11 +722,20 @@ namespace IEC61850
/// </param>
public void SetOptFlds(ReportOptions optFlds)
{
ClientReportControlBlock_setOptFlds (self, (int)optFlds);
ClientReportControlBlock_setOptFlds(self, (int)optFlds);
flagOptFlds = true;
}
/// <summary>
/// Check if the report control block has the "ResvTms" attribute.
/// </summary>
/// <returns><c>true</c>, if ResvTms is available, <c>false</c> otherwise.</returns>
public bool HasResvTms()
{
return ClientReportControlBlock_hasResvTms(self);
}
/// <summary>
/// Gets the ResvTms (reservation time) value
/// </summary>
@ -727,7 +749,7 @@ namespace IEC61850
/// <returns>The reservation time</returns>
public Int16 GetResvTms()
{
return ClientReportControlBlock_getResvTms (self);
return ClientReportControlBlock_getResvTms(self);
}
/// <summary>
@ -736,7 +758,7 @@ namespace IEC61850
/// <param name="resvTms">the reservation time value</param>
public void SetResvTms(Int16 resvTms)
{
ClientReportControlBlock_setResvTms (self, resvTms);
ClientReportControlBlock_setResvTms(self, resvTms);
flagResvTms = true;
}
@ -759,6 +781,5 @@ namespace IEC61850
return null;
}
}
}
}

Loading…
Cancel
Save