mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-10-31 15:50:55 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef RFC1305_H
 | |
| #define RFC1305_H
 | |
| /*
 | |
|  * see https://www.eecis.udel.edu/~mills/database/rfc/rfc1305/rfc1305c.pdf
 | |
|  * https://tools.ietf.org/html/rfc1305
 | |
|  */
 | |
| 
 | |
| #pragma pack(1)
 | |
| struct sRFC1305 {
 | |
|   // NOTE all fields are BIG-ENDIAN so must be swapped on little endian machines
 | |
|   uint8_t MODE:3;
 | |
|   uint8_t VN:3;
 | |
|   uint8_t LI:2;
 | |
|   uint8_t stratum;
 | |
|   uint8_t poll;
 | |
|   uint8_t precision;
 | |
|   int16_t rootdelay_main;
 | |
|   uint16_t rootdelay_fraction;
 | |
|   int16_t rootdispersion_main;
 | |
|   uint16_t rootdispersion_fraction;
 | |
|   uint8_t identifier[4];
 | |
|   // 64 bit timestamps contain 32 bit whole part + 32 bit fractional part
 | |
|   uint32_t referencetimestamp_main;
 | |
|   uint32_t referencetimestamp_fraction;
 | |
|   uint32_t origintimestamp_main;
 | |
|   uint32_t origintimestamp_fraction;
 | |
|   uint32_t receivetimestamp_main;
 | |
|   uint32_t receivetimestamp_fraction;
 | |
|   uint32_t transmittimestamp_main;
 | |
|   uint32_t transmittimestamp_fraction;
 | |
| };
 | |
| #pragma pack(0)
 | |
| 
 | |
| #define LI_NOWARNING 0
 | |
| #define LI_61_SEC 1
 | |
| #define LI_59_SEC 2
 | |
| #define LI_ALARM 3
 | |
| 
 | |
| #define VERN 4
 | |
| 
 | |
| #define MODE_SYMMETRIC_ACTIVE 1
 | |
| #define MODE_SYMMETRIC_PASSIVE 2
 | |
| #define MODE_CLIENT 3
 | |
| #define MODE_SERVER 4
 | |
| #define MODE_BROADCAST 5
 | |
| 
 | |
| #define ENDIAN_SWAP_32(l) ((l>>24) |((l>>16)<<8)&0xff00 | ((l>>8)<<16)&0xff0000 | (l << 24)) 
 | |
| #define ENDIAN_SWAP_16(l) ((l>>8) | (l << 8)) 
 | |
| #endif
 | |
| 
 |