BEGIN:VCALENDAR
VERSION:2.0
PRODID:IEEE vTools.Events//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
BEGIN:DAYLIGHT
DTSTART:20250309T030000
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZNAME:PDT
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20251102T010000
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZNAME:PST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20250604T183955Z
UID:4D910CEC-9EC3-4317-9F1A-B179B836B46B
DTSTART;TZID=America/Los_Angeles:20250603T100000
DTEND;TZID=America/Los_Angeles:20250603T110000
DESCRIPTION:Open source digital radio work round table and reports. Agenda 
 for this meeting is a review of recent work for the Opulent Voice Protocol
 .\n\nCo-sponsored by: Open Research Institute\, Inc.\n\nAgenda: \nDemonstr
 ation Code Notes for Raspberry Pi Human-Radio Interface\n\nProtocol Frame 
 Structure Review\n\nAll payloads follow the same underlying frame format i
 n OpulentVoiceProtocol.create_frame() method.\n\nHeader: 14 bytes (sync wo
 rd + station ID + type + sequence + length + reserved)\n\nPayload: Variabl
 e length data specific to each message type\n\nPayload Type Creation Metho
 ds\n\n1. Audio Payloads (Highest Priority)\n\ndef create_audio_frame(self\
 , opus_packet):\nreturn self.create_frame(self.FRAME_TYPE_AUDIO\, opus_pac
 ket)\n\nSource: OPUS-encoded audio data from the microphone\n\nProcessing:
  Raw audio → PyAudio → OPUS encoder → binary packet\n\nPriority: Imm
 ediate transmission (bypasses queue)\n\nUsage: Real-time voice during PTT 
 active\n\n2. Text Payloads (Chat Messages)\n\ndef create_text_frame(self\,
  text_data):\nif isinstance(text_data\, str):\ntext_data = text_data.encod
 e(&#39;utf-8&#39;)\nreturn self.create_frame(self.FRAME_TYPE_TEXT\, text_data)\n\n
 Source: Terminal chat input or buffered messages\n\nProcessing: String →
  UTF-8 encoding → binary payload\n\nPriority: Queued (waits for PTT rele
 ase)\n\nUsage: Terminal chat interface\n\n3. Control Payloads (System Comm
 ands)\n\ndef create_control_frame(self\, control_data):\nif isinstance(con
 trol_data\, str):\ncontrol_data = control_data.encode(&#39;utf-8&#39;)\nreturn sel
 f.create_frame(self.FRAME_TYPE_CONTROL\, control_data)\n\nSource: System e
 vents like &quot;PTT_START&quot;\, &quot;PTT_STOP&quot;\n\nProcessing: String → UTF-8 encodi
 ng → binary payload\n\nPriority: High priority (queued but processed qui
 ckly)\n\nUsage: PTT state changes\, system notifications\n\n4. Data Payloa
 ds (File Transfer)\n\ndef create_data_frame(self\, data):\nreturn self.cre
 ate_frame(self.FRAME_TYPE_DATA\, data)\n\nSource: Raw binary data for file
  transfers\n\nProcessing: Binary data passed through unchanged\n\nPriority
 : Lowest priority (queued)\n\nUsage: Future file transfer capabilities\n\n
 Message Flow Architecture:\n\nThe code uses a domain-driven approach with 
 clear separation of data types.\n\nMessage Creation Flow:\n\nInput Source 
 → Different interfaces (GPIO\, terminal\, system events)\nDomain Logic 
 → ChatManager and MessagePriorityQueue handle routing\nProtocol Layer 
 → OpulentVoiceProtocol creates properly formatted frames\nTransport Laye
 r → NetworkTransmitter handles UDP delivery\n\nPriority Queue System (Pr
 oposed)\n\nclass MessageType(Enum):\n\nVOICE = (1\, &quot;VOICE&quot;) # Immediate t
 ransmission\nCONTROL = (2\, &quot;CONTROL&quot;) # High priority queue\nTEXT = (3\, 
 &quot;TEXT&quot;) # Normal priority queue\nDATA = (4\, &quot;DATA&quot;) # Low priority queue\
 n\nVirtual: https://events.vtools.ieee.org/m/487199
LOCATION:Virtual: https://events.vtools.ieee.org/m/487199
ORGANIZER:w5nyv@yahoo.com
SEQUENCE:20
SUMMARY:Open Source Digital Radio Work: Opulent Voice Protocol Review
URL;VALUE=URI:https://events.vtools.ieee.org/m/487199
X-ALT-DESC:Description: &lt;br /&gt;&lt;p&gt;Open source digital radio work round table
  and reports. Agenda for this meeting is a review of recent work for the O
 pulent Voice Protocol.&amp;nbsp\;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Agenda: &lt;br /&gt;&lt;h2
  dir=&quot;ltr&quot;&gt;Demonstration Code Notes for Raspberry Pi Human-Radio Interface
 &lt;/h2&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Protocol Frame Structure Review&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;All 
 payloads follow the same underlying frame format in OpulentVoiceProtocol.c
 reate_frame() method.&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Header: 14 bytes (sync word + stat
 ion ID + type + sequence + length + reserved)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Payload: V
 ariable length data specific to each message type&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Payloa
 d Type Creation Methods&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;1. Audio Payloads (Highest Prior
 ity)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;def create_audio_frame(self\, opus_packet):&lt;br&gt;&amp;nbs
 p\; &amp;nbsp\; &amp;nbsp\;return self.create_frame(self.FRAME_TYPE_AUDIO\, opus_p
 acket)&lt;br&gt;&lt;br&gt;Source: OPUS-encoded audio data from the microphone&lt;/p&gt;\n&lt;p 
 dir=&quot;ltr&quot;&gt;Processing: Raw audio &amp;rarr\; PyAudio &amp;rarr\; OPUS encoder &amp;rarr
 \; binary packet&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Priority: Immediate transmission (bypas
 ses queue)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Usage: Real-time voice during PTT active&lt;/p&gt;\
 n&lt;p dir=&quot;ltr&quot;&gt;2. Text Payloads (Chat Messages)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;def creat
 e_text_frame(self\, text_data):&lt;br&gt;&amp;nbsp\; &amp;nbsp\; &amp;nbsp\;if isinstance(te
 xt_data\, str):&lt;br&gt;&amp;nbsp\; &amp;nbsp\; &amp;nbsp\; &amp;nbsp\; &amp;nbsp\; &amp;nbsp\;text_dat
 a = text_data.encode(&#39;utf-8&#39;)&lt;br&gt;&amp;nbsp\; &amp;nbsp\; &amp;nbsp\;return self.create
 _frame(self.FRAME_TYPE_TEXT\, text_data)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Source: Termina
 l chat input or buffered messages&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Processing: String &amp;ra
 rr\; UTF-8 encoding &amp;rarr\; binary payload&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Priority: Que
 ued (waits for PTT release)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Usage: Terminal chat interfa
 ce&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;3. Control Payloads (System Commands)&lt;/p&gt;\n&lt;p dir=&quot;lt
 r&quot;&gt;def create_control_frame(self\, control_data):&lt;br&gt;&amp;nbsp\; &amp;nbsp\; &amp;nbsp
 \;if isinstance(control_data\, str):&lt;br&gt;&amp;nbsp\; &amp;nbsp\; &amp;nbsp\; &amp;nbsp\; &amp;n
 bsp\; control_data = control_data.encode(&#39;utf-8&#39;)&lt;br&gt;&amp;nbsp\; &amp;nbsp\; &amp;nbsp
 \;return self.create_frame(self.FRAME_TYPE_CONTROL\, control_data)&lt;/p&gt;\n&lt;p
  dir=&quot;ltr&quot;&gt;Source: System events like &quot;PTT_START&quot;\, &quot;PTT_STOP&quot;&lt;/p&gt;\n&lt;p dir
 =&quot;ltr&quot;&gt;Processing: String &amp;rarr\; UTF-8 encoding &amp;rarr\; binary payload&lt;/p
 &gt;\n&lt;p dir=&quot;ltr&quot;&gt;Priority: High priority (queued but processed quickly)&lt;/p&gt;
 \n&lt;p dir=&quot;ltr&quot;&gt;Usage: PTT state changes\, system notifications&lt;/p&gt;\n&lt;p dir
 =&quot;ltr&quot;&gt;4. Data Payloads (File Transfer)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;def create_data_
 frame(self\, data):&lt;br&gt;&amp;nbsp\; &amp;nbsp\; &amp;nbsp\;return self.create_frame(sel
 f.FRAME_TYPE_DATA\, data)&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Source: Raw binary data for fi
 le transfers&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Processing: Binary data passed through unch
 anged&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Priority: Lowest priority (queued)&lt;/p&gt;\n&lt;p dir=&quot;lt
 r&quot;&gt;Usage: Future file transfer capabilities&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Message Flow
  Architecture:&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;The code uses a domain-driven approach wi
 th clear separation of data types.&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Message Creation Flow
 :&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Input Source &amp;rarr\; Different interfaces (GPIO\, term
 inal\, system events)&lt;br&gt;Domain Logic &amp;rarr\; ChatManager and MessagePrior
 ityQueue handle routing&lt;br&gt;Protocol Layer &amp;rarr\; OpulentVoiceProtocol cre
 ates properly formatted frames&lt;br&gt;Transport Layer &amp;rarr\; NetworkTransmitt
 er handles UDP delivery&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;Priority Queue System (Proposed)
 &lt;br&gt;&lt;br&gt;class MessageType(Enum):&lt;/p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;VOICE = (1\, &quot;VOICE&quot;)&amp;n
 bsp\; # Immediate transmission&lt;br&gt;CONTROL = (2\, &quot;CONTROL&quot;) &amp;nbsp\; # High
  priority queue&lt;br&gt;TEXT = (3\, &quot;TEXT&quot;) &amp;nbsp\; &amp;nbsp\; # Normal priority q
 ueue&amp;nbsp\; &lt;br&gt;DATA = (4\, &quot;DATA&quot;) &amp;nbsp\; &amp;nbsp\; # Low priority queue&lt;/
 p&gt;\n&lt;p dir=&quot;ltr&quot;&gt;&amp;nbsp\;&lt;/p&gt;\n&lt;p&gt;&amp;nbsp\;&lt;/p&gt;
END:VEVENT
END:VCALENDAR

