diff --git a/bacnet-stack/demo/gateway/main.c b/bacnet-stack/demo/gateway/main.c
index 7a6f27b4..5d49ee99 100644
--- a/bacnet-stack/demo/gateway/main.c
+++ b/bacnet-stack/demo/gateway/main.c
@@ -172,6 +172,8 @@ static void Init_Service_Handlers(
handler_read_property_multiple);
apdu_set_confirmed_handler(SERVICE_CONFIRMED_WRITE_PROPERTY,
handler_write_property);
+ apdu_set_confirmed_handler(SERVICE_CONFIRMED_READ_RANGE,
+ handler_read_range);
#if defined(BACFILE)
apdu_set_confirmed_handler(SERVICE_CONFIRMED_ATOMIC_READ_FILE,
handler_atomic_read_file);
diff --git a/bacnet-stack/demo/handler/h_alarm_ack.c b/bacnet-stack/demo/handler/h_alarm_ack.c
index 17846296..85571a37 100644
--- a/bacnet-stack/demo/handler/h_alarm_ack.c
+++ b/bacnet-stack/demo/handler/h_alarm_ack.c
@@ -69,7 +69,11 @@ void handler_alarm_ack(
BACNET_ADDRESS my_address;
/* encode the NPDU portion of the packet */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], src, &my_address,
diff --git a/bacnet-stack/demo/handler/h_cov.c b/bacnet-stack/demo/handler/h_cov.c
index 8ff84da4..b3436a59 100644
--- a/bacnet-stack/demo/handler/h_cov.c
+++ b/bacnet-stack/demo/handler/h_cov.c
@@ -339,7 +339,7 @@ static bool cov_send_request(
cov_data.subscriberProcessIdentifier =
cov_subscription->subscriberProcessIdentifier;
#if BAC_ROUTING
- cov_data.initiatingDeviceIdentifier = Device_Object_Instance_Number();
+ cov_data.initiatingDeviceIdentifier = Routed_Device_Object_Instance_Number();
#else
cov_data.initiatingDeviceIdentifier = Device_Object_Instance_Number();
#endif
diff --git a/bacnet-stack/demo/handler/h_getevent.c b/bacnet-stack/demo/handler/h_getevent.c
index f5499e2c..b6641174 100644
--- a/bacnet-stack/demo/handler/h_getevent.c
+++ b/bacnet-stack/demo/handler/h_getevent.c
@@ -72,7 +72,11 @@ void handler_get_event_information(
int valid_event = 0;
/* encode the NPDU portion of the packet */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], src, &my_address,
diff --git a/bacnet-stack/demo/handler/h_pt.c b/bacnet-stack/demo/handler/h_pt.c
index 5051104d..fa3afc79 100644
--- a/bacnet-stack/demo/handler/h_pt.c
+++ b/bacnet-stack/demo/handler/h_pt.c
@@ -231,7 +231,11 @@ void handler_conf_private_trans(
/* encode the NPDU portion of the response packet as it will be needed */
/* no matter what the outcome. */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], src, &my_address,
diff --git a/bacnet-stack/demo/handler/h_rr.c b/bacnet-stack/demo/handler/h_rr.c
index 45d01311..fa2bcb6e 100644
--- a/bacnet-stack/demo/handler/h_rr.c
+++ b/bacnet-stack/demo/handler/h_rr.c
@@ -104,7 +104,11 @@ void handler_read_range(
data.error_class = ERROR_CLASS_OBJECT;
data.error_code = ERROR_CODE_UNKNOWN_OBJECT;
/* encode the NPDU portion of the packet */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], src, &my_address,
diff --git a/bacnet-stack/demo/handler/s_ack_alarm.c b/bacnet-stack/demo/handler/s_ack_alarm.c
index 2835deff..e01712db 100644
--- a/bacnet-stack/demo/handler/s_ack_alarm.c
+++ b/bacnet-stack/demo/handler/s_ack_alarm.c
@@ -73,7 +73,11 @@ uint8_t Send_Alarm_Acknowledgement(
invoke_id = tsm_next_free_invokeID();
if (invoke_id) {
/* encode the NPDU portion of the packet */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, true, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, &my_address,
diff --git a/bacnet-stack/demo/handler/s_cevent.c b/bacnet-stack/demo/handler/s_cevent.c
index 52f8bda2..063b6fbf 100644
--- a/bacnet-stack/demo/handler/s_cevent.c
+++ b/bacnet-stack/demo/handler/s_cevent.c
@@ -69,7 +69,11 @@ uint8_t Send_CEvent_Notify(
invoke_id = tsm_next_free_invokeID();
if (invoke_id) {
/* encode the NPDU portion of the packet */
- datalink_get_my_address(&my_address);
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
+ datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, true, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, &my_address,
diff --git a/bacnet-stack/demo/handler/s_ihave.c b/bacnet-stack/demo/handler/s_ihave.c
index 3bf868b9..2253f10d 100644
--- a/bacnet-stack/demo/handler/s_ihave.c
+++ b/bacnet-stack/demo/handler/s_ihave.c
@@ -77,14 +77,11 @@ void Send_I_Have(
datalink_get_broadcast_address(&dest);
/* encode the NPDU portion of the packet */
npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL);
-
#if BAC_ROUTING
pdu_len = npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, &my_address, &npdu_data);
#else
pdu_len = npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, NULL, &npdu_data);
#endif
-
- pdu_len = npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, NULL, &npdu_data);
/* encode the APDU portion of the packet */
data.device_id.type = OBJECT_DEVICE;
data.device_id.instance = device_id;
diff --git a/bacnet-stack/demo/handler/s_lso.c b/bacnet-stack/demo/handler/s_lso.c
index bc518144..e7207a2c 100644
--- a/bacnet-stack/demo/handler/s_lso.c
+++ b/bacnet-stack/demo/handler/s_lso.c
@@ -73,7 +73,11 @@ uint8_t Send_Life_Safety_Operation_Data(
invoke_id = tsm_next_free_invokeID();
if (invoke_id) {
/* encode the NPDU portion of the packet */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, true, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, &my_address,
diff --git a/bacnet-stack/demo/handler/s_ptransfer.c b/bacnet-stack/demo/handler/s_ptransfer.c
index 577739b6..747cfa58 100644
--- a/bacnet-stack/demo/handler/s_ptransfer.c
+++ b/bacnet-stack/demo/handler/s_ptransfer.c
@@ -78,7 +78,11 @@ uint8_t Send_Private_Transfer_Request(
invoke_id = tsm_next_free_invokeID();
if (invoke_id) {
/* encode the NPDU portion of the packet */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, true, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, &my_address,
diff --git a/bacnet-stack/demo/handler/s_readrange.c b/bacnet-stack/demo/handler/s_readrange.c
index e342bb78..8fe3f3c2 100644
--- a/bacnet-stack/demo/handler/s_readrange.c
+++ b/bacnet-stack/demo/handler/s_readrange.c
@@ -72,7 +72,11 @@ uint8_t Send_ReadRange_Request(
if (invoke_id) {
/* encode the NPDU portion of the packet */
+#if BAC_ROUTING
+ my_address = *Get_Routed_Device_Address(-1);
+#else
datalink_get_my_address(&my_address);
+#endif
npdu_encode_npdu_data(&npdu_data, true, MESSAGE_PRIORITY_NORMAL);
pdu_len =
npdu_encode_pdu(&Handler_Transmit_Buffer[0], &dest, &my_address,
diff --git a/bacnet-stack/demo/handler/s_upt.c b/bacnet-stack/demo/handler/s_upt.c
index 2c1253ab..21f8e014 100644
--- a/bacnet-stack/demo/handler/s_upt.c
+++ b/bacnet-stack/demo/handler/s_upt.c
@@ -53,14 +53,22 @@ void Send_UnconfirmedPrivateTransfer(
int pdu_len = 0;
int bytes_sent = 0;
BACNET_NPDU_DATA npdu_data;
+#if BAC_ROUTING
+ BACNET_ADDRESS my_address;
+
+ my_address = *Get_Routed_Device_Address(-1);
+#endif
if (!dcc_communication_enabled())
return;
/* encode the NPDU portion of the packet */
npdu_encode_npdu_data(&npdu_data, false, MESSAGE_PRIORITY_NORMAL);
- pdu_len =
- npdu_encode_pdu(&Handler_Transmit_Buffer[0], dest, NULL, &npdu_data);
+#if BAC_ROUTING
+ pdu_len = npdu_encode_pdu(&Handler_Transmit_Buffer[0], dest, &my_address, &npdu_data);
+#else
+ pdu_len = npdu_encode_pdu(&Handler_Transmit_Buffer[0], dest, NULL, &npdu_data);
+#endif
/* encode the APDU portion of the packet */
len =
uptransfer_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
diff --git a/bacnet-stack/demo/server/main.c b/bacnet-stack/demo/server/main.c
index fd5d006e..b1cfaf18 100644
--- a/bacnet-stack/demo/server/main.c
+++ b/bacnet-stack/demo/server/main.c
@@ -117,6 +117,8 @@ static void Init_Service_Handlers(
handler_read_property_multiple);
apdu_set_confirmed_handler(SERVICE_CONFIRMED_WRITE_PROPERTY,
handler_write_property);
+ apdu_set_confirmed_handler(SERVICE_CONFIRMED_READ_RANGE,
+ handler_read_range);
#if defined(BACFILE)
apdu_set_confirmed_handler(SERVICE_CONFIRMED_ATOMIC_READ_FILE,
handler_atomic_read_file);
diff --git a/bacnet-stack/ports/win32/Microsoft Visual Studio 2008/BACnet Stack Library/BACnet Stack Library.vcproj b/bacnet-stack/ports/win32/Microsoft Visual Studio 2008/BACnet Stack Library/BACnet Stack Library.vcproj
index 9e33626d..9832f8c0 100644
--- a/bacnet-stack/ports/win32/Microsoft Visual Studio 2008/BACnet Stack Library/BACnet Stack Library.vcproj
+++ b/bacnet-stack/ports/win32/Microsoft Visual Studio 2008/BACnet Stack Library/BACnet Stack Library.vcproj
@@ -327,6 +327,10 @@
RelativePath="..\..\..\..\demo\handler\h_rpm_a.c"
>
+
+
@@ -403,6 +407,10 @@
RelativePath="..\..\..\..\src\rd.c"
>
+
+