Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
midi_ci_pe.hpp File Reference
#include <cstddef>
#include <cstdint>
#include <functional>
#include <optional>
#include <string>
#include <string_view>
#include <unordered_map>
#include <vector>
#include <pulp/midi/midi_ci.hpp>

Go to the source code of this file.

Classes

struct  pulp::midi::PeChunk
 A single PE chunk, after Mcoded7 decode of header + payload. More...
class  pulp::midi::PeReassembler
 Reassemble a stream of incoming PeChunks for the same request_id. More...
struct  pulp::midi::PeSubscription
 One active subscription state — owned by PeSubscriptionManager. More...
class  pulp::midi::PeSubscriptionManager
 Authoritative subscription registry on the responder side. More...

Namespaces

namespace  pulp
namespace  pulp::midi

Enumerations

enum class  pulp::midi::PeMessageType : uint8_t {
  pulp::midi::GetInquiry = 0x34 , pulp::midi::GetReply = 0x35 , pulp::midi::SetInquiry = 0x36 , pulp::midi::SetReply = 0x37 ,
  pulp::midi::SubscribeInquiry = 0x38 , pulp::midi::SubscribeReply = 0x39 , pulp::midi::Notify = 0x3F
}
 PE sub-IDs (MIDI-CI sub-ID #2 byte). Mirrors CiMessageType for PE. More...

Functions

std::vector< uint8_t > pulp::midi::pe_build_message (PeMessageType pe_type, uint8_t ci_version, MUID source, MUID destination, uint8_t request_id, std::string_view header_json, uint16_t total_chunks, uint16_t chunk_number, const uint8_t *payload, std::size_t payload_size)
 Builder for PE message wire bytes.
std::vector< uint8_t > pulp::midi::pe_build_message (PeMessageType pe_type, uint8_t ci_version, MUID source, MUID destination, uint8_t request_id, std::string_view header_json, uint16_t total_chunks, uint16_t chunk_number, const std::vector< uint8_t > &payload)
std::optional< PeChunk > pulp::midi::pe_parse_message (const uint8_t *data, std::size_t size)
 Parse a single PE SysEx envelope into a PeChunk.
std::vector< std::vector< uint8_t > > pulp::midi::pe_split_into_chunks (PeMessageType pe_type, uint8_t ci_version, MUID source, MUID destination, uint8_t request_id, std::string_view header_json, const uint8_t *payload, std::size_t payload_size, std::size_t max_payload_bytes)
 Split a logical PE Get/Set into wire-ready chunks bounded by max_payload_bytes of decoded resource per chunk.
std::optional< std::vector< uint8_t > > pulp::midi::pe_compress (const uint8_t *data, std::size_t size)
 Compress a PE payload using zlib (RFC 1950). Returns nullopt on failure.
std::optional< std::vector< uint8_t > > pulp::midi::pe_compress (const std::vector< uint8_t > &payload)
std::optional< std::vector< uint8_t > > pulp::midi::pe_decompress (const uint8_t *data, std::size_t size)
 Decompress a zlib-wrapped PE payload. Returns nullopt on failure.
std::optional< std::vector< uint8_t > > pulp::midi::pe_decompress (const std::vector< uint8_t > &blob)
std::string pulp::midi::pe_header_make (std::string_view resource, std::string_view command={}, int status=200)
 Builds a minimal PE JSON header.
bool pulp::midi::pe_header_parse (std::string_view json, std::string *resource, std::string *command, int *status)
 Parse a PE JSON header.