Open KlausHammer opened 1 year ago
So after digging around in the code, it seems that the segmentation happens in appservice.py in the ServerSSM class on line 793:
if (apdu.apduType == ComplexAckPDU.pduType):
If i manually change
self.segmentSize = self.maxApduLengthAccepted
to
self.segmentSize = 480
It now segments the apdu to a size of 485, so i now have 2 question.
Hi,
If i take the example code Sample4_RandomAnalogValueObject.py, and change
RANDOM_OBJECT_COUNT = int(os.getenv('RANDOM_OBJECT_COUNT', 10))
toRANDOM_OBJECT_COUNT = int(os.getenv('RANDOM_OBJECT_COUNT', 400))
And in the .ini file set maxApduLengthAccepted to 480, YABE can see that the max APDU length is 480, but when i read the the DeviceObject, it does not look like the message is segmentet properly.
From WireShark when a read request on object-list is requested, it first sends a total of 1481 bytes in message 1,
and 543 bytes in message two.
Should it not segment the message into multiple messages with a max length of 480 bytes? Or am i missing something? No matter what i change maxApduLengthAccepted to, it behaves the same.
Hope you can help!