An access controller for man doors at our facility. It receives Wiegand signals from a keypad/card reader and activates a relay to open the door. Access codes are stored in EEPROM. The active code list is updated from TFTP on a local server.
Dependencies: 24LCxx_I2C CardReader USBHOST
TFTPClient.h
- Committer:
- acesrobertm
- Date:
- 2017-09-25
- Revision:
- 0:a56239ae90c2
File content as of revision 0:a56239ae90c2:
/* TFTPClient.h */ /** \file TFTP Client header file */ #ifndef TFTPCLIENT_H_ #define TFTPCLIENT_H_ #include <cstdint> #include "EthernetInterface.h" #include "NetworkStack.h" #include "UDPSocket.h" #include <inet.h> using std::uint8_t; using std::uint16_t; using std::uint32_t; #define TFTP_DEFAULT_PORT 69 #define TFTP_DEFAULT_TIMEOUT 4000 #define TFTP_MAX_DATA_SIZE 512 #define TFTP_MAX_PACKET_SIZE TFTP_MAX_DATA_SIZE+4 #define MAX_TFTP_FILE_SIZE 30000 // bytes enum TFTPOpcode { RRQ = 1, // Read request WRQ, // Write request DATA, // Data packet ACK, // Acknowledgement ERR // Error }; enum TFTPError { NOT_DEFINED, // Not defined, see error message (if any). FILE_NOT_FOUND, // File not found. ACCESS_VIOLATION, // Access violation. DISK_FULL, // Disk full or allocation exceeded. ILLEGAL_OP, // Illegal TFTP operation. UNKNOWN_TID, // Unknown transfer ID. FILE_EXISTS, // File already exists. NO_USER, // No such user. }; class TFTPClient { public: TFTPClient(EthernetInterface *stack) : m_eth(stack){ m_download_in_progress = false; m_tftp_addr = NULL; } /**Get current time (blocking) Retrieve file from TFTP server. Non-blocking @param host TFTP server IPv4 address or hostname (will be resolved via DNS) @param filename File to retrieve from the server. */ bool readFile(char* data, const char* host, const char* filename, const uint16_t port = TFTP_DEFAULT_PORT, const uint32_t timeout = TFTP_DEFAULT_TIMEOUT); int update(); private: EthernetInterface *m_eth; UDPSocket m_sock; SocketAddress* m_tftp_addr; char* m_data; int m_bytes_sent; int m_bytes_received; int m_block_number; bool m_download_in_progress; int m_next_data_byte_index; }; #endif /* TFTPCLIENT_H_ */