Enum Problem in Arduino IDE

Hallo
In RTOS ESP32 I2S habe ich folgenden Ausdruck

typedef enum {
    I2S_MODE_MASTER = 1,
    I2S_MODE_SLAVE = 2,
    I2S_MODE_TX = 4,
    I2S_MODE_RX = 8,
    I2S_MODE_DAC_BUILT_IN = 16,       /*!< Output I2S data to built-in 
DAC, no matter the data format is 16bit or 32 bit, the DAC module will 
only take the 8bits from MSB*/
    I2S_MODE_ADC_BUILT_IN = 32,       /*!< Input I2S data from built-in 
ADC, each data can be 12-bit width at most*/
    I2S_MODE_PDM = 64,
} i2s_mode_t;


i2s_mode_t I2SMode;



I2SMode = I2S_MODE_MASTER | I2S_MODE_TX; // Das geht nicht !!!!!!!

die Orginal Syntax sieht folgendermassen aus


  I2S_Mode  = {
      .mode = I2S_Mode,     // I2S_MODE_MASTER | I2S_MODE_TX, 
// Only TX
    .sample_rate = SAMPLE_RATE,
    .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, 
//16-bit per channel
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, 
//2-channels
    .communication_format = I2S_COMM_FORMAT_I2S | 
I2S_COMM_FORMAT_I2S_MSB,
    .dma_buf_count = 6,
    .dma_buf_len = 60, 
//
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1 
//Interrupt level 1
  };

Nur dummerweise geht das mit der Arduino IDE nicht der Compiler meckert mit

ESP32_I2S.ino: 56:10: error: invalid conversion from 'int' to 'i2s_mode_t' [-fpermissive]

Habe dazu schon ein Case aufgemacht
https://www.mikrocontroller.net/topic/453989#5465398

i2s_mode_t I2SMode;

I2SMode = I2S_MODE_MASTER | I2S_MODE_TX; // Das geht nicht !!!!!!!

-->
I2SMode = I2SMode.I2S_MODE_MASTER | I2SMode.I2S_MODE_TX; // sollte klappen !!!1ELFEINS

MfG

PS: Satzzeichen sind keine Rudeltiere ...
PPS: Wenn Du die Bezeichnung I2S_MODE_ in den enum's weg lässt, liest sich der Kram direkt viel schöner
->
...
typedef enum {
MASTER = 1,
SLAVE = 2,
TX = 4,
...
-->
I2SMode = I2SMode.MASTER | I2SMode.TX; // sollte klappen !!!1ELFEINS
... sofern die Variable I2SMode nicht angemeckert wird, da Diese bereits den Datentyp i2s_mode_t inne hat und wohl nicht direkt gesetzt werden darf (reines Bauchgefühl)

Und die Antwort hast du dort gerade bekommen. Durch das Oder wird daraus ein int (was die Fehlermeldung auch deutlich sagt). Und dann braucht man einen Cast damit wieder ein enum-Typ daraus wird

Generell bringst du hier C und C++ durcheinander. Siehe auch "typedef enum"

Danke für die schnelle hilfe so geht es !!!!!
I2S_Mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX);