Traverse struct with pointer

How about this - assign a pointer to the struct's location in memory.

Send W, then the same amount of bytes to fill the struct.

void CheckSerial(){
  uint8_t *pPtr = (uint8_t *)&configuration;
  if (Serial.available() > 0){
    switch (Serial.read()){
    case 'W':
                // what if the W was erroneous... Watch for a timeout here perhaps?
                while(serial.available()<sizeof(config_t))
                    delay(100);
               
                  for(int i=0;i<sizeof(config_t);i++)
                       *pPtr++ = Serial.read();

        PrintConfig();

      EEPROM_writeAnything(0, configuration);
      break;
...