Ahoj Martine,
abych rekl pravdu, tak to pridani \r pred kazdy \n neni v pripade TCP Ushellu zrovna nejjednodussi ... Obe varianty shellu, RS232 i TCP, pouzivaji stejne jadro a stejne konstanty - rozumej textove retezce z FLASH. U RS232 celkem jednoduse pridavame CR pred kazdy LF ve vystupni funkci sprintf(), ktera zpracuje retezec znak po znaku a ty pak odesila rovnou na seriovy vystup.
V pripade TCP verze shellu vsak ty textove data odchazeji trochu jinou metodou. Nejlepsim resenim by tedy bylo bud jejich "nastrihani" tak, aby sel ven kazdy radek textu a kazda koncovka jednim samostatnym packetem, coz je docela neekonomicke. Nebo vytvorenim dalsiho bufferu do ktereho by se ty texty nejprve poskladaly ve spravnem formatovani - na coz zase v pripade teto Unikarty nemame pameti na rozdavani. V pripade kratkych textu ted odesilame obsah packetu primo z FLASH a v pripade, ze jde o poskladanou odpoved, tak pouzivame univerzalni IO buffer Ushellu. To znamena, ze napr. LANINFO jsem si tedy nejprve rozepsal a spocital vsechny mozne kombinace delky vsech variabilnich textu a pak jsem to natvrdo poskladal tak, aby jsme se vzdy vesli do maximalni delky toho IO bufferu. Takze napr. pridanim dalsiho znaku ke kazdemu radku ve vystupu z LANINFO by jsme museli cely prikaz preskladat tak, aby se nam tam zase vesel. Ne ze by se jednalo o svetoborny problem, nicmene do jeho finalniho vyreseni se mi ted moc nechce :)
Chtel jsem ti navrhnout at pouzivas putty ve kterem si lze zapnout pridavani CR znaku, ale byl jsem docela prekvapeny, jak je ve win7 telnet v putty priserne pomaly (at uz pridava, nebo nepridava CR). Je zajimave, ze kdyz se v tom samem putty pripojim pres ssh nekam do linuxu a udelam telnet z nej, tak uz to zase beha krasne rychle. Vyrazne rychlejsi uz byl ve windows telneti klient od Microsoftu, ktery zrejme pouzivas, ale taky to nebyla zadna velka slava :(
Co se tyka auto disconnect timeoutu, tak asi nejlepsi bude naimplementovat do shellu prikaz, kterym si bude mozne zmenit jeho hodnotu, nebo jej uplne vypnout. Ten auto disconnect je tam hlavne proto, ze kdyz je na Ushellu poveseny jeden klient, tak uz se tam nepripoji zadny dalsi. Ja tady mam bezne otevreno treba 20 xtermu a docela rychle zapominam, ze jsem v nekterem neco nechal otevrene :) Pro debugovani pouzivam RS232. Prenosy souboru na SD provadim pres TCP shell - je fajn, ze kvuli tomu uz ted nemusim zavirat terminal s debugovacimi vypisy.
Dalsi testovaci verzi firmware se chystam vydat co mozna nejdrive.
BTW: tato nova konference uz ma v tuto chvili 41 prihlasenych ucastniku. Nekteri dokonce ani nebyli prihlaseni na pandore - alespon ne pod stejnou mailovou adresou. Musim rict, ze kdyz sem ted pisu o tom jak neco programuju, tak mam i trochu tremu :)
S pozdravem -
Michal Hucik
Dne 26.11.2013 20:56, Martin Lukasek napsal(a):
Super, kdyby slo to CR+LF poresti nejakym nastavenim, bylo by to bezva. Na druhou stranu, poprat se s tim da nastavenim vetsiny terminalu. Bohuzel, ne vsechny to umi. Na Linuxu je problem, kdybys posilal oba znaky? Bez nastaveni terminalu telnet na Woknech vypada takto
Kdyz budes mit nejakou dalsi betaverzi, tak posli, rad vyzkousim. Jeste by mozna bylo fajn, kdyby sel nastavit timeout, ted mi to prijde docela rychle, zvlast kdyz clovek dela pokusy a necha to chvili trcet.
To API pro DNS resolver mi prijde dost detailni, je otazka, zda je to vubec potreba. Aby Ti brzo nedosly cisla prikazu ;-) Treba ty Lookupy nebo ta prace s implicitni domenou mi z pohledu aplikace na Sharpovi neprijdou dulezite.
Hezky vecer