Managers

The manager class is designed to leverage many of the underlying classes (UART, Network, PDF, …) together to effectively manage the state of development boards. Since in some cases not a single interface can be used to handle all failure modes, the manager class selectively uses the core classes to bring boards up and down, no matter their existing state or cause of failure.

Using Managers

Boot Flow

Below is the logic used to effectively load a boot files (bitstream, kernel, device tree) and test if the board is ready for driver specific or other tests that require a booted board.

@startuml Nebula Manager  Boot Flow
start
title Nebula Manager Boot Flow
:POWERUP BOARD;

switch (GET IP(UART))
  case (No IP)
    :Network Broken;
    kill
  case (Found IP)
    :Update BOOT From Linux (NET);
    :Restart (NET);
  case (Not Accessible)
    :Power Cycle (PDU);
    if (Enter UBOOT Menu (UART)) then (passed)
      :Load Bootfiles (UART/TFTP);
    else (failed)
      :UBOOT Broken;
      kill
    endif
endswitch

if (Check PING (NET)) then (passed)
  :Check SSH (NET);
else (failed)
  if (Update IP (UART)) then (passed)
    :Check SSH (NET);
  else (failed)
    :Kernel/Bitstream Failed;
    kill
  endif
endif

if (Check SSH (NET)) then (passed)
  :Run pytest;
  kill
else (failed)
  :Kernel/Bitstream Failed;
  kill
endif
@enduml