12 Commits
dev ... main

Author SHA1 Message Date
fb07967c4c Merge pull request 'dev' (#15) from dev into main
Reviewed-on: #15
2026-01-22 22:26:18 +00:00
6ade2c2dc6 Merge pull request 'dev' (#14) from dev into main
Reviewed-on: #14
2026-01-09 19:21:14 +00:00
b7f2978e66 Merge pull request 'Update README.md' (#13) from dev into main
Reviewed-on: #13
2025-12-19 22:47:39 +00:00
98a1e9c466 Merge pull request 'dev' (#12) from dev into main
Reviewed-on: #12
2025-12-19 22:45:12 +00:00
60384d4367 Merge pull request 'dev' (#11) from dev into main
Reviewed-on: Arcmyx/pynamics-pybricks-utils#11
2025-12-11 14:29:29 +00:00
a91e79a02a Merge pull request 'dev' (#10) from dev into main
Reviewed-on: Arcmyx/pynamics-pybricks-utils#10
2025-12-11 14:27:04 +00:00
ffd89e5698 Update README.md 2025-12-09 00:12:35 +00:00
17db936432 Merge pull request 'dev' (#9) from dev into main
Reviewed-on: Arcmyx/pynamics-pybricks-utils#9
2025-12-09 00:10:54 +00:00
d3a740e705 Merge pull request 'dev' (#7) from dev into main
Reviewed-on: Arcmyx/pybricks-utils#7
2025-12-08 17:04:25 +00:00
960fd598c9 Merge pull request 'dev' (#5) from dev into main
Reviewed-on: Arcmyx/pybricks-utils#5
2025-12-08 14:21:45 +00:00
f3460290e5 Merge pull request 'Update utils/BatteryDiagnostics.py' (#3) from dev into main
Reviewed-on: Arcmyx/pybricks-utils#3
2025-12-07 21:49:05 +00:00
345da15b22 Merge pull request 'dev' (#2) from dev into main
Reviewed-on: Arcmyx/pybricks-utils#2
2025-12-07 21:31:02 +00:00
12 changed files with 18 additions and 113 deletions

View File

@@ -4,11 +4,11 @@ from pybricks.parameters import Button, Color, Direction, Port, Side, Stop
from pybricks.robotics import DriveBase from pybricks.robotics import DriveBase
from pybricks.tools import wait, StopWatch from pybricks.tools import wait, StopWatch
HUB = PrimeHub() HUB = PrimeHub()
from battery_diagnostics import BatteryDiagnostics from BatteryDiagnostics import BatteryDiagnostics
from motor_diagnostics import MotorDiagnostics from MotorDiagnostics import MotorDiagnostics
from color_sensor_diagnostics import ColorSensorDiagnostics from ColorSensorDiagnostics import ColorSensorDiagnostics
from drive_base_diagnostics import DriveBaseDiagnostics from DriveBaseDiagnostics import DriveBaseDiagnostics
from hub_diagnostics import HubDiagnostics from HubDiagnostics import HubDiagnostics
battery = BatteryDiagnostics(HUB) battery = BatteryDiagnostics(HUB)
motor = MotorDiagnostics(HUB, Motor) motor = MotorDiagnostics(HUB, Motor)
colorsensor = ColorSensorDiagnostics(HUB, ColorSensor) colorsensor = ColorSensorDiagnostics(HUB, ColorSensor)

View File

@@ -1,7 +1,7 @@
from pybricks.tools import wait, StopWatch from pybricks.tools import wait, StopWatch
from pybricks import version from pybricks import version
import other_functions as debug import OtherFunctions as debug
from micropython_diagnostics import MicroPythonDiagnostics from MicroPythonDiagnostics import MicroPythonDiagnostics
from pybricks.parameters import Port from pybricks.parameters import Port
class HubDiagnostics: class HubDiagnostics:
def __init__(self, hub): def __init__(self, hub):

View File

@@ -0,0 +1,11 @@
import usys
from pybricks import version
class MicroPythonDiagnostics:
def __init__(self, hub):
pass
def printAll():
print("[Hub Diagnostics - MicroPython] Hub version information:", version)
print("[Hub Diagnostics - MicroPython] MicroPython version:", usys.version)
print("[Hub Diagnostics - MicroPython] Pybricks version information:", usys.version_info)
print("[Hub Diagnostics - MicroPython] MicroPython information:", usys.implementation)

View File

@@ -1,42 +0,0 @@
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] [SUCCESS] There was no MemoryError raised. The value of the new variable x is", x)
except MemoryError:
print("[Hub Diagnostics - MicroPython - Memory] [FAIL] 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:
y = 10000
print("[Hub Diagnostics - MicroPython - Memory] [FAIL] There was no MemoryError raised. Heap lock failed.")
except MemoryError:
print("[Hub Diagnostics - MicroPython - Memory] [SUCCESS] 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.
print("[Hub Diagnostics - MicroPython - Memory] Unlocking the heap:")
micropython.heap_unlock()
print("[Hub Diagnostics - MicroPython - Memory] Heap was unlocked. Attempting to allocate memory (this should succeed):")
try:
z = 17000
print("[Hub Diagnostics - MicroPython - Memory] [SUCCESS] There was no MemoryError raised. The value of the new variable y is", x)
except MemoryError:
print("[Hub Diagnostics - MicroPython - Memory] [FAIL] Allocation failed. The heap failed to unlock.")
def printAll():
printVersionDiagnostics()
performMemoryDiagnostics()

View File

@@ -1,64 +0,0 @@
# Event codes:
#0: notify
#1: prgm_start
#2: prgm_end
#3: prgm_crash
#4: snsr_data
#5: mtr_data
#6: perf_smpl
#7: get_time
#8: breakpoint
lvldict = {
0: "FATAL",
1: "ALERT",
2: "CRIT",
3: "ERR",
4: "WARNING",
5: "NOTICE",
6: "INFO",
7: "DEBUG"
}
stpwtchtime = StopWatch()
stpwtchtime.pause()
def start():
self.time.reset()
self.time.resume()
def log(self, message, level, origin):
if level <= self.verboseness:
ms = self.time.time()
timestamp = "{:02d}:{:02d}.{:03d}".format(
(ms // 60000) % 60,
(ms // 1000) % 60,
ms % 1000
)
label = self.lvldict.get(level, "UNKNOWN")
padding = " " * (7 - len(label))
print("[{}] {}{} [{}] {}".format(timestamp, label, padding, origin, message))
def sendCommand(eventnum, level, msg, origin):
print(f"\x1b[?PYN;{str(eventnum)};{lvldict[level]};{msg}~")
def notify(level, msg, origin):
print(f"\x1b[?PYN;0;{lvldict[level]};{msg}~")
def fatal(self, message, origin): notify(message, 0, origin)
def alert(self, message, origin): notify(message, 1, origin)
def crit(self, message, origin): notify(message, 2, origin)
def err(self, message, origin): notify(message, 3, origin)
def warning(self, message, origin): notify(message, 4, origin)
def notice(self, message, origin): notify(message, 5, origin)
def info(self, message, origin): notify(message, 6, origin)
def debug(self, message, origin): notify(message, 7, origin)
def crash(self, message, origin):
sendCommand(3, 0, "program kinda crashed bc you suck at coding", origin)
raise FatalLoggerError("[FATAL] [{}] {}".format(origin, message))
sendCommand(0, 0, "hey you should probably know that your RAM is corrupted and you cant buy more because of the shortage. byeeeee", "test prgm")
sendCommand(0, 1, "UNRECOVERABLE PYTHON ERROR!!!!! Exiting gracefully... JUST KIDDING WHAT DID YOU THINK IT WAS GONNA DO", "test prgm")
sendCommand(0, 2, "so the program is running but it just started looping on the motor frying bit of your program.", "test prgm")
sendCommand(0, 3, "syntax error, you failure!!!! use an error checker", "test prgm")
sendCommand(0, 4, "wanted to just say that your motor is kinda being slow", "test prgm")
sendCommand(0, 5, "so your motor is like 1% slower than it should be but really no one cares", "test prgm")
sendCommand(0, 6, "hey everything in the program is going well just in case nothing in your life is", "test prgm")
sendCommand(0, 7, "nobody cares about me but you should know that", "test prgm")
def breakpoint():
#send a command 8 and also get all important info about the code here and print