Get_Event_Informations returns analog-input and analog-value objects when Event_stane is not equal to NORMAL.
This commit is contained in:
@@ -843,6 +843,72 @@ void Analog_Input_Intrinsic_Reporting(uint32_t object_instance)
|
||||
}
|
||||
|
||||
|
||||
int Analog_Input_Event_Information(unsigned index,
|
||||
BACNET_GET_EVENT_INFORMATION_DATA * getevent_data)
|
||||
{
|
||||
#if defined(INTRINSIC_REPORTING)
|
||||
bool isNotAckedTransitions;
|
||||
bool IsActiveEvent;
|
||||
int i;
|
||||
|
||||
|
||||
/* check index */
|
||||
if (index < MAX_ANALOG_INPUTS) {
|
||||
/* Event_State not equal to NORMAL */
|
||||
IsActiveEvent = (AI_Descr[index].Event_State != EVENT_STATE_NORMAL);
|
||||
|
||||
/* Acked_Transitions property, which has at least one of the bits
|
||||
(TO-OFFNORMAL, TO-FAULT, TONORMAL) set to FALSE. */
|
||||
|
||||
/* FIXME: finish it */
|
||||
isNotAckedTransitions = false;
|
||||
}
|
||||
else
|
||||
return -1; /* end of list */
|
||||
|
||||
if ((IsActiveEvent) || (isNotAckedTransitions)) {
|
||||
/* Object Identifier */
|
||||
getevent_data->objectIdentifier.type = OBJECT_ANALOG_INPUT;
|
||||
getevent_data->objectIdentifier.instance = Analog_Input_Index_To_Instance(index);
|
||||
/* Event State */
|
||||
getevent_data->eventState = AI_Descr[index].Event_State;
|
||||
/* Acknowledged Transitions */
|
||||
/* FIXME: finish it */
|
||||
bitstring_init(&getevent_data->acknowledgedTransitions);
|
||||
bitstring_set_bit(&getevent_data->acknowledgedTransitions, TRANSITION_TO_OFFNORMAL, true);
|
||||
bitstring_set_bit(&getevent_data->acknowledgedTransitions, TRANSITION_TO_FAULT, true);
|
||||
bitstring_set_bit(&getevent_data->acknowledgedTransitions, TRANSITION_TO_NORMAL, true);
|
||||
/* Event Time Stamps */
|
||||
for (i = 0; i < 3; i++) {
|
||||
getevent_data->eventTimeStamps[i].tag = TIME_STAMP_DATETIME;
|
||||
getevent_data->eventTimeStamps[i].value.dateTime =
|
||||
AI_Descr[index].Event_Time_Stamps[i];
|
||||
}
|
||||
/* Notify Type */
|
||||
getevent_data->notifyType = AI_Descr[index].Notify_Type;
|
||||
/* Event Enable */
|
||||
bitstring_init(&getevent_data->eventEnable);
|
||||
bitstring_set_bit(&getevent_data->eventEnable, TRANSITION_TO_OFFNORMAL,
|
||||
(AI_Descr[index].Event_Enable & EVENT_ENABLE_TO_OFFNORMAL) ? true : false );
|
||||
bitstring_set_bit(&getevent_data->eventEnable, TRANSITION_TO_FAULT,
|
||||
(AI_Descr[index].Event_Enable & EVENT_ENABLE_TO_FAULT ) ? true : false );
|
||||
bitstring_set_bit(&getevent_data->eventEnable, TRANSITION_TO_NORMAL,
|
||||
(AI_Descr[index].Event_Enable & EVENT_ENABLE_TO_NORMAL ) ? true : false );
|
||||
/* Event Priorities */
|
||||
/* FIXME: finish it */
|
||||
getevent_data->eventPriorities[0] = 255;
|
||||
getevent_data->eventPriorities[1] = 255;
|
||||
getevent_data->eventPriorities[2] = 255;
|
||||
|
||||
return 1; /* active event */
|
||||
}
|
||||
else
|
||||
return 0; /* no active event at this index */
|
||||
#endif /* defined(INTRINSIC_REPORTING) */
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef TEST
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -109,6 +109,9 @@ extern "C" {
|
||||
|
||||
void Analog_Input_Intrinsic_Reporting(uint32_t object_instance);
|
||||
|
||||
int Analog_Input_Event_Information(unsigned index,
|
||||
BACNET_GET_EVENT_INFORMATION_DATA * getevent_data);
|
||||
|
||||
void Analog_Input_Init(
|
||||
void);
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "bacapp.h"
|
||||
#include "bactext.h"
|
||||
#include "config.h" /* the custom stuff */
|
||||
#include "getevent.h"
|
||||
#include "wp.h"
|
||||
#include "rp.h"
|
||||
#include "nc.h"
|
||||
@@ -495,7 +496,7 @@ int Analog_Value_Read_Property(
|
||||
|
||||
default:
|
||||
rpdata->error_class = ERROR_CLASS_PROPERTY;
|
||||
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||
rpdata->error_code = ERROR_CODE_UNKNOWN_PROPERTY;
|
||||
apdu_len = BACNET_STATUS_ERROR;
|
||||
break;
|
||||
}
|
||||
@@ -953,6 +954,70 @@ void Analog_Value_Intrinsic_Reporting(uint32_t object_instance)
|
||||
#endif /* defined(INTRINSIC_REPORTING) */
|
||||
}
|
||||
|
||||
int Analog_Value_Event_Information(unsigned index,
|
||||
BACNET_GET_EVENT_INFORMATION_DATA * getevent_data)
|
||||
{
|
||||
#if defined(INTRINSIC_REPORTING)
|
||||
bool isNotAckedTransitions;
|
||||
bool IsActiveEvent;
|
||||
int i;
|
||||
|
||||
|
||||
/* check index */
|
||||
if (index < MAX_ANALOG_VALUES) {
|
||||
/* Event_State not equal to NORMAL */
|
||||
IsActiveEvent = (AV_Descr[index].Event_State != EVENT_STATE_NORMAL);
|
||||
|
||||
/* Acked_Transitions property, which has at least one of the bits
|
||||
(TO-OFFNORMAL, TO-FAULT, TONORMAL) set to FALSE. */
|
||||
|
||||
/* FIXME: finish it */
|
||||
isNotAckedTransitions = false;
|
||||
}
|
||||
else
|
||||
return -1; /* end of list */
|
||||
|
||||
if ((IsActiveEvent) || (isNotAckedTransitions)) {
|
||||
/* Object Identifier */
|
||||
getevent_data->objectIdentifier.type = OBJECT_ANALOG_VALUE;
|
||||
getevent_data->objectIdentifier.instance = Analog_Value_Index_To_Instance(index);
|
||||
/* Event State */
|
||||
getevent_data->eventState = AV_Descr[index].Event_State;
|
||||
/* Acknowledged Transitions */
|
||||
/* FIXME: finish it */
|
||||
bitstring_init(&getevent_data->acknowledgedTransitions);
|
||||
bitstring_set_bit(&getevent_data->acknowledgedTransitions, TRANSITION_TO_OFFNORMAL, true);
|
||||
bitstring_set_bit(&getevent_data->acknowledgedTransitions, TRANSITION_TO_FAULT, true);
|
||||
bitstring_set_bit(&getevent_data->acknowledgedTransitions, TRANSITION_TO_NORMAL, true);
|
||||
/* Event Time Stamps */
|
||||
for (i = 0; i < 3; i++) {
|
||||
getevent_data->eventTimeStamps[i].tag = TIME_STAMP_DATETIME;
|
||||
getevent_data->eventTimeStamps[i].value.dateTime =
|
||||
AV_Descr[index].Event_Time_Stamps[i];
|
||||
}
|
||||
/* Notify Type */
|
||||
getevent_data->notifyType = AV_Descr[index].Notify_Type;
|
||||
/* Event Enable */
|
||||
bitstring_init(&getevent_data->eventEnable);
|
||||
bitstring_set_bit(&getevent_data->eventEnable, TRANSITION_TO_OFFNORMAL,
|
||||
(AV_Descr[index].Event_Enable & EVENT_ENABLE_TO_OFFNORMAL) ? true : false );
|
||||
bitstring_set_bit(&getevent_data->eventEnable, TRANSITION_TO_FAULT,
|
||||
(AV_Descr[index].Event_Enable & EVENT_ENABLE_TO_FAULT ) ? true : false );
|
||||
bitstring_set_bit(&getevent_data->eventEnable, TRANSITION_TO_NORMAL,
|
||||
(AV_Descr[index].Event_Enable & EVENT_ENABLE_TO_NORMAL ) ? true : false );
|
||||
/* Event Priorities */
|
||||
/* FIXME: finish it */
|
||||
getevent_data->eventPriorities[0] = 255;
|
||||
getevent_data->eventPriorities[1] = 255;
|
||||
getevent_data->eventPriorities[2] = 255;
|
||||
|
||||
return 1; /* active event */
|
||||
}
|
||||
else
|
||||
return 0; /* no active event at this index */
|
||||
#endif /* defined(INTRINSIC_REPORTING) */
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
@@ -96,6 +96,9 @@ extern "C" {
|
||||
void Analog_Value_Intrinsic_Reporting(
|
||||
uint32_t object_instance);
|
||||
|
||||
int Analog_Value_Event_Information(unsigned index,
|
||||
BACNET_GET_EVENT_INFORMATION_DATA * getevent_data);
|
||||
|
||||
void Analog_Value_Init(
|
||||
void);
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "server.h"
|
||||
#include "address.h"
|
||||
@@ -44,6 +45,7 @@
|
||||
#include "bacfile.h"
|
||||
#include "datalink.h"
|
||||
#include "dcc.h"
|
||||
#include "getevent.h"
|
||||
#include "net.h"
|
||||
#include "txbuf.h"
|
||||
#include "lc.h"
|
||||
@@ -124,6 +126,17 @@ static void Init_Service_Handlers(
|
||||
/* handle communication so we can shutup when asked */
|
||||
apdu_set_confirmed_handler(SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL,
|
||||
handler_device_communication_control);
|
||||
#if defined(INTRINSIC_REPORTING)
|
||||
apdu_set_confirmed_handler(SERVICE_CONFIRMED_GET_EVENT_INFORMATION,
|
||||
handler_get_event_information);
|
||||
/* Set handlers for GetEventInformation
|
||||
for all objects that support intrinsic reporting. */
|
||||
handler_get_event_information_set(OBJECT_ANALOG_INPUT,
|
||||
Analog_Input_Event_Information);
|
||||
handler_get_event_information_set(OBJECT_ANALOG_VALUE,
|
||||
Analog_Value_Event_Information);
|
||||
|
||||
#endif /* defined(INTRINSIC_REPORTING) */
|
||||
}
|
||||
|
||||
/** Handler registered with atexit() inside main function to, well, cleanup.
|
||||
|
||||
@@ -85,6 +85,7 @@ HANDLER_SRC = \
|
||||
$(BACNET_HANDLER)/h_ihave.c \
|
||||
$(BACNET_HANDLER)/h_cov.c \
|
||||
$(BACNET_HANDLER)/h_ucov.c \
|
||||
$(BACNET_HANDLER)/h_getevent.c \
|
||||
$(BACNET_HANDLER)/h_pt.c \
|
||||
$(BACNET_HANDLER)/h_pt_a.c \
|
||||
$(BACNET_HANDLER)/h_upt.c \
|
||||
|
||||
Reference in New Issue
Block a user