@@ -25,6 +25,18 @@ void oai_send_audio_task(void *user_data) {
2525}
2626#endif
2727
28+ static void oai_ondatachannel_onmessage_task (char *msg, size_t len,
29+ void *userdata, uint16_t sid) {
30+ ESP_LOGI (LOG_TAG, " DataChannel Message: %s" , msg);
31+ }
32+
33+ static void oai_ondatachannel_onopen_task (void *userdata) {
34+ if (peer_connection_create_datachannel (peer_connection, DATA_CHANNEL_RELIABLE,
35+ 0 , 0 , (char *)" " , (char *)" " ) == -1 ) {
36+ ESP_LOGE (LOG_TAG, " Failed to create DataChannel" );
37+ }
38+ }
39+
2840static void oai_onconnectionstatechange_task (PeerConnectionState state,
2941 void *user_data) {
3042 ESP_LOGI (LOG_TAG, " PeerConnectionState: %s" ,
@@ -56,7 +68,7 @@ void oai_webrtc() {
5668 .ice_servers = {},
5769 .audio_codec = CODEC_OPUS,
5870 .video_codec = CODEC_NONE,
59- .datachannel = DATA_CHANNEL_NONE ,
71+ .datachannel = DATA_CHANNEL_STRING ,
6072 .onaudiotrack = [](uint8_t *data, size_t size, void *userdata) -> void {
6173#ifndef LINUX_BUILD
6274 oai_audio_decode (data, size);
@@ -78,6 +90,8 @@ void oai_webrtc() {
7890 peer_connection_oniceconnectionstatechange (peer_connection,
7991 oai_onconnectionstatechange_task);
8092 peer_connection_onicecandidate (peer_connection, oai_on_icecandidate_task);
93+ peer_connection_ondatachannel (peer_connection, oai_ondatachannel_onmessage_task, oai_ondatachannel_onopen_task, NULL );
94+
8195 peer_connection_create_offer (peer_connection);
8296
8397 while (1 ) {
0 commit comments