def diagnostics
      retn = true
      protect
      retn = @diagnostic_runner.run if !@diagnostic_runner.nil?
      unprotect
      @log.info('Diagnostics failed') if not retn
      status = device_status
      status = set_device_status('happy') if status == 'busy'
      raise DeviceNotReady.new("Current device status: '#{status}'") if status != 'happy'
      retn
    end
def diagnostics
      retn = true
      protect
      retn = @diagnostic_runner.run if !@diagnostic_runner.nil?
      unprotect
      @log.info('Diagnostics failed') if not retn
      status = device_status
      status = set_device_status('happy') if status == 'busy'
      raise DeviceNotReady.new("Current device status: '#{status}'") if status != 'happy'
      retn
    end
Diagnostics function to be extended in child class, as required