feat: WiFi驱动(ath9k) + TTF字体 + shell命令行 + FirstInit WiFi跳过
新增: ath9k PCIe WiFi驱动(被动扫描/beacon解析), shell命令行(help/clear/echo/version/date/reboot/halt), Consolas 18px TTF字体, render_ascii.py 修改: dkm_net_api扩展scan接口, FirstInit无WiFi设备时跳过, DSK加载shell.elf, 非首次启动直接进shell
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""render_ascii.py — render ASCII 32-126 from Consolas TTF to grayscale bitmaps
|
||||
Output: CODE/firstInit/ascii_bitmaps.c (included by main.c)
|
||||
|
||||
Glyph cell: 11x18. Consolas 18px has advance=10, ascender top ~3, descender ~18.
|
||||
ASCII_STEP=11 gives 1px spacing between glyphs (10px glyph + 1px gap).
|
||||
"""
|
||||
from PIL import Image, ImageFont, ImageDraw
|
||||
|
||||
ttf = r"C:\Windows\Fonts\consola.ttf"
|
||||
GLYPH_W = 11
|
||||
GLYPH_H = 18
|
||||
FONT_SIZE = 18
|
||||
|
||||
font = ImageFont.truetype(ttf, FONT_SIZE)
|
||||
|
||||
# Verify metrics on first glyph
|
||||
probe = font.getbbox("A")
|
||||
print(f"Consolas {FONT_SIZE}px — 'A' bbox={probe}, advance={font.getlength('A')}")
|
||||
|
||||
lines = []
|
||||
lines.append("/* Auto-generated by render_ascii.py - Consolas 18px grayscale */")
|
||||
lines.append("/* 95 glyphs: ASCII 32 (space) .. 126 (~), cell 11x18 */")
|
||||
lines.append("/* Do not edit - regenerate via: py render_ascii.py */")
|
||||
lines.append("")
|
||||
lines.append(f"static const int g_ascii_w = {GLYPH_W};")
|
||||
lines.append(f"static const int g_ascii_h = {GLYPH_H};")
|
||||
lines.append(f"static const unsigned char g_ascii[95][{GLYPH_W}*{GLYPH_H}] = {{")
|
||||
|
||||
for cp in range(32, 127):
|
||||
ch = chr(cp)
|
||||
img = Image.new("L", (GLYPH_W, GLYPH_H), 0)
|
||||
draw = ImageDraw.Draw(img)
|
||||
draw.text((0, 0), ch, font=font, fill=255)
|
||||
pixels = list(img.tobytes())
|
||||
if ch.isalnum():
|
||||
comment = ch
|
||||
elif ch == ' ':
|
||||
comment = "space"
|
||||
else:
|
||||
comment = f"0x{cp:02x}"
|
||||
lines.append(f" /* '{comment}' */ {{")
|
||||
for y_row in range(GLYPH_H):
|
||||
row = ", ".join(str(pixels[y_row * GLYPH_W + x_col]) for x_col in range(GLYPH_W))
|
||||
lines.append(f" {row},")
|
||||
lines.append(" },")
|
||||
|
||||
lines.append("};")
|
||||
lines.append("")
|
||||
|
||||
out_path = "CODE/firstInit/ascii_bitmaps.c"
|
||||
with open(out_path, "w", encoding="ascii") as f:
|
||||
f.write("\n".join(lines))
|
||||
|
||||
print(f"Generated {out_path} ({95*GLYPH_W*GLYPH_H} bytes of glyph data)")
|
||||
Reference in New Issue
Block a user