Hàm đọc giá trị từ trường option vào 1 biến: Code:

Một phần của tài liệu ATMEGA32 GIAO TIẾP VỚI ENC28J60 QUA SPI – AVR WEBSERVER (Trang 101 - 102)

- Còn dữ liệu ứng dụng trong gói TCP/UDP đương nhiên là chỉ do lớp ứng dụng tạo ra mà thôị Lỡ hẹn đã lâu, hôm nay tiếp tục với giao thức DHCP, còn thằng này với HTTP nữa là xong.

Hàm đọc giá trị từ trường option vào 1 biến: Code:

Trước hết ta khai báo các biến sử dụng : Code:

//--- ---

unsigned long DhcpServerIP; unsigned long DhcpTransactID; unsigned long DhcpLeaseTime; unsigned char macađr[6]; //

unsigned char DhcpTimeout; unsigned char DhcpRetries;

Viết hàm khởi tạo giao thức DHCP:Code: Code:

//--- ---

//Ham khoi tao cac thong so ban dau cho DHCP void dhcpInit(void)

{

ethGetMacAđress(macađr);

DhcpTransactID = *((unsigned long*)&macađr[0]); DhcpLeaseTime = 0;

DhcpTimeout = 1;

DhcpRetries = DHCP_RETRIES; }

Hàm ghi giá trị vào trường option của DHCP, mỗi trường option sẽ bắt đầu bằng 1 byte option code, tiếp đến là 1 byte chiều dài của giá trị option, theo sau là các byte giá trị của option: code, tiếp đến là 1 byte chiều dài của giá trị option, theo sau là các byte giá trị của option: Code:

//--- ---

//Ham set cac option cua DHCP

unsigned char* dhcpSetOption(unsigned char* options, unsigned char optcode, unsigned char optlen, void* optvalptr)

{

*options++ = optcode; *options++ = optlen; while(optlen--) {

*options++ = *(unsigned char*)optvalptr++; }

*options = DHCP_OPT_END; return options;

}

Hàm đọc giá trị từ trường option vào 1 biến:Code: Code:

//--- ---

//Ham lay cac option cua DHCP

unsigned char dhcpGetOption(unsigned char* options, unsigned char optcode, unsigned char optlen, void* optvalptr)

unsigned char i; for (;;)

{

if(*options == DHCP_OPT_PAD) options++;

else if(*options == DHCP_OPT_END) break;

Một phần của tài liệu ATMEGA32 GIAO TIẾP VỚI ENC28J60 QUA SPI – AVR WEBSERVER (Trang 101 - 102)