From 324d2435328b9f0f78e896e4c40b101a5e3d0bea Mon Sep 17 00:00:00 2001 From: Thomas Farstrike Date: Thu, 15 May 2025 06:34:20 +0200 Subject: [PATCH] lib: add aiohttp, base64 and binascii --- draft_code/webcam_snippets.py | 77 ++++++++++++++++++ internal_filesystem/lib/aiohttp/__init__.mpy | Bin 0 -> 3687 bytes .../lib/aiohttp/aiohttp_ws.mpy | Bin 0 -> 3634 bytes internal_filesystem/lib/base64.mpy | Bin 0 -> 4016 bytes internal_filesystem/lib/binascii.mpy | Bin 0 -> 1278 bytes 5 files changed, 77 insertions(+) create mode 100644 draft_code/webcam_snippets.py create mode 100644 internal_filesystem/lib/aiohttp/__init__.mpy create mode 100644 internal_filesystem/lib/aiohttp/aiohttp_ws.mpy create mode 100644 internal_filesystem/lib/base64.mpy create mode 100644 internal_filesystem/lib/binascii.mpy diff --git a/draft_code/webcam_snippets.py b/draft_code/webcam_snippets.py new file mode 100644 index 00000000..d1e1c560 --- /dev/null +++ b/draft_code/webcam_snippets.py @@ -0,0 +1,77 @@ +try: + from camera import Camera, GrabMode, PixelFormat, FrameSize, GainCeiling + cam = Camera( + data_pins=[12,13,15,11,14,10,7,2], + vsync_pin=6, + href_pin=4, + sda_pin=21, + scl_pin=16, + pclk_pin=9, + xclk_pin=8, + xclk_freq=20000000, + powerdown_pin=-1, + reset_pin=-1, + #pixel_format=PixelFormat.RGB565, + pixel_format=PixelFormat.GRAYSCALE, + frame_size=FrameSize.R240X240, + grab_mode=GrabMode.LATEST + ) + print("it worked!") +except Exception as e: + print(f"Exception: {e}") + + + +images=300 + +import webcam +import time + + +class Webcam: + def __init__(self): + # webcam.init() returns (obj, capture_grayscale, deinit) + self.obj, self._capture_grayscale, self._deinit = webcam.init() + def capture_grayscale(self): + return self._capture_grayscale(self.obj) + def deinit(self): + return self._deinit(self.obj) + +starttime = time.ticks_ms() + +# Usage +cam = Webcam() +for _ in range(images): + buf = cam.capture_grayscale() + print(len(buf)) # Should print 57600 (240 * 240) + +endtime = time.ticks_ms() + +print(f"duration: {endtime-starttime}ms") + + +cam.deinit() + + + + + + + + + + + + + + +#from webcam import Webcam, init, capture_frame, deinit +import webcam + +cam = webcam.init("/dev/video0") # Initialize webcam with device path +for i in range(1000): + buf = webcam.capture_frame(cam) # Captures frame, returns 240x240 grayscale buffer + print(f"buffer {i} has length {len(buf)}") # Prints 57600 +webcam.deinit(cam) # Deinitializes webcam + + diff --git a/internal_filesystem/lib/aiohttp/__init__.mpy b/internal_filesystem/lib/aiohttp/__init__.mpy new file mode 100644 index 0000000000000000000000000000000000000000..524ce853e0ca068f46a76a459c723f1b5a7dc5bc GIT binary patch literal 3687 zcmeZeV~}rT7E(*h%+Dw(DbSCP&&WIWsrjlK~yjZ zg$Mfjn~THt1BIcJpSWv8Z~3G2jTcas!E zU2tk~ab|uV1DAoGfu1o#lQXk2Uoyz`c_j>d@hPdv`6;Okd>N^UDXB%p42`;cDXD2W zi6yBFESdQXLM{-Fr#}OqQ)NkNv8O)+N0g7J6GLM)M|xFe0RxA7lxF|~2PiNYc%Y_n z<>V)(6f>Cf6qh8Hlom6HB!e6tUz}N$%FtNfq-@Vslv~(5W4~t0}OoeMPOGk@FXVZ>zJOJSHd6#Q4I56lf6_tD4yfXQj5UBA`o8$iBSeIC?mco zv7Di@Nxeys4P*tAJp+>(Lt`LUN@;FEF$0^sYX}2JfPZiZ11}fIBr66U5LIl&z+}ZB zmtT;Y7oUu95?gU`4g-fresKu{3ojQ#qc2Zt9yr8#63dG+OHvv5ptdq_q$HLkGVl~6 z7A58uGjJ4uw6GPFmN2jdgoZG16(p7_*fA(&B<7_QXC!8)!b5`x z8umgq>8W|C6$M3h3|!T;`xoN+^hoN9Gh37>k0~g zkl9?!tSsOp%*qZ+@~k`{0UbD3A>1*@&(qJ{N&zaQkei=Unv<#ka!qDYY6=4@AIw~z z)V%bP3bU1_oAH8?1R5u2v|dC^4@%Ewu>l zTq_1Pc5pUIO<`c;^vO?71jVuy1FKkQUU6wbL4Hw5YKlTZQGQ8&a(<4L0s|YrYO#X8 zYO#W9F)tSgGq4II78K-ULUihbBZ!p;=6rC8#43TTB0sq#wM4hLq$o8pmw`|*SZ0-R!*0$gHQAw~=W+$Kz7+#yDc0z87;Cd^_yAx2CBye3Ryydg%+ z0(>S+VtfMpV%dSoEX^hyLfjpKDJ_B-nJI!fVz~m`VtGakVnRlYVj}fgjKRiCVln~( zAO^FTyb+5Svk|M9QeZM$h7^}jenNxL#tjm}fyo^nx0sYf^8Fh`wbYeVUDXV=)Qp0) zHVBJ~h$%CeF&^5a%y`%3QGB5- z`_Zi;GG+|PF|kfbn*?NUy2KzUkn1;NMpohAB^WMLaNor%Qm9aw$%HY|i!pX%a-+v4 zM=qKCq6W1MA|e}vg+*jGnlZ)&W|%Q1Hz^!)GtiMAVd78_k#+LJtX*Y?@%gv_V1zqACKUN~Q_y znZuiv*={;J3#q3nvnPYag-SPW5LPi^0!ts+5H74DRJO&0@mUm1dni~Ly7mnsB3lq1 z_EhFTc(}2Ifrq!lH$?%Gba)~DHDVOgGGY?b4oqfllu+gq%GWG!@Kf2eK|*8W1_{l; zsy5Rd^5YCf?%0YM!G!AvdYU}H$~g}5OwFi?j>QGuYy;}wem z(|lsFfyw;M4hLEp#f0)JL@OJjRaEqK0yjwLY}_EBufrr@AYhmzU?gCiv_ZmTgRqH+ zY4D~7^CpJK%^M`l0+T&D9YDTM+K}9+0P;A8c78)Dl2@m&9J$!S7;m0mW#iB65g^)- zrKD`Atf`@)q@by(q^_x^q8VjmlR?3`aj4ocvT>I|2I0c<`iUkRAn=!hC>=UszV-QgbY&2tP3>8r@V>smG z;Iye;sY!QFc=RndHl-&0TTV__qIhDKIb!Rjaa@Fvfv0>8Gbr5;h)u zMvO*GyG$5O823wvdU1sd)!cV+2Ic;p8zgl0Co?w*+;ZScY-DO=YUmE$7#!>^a7Z9Y zBzco6!=_L(ru0ZBy};zAh)AxKMy7^79fl3@-m(Wbil_;=HJUNihl-?{F~E2Yq56_e ziph-$j$CPtObz|oAjNzKH-dZ(Ql~HCWRN_U<=Vwo#$pRtjMY{)EYi`?QC6{3iqLga zQ&Uq>b@5WuaVv39RZ-VcPF0XkRyNQIax+dHMvb560l1YB>r_$oD9pW7OE&&4U|sFRma zBZD%}u1_Y6sRC|$?z#l+frg6#)0uNZCHqVm&j~S!xbN8~;IY-Li775H!+`0$n!wJ$ zdoC^;gw0M0cy7OY*~M$Sh^c_*9y3s)cTQL4-MDw>c9&2AFA;kq#_b~BW(?rS6!7}w z z#STKe8#aiTZ`>fPzv+{J|7HQ^Edm}}1p>AShzivQZxA*K-riu^!eG|LWWto(XmF~* zflDmkrs3lT5kCRPjo`utCLWk?)9?i(?u05HlyB4U9V8x%Djt$=)9?!<9*Qa+mT%MW z7bG5zDjtzj8!3dMq?IMs~RgxCU27!Pk2i32GRh~FS=Vb%hwzauvbCv1?=5n|nJ!k7#IwZc=k literal 0 HcmV?d00001 diff --git a/internal_filesystem/lib/aiohttp/aiohttp_ws.mpy b/internal_filesystem/lib/aiohttp/aiohttp_ws.mpy new file mode 100644 index 0000000000000000000000000000000000000000..37f3b61d59e22f410e075715c19caddfa171f8ff GIT binary patch literal 3634 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 LlSoPfH~^9X!B0(2 literal 0 HcmV?d00001 diff --git a/internal_filesystem/lib/base64.mpy b/internal_filesystem/lib/base64.mpy new file mode 100644 index 0000000000000000000000000000000000000000..fc7fa0534a0632e6e0874fe038da5fe65dacc8f8 GIT binary patch literal 4016 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 T56;Aq8#di^b{3LM4NL|A&j6m~ literal 0 HcmV?d00001 diff --git a/internal_filesystem/lib/binascii.mpy b/internal_filesystem/lib/binascii.mpy new file mode 100644 index 0000000000000000000000000000000000000000..e7f55600f84ee8cc819227a30332ecd8266a2f40 GIT binary patch literal 1278 zcmeZeW02Qk5lhOr(DuwYGgi7-=QY&&Y(<&L5Y#Epv1MRtt^i1>& z8AResiW2jR)AEaQ8CVYQXAns=N{UZPEKW5uVW@1fWJ}6SXAns;N`#5A^Q7h_=clAH zaDgpi5V6V0EG|jT&n>WHXf))5S;7a>l95`$zy~r9#9#|>bYV~^NleN~jR%QA?PyGG z42Oz>v_M70;^WIwi;6Sz^Wx(fI8qWz5*hLvSsN>v@)#O98}mKck}~rc`0`TAb29T% z85(U_9UPsUU0mJVJv_a`laf)nNN;XQiP(vCT zo0?l%+uA!iySjUN`}!wLoHTjL)M?Xa%!DYIHG9t7dGi-6T(o$}(q+q6tX#Ev&DwSA zl?;>&m5h{(A!-Jg)NW!BlQLoy;}T#KVHcDZlrmvdYGSzQ>@38Q zYQ!YQqs$;C8>Gb;Y|JbsAiyam7nsb_EMv&aBA?)(2ENn;Jhgzdy9O?ZfuB zhqtsnJ+h_awoA;Gj%PS<`H>S-x!2+3?PVQl); z{O!=DmM@K;4rwzSZaC5a@`25%BOWMR)}S%@`v=sbsSmqll1zuo+`A05uJ~X8-^I literal 0 HcmV?d00001