diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2025-11-08 14:30:11 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2025-11-08 14:30:11 -0500 |
| commit | d7fb6037e427aafc33b981bba2ae7d29e77d9ff0 (patch) | |
| tree | bee71010f9fadb71dc622a0f8ace795520c46915 /fw/main.c | |
| parent | 1e5fc7e03877d43a3376b3aefb81949ccbd6d28a (diff) | |
| download | can-gauge-interface-d7fb6037e427aafc33b981bba2ae7d29e77d9ff0.zip | |
limit table keys to i32; add table linear interpolation
Diffstat (limited to 'fw/main.c')
| -rw-r--r-- | fw/main.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -312,7 +312,7 @@ handleSigCtrlFrame(const CanFrame *frame) { // Generate the output signal being sent to one of the gauges. // Raw is the raw signal value extracted from a CAN frame. static Status -driveGauge(Signal sig, Number raw) { +driveGauge(Signal sig, I32 raw) { Status status; U16 val; @@ -330,11 +330,11 @@ driveGauge(Signal sig, Number raw) { CanFrame frame; frame.id = (CanId){.isExt=false, .sid=0x123}; frame.rtr = false; - frame.dlc = 5u; + frame.dlc = 7u; frame.data[0u] = sig & 0xFF; // signal - frame.data[1u] = raw.type & 0xFF; // key type - frame.data[2u] = raw.u8; // key (U8) - serU16Be(frame.data+3, val); // val + U32 uraw = *(U32 *)&raw; + serU32Be(frame.data+1, uraw); // key + serU16Be(frame.data+5, val); // val canTx(&frame); switch (sig) { @@ -368,7 +368,7 @@ static Status handleSigFrame(const CanFrame *frame) { Status status, result; Signal sig; - Number raw; + I32 raw; result = OK; |