Refactored RP, WP, RPM to reduce coupling with objects for Linux and Win32 ports.

This commit is contained in:
skarg
2010-02-10 16:27:31 +00:00
parent a7de276acc
commit f0863c0238
69 changed files with 2734 additions and 1710 deletions
+8 -11
View File
@@ -28,15 +28,15 @@
#include <stdbool.h>
#include <stdint.h>
#include "bacdef.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "rp.h"
#ifndef MAX_ANALOG_INPUTS
#define MAX_ANALOG_INPUTS 7
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
void Analog_Input_Property_Lists(
const int **pRequired,
const int **pOptional,
@@ -71,18 +71,15 @@ extern "C" {
uint32_t Analog_Input_Units(
uint32_t instance);
int Analog_Input_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Analog_Input_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
float Analog_Input_Present_Value(
uint32_t object_instance);
void Analog_Input_Present_Value_Set(
uint32_t object_instance,
float value);
void Analog_Input_Init(
void);
+8 -11
View File
@@ -29,8 +29,13 @@
#include <stdint.h>
#include "bacdef.h"
#include "bacerror.h"
#include "rp.h"
#include "wp.h"
#ifndef MAX_ANALOG_OUTPUTS
#define MAX_ANALOG_OUTPUTS 4
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -84,18 +89,10 @@ extern "C" {
void Analog_Output_Init(
void);
int Analog_Output_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Analog_Output_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Analog_Output_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef TEST
#include "ctest.h"
+4 -10
View File
@@ -30,6 +30,7 @@
#include "bacdef.h"
#include "bacerror.h"
#include "wp.h"
#include "rp.h"
#ifndef MAX_ANALOG_VALUES
#define MAX_ANALOG_VALUES 4
@@ -51,18 +52,11 @@ extern "C" {
char *Analog_Value_Name(
uint32_t object_instance);
int Analog_Value_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Analog_Value_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Analog_Value_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
bool Analog_Value_Present_Value_Set(
uint32_t object_instance,
+5 -10
View File
@@ -41,6 +41,8 @@
#include "apdu.h"
#include "arf.h"
#include "awf.h"
#include "rp.h"
#include "wp.h"
#ifdef __cplusplus
extern "C" {
@@ -78,19 +80,12 @@ extern "C" {
void);
/* handling for read property service */
int bacfile_encode_property_apdu(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int bacfile_read_property(
BACNET_READ_PROPERTY_DATA *rpdata);
/* handling for write property service */
bool bacfile_write_property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef __cplusplus
}
+8 -11
View File
@@ -30,6 +30,10 @@
#include "bacdef.h"
#include "cov.h"
#ifndef MAX_BINARY_INPUTS
#define MAX_BINARY_INPUTS 5
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -81,18 +85,11 @@ extern "C" {
uint32_t object_instance,
BACNET_PROPERTY_VALUE * value_list);
int Binary_Input_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Binary_Input_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Binary_Input_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
void Binary_Input_Init(
void);
BACNET_BINARY_PV Binary_Input_Present_Value(
@@ -100,7 +97,7 @@ extern "C" {
bool Binary_Input_Present_Value_Set(
uint32_t object_instance,
bool value);
BACNET_BINARY_PV value);
#ifdef TEST
#include "ctest.h"
+7 -10
View File
@@ -31,6 +31,10 @@
#include "bacerror.h"
#include "wp.h"
#ifndef MAX_BINARY_OUTPUTS
#define MAX_BINARY_OUTPUTS 6
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -77,18 +81,11 @@ extern "C" {
uint32_t instance,
char *new_name);
int Binary_Output_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Binary_Output_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Binary_Output_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
void Binary_Output_Level_Sync(
unsigned int index);
+4 -11
View File
@@ -29,13 +29,13 @@
#include <stdint.h>
#include "bacdef.h"
#include "bacerror.h"
#include "rp.h"
#include "wp.h"
#ifndef MAX_BINARY_VALUES
#define MAX_BINARY_VALUES 10
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -56,18 +56,11 @@ extern "C" {
void Binary_Value_Init(
void);
int Binary_Value_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Binary_Value_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Binary_Value_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef TEST
#include "ctest.h"
+19 -16
View File
@@ -39,8 +39,12 @@
#include "bacdef.h"
#include "bacenum.h"
#include "wp.h"
#include "rp.h"
#include "readrange.h"
typedef void (
*object_init_function) (
void);
typedef unsigned (
*object_count_function) (
void);
@@ -53,16 +57,14 @@ typedef char *(
(
uint32_t object_instance);
typedef bool(
*object_valid_instance_function) (
uint32_t object_instance);
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
void Device_Object_Function_Set(
BACNET_OBJECT_TYPE object_type,
object_count_function count_function,
object_index_to_instance_function index_function,
object_name_function name_function);
void Device_Init(
void);
@@ -84,6 +86,12 @@ extern "C" {
int *object_type,
uint32_t * instance);
unsigned Device_Count(void);
uint32_t Device_Index_To_Instance(
unsigned index);
char *Device_Name(
uint32_t object_instance);
BACNET_DEVICE_STATUS Device_System_Status(
void);
int Device_Set_System_Status(
@@ -152,18 +160,13 @@ extern "C" {
int object_type,
uint32_t object_instance);
int Device_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Device_Objects_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
int Device_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Device_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
bool DeviceGetRRInfo(
uint32_t Object, /* Which particular object - obviously not important for device object */
+7 -19
View File
@@ -78,23 +78,13 @@ extern "C" {
uint16_t service_len,
BACNET_ADDRESS * src,
BACNET_CONFIRMED_SERVICE_DATA * service_data);
void handler_read_property_function_set(
read_property_function pFunction);
int local_read_property(
uint8_t * value,
uint8_t * status,
BACNET_DEVICE_OBJECT_PROPERTY_REFERENCE *Source,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
void handler_rr_object_set(
BACNET_OBJECT_TYPE object_type,
rr_info_function pFunction1);
void handler_read_property_object_set(
BACNET_OBJECT_TYPE object_type,
read_property_function pFunction1,
object_valid_instance_function pFunction2);
void handler_read_property_ack(
uint8_t * service_request,
uint16_t service_len,
@@ -106,9 +96,7 @@ extern "C" {
uint16_t service_len,
BACNET_ADDRESS * src,
BACNET_CONFIRMED_SERVICE_DATA * service_data);
void handler_write_property_object_set(
BACNET_OBJECT_TYPE object_type,
void handler_write_property_function_set(
write_property_function pFunction);
bool WPValidateString(
@@ -176,10 +164,10 @@ extern "C" {
uint16_t service_len,
BACNET_ADDRESS * src,
BACNET_CONFIRMED_SERVICE_DATA * service_data);
void handler_read_property_multiple_list_set(
BACNET_OBJECT_TYPE object_type,
rpm_property_lists_function pFunction);
void handler_rpm_function_set(
read_property_function pFunction);
void handler_rpm_list_set(
rpm_object_property_lists_function pFunction);
void handler_read_property_multiple_ack(
uint8_t * service_request,
+4 -10
View File
@@ -29,6 +29,7 @@
#include <stdint.h>
#include "bacdef.h"
#include "bacerror.h"
#include "rp.h"
#include "wp.h"
#ifdef __cplusplus
@@ -54,18 +55,11 @@ extern "C" {
void Load_Control_Init(
void);
int Load_Control_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Load_Control_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Load_Control_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef TEST
#include "ctest.h"
+4 -11
View File
@@ -29,6 +29,7 @@
#include <stdint.h>
#include "bacdef.h"
#include "bacerror.h"
#include "rp.h"
#include "wp.h"
#ifdef __cplusplus
@@ -55,20 +56,12 @@ extern "C" {
uint32_t object_instance,
int priority);
/* ReadProperty service support */
int Lighting_Output_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Lighting_Output_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
/* WriteProperty service support */
bool Lighting_Output_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef TEST
#include "ctest.h"
+8 -10
View File
@@ -29,8 +29,13 @@
#include <stdint.h>
#include "bacdef.h"
#include "bacerror.h"
#include "rp.h"
#include "wp.h"
#ifndef MAX_LIFE_SAFETY_POINTS
#define MAX_LIFE_SAFETY_POINTS 7
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -50,18 +55,11 @@ extern "C" {
void Life_Safety_Point_Init(
void);
int Life_Safety_Point_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Life_Safety_Point_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Life_Safety_Point_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef TEST
#include "ctest.h"
+8 -10
View File
@@ -29,8 +29,13 @@
#include <stdint.h>
#include "bacdef.h"
#include "bacerror.h"
#include "rp.h"
#include "wp.h"
#ifndef MAX_MULTISTATE_INPUTS
#define MAX_MULTISTATE_INPUTS 1
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -49,18 +54,11 @@ extern "C" {
unsigned Multistate_Input_Instance_To_Index(
uint32_t instance);
int Multistate_Input_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Multistate_Input_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Multistate_Input_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
/* optional API */
bool Multistate_Input_Object_Instance_Add(
+8 -10
View File
@@ -29,8 +29,13 @@
#include <stdint.h>
#include "bacdef.h"
#include "bacerror.h"
#include "rp.h"
#include "wp.h"
#ifndef MAX_MULTISTATE_OUTPUTS
#define MAX_MULTISTATE_OUTPUTS 4
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -51,18 +56,11 @@ extern "C" {
void Multistate_Output_Init(
void);
int Multistate_Output_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Multistate_Output_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Multistate_Output_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef TEST
#include "ctest.h"
+3 -19
View File
@@ -46,29 +46,13 @@ typedef struct BACnet_Read_Property_Data {
int32_t array_index;
uint8_t *application_data;
int application_data_len;
BACNET_ERROR_CLASS error_class;
BACNET_ERROR_CODE error_code;
} BACNET_READ_PROPERTY_DATA;
typedef int (
*read_property_function) (
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
typedef bool(
*object_valid_instance_function) (
uint32_t object_instance);
/* structure for linked list of object functions */
struct BACnet_Read_Property_Functions;
typedef struct BACnet_Read_Property_Functions {
BACNET_OBJECT_TYPE object_type;
read_property_function rp_object_property_value;
object_valid_instance_function rp_object_valid_instance;
struct BACnet_Read_Property_Functions *next;
} BACNET_RP_FUNCTIONS;
BACNET_READ_PROPERTY_DATA *rp_data);
#ifdef __cplusplus
extern "C" {
+16
View File
@@ -55,6 +55,22 @@ typedef void (
const int **pOptional,
const int **pProprietary);
struct property_list_t {
const int *pList;
unsigned count;
};
struct special_property_list_t {
struct property_list_t Required;
struct property_list_t Optional;
struct property_list_t Proprietary;
};
typedef void (
*rpm_object_property_lists_function) (
BACNET_OBJECT_TYPE object_type,
struct special_property_list_t *pPropertyList);
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+9 -10
View File
@@ -29,6 +29,12 @@
#include <stdint.h>
#include "bacdef.h"
#include "cov.h"
#include "rp.h"
#include "wp.h"
#ifndef MAX_TREND_LOGS
#define MAX_TREND_LOGS 8
#endif
#ifdef __cplusplus
extern "C" {
@@ -53,18 +59,11 @@ extern "C" {
char *Trend_Log_Name(
uint32_t object_instance);
int Trend_Log_Encode_Property_APDU(
uint8_t * apdu,
uint32_t object_instance,
BACNET_PROPERTY_ID property,
int32_t array_index,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
int Trend_Log_Read_Property(
BACNET_READ_PROPERTY_DATA *rpdata);
bool Trend_Log_Write_Property(
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
void Trend_Log_Init(
void);
+3 -3
View File
@@ -51,13 +51,13 @@ typedef struct BACnet_Write_Property_Data {
uint8_t application_data[MAX_APDU];
int application_data_len;
uint8_t priority; /* use BACNET_NO_PRIORITY if no priority */
BACNET_ERROR_CLASS error_class;
BACNET_ERROR_CODE error_code;
} BACNET_WRITE_PROPERTY_DATA;
typedef bool(
*write_property_function) (
BACNET_WRITE_PROPERTY_DATA * wp_data,
BACNET_ERROR_CLASS * error_class,
BACNET_ERROR_CODE * error_code);
BACNET_WRITE_PROPERTY_DATA * wp_data);
#ifdef __cplusplus
extern "C" {