Currently in the process of applying for EtherType registration; this is a prototype.


This protocol provides a LinuxDriver for reception processing.

The driver enables exclusive processing of multiple communications.

It is used simultaneously by multiple applications.

Diretta is a protocol implemented not only on hardware sold by Diretta but also on products from multiple manufacturers.

Applications make reservations with the driver, enabling coexistence and communication using this Ether Type with applications other than Diretta.


Please use a commercial license to use Diretta.
Diretta's protocol will be disclosed under a license NDA.
If modifications to the protocol or libraries are required for integration into the actual device, you can report the necessary changes.


We are conducting a test.

https://help.diretta.link/en/support/solutions/articles/73000661018-146

Using 0x88B6 for testing purposes

https://www.diretta.link/


Diretta Direct Stream (DDS)


Diretta is a protocol for audio data transfer.

Connection will be initiated on UDP port 19642.

It is then used to directly transfer only the audio stream.

https://www.diretta.link/


Diretta Direct Stream (DDS)


SubType 0x0000 is used for stream transmission.

byte0123456789ABCDEF
0x0xDistnation MAC AddressSource MAC AddressEther TypeD1D2
0x1cStream Data
(Ext) 0x1cLENVERSUB TypeOP1OP2Stream Data


 

offsetlength
06Distnation MAC Address
66Source MAC Address
122Ether Type
141DDS    first control (D1)
151DDS   second control (D2)
168DDS extended control (DE)
16total len-16stream data
24DE Lengthstream data (extended mode)

Audio data must be aligned to 64-bit boundaries.

Therefore, it is designed so that DATA has an offset of 16 or 24.



DDS    first control (D1) 1byte (When using QoS, interpret this slot directly as priority._

bit76543210

EXStream Port Number (0-127) 0 is debug reserv

     


DDS   second control (D2) 1byte

bit76543210

IRStream Counter (max 127)



enable extended control (EX)

 0 : stream start offset is 16. ProtocolVersion 0x00 /  Subtype 0x00

 1 : DDS extended control is used ( stream start offset is 24.


Information Request (IR)

 0 : none

 1 : Request the stream reception status.


LEN in (DE) 

     This value indicates the length of the audio stream.

     Used when the size is less than the minimum size of 60 bytes for EtherFram.

     If 0, the EtherFrame length is used.


VER in (DE) 

    Protocol Version

    

SUB Type in (DE) 

bit151413121110
9876543210

EXSUID (Service CodeMSUB (Message ID per service

     UID = 0 Diretta Service
     Assigned when used with services other than Diretta

     EXS must set 0 ( For message expansion



Stream Port Number (0-127)

     Stream output endpoint number

     Handles multiple streams


Stream Counter (max 127)

     Detects dropped stream packets

     If dropped, a retransmission request will be made based on this value.


stream data

     The RAW data of the output audio stream is entered here.


DDS version 0

    no set EX ( not use extended control)

    or  set 1 EX and SUB set 0


DDS version 1 or next (sub-types)

    set 1 EX (  enable extended control in (first control (D1) )

    SUB set not 0


OP1 / OP2
     For use when not SubType0


Register the stream port with the driver

Set a filter using the source MAC address for the required communication

This allows other applications on the same OS to share the same EtherType

#define DDS_DRIVER_H_


#include <linux/ioctl.h>


#define DDS_DRV_PATH "/dev/diretta-direct"


struct _dds_macaddress{

    unsigned char MAC[6];

}dds_drv_macaddress;


#define DDS_MAGIC 'x'

#define DDS_REGIST_CMD 1

#define DDS_UNREGIST_CMD 2

#define DDS_CLEAR_CMD 3

#define DDS_TIMEOUT_CMD 4

#define DDS_FILTER_SRC_CMD 5

#define DDS_FILTER_DEST_CMD 6

#define DDS_FILTER_LEN_CMD 7

#define DDS_NODE_MAX_CMD 8

#define DDS_ETHERTYPE_CMD 9


#define DDS_REGIST_IOCTL _IO(DDS_MAGIC,DDS_REGIST_CMD)

#define DDS_UNREGIST_IOCTL _IO(DDS_MAGIC,DDS_UNREGIST_CMD)

#define DDS_CLEAR_IOCTL _IO(DDS_MAGIC,DDS_CLEAR_CMD)

#define DDS_TIMEOUT_IOCTL _IOW(DDS_MAGIC,DDS_TIMEOUT_CMD,int)

#define DDS_FILTER_SRC_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_SRC_CMD,dds_drv_macaddress)

#define DDS_FILTER_DEST_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_DEST_CMD,dds_drv_macaddress)

#define DDS_FILTER_LEN_IOCTL _IOW(DDS_MAGIC,DDS_FILTER_LEN_CMD,int)

#define DDS_NODE_MAX_IOCTL _IO(DDS_MAGIC,DDS_NODE_MAX_CMD)

#define DDS_ETHERTYPE_IOCTL _IO(DDS_MAGIC,DDS_ETHERTYPE_CMD)


#endif



Version:0 ( EX=0 or (EX=1 and  VER=0 ) )

  Ethernet mode without CRC



SUB Type = 0x0001 Stream Port=0 (Reserve

    Diretta Control
When not using UDP authentication communication
    Encapsulates UDP communication

byte0123456789ABCDEF
0x0xDistnation MAC AddressSource MAC AddressEther TypeD1
0x80
D2
0x00
0x1cLEN
16
VER
0
Sub Type
0x0001
Ver0 opt
Reserv
Port
0x0064 (Separat
Data Size
MessageStatus
 0x2cOption0Option1
Option2
Option0
DATA


SUB Type = 0x0002 Stream Port=0 (Reserve

    Debug Stream
    SysLog-formatted messages are encapsulated.

byte0123456789ABCDEF
0x0xDistnation MAC AddressSource MAC AddressEther TypeD1
0x80
D2
0x00
0x1cLEN
16
VER
0
Sub Type
0x0002
Ver0 opt
facility
levelDeubg Message


Version:1  (EX=1 and  VER=1 ) (Reserve
    In the event of data loss outside of Ethernet

byte0123456789ABCDEF
0x0xDistnation MAC AddressSource MAC AddressEther TypeD1
0x80
D2
0x00
0x1cLEN
0x00
VER

Sub Type
LENGTHCRC




If you wish to use DDS for purposes other than Diretta, please create a ticket and contact the administrator.