Get_Event_Informations returns analog-input and analog-value objects when Event_stane is not equal to NORMAL.

This commit is contained in:
k001a
2011-07-13 20:36:21 +00:00
parent c61c096dc7
commit 536438d23e
6 changed files with 152 additions and 1 deletions
+66
View File
@@ -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>
+3
View File
@@ -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);
+66 -1
View File
@@ -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
+3
View File
@@ -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);
+13
View File
@@ -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.
+1
View File
@@ -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 \