a9379588cf
git-svn-id: https://bucket.mit.edu/svn/nilm/zoom@7696 ddd99763-3ecb-0310-9145-efcb8ce7c51f
42 lines
903 B
C
42 lines
903 B
C
#ifndef UTIL_H
|
|
#define UTIL_H
|
|
|
|
#include "config.h"
|
|
|
|
/* Convert from ascii hex digit to number */
|
|
uint8_t from_hex(uint8_t ch);
|
|
extern const uint8_t hex[16];
|
|
int32_t hex_to_u16(char x[4]);
|
|
|
|
/* Array length */
|
|
#define array_len(x) (sizeof(x)/sizeof(x[0]))
|
|
|
|
/* ISR disable/enable with saving of previous state */
|
|
#define __int_top() int __sr_save
|
|
#define __int_disable() __sr_save=SR; SRbits.IPL=7
|
|
#define __int_enable() SR=__sr_save
|
|
#define disable_int(x) do { \
|
|
__int_top(); \
|
|
__int_disable(); \
|
|
x; \
|
|
__int_enable(); } while(0)
|
|
|
|
/* Misc */
|
|
#define max(a,b) \
|
|
({ typeof (a) _a = (a); \
|
|
typeof (b) _b = (b); \
|
|
_a > _b ? _a : _b; })
|
|
|
|
#define min(a,b) \
|
|
({ typeof (a) _a = (a); \
|
|
typeof (b) _b = (b); \
|
|
_a < _b ? _a : _b; })
|
|
|
|
#define clamp(a,v,b) min(b,max(v,a))
|
|
|
|
#define abs(a) \
|
|
({ typeof (a) _a = (a); \
|
|
_a < 0 ? -_a : _a; })
|
|
|
|
#endif
|