bool XMEGANVM_WaitWhileNVMBusBusy(void)
 {
        /* Poll the STATUS register to check to see if NVM access has been enabled */
 bool XMEGANVM_WaitWhileNVMBusBusy(void)
 {
        /* Poll the STATUS register to check to see if NVM access has been enabled */
        {
                /* Send the LDCS command to read the PDI STATUS register to see the NVM bus is active */
                XPROGTarget_SendByte(PDI_CMD_LDCS | PDI_STATUS_REG);
        {
                /* Send the LDCS command to read the PDI STATUS register to see the NVM bus is active */
                XPROGTarget_SendByte(PDI_CMD_LDCS | PDI_STATUS_REG);
                uint8_t StatusRegister = XPROGTarget_ReceiveByte();
                
                /* We might have timed out waiting for the status register read response, check here */
                uint8_t StatusRegister = XPROGTarget_ReceiveByte();
                
                /* We might have timed out waiting for the status register read response, check here */
                  return false;
                
                /* Check the status register read response to see if the NVM bus is enabled */
                if (StatusRegister & PDI_STATUS_NVM)
                  return false;
                
                /* Check the status register read response to see if the NVM bus is enabled */
                if (StatusRegister & PDI_STATUS_NVM)
 bool XMEGANVM_WaitWhileNVMControllerBusy(void)
 {
        /* Poll the NVM STATUS register while the NVM controller is busy */
 bool XMEGANVM_WaitWhileNVMControllerBusy(void)
 {
        /* Poll the NVM STATUS register while the NVM controller is busy */
        {
                /* Send a LDS command to read the NVM STATUS register to check the BUSY flag */
                XPROGTarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_4BYTES << 2));
        {
                /* Send a LDS command to read the NVM STATUS register to check the BUSY flag */
                XPROGTarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_4BYTES << 2));
                uint8_t StatusRegister = XPROGTarget_ReceiveByte();
 
                /* We might have timed out waiting for the status register read response, check here */
                uint8_t StatusRegister = XPROGTarget_ReceiveByte();
 
                /* We might have timed out waiting for the status register read response, check here */
                
        /* Send a LD command with indirect access and post-increment to read out the bytes */
        XPROGTarget_SendByte(PDI_CMD_LD | (PDI_POINTER_INDIRECT_PI << 2) | PDI_DATSIZE_1BYTE);
                
        /* Send a LD command with indirect access and post-increment to read out the bytes */
        XPROGTarget_SendByte(PDI_CMD_LD | (PDI_POINTER_INDIRECT_PI << 2) | PDI_DATSIZE_1BYTE);