void CodecController::setCodecMaster(bool master){ if(master){ clearRegister(POWER_DOWN_CONTROL_REGISTER, WM8731_OSCPD); setRegister(DIGITAL_AUDIO_INTERFACE_FORMAT_REGISTER, WM8731_MS); }else{ setRegister(POWER_DOWN_CONTROL_REGISTER, WM8731_OSCPD); clearRegister(DIGITAL_AUDIO_INTERFACE_FORMAT_REGISTER, WM8731_MS); } }
void CodecController::setActive(bool active){ /* It is recommended that between changing any content of Digital Audio Interface or Sampling Control Register that the active bit is reset then set. */ if(active){ /* OUTPD should be set AFTER active control, but that seems to hang the codec */ clearRegister(POWER_DOWN_CONTROL_REGISTER, WM8731_OUTPD); setRegister(ACTIVE_CONTROL_REGISTER, WM8731_ACTIVE); }else{ setRegister(POWER_DOWN_CONTROL_REGISTER, WM8731_OUTPD); clearRegister(ACTIVE_CONTROL_REGISTER, WM8731_ACTIVE); } }
void Shift::setRegister(uint8_t val) { //Initialize disableOutput(); clearRegister(); uint8_t high_bit = 1; //Shift values in for(int i=0; i<8; i++){ if(val & high_bit) digitalWrite(SR_INPUT_PIN, HIGH); else digitalWrite(SR_INPUT_PIN, LOW); shiftOnce(); high_bit = (high_bit << 1); } //Send it out shiftOnce(); enableOutput(); m_current_val = val; }
void CodecController::setSwapLeftRight(bool swap){ if(swap) setRegister(DIGITAL_AUDIO_INTERFACE_FORMAT_REGISTER, WM8731_LRSWAP); else clearRegister(DIGITAL_AUDIO_INTERFACE_FORMAT_REGISTER, WM8731_LRSWAP); }
void CodecController::setOutputMuteRight(bool mute){ if(mute) setRegister(RIGHT_HEADPHONE_OUT_REGISTER, WM8731_HPVOL_MUTE); else clearRegister(RIGHT_HEADPHONE_OUT_REGISTER, WM8731_HPVOL_MUTE); }
void CodecController::setInputMuteRight(bool mute){ if(mute) setRegister(RIGHT_LINE_IN_REGISTER, WM8731_INMUTE); else clearRegister(RIGHT_LINE_IN_REGISTER, WM8731_INMUTE); }
void CodecController::softMute(bool mute){ if(mute) setRegister(DIGITAL_AUDIO_PATH_CONTROL_REGISTER, WM8731_DACMU); else clearRegister(DIGITAL_AUDIO_PATH_CONTROL_REGISTER, WM8731_DACMU); }