final Changes

This commit is contained in:
maroh94 2025-09-02 17:10:09 +02:00
parent 30dbab7342
commit e64477b9f0
25 changed files with 3585 additions and 2754 deletions

View File

@ -15,9 +15,7 @@ target_sources(app PRIVATE
src/lora/encryption.c
src/lora/lora.c
src/master/master.c
src/utils/buttons.c
src/utils/displayController.c
src/utils/leds.c
)
if(CONFIG_SLAVE_DISPLAY_TYPE STREQUAL "EPD")

View File

@ -0,0 +1,171 @@
# time,JS220-003433.i,JS220-003433.v,JS220-003433.0
0.000000000000000000e+00,1.088575273752212524e-02,3.283535957336425781e+00,0.000000000000000000e+00
3.100024349987506866e-02,1.088657975196838379e-02,3.283558130264282227e+00,0.000000000000000000e+00
6.200048699975013733e-02,1.089030504226684570e-02,3.283548355102539062e+00,0.000000000000000000e+00
9.300073049962520599e-02,1.088734716176986694e-02,3.283547163009643555e+00,0.000000000000000000e+00
1.240009739995002747e-01,1.088740769773721695e-02,3.283510684967041016e+00,0.000000000000000000e+00
1.550012184306979179e-01,1.088784821331501007e-02,3.283457040786743164e+00,0.000000000000000000e+00
1.860014619305729866e-01,1.088787522166967392e-02,3.283461093902587891e+00,0.000000000000000000e+00
2.170017054304480553e-01,1.088702678680419922e-02,3.283497571945190430e+00,0.000000000000000000e+00
2.480019489303231239e-01,1.088863611221313477e-02,3.283504009246826172e+00,0.000000000000000000e+00
2.790021924301981926e-01,1.088829617947340012e-02,3.283492088317871094e+00,0.000000000000000000e+00
3.100024359300732613e-01,1.088850945234298706e-02,3.283528804779052734e+00,0.000000000000000000e+00
3.410026794299483299e-01,1.088852435350418091e-02,3.283512115478515625e+00,0.000000000000000000e+00
3.720029229298233986e-01,1.088877487927675247e-02,3.283501148223876953e+00,0.000000000000000000e+00
4.030031664296984673e-01,1.088894065469503403e-02,3.283504009246826172e+00,0.000000000000000000e+00
4.340034099295735359e-01,1.088921166956424713e-02,3.283547401428222656e+00,0.000000000000000000e+00
4.650036534294486046e-01,1.088836137205362320e-02,3.283543825149536133e+00,0.000000000000000000e+00
4.960038969293236732e-01,1.088818907737731934e-02,3.283533573150634766e+00,0.000000000000000000e+00
5.270041404291987419e-01,1.088909618556499481e-02,3.283546209335327148e+00,0.000000000000000000e+00
5.580043839290738106e-01,1.088921818882226944e-02,3.283520221710205078e+00,0.000000000000000000e+00
5.890046274289488792e-01,1.088955439627170563e-02,3.283482551574707031e+00,0.000000000000000000e+00
6.200048709288239479e-01,1.088952366262674332e-02,3.283489227294921875e+00,0.000000000000000000e+00
6.510051153600215912e-01,1.089050807058811188e-02,3.283539295196533203e+00,0.000000000000000000e+00
6.820053588598966599e-01,1.088955719023942947e-02,3.283536672592163086e+00,0.000000000000000000e+00
7.130056023597717285e-01,1.088994834572076797e-02,3.283544778823852539e+00,0.000000000000000000e+00
7.440058458596467972e-01,1.089076045900583267e-02,3.283540010452270508e+00,0.000000000000000000e+00
7.750060893595218658e-01,1.089152134954929352e-02,3.283497095108032227e+00,0.000000000000000000e+00
8.060063328593969345e-01,1.089132670313119888e-02,3.283509492874145508e+00,0.000000000000000000e+00
8.370065763592720032e-01,1.089126709848642349e-02,3.283481359481811523e+00,0.000000000000000000e+00
8.680068198591470718e-01,1.089065708220005035e-02,3.283473491668701172e+00,0.000000000000000000e+00
8.990070633590221405e-01,1.089136488735675812e-02,3.283471107482910156e+00,0.000000000000000000e+00
9.300073068588972092e-01,1.089163403958082199e-02,3.283473730087280273e+00,0.000000000000000000e+00
9.610075503587722778e-01,1.089231017976999283e-02,3.283529758453369141e+00,0.000000000000000000e+00
9.920077938586473465e-01,1.089192461222410202e-02,3.283500671386718750e+00,0.000000000000000000e+00
1.023008037358522415e+00,1.089240983128547668e-02,3.283480882644653320e+00,0.000000000000000000e+00
1.054008280858397484e+00,1.089123450219631195e-02,3.283433198928833008e+00,0.000000000000000000e+00
1.085008524358272552e+00,1.089635305106639862e-02,3.283486366271972656e+00,0.000000000000000000e+00
1.116008767858147621e+00,1.089172437787055969e-02,3.283500671386718750e+00,0.000000000000000000e+00
1.147009012289345264e+00,1.089186314493417740e-02,3.283495903015136719e+00,0.000000000000000000e+00
1.178009255789220333e+00,1.089187525212764740e-02,3.283484458923339844e+00,0.000000000000000000e+00
1.209009499289095402e+00,1.089289225637912750e-02,3.283458232879638672e+00,0.000000000000000000e+00
1.240009742788970470e+00,1.089348271489143372e-02,3.283427238464355469e+00,0.000000000000000000e+00
1.271009986288845539e+00,1.089230924844741821e-02,3.283392906188964844e+00,0.000000000000000000e+00
1.302010229788720608e+00,1.089327689260244370e-02,3.283442735671997070e+00,0.000000000000000000e+00
1.333010473288595676e+00,1.089236792176961899e-02,3.283485174179077148e+00,0.000000000000000000e+00
1.364010716788470745e+00,1.089299842715263367e-02,3.283463954925537109e+00,0.000000000000000000e+00
1.395010960288345814e+00,1.089378912001848221e-02,3.283463478088378906e+00,0.000000000000000000e+00
1.426011203788220882e+00,1.089506596326828003e-02,3.283455371856689453e+00,0.000000000000000000e+00
1.457011447288095951e+00,1.089400239288806915e-02,3.283437967300415039e+00,0.000000000000000000e+00
1.489011699333786964e+00,1.089407410472631454e-02,3.283479452133178711e+00,0.000000000000000000e+00
1.520011942833662033e+00,1.089440565556287766e-02,3.283493280410766602e+00,0.000000000000000000e+00
1.551012186333537102e+00,1.089466735720634460e-02,3.283500671386718750e+00,0.000000000000000000e+00
1.582012429833412170e+00,1.089468225836753845e-02,3.283492565155029297e+00,0.000000000000000000e+00
1.613012673333287239e+00,1.089474372565746307e-02,3.283497810363769531e+00,0.000000000000000000e+00
1.644012916833162308e+00,1.089502498507499695e-02,3.283473730087280273e+00,0.000000000000000000e+00
1.675013160333037376e+00,1.089501939713954926e-02,3.283443689346313477e+00,0.000000000000000000e+00
1.706013403832912445e+00,1.089549995958805084e-02,3.283416986465454102e+00,0.000000000000000000e+00
1.737013647332787514e+00,1.089506316930055618e-02,3.283492088317871094e+00,0.000000000000000000e+00
1.768013890832662582e+00,1.089642941951751709e-02,3.283482551574707031e+00,0.000000000000000000e+00
1.799014134332537651e+00,1.089499332010746002e-02,3.283529281616210938e+00,0.000000000000000000e+00
1.830014377832412720e+00,1.089607924222946167e-02,3.283516407012939453e+00,0.000000000000000000e+00
1.861014621332287788e+00,1.089646294713020325e-02,3.283516168594360352e+00,0.000000000000000000e+00
1.892014864832162857e+00,1.089682430028915405e-02,3.283489942550659180e+00,0.000000000000000000e+00
1.923015108332037926e+00,1.089561358094215393e-02,3.283513307571411133e+00,0.000000000000000000e+00
1.954015351831912994e+00,1.089513394981622696e-02,3.283502101898193359e+00,0.000000000000000000e+00
1.985015596263110638e+00,1.089584454894065857e-02,3.283508300781250000e+00,0.000000000000000000e+00
2.016015839762985706e+00,1.089586690068244934e-02,3.283513307571411133e+00,0.000000000000000000e+00
2.047016083262860775e+00,1.089557167142629623e-02,3.283515214920043945e+00,0.000000000000000000e+00
2.078016326762735844e+00,1.090093888342380524e-02,3.283469915390014648e+00,0.000000000000000000e+00
2.109016570262610912e+00,1.089690811932086945e-02,3.283427000045776367e+00,0.000000000000000000e+00
2.140016813762485981e+00,1.089546177536249161e-02,3.283426046371459961e+00,0.000000000000000000e+00
2.171017057262361050e+00,1.089646667242050171e-02,3.283444881439208984e+00,0.000000000000000000e+00
2.202017300762236118e+00,1.089615933597087860e-02,3.283525943756103516e+00,0.000000000000000000e+00
2.233017544262111187e+00,1.089608948677778244e-02,3.283504486083984375e+00,0.000000000000000000e+00
2.264017787761986256e+00,1.089730765670537949e-02,3.283513545989990234e+00,0.000000000000000000e+00
2.295018031261861324e+00,1.089673768728971481e-02,3.283522367477416992e+00,0.000000000000000000e+00
2.326018274761736393e+00,1.089785713702440262e-02,3.283501148223876953e+00,0.000000000000000000e+00
2.357018518261611462e+00,1.089695561677217484e-02,3.283500432968139648e+00,0.000000000000000000e+00
2.388018761761486530e+00,1.089761964976787567e-02,3.283518791198730469e+00,0.000000000000000000e+00
2.419019005261361599e+00,1.089777704328298569e-02,3.283519983291625977e+00,0.000000000000000000e+00
2.450019248761236668e+00,1.089782454073429108e-02,3.283500432968139648e+00,0.000000000000000000e+00
2.481019493192434311e+00,1.089797820895910263e-02,3.283494234085083008e+00,0.000000000000000000e+00
2.512019736692309380e+00,1.089819893240928650e-02,3.283483028411865234e+00,0.000000000000000000e+00
2.543019980192184448e+00,1.089758984744548798e-02,3.283484458923339844e+00,0.000000000000000000e+00
2.574020223692059517e+00,1.089799497276544571e-02,3.283472537994384766e+00,0.000000000000000000e+00
2.605020467191934586e+00,1.089780777692794800e-02,3.283496856689453125e+00,0.000000000000000000e+00
2.636020710691809654e+00,1.089739520102739334e-02,3.283509731292724609e+00,0.000000000000000000e+00
2.667020954191684723e+00,1.089748181402683258e-02,3.283517599105834961e+00,0.000000000000000000e+00
2.698021197691559792e+00,1.089689694344997406e-02,3.283530235290527344e+00,0.000000000000000000e+00
2.729021441191434860e+00,1.089715678244829178e-02,3.283481359481811523e+00,0.000000000000000000e+00
2.760021684691309929e+00,1.089754421263933182e-02,3.283459901809692383e+00,0.000000000000000000e+00
2.791021928191184998e+00,1.089687831699848175e-02,3.283472537994384766e+00,0.000000000000000000e+00
2.822022171691060066e+00,1.089759543538093567e-02,3.283500909805297852e+00,0.000000000000000000e+00
2.853022415190935135e+00,1.089670881628990173e-02,3.283534288406372070e+00,0.000000000000000000e+00
2.884022658690810204e+00,1.089756470173597336e-02,3.283511877059936523e+00,0.000000000000000000e+00
2.915022902190685272e+00,1.089690346270799637e-02,3.283493757247924805e+00,0.000000000000000000e+00
2.946023146621882915e+00,1.089758984744548798e-02,3.283448219299316406e+00,0.000000000000000000e+00
2.978023397736251354e+00,1.089744549244642258e-02,3.283433675765991211e+00,0.000000000000000000e+00
3.009023641236126423e+00,1.089862175285816193e-02,3.283425569534301758e+00,0.000000000000000000e+00
3.040023884736001492e+00,1.089803129434585571e-02,3.283471822738647461e+00,0.000000000000000000e+00
3.071024128235876560e+00,1.073096692562103271e-02,3.284560441970825195e+00,0.000000000000000000e+00
3.102024371735751629e+00,1.047029998153448105e-02,3.286798954010009766e+00,0.000000000000000000e+00
3.133024615235626698e+00,1.047913543879985809e-02,3.287167787551879883e+00,3.239795719667862804e-03
3.164024858735501766e+00,1.093554869294166565e-02,3.284556388854980469e+00,9.858965101311918666e-02
3.195025102235376835e+00,1.090482994914054871e-02,3.283414125442504883e+00,2.408863122635618303e-02
3.226025345735251904e+00,1.090592984110116959e-02,3.283406972885131836e+00,2.447244005815103285e-04
3.257025589235126972e+00,9.565196000039577484e-03,3.287045955657958984e+00,0.000000000000000000e+00
3.288025832735002041e+00,6.265455856919288635e-03,3.295940399169921875e+00,0.000000000000000000e+00
3.319026077166199684e+00,6.265163887292146683e-03,3.295932769775390625e+00,0.000000000000000000e+00
3.350026320666074753e+00,6.265291944146156311e-03,3.295904874801635742e+00,0.000000000000000000e+00
3.381026564165949821e+00,6.265689618885517120e-03,3.295960903167724609e+00,0.000000000000000000e+00
3.412026807665824890e+00,6.265511736273765564e-03,3.295937538146972656e+00,0.000000000000000000e+00
3.443027051165699959e+00,6.265967618674039841e-03,3.295956850051879883e+00,0.000000000000000000e+00
3.474027294665575027e+00,6.265111733227968216e-03,3.295962095260620117e+00,0.000000000000000000e+00
3.505027538165450096e+00,6.265260744839906693e-03,3.295987844467163086e+00,0.000000000000000000e+00
3.536027781665325165e+00,6.265217904001474380e-03,3.295968055725097656e+00,0.000000000000000000e+00
3.567028025165200233e+00,6.265106145292520523e-03,3.295924901962280273e+00,0.000000000000000000e+00
3.598028268665075302e+00,6.264802534133195877e-03,3.295977592468261719e+00,0.000000000000000000e+00
3.629028512164950371e+00,6.274072919040918350e-03,3.295981168746948242e+00,0.000000000000000000e+00
3.660028755664825439e+00,6.264159921556711197e-03,3.296010494232177734e+00,0.000000000000000000e+00
3.691028999164700508e+00,6.263694725930690765e-03,3.296028852462768555e+00,0.000000000000000000e+00
3.722029242664575577e+00,6.264073774218559265e-03,3.295981884002685547e+00,0.000000000000000000e+00
3.753029486164450645e+00,6.263582501560449600e-03,3.295972824096679688e+00,0.000000000000000000e+00
3.784029729664325714e+00,6.263743620365858078e-03,3.295948028564453125e+00,0.000000000000000000e+00
3.815029974095523357e+00,6.263809744268655777e-03,3.295968770980834961e+00,0.000000000000000000e+00
3.846030217595398426e+00,6.264028605073690414e-03,3.295961141586303711e+00,0.000000000000000000e+00
3.877030461095273495e+00,6.262957584112882614e-03,3.295981407165527344e+00,0.000000000000000000e+00
3.908030704595148563e+00,6.263051647692918777e-03,3.296004056930541992e+00,0.000000000000000000e+00
3.939030948095023632e+00,6.263412535190582275e-03,3.295977354049682617e+00,0.000000000000000000e+00
3.970031191594898701e+00,6.263195537030696869e-03,3.295970678329467773e+00,0.000000000000000000e+00
4.001031435094773769e+00,6.264739204198122025e-03,3.295953989028930664e+00,0.000000000000000000e+00
4.032031678594648838e+00,6.262465845793485641e-03,3.295959472656250000e+00,0.000000000000000000e+00
4.063031922094523907e+00,6.262660026550292969e-03,3.295962572097778320e+00,0.000000000000000000e+00
4.094032165594398975e+00,6.262000184506177902e-03,3.295940160751342773e+00,0.000000000000000000e+00
4.125032409094274044e+00,6.262242328375577927e-03,3.295962572097778320e+00,0.000000000000000000e+00
4.156032652594149113e+00,6.262141279876232147e-03,3.296007633209228516e+00,0.000000000000000000e+00
4.187032896094024181e+00,6.264179013669490814e-03,3.296983242034912109e+00,0.000000000000000000e+00
4.218033139593899250e+00,6.265323609113693237e-03,3.298573970794677734e+00,0.000000000000000000e+00
4.249033383093774319e+00,6.262608803808689117e-03,3.297634840011596680e+00,0.000000000000000000e+00
4.280033626593649387e+00,6.261723116040229797e-03,3.295988082885742188e+00,0.000000000000000000e+00
4.311033871024847031e+00,6.261355709284543991e-03,3.295922756195068359e+00,0.000000000000000000e+00
4.342034114524722099e+00,6.262241862714290619e-03,3.295910596847534180e+00,0.000000000000000000e+00
4.373034358024597168e+00,6.260306108742952347e-03,3.295955896377563477e+00,0.000000000000000000e+00
4.404034601524472237e+00,6.260604131966829300e-03,3.295947074890136719e+00,0.000000000000000000e+00
4.435034845024347305e+00,6.260327063500881195e-03,3.295908689498901367e+00,0.000000000000000000e+00
4.467035096138715744e+00,6.260474678128957748e-03,3.295910358428955078e+00,0.000000000000000000e+00
4.498035339638590813e+00,6.259850226342678070e-03,3.295917749404907227e+00,0.000000000000000000e+00
4.529035583138465881e+00,6.260114721953868866e-03,3.295912265777587891e+00,0.000000000000000000e+00
4.560035826638340950e+00,6.259896326810121536e-03,3.295969486236572266e+00,0.000000000000000000e+00
4.591036070138216019e+00,6.259923335164785385e-03,3.295968770980834961e+00,0.000000000000000000e+00
4.622036313638091087e+00,6.269593723118305206e-03,3.295923233032226562e+00,0.000000000000000000e+00
4.653036558069288731e+00,6.258169189095497131e-03,3.295922756195068359e+00,0.000000000000000000e+00
4.684036801569163799e+00,6.259581539779901505e-03,3.295930147171020508e+00,0.000000000000000000e+00
4.715037045069038868e+00,6.259268615394830704e-03,3.295959234237670898e+00,0.000000000000000000e+00
4.746037288568913937e+00,6.259615998715162277e-03,3.295964241027832031e+00,0.000000000000000000e+00
4.777037532068789005e+00,6.259322632104158401e-03,3.295985460281372070e+00,0.000000000000000000e+00
4.808037775568664074e+00,6.259133573621511459e-03,3.295970439910888672e+00,0.000000000000000000e+00
4.839038019068539143e+00,6.258794572204351425e-03,3.295953750610351562e+00,0.000000000000000000e+00
4.870038262568414211e+00,6.258916575461626053e-03,3.295943975448608398e+00,0.000000000000000000e+00
4.901038506068289280e+00,6.259270478039979935e-03,3.295993089675903320e+00,0.000000000000000000e+00
4.932038749568164349e+00,6.258721463382244110e-03,3.296065092086791992e+00,0.000000000000000000e+00
4.963038993068039417e+00,6.258817389607429504e-03,3.296002626419067383e+00,0.000000000000000000e+00
4.994039236567914486e+00,6.259220186620950699e-03,3.295991659164428711e+00,0.000000000000000000e+00
5.025039480067789555e+00,6.258020643144845963e-03,3.296026468276977539e+00,0.000000000000000000e+00
5.056039723567664623e+00,6.257521919906139374e-03,3.296054124832153320e+00,0.000000000000000000e+00
5.087039967067539692e+00,6.257620174437761307e-03,3.296008348464965820e+00,0.000000000000000000e+00
5.118040210567414761e+00,6.257147062569856644e-03,3.296041727066040039e+00,0.000000000000000000e+00
5.149040454998612404e+00,6.257088854908943176e-03,3.296068191528320312e+00,0.000000000000000000e+00
5.180040698498487473e+00,6.257211323827505112e-03,3.296053409576416016e+00,0.000000000000000000e+00
5.211040941998362541e+00,6.256616208702325821e-03,3.296070098876953125e+00,0.000000000000000000e+00
5.242041185498237610e+00,6.256992463022470474e-03,3.296049118041992188e+00,0.000000000000000000e+00
1 # time JS220-003433.i JS220-003433.v JS220-003433.0
2 0.000000000000000000e+00 1.088575273752212524e-02 3.283535957336425781e+00 0.000000000000000000e+00
3 3.100024349987506866e-02 1.088657975196838379e-02 3.283558130264282227e+00 0.000000000000000000e+00
4 6.200048699975013733e-02 1.089030504226684570e-02 3.283548355102539062e+00 0.000000000000000000e+00
5 9.300073049962520599e-02 1.088734716176986694e-02 3.283547163009643555e+00 0.000000000000000000e+00
6 1.240009739995002747e-01 1.088740769773721695e-02 3.283510684967041016e+00 0.000000000000000000e+00
7 1.550012184306979179e-01 1.088784821331501007e-02 3.283457040786743164e+00 0.000000000000000000e+00
8 1.860014619305729866e-01 1.088787522166967392e-02 3.283461093902587891e+00 0.000000000000000000e+00
9 2.170017054304480553e-01 1.088702678680419922e-02 3.283497571945190430e+00 0.000000000000000000e+00
10 2.480019489303231239e-01 1.088863611221313477e-02 3.283504009246826172e+00 0.000000000000000000e+00
11 2.790021924301981926e-01 1.088829617947340012e-02 3.283492088317871094e+00 0.000000000000000000e+00
12 3.100024359300732613e-01 1.088850945234298706e-02 3.283528804779052734e+00 0.000000000000000000e+00
13 3.410026794299483299e-01 1.088852435350418091e-02 3.283512115478515625e+00 0.000000000000000000e+00
14 3.720029229298233986e-01 1.088877487927675247e-02 3.283501148223876953e+00 0.000000000000000000e+00
15 4.030031664296984673e-01 1.088894065469503403e-02 3.283504009246826172e+00 0.000000000000000000e+00
16 4.340034099295735359e-01 1.088921166956424713e-02 3.283547401428222656e+00 0.000000000000000000e+00
17 4.650036534294486046e-01 1.088836137205362320e-02 3.283543825149536133e+00 0.000000000000000000e+00
18 4.960038969293236732e-01 1.088818907737731934e-02 3.283533573150634766e+00 0.000000000000000000e+00
19 5.270041404291987419e-01 1.088909618556499481e-02 3.283546209335327148e+00 0.000000000000000000e+00
20 5.580043839290738106e-01 1.088921818882226944e-02 3.283520221710205078e+00 0.000000000000000000e+00
21 5.890046274289488792e-01 1.088955439627170563e-02 3.283482551574707031e+00 0.000000000000000000e+00
22 6.200048709288239479e-01 1.088952366262674332e-02 3.283489227294921875e+00 0.000000000000000000e+00
23 6.510051153600215912e-01 1.089050807058811188e-02 3.283539295196533203e+00 0.000000000000000000e+00
24 6.820053588598966599e-01 1.088955719023942947e-02 3.283536672592163086e+00 0.000000000000000000e+00
25 7.130056023597717285e-01 1.088994834572076797e-02 3.283544778823852539e+00 0.000000000000000000e+00
26 7.440058458596467972e-01 1.089076045900583267e-02 3.283540010452270508e+00 0.000000000000000000e+00
27 7.750060893595218658e-01 1.089152134954929352e-02 3.283497095108032227e+00 0.000000000000000000e+00
28 8.060063328593969345e-01 1.089132670313119888e-02 3.283509492874145508e+00 0.000000000000000000e+00
29 8.370065763592720032e-01 1.089126709848642349e-02 3.283481359481811523e+00 0.000000000000000000e+00
30 8.680068198591470718e-01 1.089065708220005035e-02 3.283473491668701172e+00 0.000000000000000000e+00
31 8.990070633590221405e-01 1.089136488735675812e-02 3.283471107482910156e+00 0.000000000000000000e+00
32 9.300073068588972092e-01 1.089163403958082199e-02 3.283473730087280273e+00 0.000000000000000000e+00
33 9.610075503587722778e-01 1.089231017976999283e-02 3.283529758453369141e+00 0.000000000000000000e+00
34 9.920077938586473465e-01 1.089192461222410202e-02 3.283500671386718750e+00 0.000000000000000000e+00
35 1.023008037358522415e+00 1.089240983128547668e-02 3.283480882644653320e+00 0.000000000000000000e+00
36 1.054008280858397484e+00 1.089123450219631195e-02 3.283433198928833008e+00 0.000000000000000000e+00
37 1.085008524358272552e+00 1.089635305106639862e-02 3.283486366271972656e+00 0.000000000000000000e+00
38 1.116008767858147621e+00 1.089172437787055969e-02 3.283500671386718750e+00 0.000000000000000000e+00
39 1.147009012289345264e+00 1.089186314493417740e-02 3.283495903015136719e+00 0.000000000000000000e+00
40 1.178009255789220333e+00 1.089187525212764740e-02 3.283484458923339844e+00 0.000000000000000000e+00
41 1.209009499289095402e+00 1.089289225637912750e-02 3.283458232879638672e+00 0.000000000000000000e+00
42 1.240009742788970470e+00 1.089348271489143372e-02 3.283427238464355469e+00 0.000000000000000000e+00
43 1.271009986288845539e+00 1.089230924844741821e-02 3.283392906188964844e+00 0.000000000000000000e+00
44 1.302010229788720608e+00 1.089327689260244370e-02 3.283442735671997070e+00 0.000000000000000000e+00
45 1.333010473288595676e+00 1.089236792176961899e-02 3.283485174179077148e+00 0.000000000000000000e+00
46 1.364010716788470745e+00 1.089299842715263367e-02 3.283463954925537109e+00 0.000000000000000000e+00
47 1.395010960288345814e+00 1.089378912001848221e-02 3.283463478088378906e+00 0.000000000000000000e+00
48 1.426011203788220882e+00 1.089506596326828003e-02 3.283455371856689453e+00 0.000000000000000000e+00
49 1.457011447288095951e+00 1.089400239288806915e-02 3.283437967300415039e+00 0.000000000000000000e+00
50 1.489011699333786964e+00 1.089407410472631454e-02 3.283479452133178711e+00 0.000000000000000000e+00
51 1.520011942833662033e+00 1.089440565556287766e-02 3.283493280410766602e+00 0.000000000000000000e+00
52 1.551012186333537102e+00 1.089466735720634460e-02 3.283500671386718750e+00 0.000000000000000000e+00
53 1.582012429833412170e+00 1.089468225836753845e-02 3.283492565155029297e+00 0.000000000000000000e+00
54 1.613012673333287239e+00 1.089474372565746307e-02 3.283497810363769531e+00 0.000000000000000000e+00
55 1.644012916833162308e+00 1.089502498507499695e-02 3.283473730087280273e+00 0.000000000000000000e+00
56 1.675013160333037376e+00 1.089501939713954926e-02 3.283443689346313477e+00 0.000000000000000000e+00
57 1.706013403832912445e+00 1.089549995958805084e-02 3.283416986465454102e+00 0.000000000000000000e+00
58 1.737013647332787514e+00 1.089506316930055618e-02 3.283492088317871094e+00 0.000000000000000000e+00
59 1.768013890832662582e+00 1.089642941951751709e-02 3.283482551574707031e+00 0.000000000000000000e+00
60 1.799014134332537651e+00 1.089499332010746002e-02 3.283529281616210938e+00 0.000000000000000000e+00
61 1.830014377832412720e+00 1.089607924222946167e-02 3.283516407012939453e+00 0.000000000000000000e+00
62 1.861014621332287788e+00 1.089646294713020325e-02 3.283516168594360352e+00 0.000000000000000000e+00
63 1.892014864832162857e+00 1.089682430028915405e-02 3.283489942550659180e+00 0.000000000000000000e+00
64 1.923015108332037926e+00 1.089561358094215393e-02 3.283513307571411133e+00 0.000000000000000000e+00
65 1.954015351831912994e+00 1.089513394981622696e-02 3.283502101898193359e+00 0.000000000000000000e+00
66 1.985015596263110638e+00 1.089584454894065857e-02 3.283508300781250000e+00 0.000000000000000000e+00
67 2.016015839762985706e+00 1.089586690068244934e-02 3.283513307571411133e+00 0.000000000000000000e+00
68 2.047016083262860775e+00 1.089557167142629623e-02 3.283515214920043945e+00 0.000000000000000000e+00
69 2.078016326762735844e+00 1.090093888342380524e-02 3.283469915390014648e+00 0.000000000000000000e+00
70 2.109016570262610912e+00 1.089690811932086945e-02 3.283427000045776367e+00 0.000000000000000000e+00
71 2.140016813762485981e+00 1.089546177536249161e-02 3.283426046371459961e+00 0.000000000000000000e+00
72 2.171017057262361050e+00 1.089646667242050171e-02 3.283444881439208984e+00 0.000000000000000000e+00
73 2.202017300762236118e+00 1.089615933597087860e-02 3.283525943756103516e+00 0.000000000000000000e+00
74 2.233017544262111187e+00 1.089608948677778244e-02 3.283504486083984375e+00 0.000000000000000000e+00
75 2.264017787761986256e+00 1.089730765670537949e-02 3.283513545989990234e+00 0.000000000000000000e+00
76 2.295018031261861324e+00 1.089673768728971481e-02 3.283522367477416992e+00 0.000000000000000000e+00
77 2.326018274761736393e+00 1.089785713702440262e-02 3.283501148223876953e+00 0.000000000000000000e+00
78 2.357018518261611462e+00 1.089695561677217484e-02 3.283500432968139648e+00 0.000000000000000000e+00
79 2.388018761761486530e+00 1.089761964976787567e-02 3.283518791198730469e+00 0.000000000000000000e+00
80 2.419019005261361599e+00 1.089777704328298569e-02 3.283519983291625977e+00 0.000000000000000000e+00
81 2.450019248761236668e+00 1.089782454073429108e-02 3.283500432968139648e+00 0.000000000000000000e+00
82 2.481019493192434311e+00 1.089797820895910263e-02 3.283494234085083008e+00 0.000000000000000000e+00
83 2.512019736692309380e+00 1.089819893240928650e-02 3.283483028411865234e+00 0.000000000000000000e+00
84 2.543019980192184448e+00 1.089758984744548798e-02 3.283484458923339844e+00 0.000000000000000000e+00
85 2.574020223692059517e+00 1.089799497276544571e-02 3.283472537994384766e+00 0.000000000000000000e+00
86 2.605020467191934586e+00 1.089780777692794800e-02 3.283496856689453125e+00 0.000000000000000000e+00
87 2.636020710691809654e+00 1.089739520102739334e-02 3.283509731292724609e+00 0.000000000000000000e+00
88 2.667020954191684723e+00 1.089748181402683258e-02 3.283517599105834961e+00 0.000000000000000000e+00
89 2.698021197691559792e+00 1.089689694344997406e-02 3.283530235290527344e+00 0.000000000000000000e+00
90 2.729021441191434860e+00 1.089715678244829178e-02 3.283481359481811523e+00 0.000000000000000000e+00
91 2.760021684691309929e+00 1.089754421263933182e-02 3.283459901809692383e+00 0.000000000000000000e+00
92 2.791021928191184998e+00 1.089687831699848175e-02 3.283472537994384766e+00 0.000000000000000000e+00
93 2.822022171691060066e+00 1.089759543538093567e-02 3.283500909805297852e+00 0.000000000000000000e+00
94 2.853022415190935135e+00 1.089670881628990173e-02 3.283534288406372070e+00 0.000000000000000000e+00
95 2.884022658690810204e+00 1.089756470173597336e-02 3.283511877059936523e+00 0.000000000000000000e+00
96 2.915022902190685272e+00 1.089690346270799637e-02 3.283493757247924805e+00 0.000000000000000000e+00
97 2.946023146621882915e+00 1.089758984744548798e-02 3.283448219299316406e+00 0.000000000000000000e+00
98 2.978023397736251354e+00 1.089744549244642258e-02 3.283433675765991211e+00 0.000000000000000000e+00
99 3.009023641236126423e+00 1.089862175285816193e-02 3.283425569534301758e+00 0.000000000000000000e+00
100 3.040023884736001492e+00 1.089803129434585571e-02 3.283471822738647461e+00 0.000000000000000000e+00
101 3.071024128235876560e+00 1.073096692562103271e-02 3.284560441970825195e+00 0.000000000000000000e+00
102 3.102024371735751629e+00 1.047029998153448105e-02 3.286798954010009766e+00 0.000000000000000000e+00
103 3.133024615235626698e+00 1.047913543879985809e-02 3.287167787551879883e+00 3.239795719667862804e-03
104 3.164024858735501766e+00 1.093554869294166565e-02 3.284556388854980469e+00 9.858965101311918666e-02
105 3.195025102235376835e+00 1.090482994914054871e-02 3.283414125442504883e+00 2.408863122635618303e-02
106 3.226025345735251904e+00 1.090592984110116959e-02 3.283406972885131836e+00 2.447244005815103285e-04
107 3.257025589235126972e+00 9.565196000039577484e-03 3.287045955657958984e+00 0.000000000000000000e+00
108 3.288025832735002041e+00 6.265455856919288635e-03 3.295940399169921875e+00 0.000000000000000000e+00
109 3.319026077166199684e+00 6.265163887292146683e-03 3.295932769775390625e+00 0.000000000000000000e+00
110 3.350026320666074753e+00 6.265291944146156311e-03 3.295904874801635742e+00 0.000000000000000000e+00
111 3.381026564165949821e+00 6.265689618885517120e-03 3.295960903167724609e+00 0.000000000000000000e+00
112 3.412026807665824890e+00 6.265511736273765564e-03 3.295937538146972656e+00 0.000000000000000000e+00
113 3.443027051165699959e+00 6.265967618674039841e-03 3.295956850051879883e+00 0.000000000000000000e+00
114 3.474027294665575027e+00 6.265111733227968216e-03 3.295962095260620117e+00 0.000000000000000000e+00
115 3.505027538165450096e+00 6.265260744839906693e-03 3.295987844467163086e+00 0.000000000000000000e+00
116 3.536027781665325165e+00 6.265217904001474380e-03 3.295968055725097656e+00 0.000000000000000000e+00
117 3.567028025165200233e+00 6.265106145292520523e-03 3.295924901962280273e+00 0.000000000000000000e+00
118 3.598028268665075302e+00 6.264802534133195877e-03 3.295977592468261719e+00 0.000000000000000000e+00
119 3.629028512164950371e+00 6.274072919040918350e-03 3.295981168746948242e+00 0.000000000000000000e+00
120 3.660028755664825439e+00 6.264159921556711197e-03 3.296010494232177734e+00 0.000000000000000000e+00
121 3.691028999164700508e+00 6.263694725930690765e-03 3.296028852462768555e+00 0.000000000000000000e+00
122 3.722029242664575577e+00 6.264073774218559265e-03 3.295981884002685547e+00 0.000000000000000000e+00
123 3.753029486164450645e+00 6.263582501560449600e-03 3.295972824096679688e+00 0.000000000000000000e+00
124 3.784029729664325714e+00 6.263743620365858078e-03 3.295948028564453125e+00 0.000000000000000000e+00
125 3.815029974095523357e+00 6.263809744268655777e-03 3.295968770980834961e+00 0.000000000000000000e+00
126 3.846030217595398426e+00 6.264028605073690414e-03 3.295961141586303711e+00 0.000000000000000000e+00
127 3.877030461095273495e+00 6.262957584112882614e-03 3.295981407165527344e+00 0.000000000000000000e+00
128 3.908030704595148563e+00 6.263051647692918777e-03 3.296004056930541992e+00 0.000000000000000000e+00
129 3.939030948095023632e+00 6.263412535190582275e-03 3.295977354049682617e+00 0.000000000000000000e+00
130 3.970031191594898701e+00 6.263195537030696869e-03 3.295970678329467773e+00 0.000000000000000000e+00
131 4.001031435094773769e+00 6.264739204198122025e-03 3.295953989028930664e+00 0.000000000000000000e+00
132 4.032031678594648838e+00 6.262465845793485641e-03 3.295959472656250000e+00 0.000000000000000000e+00
133 4.063031922094523907e+00 6.262660026550292969e-03 3.295962572097778320e+00 0.000000000000000000e+00
134 4.094032165594398975e+00 6.262000184506177902e-03 3.295940160751342773e+00 0.000000000000000000e+00
135 4.125032409094274044e+00 6.262242328375577927e-03 3.295962572097778320e+00 0.000000000000000000e+00
136 4.156032652594149113e+00 6.262141279876232147e-03 3.296007633209228516e+00 0.000000000000000000e+00
137 4.187032896094024181e+00 6.264179013669490814e-03 3.296983242034912109e+00 0.000000000000000000e+00
138 4.218033139593899250e+00 6.265323609113693237e-03 3.298573970794677734e+00 0.000000000000000000e+00
139 4.249033383093774319e+00 6.262608803808689117e-03 3.297634840011596680e+00 0.000000000000000000e+00
140 4.280033626593649387e+00 6.261723116040229797e-03 3.295988082885742188e+00 0.000000000000000000e+00
141 4.311033871024847031e+00 6.261355709284543991e-03 3.295922756195068359e+00 0.000000000000000000e+00
142 4.342034114524722099e+00 6.262241862714290619e-03 3.295910596847534180e+00 0.000000000000000000e+00
143 4.373034358024597168e+00 6.260306108742952347e-03 3.295955896377563477e+00 0.000000000000000000e+00
144 4.404034601524472237e+00 6.260604131966829300e-03 3.295947074890136719e+00 0.000000000000000000e+00
145 4.435034845024347305e+00 6.260327063500881195e-03 3.295908689498901367e+00 0.000000000000000000e+00
146 4.467035096138715744e+00 6.260474678128957748e-03 3.295910358428955078e+00 0.000000000000000000e+00
147 4.498035339638590813e+00 6.259850226342678070e-03 3.295917749404907227e+00 0.000000000000000000e+00
148 4.529035583138465881e+00 6.260114721953868866e-03 3.295912265777587891e+00 0.000000000000000000e+00
149 4.560035826638340950e+00 6.259896326810121536e-03 3.295969486236572266e+00 0.000000000000000000e+00
150 4.591036070138216019e+00 6.259923335164785385e-03 3.295968770980834961e+00 0.000000000000000000e+00
151 4.622036313638091087e+00 6.269593723118305206e-03 3.295923233032226562e+00 0.000000000000000000e+00
152 4.653036558069288731e+00 6.258169189095497131e-03 3.295922756195068359e+00 0.000000000000000000e+00
153 4.684036801569163799e+00 6.259581539779901505e-03 3.295930147171020508e+00 0.000000000000000000e+00
154 4.715037045069038868e+00 6.259268615394830704e-03 3.295959234237670898e+00 0.000000000000000000e+00
155 4.746037288568913937e+00 6.259615998715162277e-03 3.295964241027832031e+00 0.000000000000000000e+00
156 4.777037532068789005e+00 6.259322632104158401e-03 3.295985460281372070e+00 0.000000000000000000e+00
157 4.808037775568664074e+00 6.259133573621511459e-03 3.295970439910888672e+00 0.000000000000000000e+00
158 4.839038019068539143e+00 6.258794572204351425e-03 3.295953750610351562e+00 0.000000000000000000e+00
159 4.870038262568414211e+00 6.258916575461626053e-03 3.295943975448608398e+00 0.000000000000000000e+00
160 4.901038506068289280e+00 6.259270478039979935e-03 3.295993089675903320e+00 0.000000000000000000e+00
161 4.932038749568164349e+00 6.258721463382244110e-03 3.296065092086791992e+00 0.000000000000000000e+00
162 4.963038993068039417e+00 6.258817389607429504e-03 3.296002626419067383e+00 0.000000000000000000e+00
163 4.994039236567914486e+00 6.259220186620950699e-03 3.295991659164428711e+00 0.000000000000000000e+00
164 5.025039480067789555e+00 6.258020643144845963e-03 3.296026468276977539e+00 0.000000000000000000e+00
165 5.056039723567664623e+00 6.257521919906139374e-03 3.296054124832153320e+00 0.000000000000000000e+00
166 5.087039967067539692e+00 6.257620174437761307e-03 3.296008348464965820e+00 0.000000000000000000e+00
167 5.118040210567414761e+00 6.257147062569856644e-03 3.296041727066040039e+00 0.000000000000000000e+00
168 5.149040454998612404e+00 6.257088854908943176e-03 3.296068191528320312e+00 0.000000000000000000e+00
169 5.180040698498487473e+00 6.257211323827505112e-03 3.296053409576416016e+00 0.000000000000000000e+00
170 5.211040941998362541e+00 6.256616208702325821e-03 3.296070098876953125e+00 0.000000000000000000e+00
171 5.242041185498237610e+00 6.256992463022470474e-03 3.296049118041992188e+00 0.000000000000000000e+00

1481
Messergebnisse/EPD.csv Normal file

File diff suppressed because it is too large Load Diff

1825
Messergebnisse/OLED.csv Normal file

File diff suppressed because it is too large Load Diff

View File

@ -12,8 +12,6 @@
#define BYTES_PER_LINE 32 // ((WIDTH + 7) / 8)
#define ALLSCREEN_GRAGHBYTES 3904 //(BYTES_PER_LINE * HEIGHT)
void epd_init(void);
void epd_update(void);

View File

@ -3,17 +3,10 @@
#include <stdint.h>
// ## 1. Konstanten ##
#define FONT_WIDTH 16
#define FONT_HEIGHT 32
#define FONT_WIDTH_BYTES 2
// ## 2. Globale Variablen (mit "extern") ##
//extern const uint8_t fullscreen_allArray_LEN;
//extern const unsigned char* fullscreen_allArray[36];
// ## 3. Funktions-Prototypen ##
//void create_char(char character, uint8_t* framebuffer, uint8_t scale);
void draw_char(char character, uint8_t* framebuffer, int fb_width, int fb_height, uint8_t scale);
#endif // FONT_MINI_H

12
include/lora/encryption.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef ENCRYPTION_H
#define ENCRYPTION_H
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
extern const uint8_t XOR_KEY;
void xorCrypt(const char *input, char *output, uint8_t key);
uint16_t computeCRC16(const char *data);
#endif

View File

@ -7,7 +7,6 @@
void lora_init(void);
// Zugriff auf das LoRa-Device
extern const struct device *lora_dev;
// Empfangssteuerung
@ -19,7 +18,6 @@ void lora_check_fn(struct k_work *work);
const char *get_last_msg(void);
void clear_msg_buffer(void);
// Optional: Empfangsdauer definieren
extern struct k_work_delayable lora_check_work;
#define ACTIVE_WINDOW_MS 10000

View File

@ -2,14 +2,10 @@
#define SYNCH_H
#include <zephyr/kernel.h>
#include "utils/leds.h"
#define MAX_SAMPLES 10
// Vorwärtsdeklarationen
void synchronite(struct k_work *work);
// Hardware
//extern struct gpio_callback button_cb_data;
#endif

View File

@ -1,11 +0,0 @@
#ifndef BUTTONS_H
#define BUTTONS_H
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>
#define SW0_NODE DT_ALIAS(sw0)
extern const struct gpio_dt_spec button0;
#endif

View File

@ -2,6 +2,6 @@
#define DISPLAY_CONTROLLER_H
void dc_init(const char *type_str, int slot);
void dc_draw_something(char to_draw);
void dc_draw_something(const char *message);
#endif

View File

@ -1,19 +0,0 @@
#ifndef LEDS_H
#define LEDS_H
#include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>
#include "lora/synch.h"
// Aliase, die zum Devicetree passen
#define LED0_NODE DT_ALIAS(led0)
// Ankündigen, dass es diese Variablen gibt.
// Die eigentliche Definition steht in leds.c
extern const struct gpio_dt_spec led_green;
// Funktions-Prototypen
void turnOutLEDS(void);
void updateLEDs(void);
#endif

View File

@ -7,10 +7,8 @@
#include "epaper/epaper.h"
#include "font.h"
#include "epaper/font_mini.h"
//#include "font.h"
#define EPD_NODE DT_NODELABEL(epd)
#define SPI_BUS DT_BUS(EPD_NODE)
@ -71,7 +69,7 @@ void epd_spi_writeByte(uint8_t value) {
int ret = spi_write(spi_dev, &spi_cfg, &tx);
if (ret < 0) {
printk("SPI Write Fehler: %d\n", ret);
printk("SPI Write Fehler: %d\n", ret);
}
}
@ -92,7 +90,7 @@ void epd_write_data(uint8_t data) {
epd_spi_writeByte(data);
}
void edp_hw_init(void) {
void epd_init_sequence(void) {
EPD_W21_RST_0;
k_msleep(10); // Ein kurzer Reset-Puls ist oft besser
EPD_W21_RST_1;
@ -102,7 +100,6 @@ void edp_hw_init(void) {
epd_write_command(0x12); // Software Reset
epd_readbusy();
// NEUE, ERGÄNZTE BEFEHLE FÜR BILDQUALITÄT
epd_write_command(0x0C); // Booster Soft Start Control
epd_write_data(0xD7);
epd_write_data(0xD6);
@ -117,7 +114,6 @@ void edp_hw_init(void) {
epd_write_command(0x3B); // Setzt die Gate-Breite
epd_write_data(0x08);
// BEKANNTE BEFEHLE
epd_write_command(0x01); // Driver output control
epd_write_data(0x79); // Höhe (122-1)
epd_write_data(0x00);
@ -171,7 +167,7 @@ void epd_init(void){
gpio_pin_configure_dt(&epd_busy, GPIO_INPUT);
// Initialisierungssequent für den Chip
edp_hw_init();
epd_init_sequence();
// Display ZWEIMAL explizit reinigen, um Kaltstart-Artefakte zu entfernen
epd_clear(); // Erster Clear-Durchgang
@ -198,14 +194,14 @@ void epd_update(void) {
// Beispiel für das Senden eines Bildes
void epd_whitescreen_all(const uint8_t *datas) {
// sicheres Set vor 0x24
epd_write_command(0x11); epd_write_data(0x01); // zeilenweise
//epd_write_command(0x11); epd_write_data(0x01); // zeilenweise
epd_write_command(0x44); epd_write_data(0x00); epd_write_data(0x1F); // X: 0..31 (Bytes)
epd_write_command(0x45); epd_write_data(0x00); epd_write_data(0x00);
epd_write_data(0x79); epd_write_data(0x00); // Y: 0..121 (Zeilen)
//epd_write_command(0x44); epd_write_data(0x00); epd_write_data(0x1F); // X: 0..31 (Bytes)
//epd_write_command(0x45); epd_write_data(0x00); epd_write_data(0x00);
// epd_write_data(0x79); epd_write_data(0x00); // Y: 0..121 (Zeilen)
epd_write_command(0x4E); epd_write_data(0x00); // X-Zähler = 0
epd_write_command(0x4F); epd_write_data(0x00); epd_write_data(0x00); // Y-Zähler = 0
//epd_write_command(0x4E); epd_write_data(0x00); // X-Zähler = 0
//epd_write_command(0x4F); epd_write_data(0x00); epd_write_data(0x00); // Y-Zähler = 0
EPD_W21_CS_0; // <-- CS hier aktivieren (LOW)
epd_write_command(0x24); // Command: write RAM for black/white image
@ -255,16 +251,16 @@ void epd_whitescreen_white(void) {
}
void epd_clear(void) {
printk("🧹 Clearing display...\n");
printk("Clearing display...\n");
// sicheres Set vor 0x24
epd_write_command(0x11); epd_write_data(0x01); // zeilenweise
//epd_write_command(0x11); epd_write_data(0x01); // zeilenweise
epd_write_command(0x44); epd_write_data(0x00); epd_write_data(0x1F); // X: 0..31 (Bytes)
epd_write_command(0x45); epd_write_data(0x00); epd_write_data(0x00);
epd_write_data(0x79); epd_write_data(0x00); // Y: 0..121 (Zeilen)
//epd_write_command(0x44); epd_write_data(0x00); epd_write_data(0x1F); // X: 0..31 (Bytes)
//epd_write_command(0x45); epd_write_data(0x00); epd_write_data(0x00);
// epd_write_data(0x79); epd_write_data(0x00); // Y: 0..121 (Zeilen)
epd_write_command(0x4E); epd_write_data(0x00); // X-Zähler = 0
epd_write_command(0x4F); epd_write_data(0x00); epd_write_data(0x00); // Y-Zähler = 0
//epd_write_command(0x4E); epd_write_data(0x00); // X-Zähler = 0
//epd_write_command(0x4F); epd_write_data(0x00); epd_write_data(0x00); // Y-Zähler = 0
// RAM für das Bild mit "Weiß" füllen
EPD_W21_CS_0;
@ -283,20 +279,9 @@ void epd_clear(void) {
}
void epd_draw_something(char toDraw) {
epd_clear();
//epd_whitescreen_all(HALLO);
//k_msleep(2000);
draw_char('K', epaper_framebuffer, 256, HEIGHT, 17);
epd_whitescreen_all(epaper_framebuffer);
draw_char('K', epaper_framebuffer, 256, HEIGHT, 17);
// Muster in den Display-RAM schreiben
/*printk("Schreibe Bild in den Display-RAM...\n");
EPD_W21_CS_0;
epd_write_command(0x24);
for (int i = 0; i < ALLSCREEN_GRAGHBYTES; i++) {
@ -304,12 +289,12 @@ void epd_draw_something(char toDraw) {
}
EPD_W21_CS_1;
// Physisches Update
printk("Aktualisiere Display...\n");
EPD_W21_CS_0;
epd_update();
EPD_W21_CS_1;*/
printk("✅ Display-Finish! Das Ergebnis sollte jetzt immer perfekt sein.\n");
EPD_W21_CS_1;
printk("Display-Finish.\n");
}

View File

@ -1,253 +0,0 @@
// '2025_07_07_0ox_Kleki', 250x122px
const unsigned char HALLO [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0
};

View File

@ -1,389 +1,10 @@
/*#include <stdint.h>
#include <stdint.h>
#include <string.h>
#include <stdbool.h>
#include "epaper/font_mini.h"
// '0', 32x16px
const unsigned char fullscreen_hor_0 [] = {
0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0x80, 0x01, 0x87, 0xf9, 0x8f, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9,
0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9,
0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8,
0xcf, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff
};
// '1', 32x16px
const unsigned char fullscreen_hor_1 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfc, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '2', 32x16px
const unsigned char fullscreen_hor_2 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xfe, 0x7f,
0xfe, 0x01, 0xfe, 0x7f, 0xfe, 0x00, 0xfe, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xfe, 0x3f, 0x00, 0xff, 0xfe, 0x3f, 0x81, 0xff, 0xfe, 0x3f, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '3', 32x16px
const unsigned char fullscreen_hor_3 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfe, 0x7f,
0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xff, 0x01, 0x00, 0xff, 0xff, 0x81, 0x81, 0xff, 0xff, 0xc1, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '4', 32x16px
const unsigned char fullscreen_hor_4 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0xff,
0xff, 0xf0, 0x0f, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xf1, 0xe1, 0xff, 0xff, 0xf1, 0xf1, 0xff,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '5', 32x16px
const unsigned char fullscreen_hor_5 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3e, 0x00, 0x7f,
0xfe, 0x3e, 0x00, 0x7f, 0xfe, 0x3e, 0x00, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xff, 0x00, 0xfe, 0x7f, 0xff, 0x81, 0xfe, 0x7f, 0xff, 0xc1, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '6', 32x16px
const unsigned char fullscreen_hor_6 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff,
0xff, 0x80, 0x01, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xff, 0x00, 0xff, 0x7f, 0xff, 0x81, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '7', 32x16px
const unsigned char fullscreen_hor_7 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f,
0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xfe, 0x00, 0x7e, 0x7f, 0xfe, 0x00, 0x7e, 0x7f,
0xff, 0xff, 0x00, 0x7f, 0xff, 0xff, 0x80, 0x7f, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '8', 32x16px
const unsigned char fullscreen_hor_8 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x81, 0xff,
0xff, 0x81, 0x81, 0xff, 0xff, 0x01, 0x00, 0xff, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xff, 0x01, 0x00, 0xff, 0xff, 0x81, 0x81, 0xff, 0xff, 0xc1, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '9', 32x16px
const unsigned char fullscreen_hor_9 [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xff,
0xff, 0xff, 0x81, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'A', 32x16px
const unsigned char fullscreen_hor_A [] = {
0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0x80, 0x01, 0x87, 0xf9, 0x8f, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9,
0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9,
0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf9, 0xcf, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8,
0xcf, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff
};
// 'B', 32x16px
const unsigned char fullscreen_hor_B [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xff, 0x01, 0x00, 0xff, 0xff, 0x81, 0x81, 0xff, 0xff, 0xc1, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'C', 32x16px
const unsigned char fullscreen_hor_C [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff,
0xff, 0x80, 0x01, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f,
0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'D', 32x16px
const unsigned char fullscreen_hor_D [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f,
0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'E', 32x16px
const unsigned char fullscreen_hor_E [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xfe, 0x3f, 0x3e, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'F', 32x16px
const unsigned char fullscreen_hor_F [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x3e, 0x7f, 0xff, 0xfe, 0x3e, 0x7f,
0xff, 0xff, 0x3e, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'G', 32x16px
const unsigned char fullscreen_hor_G [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff,
0xff, 0x80, 0x01, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f,
0xfe, 0x00, 0x7e, 0x7f, 0xfe, 0x00, 0x3e, 0x7f, 0xfe, 0x00, 0x7e, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'H', 32x16px
const unsigned char fullscreen_hor_H [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'I', 32x16px
const unsigned char fullscreen_hor_I [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'J', 32x16px
const unsigned char fullscreen_hor_J [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff,
0xff, 0x80, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'K', 32x16px
const unsigned char fullscreen_hor_K [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xfc, 0x3f, 0xff,
0xfe, 0x01, 0xc0, 0x7f, 0xfe, 0x03, 0xc0, 0x7f, 0xfe, 0x0f, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'L', 32x16px
const unsigned char fullscreen_hor_L [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'M', 32x16px
const unsigned char fullscreen_hor_M [] = {
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f,
0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xfe, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x01, 0xff,
0xfe, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'N', 32x16px
const unsigned char fullscreen_hor_N [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f,
0xfe, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'O', 32x16px
const unsigned char fullscreen_hor_O [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xff,
0xff, 0x80, 0x01, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, 0x3f, 0xfe, 0x7f, 0xfe, 0x3f, 0xfe, 0x7f,
0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'P', 32x16px
const unsigned char fullscreen_hor_P [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x3e, 0x7f, 0xff, 0xfe, 0x3e, 0x7f,
0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Q', 32x16px
const unsigned char fullscreen_hor_Q [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0xff,
0xff, 0xc0, 0x00, 0xff, 0xff, 0x80, 0x00, 0x7f, 0xff, 0x1f, 0xff, 0x3f, 0xfe, 0x1f, 0xff, 0x3f,
0xfc, 0x80, 0x00, 0x7f, 0xf8, 0xc0, 0x00, 0xff, 0xf8, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'R', 32x16px
const unsigned char fullscreen_hor_R [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x3e, 0x7f, 0xff, 0xfc, 0x3e, 0x7f,
0xfe, 0x01, 0x00, 0xff, 0xfe, 0x03, 0x81, 0xff, 0xfe, 0x0f, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'S', 32x16px
const unsigned char fullscreen_hor_S [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0x81, 0xff,
0xfe, 0x3f, 0x81, 0xff, 0xfe, 0x3f, 0x00, 0xff, 0xfe, 0x3e, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xff, 0x00, 0xfe, 0x7f, 0xff, 0x81, 0xfe, 0x7f, 0xff, 0xc1, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'T', 32x16px
const unsigned char fullscreen_hor_T [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f,
0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x7f,
0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'U', 32x16px
const unsigned char fullscreen_hor_U [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x7f,
0xff, 0x80, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x7f, 0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff,
0xff, 0x00, 0x00, 0x7f, 0xff, 0x80, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'V', 32x16px
const unsigned char fullscreen_hor_V [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x7f,
0xff, 0xf8, 0x00, 0x7f, 0xff, 0xf0, 0x00, 0x7f, 0xfe, 0x07, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xff,
0xff, 0xf8, 0x00, 0x7f, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xfe, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'W', 32x16px
const unsigned char fullscreen_hor_W [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x7f, 0xff, 0x80, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x7f,
0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xff, 0x80, 0x00, 0x7f,
0xff, 0xc0, 0x00, 0x7f, 0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f,
0xff, 0x80, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'X', 32x16px
const unsigned char fullscreen_hor_X [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x07, 0xf0, 0x7f,
0xfe, 0x03, 0xc0, 0x7f, 0xfe, 0x01, 0xc0, 0x7f, 0xff, 0xfc, 0x3f, 0xff, 0xff, 0xfe, 0x3f, 0xff,
0xfe, 0x03, 0xc0, 0x7f, 0xfe, 0x03, 0xc0, 0x7f, 0xfe, 0x0f, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Y', 32x16px
const unsigned char fullscreen_hor_Y [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xc0, 0x7f, 0xfe, 0x00, 0x3f, 0xff, 0xfe, 0x00, 0x3f, 0xff,
0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'Z', 32x16px
const unsigned char fullscreen_hor_Z [] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x07, 0xfe, 0x7f,
0xfe, 0x03, 0xfe, 0x7f, 0xfe, 0x01, 0xfe, 0x7f, 0xfe, 0x3c, 0x3e, 0x7f, 0xfe, 0x3e, 0x3e, 0x7f,
0xfe, 0x3f, 0xc0, 0x7f, 0xfe, 0x3f, 0xc0, 0x7f, 0xfe, 0x3f, 0xf0, 0x7f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Test-Bitmap: Ein 16x32 Pixel großer Rahmen
const unsigned char test_bitmap[64] = {
// Oberste Zeile (alle Pixel an)
0xFF, 0xFF,
// 30x die Mitte (nur erster und letzter Pixel an)
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
// Unterste Zeile (alle Pixel an)
0xFF, 0xFF
};
// Array of all bitmaps for convenience. (Total bytes used to store images in = 2880)
const uint8_t fullscreen_hor_allArray_LEN = 36;
const unsigned char* fullscreen_hor_allArray[36] = {
fullscreen_hor_0,
fullscreen_hor_1,
fullscreen_hor_2,
fullscreen_hor_3,
fullscreen_hor_4,
fullscreen_hor_5,
fullscreen_hor_6,
fullscreen_hor_7,
fullscreen_hor_8,
fullscreen_hor_9,
fullscreen_hor_A,
fullscreen_hor_B,
fullscreen_hor_C,
fullscreen_hor_D,
fullscreen_hor_E,
fullscreen_hor_F,
fullscreen_hor_G,
fullscreen_hor_H,
fullscreen_hor_I,
fullscreen_hor_J,
fullscreen_hor_K,
fullscreen_hor_L,
fullscreen_hor_M,
fullscreen_hor_N,
fullscreen_hor_O,
fullscreen_hor_P,
fullscreen_hor_Q,
fullscreen_hor_R,
fullscreen_hor_S,
fullscreen_hor_T,
fullscreen_hor_U,
fullscreen_hor_V,
fullscreen_hor_W,
fullscreen_hor_X,
fullscreen_hor_Y,
fullscreen_hor_Z
};
// --- FINALE set_pixel Funktion (für HORIZONTALEN Framebuffer) ---
// Schreibt einen schwarzen Pixel (setzt Bit auf 0) in den Buffer.
static void set_pixel_final(uint8_t* framebuffer, int x, int y) {
// Die Breite des E-Paper-Buffers in Bytes ist 32 (256 Pixel / 8)
int framebuffer_width_bytes = 32;
// Sicherheitsabfrage
if (x < 0 || x >= 256 || y < 0 || y >= 122) {
return;
}
// Korrekte Formel für einen horizontalen Framebuffer
int byte_index = y * framebuffer_width_bytes + (x / 8);
uint8_t bit_mask = 0x80 >> (x % 8); // MSB-first
// Bit löschen für Schwarz auf weißem Grund
framebuffer[byte_index] &= ~bit_mask;
}
// --- FINALE create_fullscreen_char Funktion ---
// Liest einen horizontalen 16x32 Font und skaliert ihn auf den Framebuffer.
void create_char(char character, uint8_t* framebuffer, uint8_t scale) {
// 1. Hintergrund auf Weiß (0xFF) füllen
memset(framebuffer, 0xFF, 3904);
// 2. Zeichenindex finden
int index = -1;
if (character >= '0' && character <= '9') {
index = character - '0';
} else if (character >= 'A' && character <= 'Z') {
index = (character - 'A') + 10;
}
if (index < 0 || index >= fullscreen_hor_allArray_LEN) return;
const uint8_t* font_bitmap = fullscreen_hor_allArray[index];
// 3. Zentrierung berechnen
int scaled_width = FONT_WIDTH * scale;
int scaled_height = FONT_HEIGHT * scale;
int start_x = (256 - scaled_width) / 2;
int start_y = (122 - scaled_height) / 2;
// 4. Pixel für Pixel durch den kleinen FONT iterieren
for (int font_y = 0; font_y < FONT_HEIGHT; font_y++) {
for (int font_x = 0; font_x < FONT_WIDTH; font_x++) {
// Pixel aus dem HORIZONTALEN Font-Array lesen
int font_byte_index = (font_y * FONT_WIDTH_BYTES) + (font_x / 8);
uint8_t font_bit_mask = 0x80 >> (font_x % 8);
// Wenn der Pixel im Font gesetzt ist...
if (font_bitmap[font_byte_index] & font_bit_mask) {
// ...zeichne einen skalierten Block an die Ziel-Position
for (int sy = 0; sy < scale; sy++) {
for (int sx = 0; sx < scale; sx++) {
set_pixel_final(framebuffer, start_x + (font_x * scale) + sx, start_y + (font_y * scale) + sy);
}
}
}
}
}
}
*/
#include <stdint.h>
#include <string.h>
#include <stdbool.h>
#include "epaper/font_mini.h" // Passe diesen Pfad ggf. an
// =================================================================================
// STANDARD 5x7 ASCII FONT (Horizontal, MSB-first)
// =================================================================================
const unsigned char font5x7[] = {
0x00, 0x00, 0x00, 0x00, 0x00, // sp
0x00, 0x00, 0x5F, 0x00, 0x00, // !
@ -446,23 +67,20 @@ const unsigned char font5x7[] = {
0x61, 0x51, 0x49, 0x45, 0x43, // Z
};
// =================================================================================
// FINALE, VEREINFACHTE ZEICHENFUNKTION
// =================================================================================
void draw_char(char character, uint8_t* framebuffer, int fb_width, int fb_height, uint8_t scale) {
// Hintergrund auf Weiß (0xFF) füllen
memset(framebuffer, 0xFF, (fb_width / 8) * fb_height);
// Zeichen-Index finden (nur druckbare ASCII-Zeichen)
if (character < ' ' || character > 'z') {
character = '?'; // Fallback-Zeichen
character = '?';
}
const uint8_t* font_ptr = font5x7 + (character - ' ') * 5;
int scaled_width = 5 * scale;
int scaled_height = 7 * scale;
int start_x = (fb_width - scaled_width) / 2;
int start_y = (fb_height - scaled_height) / 2;
int start_x = 0;//(fb_width - scaled_width) / 2;
int start_y = 0;//(fb_height - scaled_height) / 2;
// Zeichen Pixel für Pixel malen
for (int y = 0; y < 7; y++) { // Höhe des Fonts ist 7

View File

@ -5,9 +5,11 @@
#include <zephyr/kernel.h>
#include <stdint.h>
const uint8_t XOR_KEY = 0x5A; // Einfacher, geheimer Schlüssel
#include "lora/encryption.h"
void xorCrypt(const char *input, char *output, uint8_t key) {
const uint8_t XOR_KEY = 0x5Au;
void xorCrypt(const char *input, char *output, uint8_t key) {
size_t len = strlen(input);
for (size_t i = 0; i < len; i++) {
output[i] = input[i] ^ key;

View File

@ -5,12 +5,11 @@
#include "utils/displayController.h"
#include "lora/encryption.h"
#include "lora/synch.h"
#include "lora/lora.h"
#include "lora/lorapacket.h"
#define SLEEP_INTERVAL_MS 120000
#define STACK_SIZE 1024
#define PRIORITY 5
@ -18,6 +17,9 @@ const struct device *lora_dev = DEVICE_DT_GET(DT_ALIAS(lora0));
static volatile int rx_count = 0;
static volatile bool message_received = false;
char decoded[128];
uint32_t sleep_intervall_ms = 1;
uint32_t start = 0;
K_THREAD_STACK_DEFINE(lora_stack_area, STACK_SIZE);
struct k_thread lora_thread_data;
@ -43,15 +45,23 @@ void lora_receive_cb(const struct device *dev,
if (size == sizeof(DataPacket)) {
memcpy(&packet, data, sizeof(DataPacket));
rx_count++;
sleep_intervall_ms = (120000 + packet.timestamp);
printk("timestamp: %d, next: %d\n", packet.timestamp, sleep_intervall_ms);
printk("Nachricht empfangen (%d Bytes): %s\n", rx_count, packet.message);
uint32_t stop = k_uptime_get() - start;
xorCrypt(data, decoded, 0x5A);
message_received = true;
printk("Nachricht empfangen (%d Bytes): %s\n", rx_count, size, packet.message);
printk("Zeitpunkt: %d\n", stop);
disable_lora_receive();
}
}
int enable_lora_receive(void)
{
// Empfang sicher neu starten
lora_recv_async(lora_dev, NULL, NULL);
lora_recv_async(lora_dev, NULL);
memset(&samples, 0, sizeof(samples));
int ret = lora_config(lora_dev, &config);
@ -60,19 +70,19 @@ int enable_lora_receive(void)
return ret;
}
ret = lora_recv_async(lora_dev, lora_receive_cb, NULL);
ret = lora_recv_async(lora_dev, lora_receive_cb);
if (ret != 0) {
printk("Empfang konnte nicht aktiviert werden: %d\n", ret);
return ret;
}
printk("📡 LoRa-Empfang aktiviert\n");
printk("LoRa-Empfang aktiviert\n");
return 0;
}
int disable_lora_receive(void)
{
int ret = lora_recv_async(lora_dev, NULL, NULL);
int ret = lora_recv_async(lora_dev, NULL);
if (ret != 0) {
printk("Empfang konnte nicht deaktiviert werden: %d\n", ret);
return ret;
@ -94,16 +104,17 @@ void lora_thread(void *p1, void *p2, void *p3)
disable_lora_receive();
if (message_received) {
dc_draw_something('4');
dc_draw_something(decoded);
}
k_msleep(SLEEP_INTERVAL_MS);
k_msleep(sleep_intervall_ms);
}
}
void lora_init(void)
{
lora_recv_async(lora_dev, NULL, NULL); // sicher deaktivieren
start = k_uptime_get();
lora_recv_async(lora_dev, NULL); // sicher deaktivieren
k_thread_create(&lora_thread_data, lora_stack_area, STACK_SIZE,
lora_thread, NULL, NULL, NULL,
PRIORITY, 0, K_NO_WAIT);

View File

@ -3,37 +3,14 @@
#include <zephyr/sys/printk.h>
#include "utils/displayController.h"
//#include "oled/oled.h"
#include "lora/lora.h"
#include "master/master.h"
#include "utils/buttons.h"
#include "utils/leds.h"
struct k_work_delayable lora_check_work;
uint8_t init_led_and_button(void) {
uint8_t ret;
//if (!gpio_is_ready_dt(&led_green)) return -1;
//ret = gpio_pin_configure_dt(&led_green, GPIO_OUTPUT_INACTIVE);
//if (ret < 0) return ret;
if (!gpio_is_ready_dt(&button0)) return -1;
ret = gpio_pin_configure_dt(&button0, GPIO_INPUT);
if (ret < 0) return ret;
ret = gpio_pin_interrupt_configure_dt(&button0, GPIO_INT_EDGE_TO_ACTIVE);
if (ret < 0) return ret;
//gpio_init_callback(&button_cb_data, button_pressed, BIT(button.pin));
//gpio_add_callback(button.port, &button_cb_data);
return 0;
}
void run_master(void) {
printk("Running as MASTER\n");
@ -44,10 +21,6 @@ void run_master(void) {
int run_slave(const char *display_type, int display_slot)
{
printk("Running as SLAVE\n");
if (init_led_and_button() != 0) {
printk("❌ GPIO-Initialisierung fehlgeschlagen\n");
return -1;
}
dc_init(display_type, display_slot);

View File

@ -7,6 +7,7 @@
#include <string.h>
#include <stdio.h>
#include "lora/encryption.h"
#include "lora/lorapacket.h"
#define DEFAULT_RADIO_NODE DT_ALIAS(lora0)
@ -27,10 +28,9 @@ K_THREAD_STACK_DEFINE(input_stack_area, INPUT_STACK_SIZE);
struct k_thread input_thread_data;
char latest_word[32] = "Hello!";
char encrypted[64];
struct k_mutex word_mutex;
//static DataPacket packet;
struct lora_modem_config tx_config_master = {
.frequency = 868100000,
.bandwidth = BW_125_KHZ,
@ -65,7 +65,7 @@ void uart_input_get_line(char *buf, size_t max_len)
}
void send_lora_message(const char* text)
void send_lora_message(const char* text, uint32_t timer)
{
int ret = lora_config(lora_dev_master, &tx_config_master);
if (ret != 0) {
@ -74,15 +74,16 @@ void send_lora_message(const char* text)
}
DataPacket pkt;
memset(&pkt, 0, sizeof(pkt));
strncpy(pkt.message, text, sizeof(pkt.message));
pkt.timestamp = k_uptime_get();
strncpy(pkt.message, encrypted, sizeof(pkt.message));
pkt.timestamp = timer;
ret = lora_send(lora_dev_master, (uint8_t *)&pkt, sizeof(pkt));
if (ret < 0) {
printk("Senden fehlgeschlagen: %d\n", ret);
} else {
printk("Gesendet: \"%s\"\n", text);
printk("Gesendet: \"%s\"\n", encrypted);
}
}
@ -94,35 +95,33 @@ void send_loop_thread(void *p1, void *p2, void *p3)
char local_copy[32];
while (1) {
printk("Warte 120 Sekunden...\n");
k_msleep(SLEEP_INTERVAL_MS);
printk("Sendephase gestartet\n");
// Wort einfrieren
k_mutex_lock(&word_mutex, K_FOREVER);
strncpy(local_copy, latest_word, sizeof(local_copy));
strncpy(local_copy, encrypted, sizeof(local_copy));
local_copy[sizeof(local_copy) - 1] = '\0';
k_mutex_unlock(&word_mutex);
uint32_t start = k_uptime_get();
while ((k_uptime_get() - start) < active_time_ms) {
send_lora_message(local_copy);
send_lora_message(local_copy, (active_time_ms - (k_uptime_get() - start)));
k_msleep(interval_ms);
}
printk("Sendephase beendet\n");
printk("Warte 120 Sekunden...\n");
k_msleep(SLEEP_INTERVAL_MS);
}
}
void input_thread(void *p1, void *p2, void *p3)
{
char buffer[32];
while (1) {
printk("⌨️ Neues Wort eingeben:\n");
printk("Neues Wort eingeben:\n");
uart_input_get_line(buffer, sizeof(buffer));
k_mutex_lock(&word_mutex, K_FOREVER);
@ -130,7 +129,8 @@ void input_thread(void *p1, void *p2, void *p3)
latest_word[sizeof(latest_word) - 1] = '\0';
k_mutex_unlock(&word_mutex);
printk("✅ Neues Wort gespeichert: \"%s\"\n", latest_word);
printk("Neues Wort gespeichert: \"%s\"\n", latest_word);
xorCrypt(latest_word, encrypted, 0x5A);
}
@ -139,12 +139,12 @@ void input_thread(void *p1, void *p2, void *p3)
void master_init(void)
{
if (!device_is_ready(lora_dev_master)) {
printk("LoRa-Gerät nicht bereit\n");
printk("LoRa-Gerät nicht bereit\n");
return;
}
k_mutex_init(&word_mutex);
xorCrypt(latest_word, encrypted, 0x5A);
k_thread_create(&input_thread_data, input_stack_area, INPUT_STACK_SIZE,
input_thread, NULL, NULL, NULL, INPUT_PRIORITY, 0, K_NO_WAIT);
k_thread_create(&send_thread_data, send_stack_area, STACK_SIZE,

File diff suppressed because it is too large Load Diff

View File

@ -300,12 +300,10 @@ const unsigned char* fullscreen_allArray[36] = {
void set_pixel(uint8_t* framebuffer, int fb_width, int x, int y) {
// Sicherstellen, dass der Pixel innerhalb der Grenzen liegt
// Du solltest auch die fb_height hier prüfen, um sicherzugehen
if (x < 0 || x >= fb_width || y < 0) {
return;
}
// KORREKTE Logik für VERTIKALES/Page-Layout
uint16_t byte_index = x + (y / 8) * fb_width;
uint8_t bit_mask = 1 << (y % 8);
@ -313,10 +311,6 @@ void set_pixel(uint8_t* framebuffer, int fb_width, int x, int y) {
framebuffer[byte_index] |= bit_mask;
}
// Die korrigierte Hauptfunktion
// HINWEIS: Diese Funktion geht davon aus, dass CHAR_HEIGHT durch 8 teilbar ist.
// Bei 32x16 ist das der Fall.
void create_fullscreen_char(char character, uint8_t* framebuffer, int fb_width, int fb_height, uint8_t scale) {
memset(framebuffer, 0, ((fb_width + 7) / 8) * fb_height);
@ -340,21 +334,12 @@ void create_fullscreen_char(char character, uint8_t* framebuffer, int fb_width,
for (int y = 0; y < CHAR_HEIGHT; y++) {
for (int x = 0; x < CHAR_WIDTH; x++) {
// ======================================================================
// ## FINALE KORREKTUR: Pixel aus dem Font-Array Page-basiert lesen ##
// Finde den Index im Font-Array. Die Logik ist jetzt fast identisch zu set_pixel!
int font_page = y / 8;
int font_byte_index = x + (font_page * CHAR_WIDTH);
// Die Bit-Maske für die y-Position (LSB-First)
int font_bit_mask = 1 << (y % 8);
// Prüfen, ob das Bit im Font-Array gesetzt ist
if (char_bitmap[font_byte_index] & font_bit_mask) {
// ======================================================================
// Skalierungs-Logik (bleibt unverändert)
for (int sy = 0; sy < scale; sy++) {
for (int sx = 0; sx < scale; sx++) {
int target_x = start_x + (x * scale) + sx;

View File

@ -14,10 +14,10 @@
#define OLED_H 64
#define OLED_PAGES (OLED_H/8)
// --- Globale Variablen ---
// Globale Variablen
static uint8_t framebuffer[OLED_W * OLED_PAGES];
// --- GPIOs und SPI Konfiguration ---
// GPIOs und SPI Konfiguration
static const struct gpio_dt_spec oled_cs = GPIO_DT_SPEC_GET(OLED_NODE, cs_gpios);
static const struct gpio_dt_spec oled_dc = GPIO_DT_SPEC_GET(OLED_NODE, dc_gpios);
static const struct gpio_dt_spec oled_reset = GPIO_DT_SPEC_GET(OLED_NODE, reset_gpios);
@ -28,7 +28,7 @@ static struct spi_config spi_cfg = {
.cs = NULL,
};
// --- Low-Level Treiberfunktionen ---
// Low-Level Treiberfunktionen
#define OLED_CS_ENABLE gpio_pin_set_raw(oled_cs.port, oled_cs.pin, 0)
#define OLED_CS_DISABLE gpio_pin_set_raw(oled_cs.port, oled_cs.pin, 1)
#define OLED_DC_COMMAND gpio_pin_set_raw(oled_dc.port, oled_dc.pin, 0)
@ -76,131 +76,8 @@ void OLED_Refresh(void) {
OLED_CS_DISABLE;
}
// --- Eingebaute 8x8 Schriftart ---
static const uint8_t font8x8_basic[95][8] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // ' '
{0x18,0x3C,0x3C,0x18,0x18,0x00,0x18,0x00}, // '!'
{0x24,0x7E,0x7E,0x24,0x00,0x00,0x00,0x00}, // '"'
{0x24,0x24,0x7E,0x24,0x7E,0x24,0x24,0x00}, // '#'
{0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00}, // '$'
{0x00,0x66,0x66,0x3C,0x18,0x3C,0x66,0x66}, // '%'
{0x38,0x6C,0x6C,0x38,0x6D,0x66,0x3B,0x00}, // '&'
{0x18,0x3C,0x30,0x00,0x00,0x00,0x00,0x00}, // '''
{0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00}, // '('
{0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00}, // ')'
{0x00,0x00,0x2A,0x1C,0x7F,0x1C,0x2A,0x00}, // '*'
{0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00}, // '+'
{0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30}, // ','
{0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00}, // '-'
{0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00}, // '.'
{0x06,0x0C,0x18,0x30,0x60,0x60,0x60,0x00}, // '/'
{0x3C,0x66,0x6E,0x76,0x7E,0x66,0x66,0x3C}, // '0'
{0x18,0x38,0x18,0x18,0x18,0x18,0x18,0x3C}, // '1'
{0x3C,0x66,0x06,0x0C,0x18,0x30,0x60,0x7E}, // '2'
{0x3C,0x66,0x06,0x3C,0x06,0x06,0x66,0x3C}, // '3'
{0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x0C,0x0C}, // '4'
{0x7E,0x60,0x60,0x7C,0x06,0x06,0x66,0x3C}, // '5'
{0x3C,0x60,0x60,0x7C,0x66,0x66,0x66,0x3C}, // '6'
{0x7E,0x06,0x0C,0x18,0x30,0x30,0x30,0x30}, // '7'
{0x3C,0x66,0x66,0x3C,0x66,0x66,0x66,0x3C}, // '8'
{0x3C,0x66,0x66,0x66,0x3E,0x06,0x06,0x3C}, // '9'
{0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00}, // ':'
{0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30}, // ';'
{0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00}, // '<'
{0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00}, // '='
{0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00}, // '>'
{0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00}, // '?'
{0x3C,0x66,0x6E,0x6A,0x6E,0x60,0x66,0x3C}, // '@'
{0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x66}, // 'A'
{0x7C,0x66,0x66,0x7C,0x66,0x66,0x66,0x7C}, // 'B'
{0x3C,0x66,0x60,0x60,0x60,0x60,0x66,0x3C}, // 'C'
{0x7C,0x66,0x66,0x66,0x66,0x66,0x66,0x7C}, // 'D'
{0x7E,0x60,0x60,0x78,0x60,0x60,0x60,0x7E}, // 'E'
{0x7E,0x60,0x60,0x78,0x60,0x60,0x60,0x60}, // 'F'
{0x3C,0x66,0x60,0x6E,0x66,0x66,0x66,0x3E}, // 'G'
{0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x66}, // 'H'
{0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x3C}, // 'I'
{0x1E,0x0C,0x0C,0x0C,0x0C,0x0C,0xCC,0x78}, // 'J'
{0x66,0x6C,0x78,0x70,0x78,0x6C,0x66,0x00}, // 'K'
{0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x7E}, // 'L'
{0xC6,0xEE,0xFE,0xD6,0xC6,0xC6,0xC6,0x00}, // 'M'
{0x66,0x66,0x76,0x7E,0x6E,0x66,0x66,0x00}, // 'N'
{0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x3C}, // 'O'
{0x7C,0x66,0x66,0x7C,0x60,0x60,0x60,0x60}, // 'P'
{0x3C,0x66,0x66,0x66,0x66,0x6A,0x6C,0x3E}, // 'Q'
{0x7C,0x66,0x66,0x7C,0x6C,0x66,0x66,0x00}, // 'R'
{0x3C,0x66,0x60,0x3C,0x06,0x66,0x3C,0x00}, // 'S'
{0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x18}, // 'T'
{0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x7E}, // 'U'
{0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00}, // 'V'
{0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00}, // 'W'
{0x66,0x66,0x3C,0x18,0x3C,0x66,0x66,0x00}, // 'X'
{0x66,0x66,0x66,0x3C,0x18,0x18,0x18,0x00}, // 'Y'
{0x7E,0x06,0x0C,0x18,0x30,0x60,0x7E,0x00}, // 'Z'
{0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00}, // '['
{0x60,0x30,0x18,0x0C,0x06,0x06,0x06,0x00}, // '\'
{0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00}, // ']'
{0x38,0x6C,0x00,0x00,0x00,0x00,0x00,0x00}, // '^'
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF}, // '_'
{0x30,0x18,0x0C,0x00,0x00,0x00,0x00,0x00}, // '`'
{0x00,0x00,0x3C,0x06,0x3E,0x66,0x66,0x3E}, // 'a'
{0x60,0x60,0x60,0x7C,0x66,0x66,0x66,0x7C}, // 'b'
{0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C}, // 'c'
{0x06,0x06,0x06,0x3E,0x66,0x66,0x66,0x3E}, // 'd'
{0x00,0x00,0x3C,0x66,0x7E,0x60,0x66,0x3C}, // 'e'
{0x1C,0x36,0x30,0x78,0x30,0x30,0x30,0x00}, // 'f'
{0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x66}, // 'g'
{0x60,0x60,0x7C,0x66,0x66,0x66,0x66,0x00}, // 'h'
{0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x3C}, // 'i'
{0x0C,0x00,0x1C,0x0C,0x0C,0xCC,0x78,0x00}, // 'j'
{0x60,0x60,0x6C,0x78,0x70,0x78,0x6C,0x00}, // 'k'
{0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00}, // 'l'
{0x00,0x00,0xEC,0xFE,0xD6,0xD6,0xD6,0x00}, // 'm'
{0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00}, // 'n'
{0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C}, // 'o'
{0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60}, // 'p'
{0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x0E}, // 'q'
{0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00}, // 'r'
{0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00}, // 's'
{0x10,0x30,0x7C,0x30,0x30,0x30,0x18,0x00}, // 't'
{0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00}, // 'u'
{0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00}, // 'v'
{0x00,0x00,0xC6,0xD6,0xFE,0xEE,0xC6,0x00}, // 'w'
{0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00}, // 'x'
{0x00,0x00,0x66,0x66,0x3E,0x06,0x0C,0x78}, // 'y'
{0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00}, // 'z'
{0x0E,0x18,0x18,0x18,0x18,0x18,0x0E,0x00}, // '{'
{0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18}, // '|'
{0x70,0x18,0x18,0x18,0x18,0x18,0x70,0x00}, // '}'
{0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00}, // '~'
};
// Ein bildschirmfüllender Buchstabe 'A' (128x64 Pixel)
// Format: Vertikale Bytes, 1 Bit pro Pixel
static inline void OLED_Draw_Char_Simple(int x0, int y0, char c) {
if (c < ' ' || c > '~') return;
uint8_t char_index = c - ' ';
for (int row = 0; row < 8; row++) {
uint8_t row_data = font8x8_basic[char_index][row];
for (int col = 0; col < 8; col++) {
if (row_data & (0x80 >> col)) {
OLED_Set_Pixel(x0 + col, y0 + row, true);
}
}
}
}
static inline void OLED_Draw_String_Simple(int x, int y, const char *str) {
int current_x = x;
while (*str) {
OLED_Draw_Char_Simple(current_x, y, *str);
current_x += 8;
str++;
}
}
// --- Hauptfunktionen ---
// Hauptfunktionen
void oled_init(void) {
printk("OLED Init (Raw-Modus)...\n");
if (!device_is_ready(spi_dev) || !device_is_ready(oled_cs.port) || !device_is_ready(oled_dc.port) || !device_is_ready(oled_reset.port)) {
@ -244,7 +121,6 @@ void oled_init(void) {
printk("Initialisierung gesendet.\n");
}
// Stelle sicher, dass diese Funktion in deinem Code existiert:
void OLED_Draw_Fullscreen_Bitmap(const uint8_t *bitmap) {
memcpy(framebuffer, bitmap, sizeof(framebuffer));
}
@ -252,10 +128,6 @@ void OLED_Draw_Fullscreen_Bitmap(const uint8_t *bitmap) {
void oled_draw_something(char toDraw) {
OLED_Clear_Buffer();
//OLED_Draw_String_Simple(0, 0, "Hallo!");
//1. Zeichne die bildschirmfüllende Grafik in den Buffer
create_fullscreen_char('M', framebuffer, 128, 64, 4);
//set_pixel(framebuffer, 128, 0, 0);
create_fullscreen_char(toDraw, framebuffer, 128, 64, 4);
OLED_Refresh();
}

View File

@ -1,3 +0,0 @@
#include "utils/buttons.h"
const struct gpio_dt_spec button0 = GPIO_DT_SPEC_GET_OR(SW0_NODE, gpios, {0});

View File

@ -22,7 +22,7 @@ void dc_init(const char *type_str, int slot) {
if (strcmp(type_str, "EPD") == 0) {
#if DT_NODE_EXISTS(DT_NODELABEL(epd))
epd_init();
epd_draw_something('4');
epd_draw_something(' ');
display_type = DISPLAY_EPD;
printk("EPD Display initialisiert (Slot %d)\n", slot);
#else
@ -34,19 +34,20 @@ void dc_init(const char *type_str, int slot) {
} else if (strcmp(type_str, "OLED") == 0) {
#if DT_NODE_EXISTS(DT_NODELABEL(oled))
oled_init();
oled_draw_something('4');
oled_draw_something(' ');
display_type = DISPLAY_OLED;
printk("OLED Display initialisiert (Slot %d)\n", slot);
#endif
} else {
display_type = DISPLAY_NONE;
printk("Unbekannter Displaytyp: %s\n", type_str);
printk("Unbekannter Displaytyp: %s (Slot %d)\n", type_str, slot);
}
initialized = true;
}
void dc_draw_something(char to_draw) {
void dc_draw_something(const char *message) {
char to_draw = message[display_slot];
switch (display_type) {
case DISPLAY_EPD:
#if DT_NODE_EXISTS(DT_NODELABEL(epd))

View File

@ -1,26 +0,0 @@
#include "utils/leds.h"
const struct gpio_dt_spec led_green = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
void turnOutLEDS(void){
gpio_pin_set_dt(&led_green, 0);
// //gpio_pin_set_dt(&led_red, 0);
//gpio_pin_set_dt(&led_blue, 0);
}
void updateLEDS(void){
// if(synchronized){
// gpio_pin_set_dt(&led_green, 1);
// }
/*if(!slave){
gpio_pin_set_dt(&led_blue, 1);
}else{
gpio_pin_set_dt(&led_blue, 0);
}*/
/*if(error){
gpio_pin_set_dt(&led_red, 1);
}else{
gpio_pin_set_dt(&led_red, 0);
}*/
}