import usys import micropython from pybricks import version class MicroPythonDiagnostics: def __init__(self, hub): pass def printVersionDiagnostics(): print("[Hub Diagnostics - MicroPython - Version] Hub version information:", version) print("[Hub Diagnostics - MicroPython - Version] MicroPython version:", usys.version) print("[Hub Diagnostics - MicroPython - Version] Pybricks version information:", usys.version_info) print("[Hub Diagnostics - MicroPython - Version] MicroPython information:", usys.implementation) def performMemoryDiagnostics(): print("[Hub Diagnostics - MicroPython - Memory] Memory information (retrieved from the MicroPython environment):") micropython.mem_info(1) print("[Hub Diagnostics - MicroPython - Memory] Testing heap lock and unlock.") print("[Hub Diagnostics - MicroPython - Memory] Allocating memory while heap is unlocked:") try: x = 5000 print("[Hub Diagnostics - MicroPython - Memory] There was no MemoryError raised. The value of the variable x is", x) except MemoryError: print("[Hub Diagnostics - MicroPython - Memory] Allocation failed. Your memory may be faulty.") print("[Hub Diagnostics - MicroPython - Memory] Locking the heap:") micropython.heap_lock() print("[Hub Diagnostics - MicroPython - Memory] Heap was locked. Attempting to allocate memory (this should fail):") try: x = 5000 print("[Hub Diagnostics - MicroPython - Memory] There was no MemoryError raised. Heap lock failed.") except MemoryError: print("[Hub Diagnostics - MicroPython - Memory] Allocation failed. Test successful. The heap was successfully locked.") # Attempt to add gc to this for memory diagnostics, in addition test machine.soft_reset() and add that first to reset the heap. def printAll(): printVersionDiagnostics() performMemoryDiagnostics()