aboutsummaryrefslogtreecommitdiffstats
path: root/fw/types.h
blob: f7728789615604c44421ef8ce191ec8a3ead7606 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* Device: PIC16F1459
 * Compiler: XC8 v3.00
 *
 * Usage:
 *
 * #include <stdint.h>
 * #include "types.h"
 */

typedef enum {
	OK,
	FAIL,
} Status;

typedef uint8_t U8;
typedef uint16_t U16;
typedef uint32_t U32;
typedef int8_t I8;
typedef int16_t I16;
typedef int32_t I32;

typedef enum {
	NUM_U8,
	NUM_U16,
	NUM_U32,
	NUM_I8,
	NUM_I16,
	NUM_I32,
} NumType;

// Number
typedef struct {
	NumType type;
	union {
		U8 u8;
		U16 u16;
		U32 u32;
		I8 i8;
		I16 i16;
		I32 i32;
	};
} Number;

Status u32ToNum(U32 x, NumType t, Number *n);

// Compare two numbers.
// -1 if a < b
// 0 if a == b
// 1 if a > b
Status cmpNum(Number a, Number b, int *ord);