From f25766c185e75748c1cbeb9e8f219ef1ad4c6374 Mon Sep 17 00:00:00 2001 From: skarg Date: Fri, 20 Jul 2007 00:42:49 +0000 Subject: [PATCH] Cleaned up device object and server demo for MS/TP properties and compiler warnings. --- bacnet-stack/demo/handler/h_rpm.c | 2 +- bacnet-stack/demo/object/device.c | 43 +++++++++++++++++++++++++------ bacnet-stack/demo/server/main.c | 9 +++++-- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/bacnet-stack/demo/handler/h_rpm.c b/bacnet-stack/demo/handler/h_rpm.c index dab2e9f2..da71282d 100644 --- a/bacnet-stack/demo/handler/h_rpm.c +++ b/bacnet-stack/demo/handler/h_rpm.c @@ -1,7 +1,7 @@ /************************************************************************** * * Copyright (C) 2007 Steve Karg -* Inspired by John Stachler. +* Inspired by John Stachler * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the diff --git a/bacnet-stack/demo/object/device.c b/bacnet-stack/demo/object/device.c index 545a2ba1..3bed85b4 100644 --- a/bacnet-stack/demo/object/device.c +++ b/bacnet-stack/demo/object/device.c @@ -46,7 +46,9 @@ #if BACFILE #include "bacfile.h" /* object list dependency */ #endif - +#if defined(BACDL_MSTP) +#include "dlmstp.h" +#endif /* These three arrays are used by the ReadPropertyMultiple handler */ static const int Device_Properties_Required[] = { @@ -891,7 +893,6 @@ bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; - case PROP_NUMBER_OF_APDU_RETRIES: if (value.tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) { /* FIXME: bounds check? */ @@ -903,7 +904,6 @@ bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; - case PROP_APDU_TIMEOUT: if (value.tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) { /* FIXME: bounds check? */ @@ -914,7 +914,6 @@ bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; - case PROP_VENDOR_IDENTIFIER: if (value.tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) { /* FIXME: bounds check? */ @@ -926,7 +925,6 @@ bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; - case PROP_SYSTEM_STATUS: if (value.tag == BACNET_APPLICATION_TAG_ENUMERATED) { /* FIXME: bounds check? */ @@ -937,7 +935,6 @@ bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; - case PROP_OBJECT_NAME: if (value.tag == BACNET_APPLICATION_TAG_CHARACTER_STRING) { uint8_t encoding; @@ -961,8 +958,38 @@ bool Device_Write_Property(BACNET_WRITE_PROPERTY_DATA * wp_data, *error_code = ERROR_CODE_INVALID_DATA_TYPE; } break; - - default: +#if defined(BACDL_MSTP) + case PROP_MAX_INFO_FRAMES: + if (value.tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) { + if (value.type.Unsigned_Int <= 255) { + dlmstp_set_max_info_frames(value.type.Unsigned_Int); + status = true; + } else { + *error_class = ERROR_CLASS_PROPERTY; + *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; + } + } else { + *error_class = ERROR_CLASS_PROPERTY; + *error_code = ERROR_CODE_INVALID_DATA_TYPE; + } + break; + case PROP_MAX_MASTER: + if (value.tag == BACNET_APPLICATION_TAG_UNSIGNED_INT) { + if ((value.type.Unsigned_Int > 0) && + (value.type.Unsigned_Int <= 127)) { + dlmstp_set_max_master(value.type.Unsigned_Int); + status = true; + } else { + *error_class = ERROR_CLASS_PROPERTY; + *error_code = ERROR_CODE_VALUE_OUT_OF_RANGE; + } + } else { + *error_class = ERROR_CLASS_PROPERTY; + *error_code = ERROR_CODE_INVALID_DATA_TYPE; + } + break; +#endif + default: *error_class = ERROR_CLASS_PROPERTY; *error_code = ERROR_CODE_WRITE_ACCESS_DENIED; break; diff --git a/bacnet-stack/demo/server/main.c b/bacnet-stack/demo/server/main.c index 6d9795b0..b40533ab 100644 --- a/bacnet-stack/demo/server/main.c +++ b/bacnet-stack/demo/server/main.c @@ -45,6 +45,9 @@ #include "net.h" #include "txbuf.h" #include "lc.h" +#if defined(BACDL_MSTP) +#include "rs485.h" +#endif /* This is an example server application using the BACnet Stack */ @@ -122,8 +125,10 @@ int main(int argc, char *argv[]) } #endif printf("BACnet Server Demo\n" - "BACnet Device ID: %u\r\n", - Device_Object_Instance_Number()); + "BACnet Device ID: %u\n" + "Max APDU: %d\n", + Device_Object_Instance_Number(), + MAX_APDU); Init_Service_Handlers(); if (!datalink_init(Network_Interface)) return 1;