activity_join_result_encoder.h 1.2 KB

12345678910111213141516171819202122232425262728
  1. #pragma once
  2. #include <cstddef>
  3. #include <cstdint>
  4. #include <span>
  5. namespace sunrise::middleware::bap::activity_message::join_result {
  6. /** The known minimal local join-result encoding is 757 bytes. */
  7. inline constexpr std::size_t kEncodedSize = 757;
  8. /**
  9. * Encodes the minimal accepted join result from typed request scalars. The caller hint and the
  10. * zero-filled remaining fields are our own choice, not retail parity.
  11. * @param correlation Join-request correlation, written big-endian.
  12. * @param sessionId Allocated activity session id. Must not be zero.
  13. * @param keepaliveHintMs 16-bit keepalive hint in milliseconds.
  14. * @param output Caller-owned payload storage, unchanged on failure.
  15. * @param written Receives 757 on success, or zero on failure.
  16. * @return True when the session id is valid and the whole body fits.
  17. */
  18. [[nodiscard]] bool encode_join_result(std::uint32_t correlation,
  19. std::uint64_t sessionId,
  20. std::uint16_t keepaliveHintMs,
  21. std::span<std::byte> output,
  22. std::size_t& written) noexcept;
  23. } // namespace sunrise::middleware::bap::activity_message::join_result