Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Smoothie by
libs/Network/net_util.h
- Committer:
- Michael J. Spencer
- Date:
- 2014-02-28
- Revision:
- 2:1df0b61d3b5a
File content as of revision 2:1df0b61d3b5a:
#ifndef _NET_UTIL_H #define _NET_UTIL_H #include <cstdint> #include <cstdlib> #include <cstdio> #include <cstring> #define HARDWARE_TYPE_ETHERNET 1 #define SIZEOF_MAC 6 #define SIZEOF_IP 4 #define MAC_STR_LEN 18 #define IP_STR_LEN 16 // uint16_t htons(uint16_t v); #define htons(a) ((((a) >> 8) & 0xFF) | (((a) << 8) & 0xFF00)) #define ntohs(a) htons(a) // uint32_t htonl(uint32_t v); #define htonl(a) ((((a) >> 24) & 0x000000FF) | (((a) >> 8) & 0x0000FF00) | (((a) << 8) & 0x00FF0000) | (((a) << 24) & 0xFF000000)) #define ntohl(a) htonl(a) #define compare_ip(ip1, ip2, mask) (((ip1) & (mask)) == ((ip2) & (mask))) #define IPA(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) typedef uint32_t IP_ADDR; typedef uint32_t* NET_PACKET; typedef uint8_t* NET_PAYLOAD; // class netcore; class Encapsulated; class Encapsulator; class NetworkInterface; class Encapsulated { public: virtual int receive(NetworkInterface*, NET_PACKET, int) = 0; virtual int construct(NetworkInterface*, NET_PACKET, int) = 0; }; class Encapsulator : public Encapsulated { public: virtual NET_PACKET get_new_packet_buffer(NetworkInterface*) = 0; virtual NET_PAYLOAD get_payload_buffer(NET_PACKET) = 0; virtual void set_payload_length(NET_PACKET, int) = 0; }; class Period_receiver { public: virtual int periodical(int, NetworkInterface*, NET_PACKET, int) = 0; }; class NetworkInterface : public Encapsulator { public: virtual const uint8_t* get_name(void) { return interface_name; }; // virtual void provide_net(netcore* n){ net = n; } // virtual bool if_up(void) = 0; virtual bool can_read_packet(void) = 0; virtual int read_packet(uint8_t**) = 0; void release_read_packet(uint8_t*); virtual bool can_write_packet(void) = 0; virtual int write_packet(uint8_t *, int) = 0; virtual void* request_packet_buffer(void) = 0; virtual void set_ip(uint32_t new_ip) { ip_address = new_ip; }; virtual void set_mac(uint8_t new_mac[6]) { memcpy(mac_address, new_mac, 6); }; bool isUp() { return up; } // netcore* net; uint8_t* interface_name; IP_ADDR ip_address; IP_ADDR ip_mask; uint8_t mac_address[6]; bool up; }; extern const uint8_t broadcast[6]; bool compare_mac(const uint8_t*, const uint8_t*, const uint8_t*); int format_mac(uint8_t*, uint8_t*); int format_ip(uint32_t, uint8_t*); int checksum16(uint8_t*, int, int); uint32_t crc32(uint8_t* buf, int length); #endif /* _NET_UTIL_H */