I2S: register I2S object to platform failed

running voip and url streaming code, while the streaming is working fine but when if toggeled to voip mode I'm receiving the error

#include <Arduino.h>
#include "WiFi.h"
#include <WiFiManager.h>
#include "Audio.h"
#include "SipMachine.h"
#include "Debug.h"
#include "driver/i2s.h"

Audio audio;
String user = "100";
String pwd = "100";
//String userAgent = "100";
String serverIp = "192.168.0.205";
String telNr = "100";

int SIPServerEnabled = 0;
int IsAlreadyEnabled = 0;
int audioi2sinit = 0;
int i2sinitok = 0;
SipMachine sipMachine = SipMachine(user, pwd, telNr, serverIp, serverIp);
SipMachine::Status status;

#define I2S_NUM_TXRX I2S_NUM_0

#define PIN_I2S_BCLK 26
#define PIN_I2S_WS 27
#define PIN_I2S_DIN 34
#define PIN_I2S_DOUT 25

const unsigned long event = 1000000;

void i2s_init() {
static const i2s_port_t i2s_num = I2S_NUM_0;
static const i2s_config_t i2s_config = { .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_RX),
.sample_rate = 8000,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
.communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB),
.intr_alloc_flags = 0,
.dma_buf_count = 4,
.dma_buf_len = 256,
.use_apll = 0,
.tx_desc_auto_clear = true,
.fixed_mclk = -1 };

static const i2s_pin_config_t pin_config = { .bck_io_num = 26, // The bit clock connectiom, goes to pin 27 of ESP32
.ws_io_num = 27, // Word select, also known as word select or left right clock
.data_out_num = 25, // Data out from the ESP32, connect to DIN on 38357A
.data_in_num = 34 };

i2s_driver_install(i2s_num, &i2s_config, 0, NULL);
i2s_set_pin(i2s_num, &pin_config);
}

// i2s_set_clk(I2S_NUM, rate, BPS, I2S_CHANNEL_STEREO);

void audioplay() {

audio.setPinout(PIN_I2S_BCLK, PIN_I2S_WS, PIN_I2S_DOUT);
audio.setVolume(12); // 0...21
audio.connecttohost("192.168.0.205/mallipoo.mp3");
}
void wifiEvent(WiFiEvent_t event) {
switch (event) {
case SYSTEM_EVENT_STA_GOT_IP:
Serial.println("WIFISTA Connected");
Serial.print("WIFISTA MAC: ");
Serial.print(WiFi.macAddress());
Serial.print(", IPv4: ");
Serial.println(WiFi.localIP());
break;

case SYSTEM_EVENT_STA_DISCONNECTED:
  Serial.println("WIFISTA Disconnected");
  WiFi.reconnect();
  break;
default:
  break;

}
}

void sipMachineEvent(int code) {
Serial.println("response=>");
Serial.print(code);
switch (code) {
case SIPMACHINE_EVENT_REGISTER_OK:
Serial.println("REGISTER OK");
break;

case SIPMACHINE_EVENT_BYE:
  Serial.println(sipMachine.getTelNrIncomingCall() + String(" Bye Call"));
  break;

case SIPMACHINE_EVENT_CANCEL:
  Serial.println(sipMachine.getTelNrIncomingCall() + String(" Cancel Call"));
  break;

case SIPMACHINE_EVENT_INVITE_OK:
  Serial.println(sipMachine.getTelNrIncomingCall() + String(" Accept incoming Call"));
  break;

case SIPMACHINE_EVENT_MESSAGE_OK:
  Serial.println(String("send Message to ") + sipMachine.getTelNrIncomingCall() + String(" Ok"));
  break;

case SIPMACHINE_EVENT_NOT_EXIST:
  Serial.println(sipMachine.getTelNrIncomingCall() + String(" Call Leg/Transaction Does Not Exist"));
  break;

case SIPMACHINE_EVENT_BUSY_HERE:
  Serial.println(sipMachine.getTelNrIncomingCall() + String(" Busy Here"));
  break;

default:
  // Serial.println(String(code) + " does not Exists :-)");
  break;

}
}
void readSpeachPcmCb(int16_t pcm) {
int16_t sample[4];
size_t bytes_read;
sample[0] = pcm;
sample[1] = sample[0];
i2s_write(I2S_NUM_TXRX, (const char *)&sample, 4, &bytes_read, 0xffff);
//Serial.println(pcm);
}
int16_t writeSpeachPcmCb() {
int8_t pcm_buf[4];
size_t bytes_read;
i2s_read(I2S_NUM_TXRX, (char *)&pcm_buf, 4, &bytes_read, 0xffff);
return (int16_t)(pcm_buf[0] + pcm_buf[1] * 256);
}
void setup() {
pinMode(23, INPUT_PULLUP);
pinMode(4, OUTPUT);
Serial.begin(115200);
delay(1000);
WiFi.mode(WIFI_STA);
WiFiManager wifiManager;
wifiManager.setConfigPortalTimeout(180);
wifiManager.autoConnect("Sporada_VoIP");
WiFi.persistent(true);
WiFi.setAutoConnect(true);
WiFi.setAutoReconnect(true);
}

unsigned long t2 = millis();
unsigned long t4 = micros();
unsigned long t5 = millis();

void loop() {

if (digitalRead(23) == 1) {
if (SIPServerEnabled == 0) {
SIPServerEnabled = 1;
Serial.println("SIPServerEnabled mode HIGH");
audioi2sinit = 0;
Serial.println("audioi2sinit mode LOW");
i2sinitok = 0;
}
} else if (audioi2sinit == 0) {

audioplay();
audioi2sinit = 1;
Serial.println("audioi2sinit mode HIGH");
SIPServerEnabled = 0;
Serial.println("SIPServerEnabled mode LOW");
IsAlreadyEnabled = 0;

}

if (SIPServerEnabled && IsAlreadyEnabled == 0) {
sipMachine.setup(WiFi.localIP().toString(), serverIp);
sipMachine.setEvent(sipMachineEvent);
i2s_init();
Serial.println("voip i2s init");
IsAlreadyEnabled = 1;
sipMachine.setReadSpeachPcmCallback(readSpeachPcmCb);
sipMachine.setWriteSpeachPcmCallback(writeSpeachPcmCb);
}

if (WiFi.status() == WL_CONNECTED) {
if (IsAlreadyEnabled) {
sipMachine.loop(0);
SipMachine::Status status = sipMachine.getStatus();
switch (status) {
case SipMachine::idle:
// // if ((t2 + 5000 < millis()) & (t2 + 6000 > millis())) {
// // Serial.println("calling No...");
// // sipMachine.makeCall("101");
// }
// break;
case SipMachine::ringIn:
Serial.println(String("Ringing Call Nr. ") + sipMachine.getTelNrIncomingCall());
delay(1000);
Serial.println(String("Accept incoming Call ") + sipMachine.getTelNrIncomingCall());
sipMachine.acceptIncomingCall();
break;
case SipMachine::ringOut:
break;
case SipMachine::call:
// if ((t5 + 20000) < millis())
// {
// sipMachine.bye();
// Serial.printf("bye bye\n");
// }
break;
case SipMachine::messageIn:
Serial.println(String("Received message Nr. ") + sipMachine.getTelNrIncomingCall());
Serial.println(String("Message:\n") + sipMachine.getMessageInData());
delay(1000);
sipMachine.sendMessage(sipMachine.getTelNrIncomingCall(), "Hello, I amnowsomethingis not,onewillcontact you.");
break;
default:;
break;
}
}
if (audioi2sinit == 1) {

 audio.loop();
}

}
//WIFI RECONNECT**
while (WiFi.status() != WL_CONNECTED) {
WiFiManager wifimanager;
wifimanager.setConfigPortalTimeout(180);
wifimanager.autoConnect("Sporada_VoIP");
WiFi.persistent(true);
WiFi.setAutoConnect(true);
WiFi.setAutoReconnect(true);
}
//ESP_RESTART_16min*
if (millis() > event) {
ESP.restart();
}
//*****************************
}

void audio_info(const char *info) {
Serial.print("info ");
Serial.println(info);
}
void audio_id3data(const char *info) { //id3 metadata
Serial.print("id3data ");
Serial.println(info);
}
void audio_eof_mp3(const char *info) { //end of file
Serial.print("eof_mp3 ");
Serial.println(info);
}
void audio_showstation(const char *info) {
Serial.print("station ");
Serial.println(info);
}
void audio_showstreaminfo(const char *info) {
Serial.print("streaminfo ");
Serial.println(info);
}
void audio_showstreamtitle(const char *info) {
Serial.print("streamtitle ");
Serial.println(info);
}
void audio_bitrate(const char *info) {
Serial.print("bitrate ");
Serial.println(info);
}
void audio_commercial(const char *info) { //duration in sec
Serial.print("commercial ");
Serial.println(info);
}
void audio_icyurl(const char *info) { //homepage
Serial.print("icyurl ");
Serial.println(info);
}
void audio_lasthost(const char *info) { //stream URL played
Serial.print("lasthost ");
Serial.println(info);
}
void audio_eof_speech(const char *info) {
Serial.print("eof_speech ");
Serial.println(info);
}

Please read the advice given in the topics "How to get the best out of this forum" and complete Your post.

ok I'll do
Thankyou

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.