! @brief Uninitialize the flash algo.
        
        Before further operations are executed, the algo must be reinited. The target is left in
        a state where algo does not have to be reloaded when init() is called.
        
        @exception FlashFailure

def uninit(self):
        """! @brief Uninitialize the flash algo.
        
        Before further operations are executed, the algo must be reinited. The target is left in
        a state where algo does not have to be reloaded when init() is called.
        
        @exception FlashFailure
        """
        if self._active_operation is None:
            return
        
        if self._is_api_valid('pc_unInit'):
            # update core register to execute the uninit subroutine
            result = self._call_function_and_wait(self.flash_algo['pc_unInit'],
                                                    r0=self._active_operation.value)
            
            # check the return code
            if result != 0:
                raise FlashFailure('uninit error: %i' % result, result_code=result)
            
        self._active_operation = None