aboutsummaryrefslogtreecommitdiffstats
path: root/fw/types.c
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-11-08 14:30:11 -0500
committerSam Anthony <sam@samanthony.xyz>2025-11-08 14:30:11 -0500
commitd7fb6037e427aafc33b981bba2ae7d29e77d9ff0 (patch)
treebee71010f9fadb71dc622a0f8ace795520c46915 /fw/types.c
parent1e5fc7e03877d43a3376b3aefb81949ccbd6d28a (diff)
downloadcan-gauge-interface-d7fb6037e427aafc33b981bba2ae7d29e77d9ff0.zip
limit table keys to i32; add table linear interpolation
Diffstat (limited to 'fw/types.c')
-rw-r--r--fw/types.c108
1 files changed, 0 insertions, 108 deletions
diff --git a/fw/types.c b/fw/types.c
deleted file mode 100644
index 24a7c3a..0000000
--- a/fw/types.c
+++ /dev/null
@@ -1,108 +0,0 @@
-#include <stdint.h>
-
-#include "types.h"
-
-#define cmp(a, b) (((a) > (b)) ? 1 : (((a) < (b)) ? -1 : 0))
-
-Status
-u32ToNum(U32 x, NumType t, Number *n) {
- n->type = t;
-
- switch (t) {
- case NUM_U8:
- n->u8 = x & 0xFF;
- return OK;
- case NUM_U16:
- n->u16 = x & 0xFFFF;
- return OK;
- case NUM_U32:
- n->u32 = x;
- return OK;
- case NUM_I8:
- n->u8 = x & 0xFF;
- n->i8 = *(I8 *)&n->u8;
- return OK;
- case NUM_I16:
- n->u16 = x & 0xFFFF;
- n->i16 = *(I16 *)&n->u16;
- return OK;
- case NUM_I32:
- n->i32 = *(I32 *)&x;
- return OK;
- default:
- return FAIL;
- }
-}
-
-static Status
-cmpU32Num(U32 a, Number b, int *ord) {
- switch (b.type) {
- case NUM_U8:
- *ord = cmp(a, b.u8);
- return OK;
- case NUM_U16:
- *ord = cmp(a, b.u16);
- return OK;
- case NUM_U32:
- *ord = cmp(a, b.u32);
- return OK;
- case NUM_I8:
- *ord = cmp(a, b.i8);
- return OK;
- case NUM_I16:
- *ord = cmp(a, b.i16);
- return OK;
- case NUM_I32:
- *ord = cmp(a, b.i32);
- return OK;
- default:
- return FAIL;
- }
-}
-
-Status
-cmpNum(Number a, Number b, int *ord) {
- switch (a.type) {
- case NUM_U8:
- a.i32 = a.u8;
- break;
- case NUM_U16:
- a.i32 = a.u16;
- break;
- case NUM_U32:
- return cmpU32Num(a.u32, b, ord);
- case NUM_I8:
- a.i32 = a.i8;
- break;
- case NUM_I16:
- a.i32 = a.i16;
- break;
- case NUM_I32:
- break; // do nothing
- default:
- return FAIL;
- }
-
- switch (b.type) {
- case NUM_U8:
- *ord = cmp(a.i32, b.u8);
- return OK;
- case NUM_U16:
- *ord = cmp(a.i32, b.u16);
- return OK;
- case NUM_U32:
- *ord = cmp(a.i32, b.u32);
- return OK;
- case NUM_I8:
- *ord = cmp(a.i32, b.i8);
- return OK;
- case NUM_I16:
- *ord = cmp(a.i32, b.i16);
- return OK;
- case NUM_I32:
- *ord = cmp(a.i32, b.i32);
- return OK;
- default:
- return FAIL;
- }
-}