Fix save config when no audio is playing
This commit is contained in:
parent
b341d947d7
commit
9902f1815b
|
@ -433,6 +433,12 @@ bool process_cmd(tlv_header* cmd) {
|
|||
case SAVE_CONFIGURATION: {
|
||||
if (cmd->length == 4) {
|
||||
saveState = SaveRequested;
|
||||
if (audio_state.interface == 0) {
|
||||
// The OS will configure the alternate "zero" interface when the device is not in use
|
||||
// in this sate we can write to flash now. Otherwise, defer the save until we get the next
|
||||
// usb packet.
|
||||
save_config();
|
||||
}
|
||||
result->type = OK;
|
||||
result->length = 4;
|
||||
return true;
|
||||
|
|
|
@ -52,6 +52,7 @@ static uint8_t *userbuf;
|
|||
audio_state_config audio_state = {
|
||||
.freq = 48000,
|
||||
.de_emphasis_frequency = 0x1, // 48khz
|
||||
.interface = 0
|
||||
};
|
||||
|
||||
preprocessing_config preprocessing = {
|
||||
|
@ -769,6 +770,7 @@ static const struct usb_transfer_type _audio_cmd_transfer_type = {
|
|||
|
||||
static bool as_set_alternate(struct usb_interface *interface, uint alt) {
|
||||
assert(interface == &as_op_interface);
|
||||
audio_state.interface = alt;
|
||||
switch (alt) {
|
||||
case 0: power_down_dac(); return true;
|
||||
case 1: power_up_dac(); return true;
|
||||
|
|
|
@ -76,6 +76,7 @@ typedef struct _audio_state_config {
|
|||
int16_t _target_pcm3060_registers;
|
||||
};
|
||||
int16_t pcm3060_registers;
|
||||
int8_t interface;
|
||||
} audio_state_config;
|
||||
extern audio_state_config audio_state;
|
||||
|
||||
|
|
Loading…
Reference in New Issue