IBACnetARRAYN_of_BACnetCredentialAuthenticationFactor.InsertElement (METH) ¶ METHOD InsertElement : CmpBACnet.IEC_BACNET_STATUS Insert element to this property at the given index. InOut: Scope Name Type Comment Return InsertElement CmpBACnet.IEC_BACNET_STATUS Input nIndex CmpBACnet.IEC_BACNET_ARRAY_INDEX Index (0 .. number of elements-1). Inout Const value CmpBACnet.IEC_BACNET_CREDENTIAL_AUTHENTICATION_FACTOR Element value to insert.
IBACnetARRAYN_of_BACnetDeviceObjectPropertyReference.InsertElement (METH) ¶ METHOD InsertElement : CmpBACnet.IEC_BACNET_STATUS Insert element to this property at the given index. InOut: Scope Name Type Comment Return InsertElement CmpBACnet.IEC_BACNET_STATUS Input nIndex CmpBACnet.IEC_BACNET_ARRAY_INDEX Index (0 .. number of elements-1). Inout Const value CmpBACnet.IEC_BACNET_DEV_OBJ_PROP_REFERENCE Element value to insert.
IBACnetARRAYN_of_BACnetCredentialAuthenticationFactor.SetContent (METH) ¶ METHOD SetContent : CmpBACnet.IEC_BACNET_STATUS Set the whole content of this property. InOut: Scope Name Type Comment Return SetContent CmpBACnet.IEC_BACNET_STATUS Input pData POINTER TO CmpBACnet.IEC_BACNET_CREDENTIAL_AUTHENTICATION_FACTOR Property content to set. count CmpBACnet.IEC_BACNET_ELEMENT_COUNT Number of property elements.
IBACnetARRAYN_of_BACnetDeviceObjectPropertyReference.GetElement (METH) ¶ METHOD GetElement : CmpBACnet.IEC_BACNET_STATUS Get the element with the given index from this property. InOut: Scope Name Type Comment Return GetElement CmpBACnet.IEC_BACNET_STATUS Input nIndex CmpBACnet.IEC_BACNET_ARRAY_INDEX Index (0 .. number of elements-1). Inout data CmpBACnet.IEC_BACNET_DEV_OBJ_PROP_REFERENCE Element data.
IBACnetARRAYN_of_BACnetCredentialAuthenticationFactor.RemoveElement (METH) ¶ METHOD RemoveElement : CmpBACnet.IEC_BACNET_STATUS Remove element of this property at the given index. InOut: Scope Name Type Comment Return RemoveElement CmpBACnet.IEC_BACNET_STATUS Input nIndex CmpBACnet.IEC_BACNET_ARRAY_INDEX Index (0 .. number of elements-1).
IBACnetARRAYN_of_BACnetDeviceObjectPropertyReference.AddElement (METH) ¶ METHOD AddElement : CmpBACnet.IEC_BACNET_STATUS Add element to the end of this property. InOut: Scope Name Type Comment Return AddElement CmpBACnet.IEC_BACNET_STATUS Inout Const value CmpBACnet.IEC_BACNET_DEV_OBJ_PROP_REFERENCE Element value to add.
IBACnetARRAYN_of_BACnetDeviceObjectPropertyReference.GetCount (METH) ¶ METHOD GetCount : CmpBACnet.IEC_BACNET_STATUS Get the number of elements in this property. InOut: Scope Name Type Comment Return GetCount CmpBACnet.IEC_BACNET_STATUS Output count CmpBACnet.IEC_BACNET_ELEMENT_COUNT Number of property elements.
LogObjectBaseFileHandleTableEntry (STRUCT) ¶ TYPE LogObjectBaseFileHandleTableEntry : STRUCT InOut: Name Type Initial instNumber DWORD Constants.LOG_INVALID_INSTNUMBER hFile RTS_IEC_HANDLE RTS_INVALID_HANDLE
LogObjectsBase (FB) ¶ FUNCTION_BLOCK ABSTRACT LogObjectsBase EXTENDS BACnet.BACnetServerPluginBase Base class for logging objects default implementions (Trend_Log, Trend_Log_Multiple, Event_Log). It tries to provide a feature complete implementation for logging objects with a reasonable simple implementation. Assumptions / provisions of LogObjectBase and derived: A.) All log data are stored in the file system, one file per object. If large data volumes should be used (Buffer_Size) a high performance file system is recommended. B.) no sophisticated Sequence / Total_Record_Count overflow handling needed - they simply overflow / wrap around If those assumptions / provisions are not valid for your use case, a more sophisticated implementation is needed, for example based on database, in-memory-database etc. BACstack log data are delivered as either IEC_BACNET_LOG_RECORD, IEC_BACNET_LOG_RECORD_MULTIPLE, or IEC_BACNET_EVENT_LOG_RECORD packed in a IEC_BACNET_PROPERTY_CONTENTS and are stored binary as is in one file per logging object. Such a log file contains: 1.) file header 2.) 0..numRecords-1 log records A log record in such a file consists of: 1.) log record header sequence : IEC_BACNET_UNSIGNED time stamp : IEC_BACNET_DATE_TIME 2.) log record data as C-structure 3.) actual number of records in file : IEC_BACNET_UNSIGNED Reasons to do so: - SysFile write operations in append mode doesnt allow writing at file pos <> end for some platforms - reading the last record should be efficient (rewind from file end), for example to get last sequence number If the number of records is supposed to be limited practically (Buffer_Size), then purge operations of the data files are needed (to get rid of old records). Those purge operations are done implicitely in the implementation. A purge operation basically copies the records - except the purged record(s) - to a temporary file, deletes the data file, copy/move the data file to the data file. For those purge operations it might be useful to choose a TempPath on a high speed file system (RAM file system). If TempPath <> PersistentPath the temporary file will be copied to the data file and deleted afterwards, otherwise the temporary file will be renamed to the data file. The purge operations involve a significant performance degradation. In general this should not be an issue, because BACnet logging objects are designed to inform a BACnet management device (OWS/AWS) about “log buffer mostly full” via Notification_Threshold and notifications. The BACnet management device should read and clear the log buffer to avoid “log buffer full” situations which will cause loss of logging data anyway. Properties: HardShutdown MaxDataSize ObjectType PersistentPath ServerDeviceId TempPath Methods: FreeReadRangeResult GetBufferSize GetRecordsByPosition GetRecordsBySequence GetRecordsByTime GetStopWhenFull Init PostStopBACnetStack ReadRangeResultSetInfo ScanObjectsAndSetCallbackAttachments SetCallbackAttachments SetReadCallbackAttachment SetWriteCallbackAttachment UpdateObjectPropertiesFromDataFile ComputeRecordSize CreateDataFiles DataFileName ListDataFiles LogDataFile LogFilePos LogFileSize LogFileSizeAndPos LogObjectAddrString LogObjectPropertyAddrString LogReadRangeResult LogRecord LogRecordContentInfo ObjectId PurgeDataFile ReadNumberOfRecordsAndLastSequenceFromDataFile ReadNumberOfRecordsFromDataFile ReadRangeErrorCompletion ReadRangeInfoToString RemoveDataFiles RemoveUnusedDataFiles ResetDataFile WriteRecordContentToDataFile Structure: BACnetEventCallback ReadRangeErrorCompletion (Method) Files DataFiles CreateDataFiles (Method) DataFileName (Method) ListDataFiles (Method) PurgeDataFile (Method) ReadNumberOfRecordsAndLastSequenceFromDataFile (Method) ReadNumberOfRecordsFromDataFile (Method) RemoveDataFiles (Method) RemoveUnusedDataFiles (Method) ResetDataFile (Method) WriteRecordContentToDataFile (Method) base ComputeRecordSize (Method) FreeReadRangeResult (Method) GetBufferSize (Method) GetRecordsByPosition (Method) GetRecordsBySequence (Method) GetRecordsByTime (Method) GetStopWhenFull (Method) HardShutdown (Property) Init (Method) Logging LogDataFile (Method) LogFilePos (Method) LogFileSize (Method) LogFileSizeAndPos (Method) LogObjectAddrString (Method) LogObjectPropertyAddrString (Method) LogReadRangeResult (Method) LogRecord (Method) LogRecordContentInfo (Method) MaxDataSize (Property) ObjectHandling ObjectId (Method) ObjectType (Property) PersistentPath (Property) PostStopBACnetStack (Method) ReadRangeResultSetInfo (Method) ScanObjectsAndSetCallbackAttachments (Method) ServerDeviceId (Property) SetCallbackAttachments (Method) SetReadCallbackAttachment (Method) SetWriteCallbackAttachment (Method) TempPath (Property) ToString ReadRangeInfoToString (Method) UpdateObjectPropertiesFromDataFile (Method)
BACnetEventCallback ¶ ReadRangeErrorCompletion (Method)