mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-10-31 15:50:55 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef __ARDUINO_OTA_H
 | |
| #define __ARDUINO_OTA_H
 | |
| 
 | |
| #include <ESP8266WiFi.h>
 | |
| #include <WiFiUdp.h>
 | |
| 
 | |
| class UdpContext;
 | |
| 
 | |
| #define OTA_CALLBACK(callback) void (*callback)()
 | |
| #define OTA_CALLBACK_PROGRESS(callback)  void (*callback)(unsigned int, unsigned int)
 | |
| #define OTA_CALLBACK_ERROR(callback)  void (*callback)(ota_error_t)
 | |
| 
 | |
| typedef enum {
 | |
|   OTA_IDLE,
 | |
|   OTA_WAITAUTH,
 | |
|   OTA_RUNUPDATE
 | |
| } ota_state_t;
 | |
| 
 | |
| typedef enum {
 | |
|   OTA_AUTH_ERROR,
 | |
|   OTA_BEGIN_ERROR,
 | |
|   OTA_CONNECT_ERROR,
 | |
|   OTA_RECEIVE_ERROR,
 | |
|   OTA_END_ERROR
 | |
| } ota_error_t;
 | |
| 
 | |
| class ArduinoOTAClass
 | |
| {
 | |
|   public:
 | |
|     ArduinoOTAClass();
 | |
|     ~ArduinoOTAClass();
 | |
|     void setPort(uint16_t port);
 | |
|     void setHostname(const char *hostname);
 | |
|     void setPassword(const char *password);
 | |
|     void onStart(OTA_CALLBACK(fn));
 | |
|     void onEnd(OTA_CALLBACK(fn));
 | |
|     void onProgress(OTA_CALLBACK_PROGRESS(fn));
 | |
|     void onError(OTA_CALLBACK_ERROR (fn));
 | |
|     void begin();
 | |
|     void handle();
 | |
| 
 | |
|   private:
 | |
|     int _port;
 | |
|     String _password;
 | |
|     String _hostname;
 | |
|     String _nonce;
 | |
|     UdpContext *_udp_ota;
 | |
|     bool _initialized;
 | |
|     ota_state_t _state;
 | |
|     int _size;
 | |
|     int _cmd;
 | |
|     int _ota_port;
 | |
|     IPAddress _ota_ip;
 | |
|     String _md5;
 | |
| 
 | |
|     OTA_CALLBACK(_start_callback);
 | |
|     OTA_CALLBACK(_end_callback);
 | |
|     OTA_CALLBACK_ERROR(_error_callback);
 | |
|     OTA_CALLBACK_PROGRESS(_progress_callback);
 | |
| 
 | |
|     void _runUpdate(void);
 | |
|     void _onRx(void);
 | |
|     int parseInt(void);
 | |
|     String readStringUntil(char end);
 | |
| };
 | |
| 
 | |
| extern ArduinoOTAClass ArduinoOTA;
 | |
| 
 | |
| #endif /* __ARDUINO_OTA_H */
 |