Jak v C / Arduino pridat funkci do knihovny?

Lubos Medovarsky lubos.hwlist na accelera-networks.com
Sobota Leden 20 14:54:33 CET 2024


Zdravim,

z pohladu tych, ktori pisu a zdielaju podobne kniznice mi pripada 
vhodnejsie nez vselijake hacky vytvorit jednym klikom kopiu - "fork" 
kniznice na Githube, upravit ju tak, aby bola zmena vseobecne uzitocna, 
a zaslat dalsim klikom pull request povodnym vyvojarom s kratkym 
vysvetlenim, na co je uprava dobra. Zlozitost tejto aktivity je 
subjektivne nizka, odporucal by som aspon to raz skusit.

Vysledkom zvycajne byva zapracovanie upravy do "upstreamu", podakovanie, 
referencia na autora v historii zmien, multimetrom tazko meratelny dobry 
pocit, a odpadava potreba udrzby vlastnej upravenej kopie.

Su za tym ludia podobneho zamerania, zvycajne ti slusnejsi, ktori
pochopia dokonca aj to, ak druha strana neovlada dokonale prave ich 
matersky alebo programovaci jazyk.


S pozdravom

LM

On 1/20/24 01:17, Pavel Kutina wrote:
> Zdravim,
> 
> resim drobnost, ale trochu si s ni lamu hlavu, v C fakt nejsem moc dobrej.
> 
> Mam Arduino, v nem pouzivam jednu ze sdilenych knihoven (standardni 
> LiquidCrystal), ale protoze ji pouzivam ve spojeni s Futaba VFD, docela 
> by se mi hodilo mit tam rizeny i jas, coz u LCD neni potreba. Tohle jsou 
> originaly:
> 
> https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.cpp
> https://github.com/arduino-libraries/LiquidCrystal/blob/master/src/LiquidCrystal.h
> 
> Ja potrebuju pripsat v podstate jednu funkci:
> 
> // This will set bright of text
> void LiquidCrystal::bright(uint8_t brg) {
>   command(LCD_FUNCTIONSET | _displayfunction | brg);
> }
> 
> Blbe je, ze _displayfunction je v .h definovana jako private, takze se k 
> ni z meho kodu nedostanu (nebo to neumim). Resenim je upravit si kod 
> knihovny i headeru natvrdo - funkci jsem pripsal, v .h jsem ji 
> deklaroval, pridal jsem definice pro nastaveni jasu. V mem kodu ji 
> zavolam jako:
> 
> lcd.bright(LCD_BRIGHT25);
> 
> A vsechno funguje.
> 
> Potud OK. Ale protoze je to jedna se sdilenych knihoven, muze u ni dojit 
> casem k nejake uprave a predpokladam, ze pri updatu to moji lokalni 
> upravu zahodi. Da se tohle nejak resit? Udelat si vlastni fork a 
> udrzovat to se mi uplne nechce - da se ta knihovna nejak rozsirit a 
> dostanu se pak i k te privatni promenne? V ni je schovane aktualni 
> nastaveni displeje - pocet radku, zpusob komunikace. V podstate jde o 
> stav tri bitu, ale protoze z displeje nectu, jen se do nej zapisuje, tak 
> neni jak je zjistit, takze se jejich stav udrzuje v pameti.
> 
> Napadne nekoho, jak to udelat pokud mozno spravne?
> 
> Diky.
> 
> Pavel Kutina



Další informace o konferenci Hw-list