45 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef WAIT_H
 | |
| #define WAIT_H
 | |
| 
 | |
| #include <inttypes.h>
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #if defined(__AVR__)
 | |
| #    include <util/delay.h>
 | |
| #    define wait_ms(ms) _delay_ms(ms)
 | |
| #    define wait_us(us) _delay_us(us)
 | |
| #elif defined PROTOCOL_CHIBIOS
 | |
| #    include "ch.h"
 | |
| #    define wait_ms(ms)                     \
 | |
|         do {                                \
 | |
|             if (ms != 0) {                  \
 | |
|                 chThdSleepMilliseconds(ms); \
 | |
|             } else {                        \
 | |
|                 chThdSleepMicroseconds(1);  \
 | |
|             }                               \
 | |
|         } while (0)
 | |
| #    define wait_us(us)                     \
 | |
|         do {                                \
 | |
|             if (us != 0) {                  \
 | |
|                 chThdSleepMicroseconds(us); \
 | |
|             } else {                        \
 | |
|                 chThdSleepMicroseconds(1);  \
 | |
|             }                               \
 | |
|         } while (0)
 | |
| #elif defined PROTOCOL_ARM_ATSAM
 | |
| #    include "clks.h"
 | |
| #    define wait_ms(ms) CLK_delay_ms(ms)
 | |
| #    define wait_us(us) CLK_delay_us(us)
 | |
| #else  // Unit tests
 | |
| void wait_ms(uint32_t ms);
 | |
| #    define wait_us(us) wait_ms(us / 1000)
 | |
| #endif
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 | 
