Пример #1
0
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);
  }
}
Пример #2
0
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);
  }
}
Пример #3
0
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;
}
Пример #4
0
void CodecController::setSwapLeftRight(bool swap){
  if(swap)
    setRegister(DIGITAL_AUDIO_INTERFACE_FORMAT_REGISTER, WM8731_LRSWAP);
  else
    clearRegister(DIGITAL_AUDIO_INTERFACE_FORMAT_REGISTER, WM8731_LRSWAP);
}
Пример #5
0
void CodecController::setOutputMuteRight(bool mute){
  if(mute)
    setRegister(RIGHT_HEADPHONE_OUT_REGISTER, WM8731_HPVOL_MUTE);
  else
    clearRegister(RIGHT_HEADPHONE_OUT_REGISTER, WM8731_HPVOL_MUTE);
}
Пример #6
0
void CodecController::setInputMuteRight(bool mute){
  if(mute)
    setRegister(RIGHT_LINE_IN_REGISTER, WM8731_INMUTE);
  else
    clearRegister(RIGHT_LINE_IN_REGISTER, WM8731_INMUTE);
}
Пример #7
0
void CodecController::softMute(bool mute){
  if(mute)
    setRegister(DIGITAL_AUDIO_PATH_CONTROL_REGISTER, WM8731_DACMU);
  else
    clearRegister(DIGITAL_AUDIO_PATH_CONTROL_REGISTER, WM8731_DACMU);
}