This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:software:homelab:library:module:ethernet [2012/01/26 22:30] – heikopikner | et:software:homelab:library:module:ethernet [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 7: | Line 7: | ||
| ===== Konstandid ===== | ===== Konstandid ===== | ||
| - | * **//static uint8_t mymac[6] = {0x54, | + | * **//static uint8_t mymac[6] = {0x54, |
| * **//static uint8_t myip[4] = {192, | * **//static uint8_t myip[4] = {192, | ||
| - | * **//static uint8_t buf[BUFFER_SIZE+1]// | + | * **//static uint8_t buf[BUFFER_SIZE+1]// |
| Line 15: | Line 15: | ||
| * **//void ethernet_standby(void)// | * **//void ethernet_standby(void)// | ||
| - | Viib etherneti kontrolleri madala energiatarbega olekusse, juhul kui teda ei kasutata: | + | Viib etherneti kontrolleri |
| * **//void ethernet_init(uint8_t *mac, uint8_t *ip)//** \\ | * **//void ethernet_init(uint8_t *mac, uint8_t *ip)//** \\ | ||
| Line 22: | Line 22: | ||
| * //*ip// - IP aadressi massiiv. | * //*ip// - IP aadressi massiiv. | ||
| - | * **//void ethernet_get_packet (uint8_t *buffer)//** \\ | + | * **//uint16_t |
| - | Kuulab võrku kuni saab endale mõeldud ja andmeid sisaldava andmepaketi. Parameetrid: | + | Kuulab võrku, kuni saab endale mõeldud ja andmeid sisaldava andmepaketi. Parameetrid: |
| + | * //maxlen// - maksimaalne lubatud andmepuhvri suurus. | ||
| * //*buffer// - massiiv, kuhu salvestab vastuvõetud andmed edasiseks töötluseks. | * //*buffer// - massiiv, kuhu salvestab vastuvõetud andmed edasiseks töötluseks. | ||
| + | * Kui pakett on saabunud, tagastab saabunud paketi pikkuse baitides, vastasel juhul tagastab 0. | ||
| - | * **// | + | * **// |
| - | Analüüsib, | + | Analüüsib, |
| - | * //*buffer// - andmete massiiv, mida analüüsida. | + | * //*buf// - andmete massiiv, mida analüüsida. |
| - | * Tagastab | + | * //plen// - saabunud paketi pikkus baitides. |
| + | * Tagastab | ||
| - | * **// | + | * **// |
| //** \\ | //** \\ | ||
| Laeb veebilehe kuvamiseks html-koodi kontrolleri programmimälust TCP saatmise puhvrisse. Parameetrid: | Laeb veebilehe kuvamiseks html-koodi kontrolleri programmimälust TCP saatmise puhvrisse. Parameetrid: | ||
| * //*buf// - andmemassiiv, | * //*buf// - andmemassiiv, | ||
| * //pos// - andmete lõpu aadress puhvris, mida tuleb jälgida, kui andmeid üksteise järele laadida sinna. Esimene aadress on 0. | * //pos// - andmete lõpu aadress puhvris, mida tuleb jälgida, kui andmeid üksteise järele laadida sinna. Esimene aadress on 0. | ||
| - | * // | + | * // |
| * Tagastab andmejada lõpu aadressi, mida saab sisestada parameetrina järgmise html-koodi laadimiseks. | * Tagastab andmejada lõpu aadressi, mida saab sisestada parameetrina järgmise html-koodi laadimiseks. | ||
| - | * **//void ethernet_print_webpage (uint8_t *bf, uint16_t | + | * **//void ethernet_print_webpage (uint8_t *buf, |
| Kuvab veebilehte vastavalt valmislaetud html-koodile. Parameetrid: | Kuvab veebilehte vastavalt valmislaetud html-koodile. Parameetrid: | ||
| - | * //*bf// - andmemassiiv, | + | * //*buf// - andmemassiiv, |
| - | * //plen// - andmete lõpu aadress puhvris, milleni kuvab koodi. | + | * //dplen// - andmete lõpu aadress puhvris, milleni kuvab koodi. |
| - | ~~PB~~ | + | < |
| ===== Näide ===== | ===== Näide ===== | ||
| Line 52: | Line 55: | ||
| #include < | #include < | ||
| #include < | #include < | ||
| - | #include < | ||
| - | // | + | // Veebilehe koostamiseks eraldi funktsioon |
| uint16_t ethernet_load_webpage(uint8_t on_off); | uint16_t ethernet_load_webpage(uint8_t on_off); | ||
| Line 71: | Line 73: | ||
| #define BUFFER_SIZE 600 | #define BUFFER_SIZE 600 | ||
| static uint8_t buf[BUFFER_SIZE+1]; | static uint8_t buf[BUFFER_SIZE+1]; | ||
| - | |||
| - | //LED PB7 muutuja määramine | ||
| - | pin debug_led = PIN(B, 7); | ||
| - | |||
| int main(void) | int main(void) | ||
| { | { | ||
| - | uint16_t pktlen; | + | |
| - | char *str; | + | char *str; |
| - | + | ||
| - | // LED PB7 on väljund | + | |
| - | pin_setup_output(debug_led); | + | |
| - | // Etherneti initseerimine vastavalt etteantud aadressidele | + | |
| - | ethernet_init(mymac, | + | ethernet_init(mymac, |
| - | | + | |
| - | { | + | { |
| - | // Võtab vastu pakette, kuni saab endale määratud andmetega paketi | + | // Võtab vastu pakette, kuni saab endale määratud andmetega paketi |
| - | pktlen=ethernet_get_packet(BUFFER_SIZE, | + | pktlen=ethernet_get_packet(BUFFER_SIZE, |
| - | // Teeb paketi eeltöötluse ja vastab " | + | // Teeb paketi eeltöötluse ja vastab " |
| gPlen=ethernet_analyse_packet(buf, | gPlen=ethernet_analyse_packet(buf, | ||
| - | // Kui on URL-is on infot, siis hakkab seda analüüsima | + | |
| if (gPlen!=0) | if (gPlen!=0) | ||
| - | { | + | |
| - | // Laeb URL-i aadressiosa viita " | + | // Laeb URL-i aadressiosa viita " |
| + | //URL-is on neli esimest kohta IP aadressi numbrid. | ||
| str = (char *)& | str = (char *)& | ||
| - | // Otsib URL-ist stringi "/1" | + | |
| - | if (strncmp("/ | + | if (strncmp("/ |
| - | { | + | { |
| - | | + | // Laeb veebilehe |
| - | gPlen = ethernet_load_webpage(0); | + | gPlen = ethernet_load_webpage(0); |
| - | + | } | |
| - | // LED põlema | + | |
| - | pin_clear(debug_led); | + | |
| - | + | ||
| - | } | + | |
| - | // Järgmisena otsib URL-ist stringi "/ | + | |
| - | else if (strncmp("/ | + | |
| - | { | + | |
| - | // Laeb veebilehe | + | |
| - | gPlen = ethernet_load_webpage(1); | + | |
| - | + | ||
| - | // LED kustutada | + | |
| - | pin_set(debug_led); | + | |
| - | + | ||
| - | } | + | |
| - | // Muul juhul lae veebileht vastavalt LED olekule | + | |
| - | else | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | // Kuva varem valmis laetud veebileht | + | |
| - | ethernet_print_webpage (buf, | + | ethernet_print_webpage (buf, |
| - | + | ||
| - | } | + | |
| } | } | ||
| return (0); | return (0); | ||
| Line 142: | Line 118: | ||
| uint16_t plen=0; | uint16_t plen=0; | ||
| - | // Laeb html koodi saatmiseks puhvrisse | + | |
| - | // Need suured stringid on salvestatud PSTR makro abil programmimälusse, | + | // Need suured stringid on salvestatud PSTR makro abil programmimälusse, |
| - | // et mitte raisata liigselt töömälu. | + | // et mitte raisata liigselt töömälu. |
| - | // Laeb veebilehe päise | + | |
| - | | + | plen=ethernet_load_data |
| - | | + | |
| - | plen=ethernet_load_data(buf, | + | |
| - | + | | |
| - | // Kui LED ei põle, siis kuva nii. | + | |
| - | if (on_off) | + | ); |
| - | { | + | |
| - | | + | // Laeb veebilehe sisu, milleks on tekst "Kodulabor" |
| - | } | + | plen=ethernet_load_data(buf, |
| - | // Kui LED põleb. | + | |
| - | else | + | |
| - | | + | |
| - | plen=ethernet_load_data(buf, | + | |
| - | } | + | |
| - | // Lae " | + | |
| - | plen=ethernet_load_data(buf, | + | |
| - | + | ||
| - | // Lae LED oleku muutmise nupp vastavalt selle olekule. | + | |
| - | if (on_off) | + | |
| - | { | + | |
| - | plen=ethernet_load_data(buf, | + | |
| - | + | ||
| - | } | + | |
| - | else | + | |
| - | { | + | |
| - | | + | |
| - | } | ||
| - | |||
| // Väljasta andmete lõpu aadress puhvris | // Väljasta andmete lõpu aadress puhvris | ||
| return(plen); | return(plen); | ||
| Line 181: | Line 138: | ||
| </ | </ | ||
| - | |||