Konference: Počítač SHARP MZ-800 a emulátory
Od: | Michal Hučík |
Datum: | 25.11.2013 10:37 |
Předmět: | Re: Stare projekty (Unikarta) + mk3 |
Martine, je super, ze mam konecne nejakou zpetnou vazbu o tom, jak novy firmware funguje na ostatnich Unikartach.
S temi CR a LF je to docela mrzeni a myslim, ze se k tomu jeste budu muset vratit a nejak to umravnit. Zrejme by si to mel kazdy konfigurovat primo na sve Unikarte a to samostatne jak pro Ushell rs232/tcp, tak i pro debugovaci vypisy.
Take jsem premyslel, zda tam nenaimplementovat i nejaky debug stream, ktery by mi ty ladici informace posilal treba pres UDP nekam do terminalu.
Momentalne mam hotovou aplikacni vrstvu pro DHCP, HTTP GET, DNS resolver a FTP klient. O vikendu jsem zacal psat a testovat API. Je to zatim jen tak cvicne a je velmi pravdepodobne, ze se to zmenni. Tady je na ochutnavku aktualni popis API pro DNS resolver:
DNS Resolver:
//
// Pro DNS dotazy mame v multitasku k dispozici nekolik vlaken.
// Kazde vlakno se muze nezavisle dotazovat bud na domenove jmeno, nebo na IP adresu.
//
// Vlozeni dotazu probiha prikazem cmdRLSVQUERYA, nebo cmdRLSVQUERYN. Po jeho uspesnem vlozeni
// obdrzime cislo vlakna, ktere vyrizuje nas dotaz. Pokud dotaz nelze spustit, tak obdrzime
// hodnotu -1 (0xff) pokud DNS resolver nebezi, nebo -2 (0xfe) pokud neni k dispozici zadne volne vlakno.
//
// U kazdeho jednotliveho dotazu se nastavuje jeho interrupt mode. Jestlize ma vlakno v interrupt mode
// hodnotu 1, tak jakmile je tento dotaz zodpovezen, nebo ukoncen s chybou, tak Unikarta posle do Sharpa interrupt.
// Zaroven hodnota interrupt mode 1 zajisti uzamceni vlakna proti tomu, aby bylo prepsano jinym dotazem drive,
// nez bude precten vysledek.
//
// Precteni vysledku vlakna se provede prikazem cmdRLSVTHREAD. Tento prikaz deaktivuje interrupt
// vytvoreny timto vlaknem a odemkne vlakno pro dalsi pouziti.
//
// Vlakna u kterych neni nastaven interrupt mode mohou byt okamzite po dokonceni dotazu opet pouzita.
//
//
#define cmdRSLVSTRT 0x80 // Zapne, nebo prekonfiguruje DNS resolver.
//
// Vstup: 4B - IP adresa DNS serveru (a.b.c.d):
// 1. a
// 2. b
// 3. c
// 4. d
//
// Pokud jiz resolver bezi, tak se pouze zmeni adresa DNS serveru.
// Jestlize pri teto zmene prave probihaly nejake dotazy, tak samozrejme skonci jako STATE_ERROR.
#define cmdRSLVSTOP 0x81 // Vypne DNS resolver.
#define cmdRSLVGCFG 0x82 // Precteni konfigurace DNS resolveru.
//
// Vystup: 4B - ipadresa
//
// Pokud nameserver nebezi (viz cmdRSLVSTATUS), vraci 00 00 00 00
#define cmdRSLVGDOMAIN 0x83 // Precteni implicitni domeny.
//
// Vystup: string, 0x0d
#define cmdRSLVSDOMAIN 0x84 // Nastaveni implicitni domeny.
//
// Vstup: string, 0x0d
#define cmdRSLVSTATUS 0x85 // Sdeli status DNS resolveru:
//
// Vystup:
//
// 1B - pocet vlaken,
// nebo 0x00 pokud DNS resolver nebezi
//
// Pokud 1. bajt nebyl 0x00, tak nasleduje tabulka ve ktere je kazde vlakno zastoupeno jednim bajtem.
// Jsou razeny postupne od vlakna s ID 0 az po posledni.
//
// 0. - 3. bit:
// 0 - STATE_UNUSED
// 1 - STATE_NEW
// 2 - STATE_ASKING
// 4 - STATE_DONE
// 8 - STATE_ERROR
//
// 7. bit - interrupt mode
// Pokud je bit nastaven, tak to znamena, ze po vyrizeni vlakna (STATE_DONE, nebo STATE_ERROR)
// bude poslan do Sharpa interrupt.
#define cmdRLSVQUERYA 0x86 // Zadost o preklad jmena na IP adresu (query):
//
// Vstup:
// 1B - interrupt mode:
// 0x00 - rezim interruptu je pro tento dotaz vypnuty
// 0x01 - jakmile prejde vlakno s timto dotazem do STATE_DONE,
// nebo STATE_ERROR, tak posle do Sharpa interrupt
//
// string. 0x0d - domenove jmeno (pokud je v resolveru nakonfigurovana
// implicitni domena, tak staci pouzit jen prvni cast domenoveho
// jmena a resolver si za nej sam prida tecku a nazev domeny)
//
// Vystup: 1B cislo vlakna, ktere vyrizuje tento dotaz, nebo:
// 0xff - resolver nebezi
#define cmdRLSVQUERYN 0x87 // Zadost o preklad IP adresy na jmeno (query):
//
// Vstup:
// 1B - mode:
// 1. bit je nastaveni interruptu
// 0 - interrupt neni aktivovan
// 1 - po dokonceni posleme do Sharpa interrupt
// 4B - IP adresa
//
// Vystup: 1B cislo vlakna, ktere vyrizuje tento dotaz, nebo:
// 0xff - resolver nebezi
#define cmdRLSVTHREAD 0x88 // Precte vlakno z resolveru.
//
// Vstup - 1B cislo vlakna
//
// Vystup:
// 1B status (viz. cmdRSLVSTATUS), nebo:
// 0xff - resolver nebezi
// 0xfe - pokud cislo vlakna neni validni
//
// Nasledujici data budou validni jen v pripade, ze 1. bajt mel hodnotu STATE_DONE.
//
// 1B typ dotazu:
// 0x00 - podle jmena se resolvovala IP
// 0x01 - podle IP se hledalo jmeno
//
// 4B - IP adresa
//
// 1B - delka domenoveho jmena + 0x0d
//
// string, 0x0d - domenove jmeno
//
// Pokud byl pri dotazu u vlakna pozadovan interrupt, tak se timto prikazem pro dane vlakno deaktivuje.
#define cmdRLSVLOOKA 0x89 // Lookup - prohledne jiz uspesne dokoncene thready, zda se se v nich nenachazi preklad domenoveho jmena na IP adresu
//
// Vstup:
//
// string. 0x0d - domenove jmeno (pokud je v resolveru nakonfigurovana
// implicitni domena, tak staci pouzit jen prvni cast domenoveho
// jmena a resolver si za nej sam prida tecku a nazev domeny)
//
// Vystup: 1B - odpoved, zda byl lookup uspesny, nebo:
// 0xff - resolver nebezi
//
// 0 - nenalezeno
// 1 - nalezeno
//
// Pokud bylo nalezeno, tak nasleduji 4B s IP adresou.
#define cmdRLSVLOOKN 0x8A
// Lookup - prohledne jiz uspesne dokoncene thready, zda se se v nich nenachazi preklad IP adresy na jmeno.
//
// Vstup:
//
// 4B - IP adresa
//
// Vystup:
// 1B - delka domenoveho jmena, nebo
// 0x00 - nenalezeno
//
// string, 0x0d
#define cmdRLSVIP2TXT 0x8b // Prevod IP adresy na text - "192.168.0.1\'x0d"
//
// Vstup: 4B - IP adresa
//
//
// Vystup:
//
// 1B delka retezce
// string, 0x0d
//
#define cmdRLSVTXT2IP 0x8c // Prevod textu - "192.168.0.1\'x0d" na IP.
//
// Vstup: string + 0x0d
//
//
// Vystup:
//
// 1B - uspesnost prevodu
// 0 - nepovedlo se
// 1 - povedlo se a nasleduje IP
//
// 4B - IP adresa
Dne 25.11.2013 0:45, Martin Lukasek (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a):
Cau chlapi,
tak jsem se konecne dostal k otestovani sitovani na Unikarte a vse e mi slape na obou kartach v pohode. Na puvodni Michalove a Vaskove Unikarte chodi shell, LANINFO, NETSTAT, APR, LISTEN a samozrejme pinga ;-) Naprogramovani pres Flash Loader slo naprosto hladce. Jak Michal pise, sviti jen jedna LEDka. Asi bych i uvital CR+LF misto jen LF, protoze jedu na widlich, ale to je otazka na flame ;-) Mam to zatim bez propojky z ENC signal /INT do pinu c.52 v STM32 (PC11) a slape to v pohode. Ushell pro Win jsem zatim neupravoval, ale urcite to udelam.
Na Bohousove unikarte je zatim jen LANINFO, ale zase je navic web server, kde je super featurka zobrazeni obrazovky ;-) To je moc pekne. Co takhle live stream i s ovladanim klavesnice, proste Remote Console? Ehmm, jo, vim, uz mlcim ;-)
Uz se tesim na nejakou tu API podporu. S temi sitovymi hrami bych nebyl tak skepticky. Urcite neco osobne zkusim napsat.
Krasny vecer
Martin
---
POZOR! Provoz systému Pandora.cz bude k 30. listopadu 2013 ukončen.
Více
[2013/1 (17)] [2013/2 (52)] [2013/3 (60)] [2013/4 (68)] [2013/5 (60)] [2013/6 (42)] [2013/7 (9)] [2013/8 (48)] [2013/9 (1)] [2013/10 (40)] [2013/11 (45)]