You must keep track of the number of received passings to calculate the correct [StartId] for the next PASSINGGET call.
Example 1 - Empty passing buffer at start
← PASSINGGET;00000000\n <1> → PASSINGGET;00\n <2> → 00000000;00\n <3> → \n[...some time later, after creating passings...] ← PASSINGGET;00000000\n <4> → PASSINGGET;00\n <5> → 00000000;03\n <6> → GLBAS60;0718;01521527;0c;08;9f;1a;0;1;2;00;0\n → GLBAS70;04c1;01521536;14;09;9f;1a;0;1;2;00;0\n → EMPAL70;047c;0152153b;0e;08;9f;1a;0;1;2;00;0\n → \n [... small wait between requests ...] ← PASSINGGET;00000003\n <7>
- Try to recieve passings starting at 0x00000000,…
- …no error code
- …no passings available ? [StartID] still 0x00000000
- Try to receive passings again
- …still no error
- …we have 0x03 passings, starting with ID 0x00, following in the next lines.
- Next try, receive passings from [StartID]==0x00000003 onwards
Example 2 - More than 64 passings
← PASSINGGET;00000000\n → PASSINGGET;00\n → 00000000;40\n <1> → GLBAS60;0718;01521527;0c;08;9f;1a;0;1;2;00;0\n → GLBAS70;04c1;01521536;14;09;9f;1a;0;1;2;00;0\n [...] → SNRMT06;1260;015215d8;0d;0c;9f;15;0;1;2;01;0\n → SNRMT07;2910;015215c9;30;0f;9f;15;0;1;2;01;0\n → \n
- Number of passings sent in this response is 0x40 == 64. We should call the command again as there may be more passings which have not been sent.
← PASSINGGET;00000040\n <2> → PASSINGGET;00\n → 00000040;05\n <3> → GLBAS98;04d3;015215c9;11;08;9f;1a;0;1;2;01;0\n → GLBAS58;074b;0152154d;11;0a;9f;1a;0;1;2;03;0\n → SNRMT29;2ad4;01521590;47;0f;9f;15;0;1;2;02;0\n → GLBAS78;04e0;01521594;0f;09;9f;1a;0;1;2;02;0\n → SNRMT39;111e;01521594;2e;0e;9f;15;0;1;2;04;0\n → \n
- Read further passings, starting with 0x40
This transmission only contains 0x05 passings => buffer fully read
Example 3 - Buffer overflow or StartID too high
← PASSINGGET;00000000\n → PASSINGGET;10\n <1> → 00000000;0000021d\n <2> → \n
- Error 10 StartID out of range. Passing 0x00 (original [StartID] in query) has been deleted as the buffer has overflowed.
- The first available passing has the ID 0x21d = 541, so there are passings
0x21d = 541 to 0x21d + 0d1000 = 0x604 = 1540 available.