From b1cd17cc5da04621ee52d91760a8536327145a05 Mon Sep 17 00:00:00 2001 From: Thomas Farstrike Date: Tue, 27 May 2025 22:47:01 +0200 Subject: [PATCH] Improve app names, retire memtest --- .../META-INF/MANIFEST.JSON | 2 +- .../META-INF/MANIFEST.JSON | 2 +- .../META-INF/MANIFEST.JSON | 2 +- .../META-INF/MANIFEST.JSON | 2 +- .../META-INF/MANIFEST.JSON | 12 -- .../com.example.memtest/assets/memtest.py | 131 ----------------- .../assets/memtest_timer.py | 136 ------------------ .../res/mipmap-mdpi/icon_64x64.png | Bin 6158 -> 0 bytes .../META-INF/MANIFEST.JSON | 2 +- .../META-INF/MANIFEST.JSON | 2 +- 10 files changed, 6 insertions(+), 285 deletions(-) delete mode 100644 internal_filesystem/apps/com.example.memtest/META-INF/MANIFEST.JSON delete mode 100644 internal_filesystem/apps/com.example.memtest/assets/memtest.py delete mode 100644 internal_filesystem/apps/com.example.memtest/assets/memtest_timer.py delete mode 100644 internal_filesystem/apps/com.example.memtest/res/mipmap-mdpi/icon_64x64.png diff --git a/internal_filesystem/apps/com.example.camtest/META-INF/MANIFEST.JSON b/internal_filesystem/apps/com.example.camtest/META-INF/MANIFEST.JSON index 4763306b..903e81c2 100644 --- a/internal_filesystem/apps/com.example.camtest/META-INF/MANIFEST.JSON +++ b/internal_filesystem/apps/com.example.camtest/META-INF/MANIFEST.JSON @@ -1,5 +1,5 @@ { -"name": "Camera Tester", +"name": "Camera", "publisher": "ACME Inc", "short_description": "Simple test of the camera", "long_description": "A simple test of the camera makes it possible to validate the hardware.", diff --git a/internal_filesystem/apps/com.example.cputest/META-INF/MANIFEST.JSON b/internal_filesystem/apps/com.example.cputest/META-INF/MANIFEST.JSON index 44140b6d..3b5f3670 100644 --- a/internal_filesystem/apps/com.example.cputest/META-INF/MANIFEST.JSON +++ b/internal_filesystem/apps/com.example.cputest/META-INF/MANIFEST.JSON @@ -1,5 +1,5 @@ { -"name": "CPU Tester", +"name": "Benchmark", "publisher": "ACME Inc", "short_description": "Testing the CPU speed", "long_description": "Experimentally determines how many idle loops and sha256-hashing loops the CPU can perform per second.", diff --git a/internal_filesystem/apps/com.example.imutest/META-INF/MANIFEST.JSON b/internal_filesystem/apps/com.example.imutest/META-INF/MANIFEST.JSON index 15d5eed7..2a2571b9 100644 --- a/internal_filesystem/apps/com.example.imutest/META-INF/MANIFEST.JSON +++ b/internal_filesystem/apps/com.example.imutest/META-INF/MANIFEST.JSON @@ -1,5 +1,5 @@ { -"name": "IMU Tester", +"name": "Accelero", "publisher": "ACME Inc", "short_description": "Test the Inertial Measurement Unit", "long_description": "It is always good to make sure the accelerometer is working properly. How else can you measure acceleration and position?", diff --git a/internal_filesystem/apps/com.example.lvgltest/META-INF/MANIFEST.JSON b/internal_filesystem/apps/com.example.lvgltest/META-INF/MANIFEST.JSON index 18ea7ae1..80d5c85b 100644 --- a/internal_filesystem/apps/com.example.lvgltest/META-INF/MANIFEST.JSON +++ b/internal_filesystem/apps/com.example.lvgltest/META-INF/MANIFEST.JSON @@ -1,5 +1,5 @@ { -"name": "SpinnerTest", +"name": "Graphics", "publisher": "ACME Inc", "short_description": "Testing on-display spinner animations", "long_description": "Stress testing multiple concurrent animations on the display by adding more and more spinners", diff --git a/internal_filesystem/apps/com.example.memtest/META-INF/MANIFEST.JSON b/internal_filesystem/apps/com.example.memtest/META-INF/MANIFEST.JSON deleted file mode 100644 index 6e4408ed..00000000 --- a/internal_filesystem/apps/com.example.memtest/META-INF/MANIFEST.JSON +++ /dev/null @@ -1,12 +0,0 @@ -{ -"name": "Memory Tester", -"publisher": "ACME Inc", -"short_description": "RAM Memory Test", -"long_description": "Experimentally determines how many RAM memory buffers can be allocated.", -"icon_url": "http://demo.lnpiggy.com:2121/apps/com.example.memtest_0.0.1.mpk_icon_64x64.png", -"download_url": "http://demo.lnpiggy.com:2121/apps/com.example.memtest_0.0.1.mpk", -"fullname": "com.example.memtest", -"version": "0.0.1", -"entrypoint": "assets/memtest.py", -"category": "benchmarking" -} diff --git a/internal_filesystem/apps/com.example.memtest/assets/memtest.py b/internal_filesystem/apps/com.example.memtest/assets/memtest.py deleted file mode 100644 index bc84efa2..00000000 --- a/internal_filesystem/apps/com.example.memtest/assets/memtest.py +++ /dev/null @@ -1,131 +0,0 @@ -# Example results for ESP32-S3 with 8MB SPIRAM: -# -#=== Memory Allocation Test Summary === -#Buffer Size (bytes) | Max Buffers Allocated -#---------------------------------------- -# 2 | 25762 -# 4 | 25760 -# 8 | 25771 -# 16 | 25759 -# 32 | 35541 -# 64 | 11276 -# 128 | 6517 -# 256 | 3521 -# 512 | 1832 -# 1024 | 932 -# 2048 | 466 -# 4096 | 232 -# 8192 | 115 -# 16384 | 56 -# 32768 | 26 -# 65536 | 12 -# 131072 | 9 -# 262144 | 4 -# 524288 | 2 -# 1048576 | 1 -# 2097152 | 0 -#===================================== -# -# On desktop, this hangs while outputting, for some reason... - -import gc -import time -import _thread - -import mpos.apps -import mpos.ui - -# Configuration -ALLOCATION_TIMEOUT_MS = 100 # Timeout for a single allocation (in milliseconds) -keep_running = True - -def test_allocation(buffer_size, n): - """Test how many buffers of a given size can be allocated with a timeout.""" - print(f"\nTesting buffer size: {buffer_size} bytes (2^{n})") - buffers = [] - count = 0 - - try: - while keep_running: - # Measure time for allocation - start_time = time.ticks_ms() - # Allocate a new buffer - buffer = bytearray(buffer_size) - allocation_time = time.ticks_diff(time.ticks_ms(), start_time) - - # Check if allocation took too long - if allocation_time > ALLOCATION_TIMEOUT_MS: - print(f"\nStopped after allocating {count} buffers of {buffer_size} bytes: Allocation timeout ({allocation_time}ms > {ALLOCATION_TIMEOUT_MS}ms)") - break - - buffers.append(buffer) - count += 1 - # Print progress every 100 allocations to avoid flooding serial - if count % 100 == 0: - print(f"Allocated {count} buffers of {buffer_size} bytes", end="\r") - except MemoryError as e: - buffers.clear() - print(f"\nStopped after allocating {count} buffers of {buffer_size} bytes: MemoryError") - except Exception as e: - buffers.clear() - print(f"\nStopped after allocating {count} buffers of {buffer_size} bytes: {e}") - - # Free allocated buffers - buffers.clear() - gc.collect() - return count - -def stress_test_thread(): - summary = "Running RAM memory tests...\n" - summary += "This might hang on desktop/unix.\n\n" - summary += "Buffer Size (bytes) | Max Allocated\n" - summary += "-----------------------------------\n" - lv.async_call(lambda l: status.set_text(summary), None) - time.sleep_ms(500) - # Test buffer sizes of 2^n, starting from n=1 (2 bytes) - n = 1 - while keep_running: - buffer_size = 2 ** n - summary += f"{buffer_size:>12} | " - lv.async_call(lambda l: status.set_text(summary), None) - # Run allocation test - gc.collect() - max_buffers = test_allocation(buffer_size, n) - # Check if we allocated 0 buffers (indicates we can't allocate this size) - if max_buffers == 0: - print(f"Cannot allocate buffers of size {buffer_size} bytes. Stopping test.") - summary += f"{max_buffers:>14}\n" - lv.async_call(lambda l: status.set_text(summary), None) - break - # Clean up memory before next test - gc.collect() - n += 1 - summary += f"{max_buffers:>14}\n" - lv.async_call(lambda l: status.set_text(summary), None) - time.sleep_ms(200) # Brief delay to stabilize system - # Print summary report - summary += "\n" - summary += "===================================\n" - summary += "Test completed.\n" - lv.async_call(lambda l: status.set_text(summary), None) - - - -def janitor_cb(timer): - global keep_running - if lv.screen_active() != main_screen: - print("memtest.py backgrounded, cleaning up...") - janitor.delete() - keep_running = False - -main_screen = lv.obj() -status = lv.label(main_screen) -status.align(lv.ALIGN.TOP_LEFT, 5, 10) -status.set_style_text_color(lv.color_hex(0xFFFFFF), 0) -status.set_style_text_font(lv.font_unscii_8, 0) -mpos.ui.load_screen(main_screen) - -_thread.stack_size(mpos.apps.good_stack_size()) -_thread.start_new_thread(stress_test_thread, ()) - -janitor = lv.timer_create(janitor_cb, 400, None) diff --git a/internal_filesystem/apps/com.example.memtest/assets/memtest_timer.py b/internal_filesystem/apps/com.example.memtest/assets/memtest_timer.py deleted file mode 100644 index 84105cc8..00000000 --- a/internal_filesystem/apps/com.example.memtest/assets/memtest_timer.py +++ /dev/null @@ -1,136 +0,0 @@ -# Example results for ESP32-S3 with 8MB SPIRAM: -# -#=== Memory Allocation Test Summary === -#Buffer Size (bytes) | Max Buffers Allocated -#---------------------------------------- -# 2 | 25762 -# 4 | 25760 -# 8 | 25771 -# 16 | 25759 -# 32 | 35541 -# 64 | 11276 -# 128 | 6517 -# 256 | 3521 -# 512 | 1832 -# 1024 | 932 -# 2048 | 466 -# 4096 | 232 -# 8192 | 115 -# 16384 | 56 -# 32768 | 26 -# 65536 | 12 -# 131072 | 9 -# 262144 | 4 -# 524288 | 2 -# 1048576 | 1 -# 2097152 | 0 -#===================================== -# -# On desktop, this hangs while outputting, for some reason... - -import gc -import time -import _thread - -# Configuration -ALLOCATION_TIMEOUT_MS = 100 # Timeout for a single allocation (in milliseconds) -keep_running = True -summary = "" - -def test_allocation(buffer_size, n): - """Test how many buffers of a given size can be allocated with a timeout.""" - print(f"\nTesting buffer size: {buffer_size} bytes (2^{n})") - buffers = [] - count = 0 - - try: - while keep_running: - # Measure time for allocation - start_time = time.ticks_ms() - # Allocate a new buffer - buffer = bytearray(buffer_size) - allocation_time = time.ticks_diff(time.ticks_ms(), start_time) - - # Check if allocation took too long - if allocation_time > ALLOCATION_TIMEOUT_MS: - print(f"\nStopped after allocating {count} buffers of {buffer_size} bytes: Allocation timeout ({allocation_time}ms > {ALLOCATION_TIMEOUT_MS}ms)") - break - - buffers.append(buffer) - count += 1 - # Print progress every 100 allocations to avoid flooding serial - if count % 100 == 0: - print(f"Allocated {count} buffers of {buffer_size} bytes", end="\r") - except MemoryError as e: - buffers.clear() - print(f"\nStopped after allocating {count} buffers of {buffer_size} bytes: MemoryError") - except Exception as e: - buffers.clear() - print(f"\nStopped after allocating {count} buffers of {buffer_size} bytes: {e}") - - # Free allocated buffers - buffers.clear() - gc.collect() - return count - -def update_status(timer): - global status, summary - status.set_text(summary) - -def stress_test_thread(): - global summary - summary += "Running RAM memory tests...\n" - summary += "This might hang on desktop/unix.\n\n" - summary += "Buffer Size (bytes) | Max Allocated\n" - summary += "-----------------------------------\n" - time.sleep(1) - #lv.async_call(lambda l: update_status(), None) - # Test buffer sizes of 2^n, starting from n=1 (2 bytes) - n = 1 - while keep_running: - buffer_size = 2 ** n - summary += f"{buffer_size:>12} | " - #lv.async_call(lambda l: status.set_text(summary), None) - # Run allocation test - gc.collect() - max_buffers = test_allocation(buffer_size, n) - # Check if we allocated 0 buffers (indicates we can't allocate this size) - if max_buffers == 0: - print(f"Cannot allocate buffers of size {buffer_size} bytes. Stopping test.") - summary += f"{max_buffers:>14}\n" - #lv.async_call(lambda l: status.set_text(summary), None) - break - # Clean up memory before next test - gc.collect() - n += 1 - summary += f"{max_buffers:>14}\n" - #lv.async_call(lambda l: update_status(), None) - time.sleep_ms(200) # Brief delay to stabilize system - # Print summary report - summary += "\n" - summary += "===================================\n" - summary += "Test completed.\n" - #lv.async_call(lambda l: update_status(), None) - - - -def janitor_cb(timer): - global keep_running - if lv.screen_active() != appscreen: - print("memtest.py backgrounded, cleaning up...") - janitor.delete() - keep_running = False - update_status_timer.delete() - -appscreen = lv.screen_active() -status = lv.label(appscreen) -status.align(lv.ALIGN.TOP_LEFT, 5, 10) -status.set_style_text_color(lv.color_hex(0xFFFFFF), 0) -status.set_style_text_font(lv.font_unscii_8, 0) - -_thread.stack_size(12*1024) -_thread.start_new_thread(stress_test_thread, ()) - -update_status_timer = lv.timer_create(update_status, 750, None) -janitor = lv.timer_create(janitor_cb, 400, None) - diff --git a/internal_filesystem/apps/com.example.memtest/res/mipmap-mdpi/icon_64x64.png b/internal_filesystem/apps/com.example.memtest/res/mipmap-mdpi/icon_64x64.png deleted file mode 100644 index 4e1e8ef5d09d36a94cc7df98b3da911902ba9f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6158 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 diff --git a/internal_filesystem/builtin/apps/com.example.osupdate/META-INF/MANIFEST.JSON b/internal_filesystem/builtin/apps/com.example.osupdate/META-INF/MANIFEST.JSON index 2c203651..31d7845a 100644 --- a/internal_filesystem/builtin/apps/com.example.osupdate/META-INF/MANIFEST.JSON +++ b/internal_filesystem/builtin/apps/com.example.osupdate/META-INF/MANIFEST.JSON @@ -1,5 +1,5 @@ { -"name": "OSUpdate", +"name": "Update", "publisher": "ACME Inc", "short_description": "Operating System Updater", "long_description": "", diff --git a/internal_filesystem/builtin/apps/com.example.wificonf/META-INF/MANIFEST.JSON b/internal_filesystem/builtin/apps/com.example.wificonf/META-INF/MANIFEST.JSON index f9675635..0f939d0a 100644 --- a/internal_filesystem/builtin/apps/com.example.wificonf/META-INF/MANIFEST.JSON +++ b/internal_filesystem/builtin/apps/com.example.wificonf/META-INF/MANIFEST.JSON @@ -1,5 +1,5 @@ { -"name": "WiFiConf", +"name": "WiFi", "publisher": "ACME Inc", "short_description": "Wireless Network Configuration", "long_description": "",