/** * @brief Gets TLV value in a byte string format * @param byte_str [out] Output byte string * @return void */ void toByteString(uint8_t * byte_str) { IdentityList::iterator iter; *((uint16_t *)byte_str) = tlvType; // tlvType already in network byte order byte_str += sizeof(tlvType); *((uint16_t *)byte_str) = PLAT_htons ((uint16_t)identityList.size()*PTP_CLOCK_IDENTITY_LENGTH); byte_str += sizeof(uint16_t); for (iter = identityList.begin(); iter != identityList.end(); ++iter) { iter->getIdentityString(byte_str); byte_str += PTP_CLOCK_IDENTITY_LENGTH; } }
/** * @brief Gets the total length of TLV. * Total length of TLV is length of type field (UINT16) + length of 'length' * field (UINT16) + length of * identities (each PTP_CLOCK_IDENTITY_LENGTH) in the path * @return Total length */ int length() { return (int)(2*sizeof(uint16_t) + PTP_CLOCK_IDENTITY_LENGTH*identityList.size()); }