Index: trunk/libffado/src/fireworks/fireworks_device.cpp =================================================================== --- trunk/libffado/src/fireworks/fireworks_device.cpp (revision 665) +++ trunk/libffado/src/fireworks/fireworks_device.cpp (revision 668) @@ -176,4 +176,9 @@ // c.showEfcCmd(); + if ( cmd.getResponse() != AVC::AVCCommand::eR_Accepted) { + debugError( "EfcOverAVCCmd not accepted\n" ); + return false; + } + if ( c.m_header.retval != EfcCmd::eERV_Ok && c.m_header.retval != EfcCmd::eERV_FlashBusy) { Index: trunk/libffado/src/fireworks/efc/efc_cmds_ioconfig.cpp =================================================================== --- trunk/libffado/src/fireworks/efc/efc_cmds_ioconfig.cpp (revision 665) +++ trunk/libffado/src/fireworks/efc/efc_cmds_ioconfig.cpp (revision 668) @@ -72,5 +72,7 @@ result &= EfcCmd::deserialize ( de ); - EFC_DESERIALIZE_AND_SWAP(de, &m_value, result); + if (m_type == eCT_Get) { + EFC_DESERIALIZE_AND_SWAP(de, &m_value, result); + } return result; Index: trunk/libffado/src/fireworks/efc/efc_cmds_mixer.cpp =================================================================== --- trunk/libffado/src/fireworks/efc/efc_cmds_mixer.cpp (revision 665) +++ trunk/libffado/src/fireworks/efc/efc_cmds_mixer.cpp (revision 668) @@ -85,4 +85,9 @@ result &= se.write(htonl(m_value), "Value" ); } + + if(!result) { + debugWarning("Serialization failed\n"); + } + return result; } @@ -95,6 +100,12 @@ result &= EfcCmd::deserialize ( de ); - EFC_DESERIALIZE_AND_SWAP(de, (quadlet_t *)&m_channel, result); - EFC_DESERIALIZE_AND_SWAP(de, &m_value, result); + if (m_type == eCT_Get) { + EFC_DESERIALIZE_AND_SWAP(de, (quadlet_t *)&m_channel, result); + EFC_DESERIALIZE_AND_SWAP(de, &m_value, result); + } + + if(!result) { + debugWarning("Deserialization failed\n"); + } return result; Index: trunk/libffado/src/fireworks/efc/efc_avc_cmd.cpp =================================================================== --- trunk/libffado/src/fireworks/efc/efc_avc_cmd.cpp (revision 629) +++ trunk/libffado/src/fireworks/efc/efc_avc_cmd.cpp (revision 668) @@ -60,4 +60,8 @@ result &= m_cmd->serialize( se ); + if(!result) { + debugWarning("Serialization failed\n"); + } + return result; } @@ -78,4 +82,8 @@ result &= m_cmd->deserialize( de ); + if(!result) { + debugWarning("Deserialization failed\n"); + } + return result; } Index: trunk/libffado/src/fireworks/efc/efc_cmds_monitor.cpp =================================================================== --- trunk/libffado/src/fireworks/efc/efc_cmds_monitor.cpp (revision 663) +++ trunk/libffado/src/fireworks/efc/efc_cmds_monitor.cpp (revision 668) @@ -130,7 +130,13 @@ result &= EfcCmd::deserialize ( de ); - EFC_DESERIALIZE_AND_SWAP(de, (quadlet_t *)&m_input, result); - EFC_DESERIALIZE_AND_SWAP(de, (quadlet_t *)&m_output, result); - EFC_DESERIALIZE_AND_SWAP(de, &m_value, result); + if (m_type == eCT_Get) { + EFC_DESERIALIZE_AND_SWAP(de, (quadlet_t *)&m_input, result); + EFC_DESERIALIZE_AND_SWAP(de, (quadlet_t *)&m_output, result); + EFC_DESERIALIZE_AND_SWAP(de, &m_value, result); + } + + if(!result) { + debugWarning("Deserialization failed\n"); + } return result;