/************************************************************************** * * Copyright (C) 2011 Krzysztof Malorny * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * *********************************************************************/ #ifndef NC_H #define NC_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define NC_MAX_RECIPIENTS 10 #define RECIPIENT_TYPE_NOTINITIALIZED 0 #define RECIPIENT_TYPE_DEVICE 1 #define RECIPIENT_TYPE_ADDRESS 2 /* BACnetRecipient sructuer*/ /* BACnetRecipient ::= CHOICE { device [0] BACnetObjectIdentifier, address [1] BACnetAddress } */ typedef struct BACnet_Recipient { uint8_t RecipientType; /* Type of Recipient */ union { uint32_t DeviceIdentifier; BACNET_ADDRESS Address; } _; } BACNET_RECIPIENT; /* BACnetDestination structure */ typedef struct BACnet_Destination { uint8_t ValidDays; BACNET_TIME FromTime; BACNET_TIME ToTime; BACNET_RECIPIENT Recipient; uint32_t ProcessIdentifier; uint8_t Transitions; bool ConfirmedNotify; } BACNET_DESTINATION; /* Structure containing configuration for a Notification Class */ typedef struct Notification_Class_info { uint8_t Priority[3]; /* BACnetARRAY[3] of Unsigned */ uint8_t Ack_Required; /* BACnetEventTransitionBits */ BACNET_DESTINATION Recipient_List[NC_MAX_RECIPIENTS]; /* List of BACnetDestination */ } NOTIFICATION_CLASS_INFO; void Notification_Class_Property_Lists( const int **pRequired, const int **pOptional, const int **pProprietary); void Notification_Class_Init(void); bool Notification_Class_Valid_Instance( uint32_t object_instance); unsigned Notification_Class_Count(void); uint32_t Notification_Class_Index_To_Instance(unsigned index); unsigned Notification_Class_Instance_To_Index( uint32_t object_instance); bool Notification_Class_Object_Name( uint32_t object_instance, BACNET_CHARACTER_STRING *object_name); int Notification_Class_Read_Property( BACNET_READ_PROPERTY_DATA * rpdata); bool Notification_Class_Write_Property( BACNET_WRITE_PROPERTY_DATA * wp_data); #ifdef __cplusplus } #endif /* __cplusplus */ #define NOTIFICATION_CLASS_OBJ_FUNCTIONS \ OBJECT_NOTIFICATION_CLASS, Notification_Class_Init, Notification_Class_Count, \ Notification_Class_Index_To_Instance, Notification_Class_Valid_Instance, \ Notification_Class_Object_Name, Notification_Class_Read_Property, \ Notification_Class_Write_Property, Notification_Class_Property_Lists, \ NULL, NULL, NULL #endif // NC_H