dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::coremidi::server::pin< stream_pin_t > Class Template Reference

#include <dx_coremidi_server.h>

Inheritance diagram for dx::coremidi::server::pin< stream_pin_t >:
Collaboration diagram for dx::coremidi::server::pin< stream_pin_t >:

Public Member Functions

template<typename coremidi_device_t>
 pin (coremidi_device_t &device, const typename super::device_t::desc::stream::desc &stream_desc, const typename super::desc &pin_desc)
 pin constructor
void receive (const ::MIDIPacketList *pktlist)
 kernel notification event
void transmit () noexcept
 circular data driven streaming out thread transmit is seen from the based circular buffer perspective transmits circular MIDI data (usually from a HW device) via CoreMIDI MIDIReceived to the OS CoreMIDI Input endpoint (to be received by applications) coremidi::server::pin::circular -> CoreMIDI MIDIReceived (OS CoreMIDI MIDI Input endpoint)
 ~pin () override
 pin destructor

Detailed Description

template<typename stream_pin_t>
class dx::coremidi::server::pin< stream_pin_t >

/brief CoreMIDI pin

Constructor & Destructor Documentation

◆ pin()

template<typename stream_pin_t>
template<typename coremidi_device_t>
dx::coremidi::server::pin< stream_pin_t >::pin ( coremidi_device_t & device,
const typename super::device_t::desc::stream::desc & stream_desc,
const typename super::desc & pin_desc )
inline

pin constructor

the pin's own share, composed with this endpoint's data event and its transmit thread

Here is the call graph for this function:

◆ ~pin()

template<typename stream_pin_t>
dx::coremidi::server::pin< stream_pin_t >::~pin ( )
inlineoverride

pin destructor

Member Function Documentation

◆ receive()

template<typename stream_pin_t>
void dx::coremidi::server::pin< stream_pin_t >::receive ( const ::MIDIPacketList * pktlist)
inline

kernel notification event

launch() is triggered by the streaming device kernel extension whenever new MIDI data arrive.

receive CoreMIDI data from system and encode in circular buffer (usually to be used by a HW device device to send out to its HW MIDI Output ports) receive is seen from the based circular buffer perspective

flow control & signalisation this->data[dx::stream::direction::in] -> signals data arrival(in) this->data[dx::stream::direction::out] -> waits for data draining(out) - stalls all MIDI receiving

However CoreMIDI itself buffers internally all MIDI events so that an effectiv MIDI flow control can't be implemented at that stage.

Todo
coremidi::server::pin::send(): support fractional MIDI package commit
Todo
coremidi::server::pin::send(): multi port support utilizing split stream this->index mask
Todo
dx::coremidi::server::pin::receive: make MIDI flow control threshold accessible
Here is the call graph for this function:
Here is the caller graph for this function:

◆ transmit()

template<typename stream_pin_t>
void dx::coremidi::server::pin< stream_pin_t >::transmit ( )
inlinenoexcept

circular data driven streaming out thread transmit is seen from the based circular buffer perspective transmits circular MIDI data (usually from a HW device) via CoreMIDI MIDIReceived to the OS CoreMIDI Input endpoint (to be received by applications) coremidi::server::pin::circular -> CoreMIDI MIDIReceived (OS CoreMIDI MIDI Input endpoint)

flow control & signalisation this->data[dx::stream::direction::out] -> signals data draining(out) this->data[dx::stream::direction::in] -> waits for data arrival(in)

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.