You can choose to pre-allocate the encoder's output buffer manually yourself or you can let the encoder automatically allocate the needed space. If you choose to let the encoder automatically allocate the needed space, you should send a zeroed instance of OssBuf to the encoder as follows:
OssBuf encodedData; . . . . encodedData.value = NULL; encodedData.length = 0; rc = ossEncode(world, myPduNum, &myData, &encodedData);
On the other hand, if you choose to pre-allocate your own buffer, you will set the length and the value fields of the OssBuf instance to the length and the address of the buffer provided. To determine the length of the buffer to hold the entire encoded PDU, call ossDetermineEncodingLength() that returns the size of the encoded PDU that ossEncode() would create.
The samples included with some of the Knowledge Center answers are meant for your general understanding of the OSS products. Different versions of the products might produce slightly different outputs. Consult the products documentation and samples for the most up-to-date products information and code examples.
Test drive the OSS Nokalva ASN.1, LTE, and XML Tools now! Your trial includes complete software, documentation, sample programs, free 24x7 technical support and more.
Our expert personnel can help you learn ASN.1!
We offer 4-day ASN.1 courses at our headquarters or your premises.