I defined some proprietary properties on the analog-value object and when I disable the ReadPropertyMultiple requests the Bacnet4J server returns all properties to the client (for testing I am using MBS BACeye). Obviously, the client reads the properties one by one based on the property-list.
With ReadPropertyMultiple enabled the proprietary properties must be queried manually. I noticed, that the client sends the request with PropertyIdentifier.all (#8).
ReadPropertyMultipleRequest [listOfReadAccessSpecs=[ReadAccessSpecification [objectIdentifier=analog-value 45, listOfPropertyReferences=[PropertyReference [propertyIdentifier=all, propertyArrayIndex=null]]]]]
Should I as application developer create the response with the List of Read Access Results (Bacnet 15.7.1.2.1) od does it Bacnet4J automaticaly for me? I checked the answer using this code snippet and it looks like the Bacnet4J response does not contain the proprietary properties,
public void requestReceived(Address from, Service service) {
super.requestReceived(from, service);
if (service.getChoiceId() == 14) {
ReadPropertyMultipleRequest req = (ReadPropertyMultipleRequest) service;
CommLogger.info("REQ: " + req.toString());
SequenceOf<ReadAccessSpecification> ras = req.getListOfReadAccessSpecs();
try {
final ReadPropertyMultipleAck ack = (ReadPropertyMultipleAck) new ReadPropertyMultipleRequest(
ras).handle(executor.getLocalDevice(), from);
CommLogger.info("RSP: " + ack.toString());
} catch (BACnetException e) {
e.printStackTrace();
}
}
}
Robert