March 2019 — Commit Summary
March 2019 delivered wide-ranging improvements across LED control, CAN messaging, timeout infrastructure, and platform support. Notably, Bobcat and Excavator platforms saw major architectural upgrades in modular state machines, watchdogs, diagnostics, and CAN resilience.
Highlights
- 🟢 Modular LED system across local and remote subsystems.
- 🔁 Introduction of CAN message retry/stall system.
- 🛠️ Refactored Bobcat state machine logic into modular architecture.
- 🚜 Massive rollout of Excavator platform codebase for M2 and M16.
- ⏱️ Timeout framework added for HDLC and application-level watchdogs.
🆕 Features
LED System Overhaul
- New headers:
hls_can_leds.h,statmach_local_leds.h,statmach_remote_leds.h - New modules:
statmach_local_leds.c,statmach_remote_leds.c,statmach_local_leds_m2aux.c - Unified local/remote LED APIs for platforms:
BOBCAT/M2,HAUL-TRUCKS/M2,KOMATSU-D575A/M2,TELELHD2/M2
Snapshot: HLS-SRC-20190301.zip, HLS-SRC-20190304.zip
Bobcat M2 Platform
- Complete modularization of Bobcat S450 state machines:
- Proximity, Engine, Throttle, Breaker, Fire Suppression, Park Brake, PassThrough
- Hardware abstraction in
d2driver_io.h, watchdog relay control - Factory configuration UI support and CAN retry logic
- Introduced
can_send_stalledmechanism for CAN repeat/timeout handling - ROM block and configuration structure updates with scaling improvements
Snapshot: HLS-SRC-20190301;1.zip, HLS-SRC-20190307.zip, HLS-SRC-20190308.zip, HLS-SRC-20190313.zip
Excavator Platform (EX5600)
M2
- Modular state machines:
- Deadman, Estop, Power Reset, Proximity, Indicators
- Output monitoring, control freeze, CAN delay logic
- Expanded configuration and ROM initialization
- Support for
control_bbox.h,d2monitorin_handlers,d2driver_io - CAN filters for monitorin and dropout resilience
M16
- Control and BBOX configuration
- New board revision headers
- CAN control and runtime library support
Snapshot: HLS-SRC-20190309.zip, 20190318.zip, 20190323.zip, 20190325.zip
M16-RADIO-115K
- New HDLC timeout architecture using
T45software timer: - Early frame rejection, per-link stats, soft timeouts
- Timer reset logic and
show_link_statssupport - Added
T45_init.s,timeout.hdefinitions
Snapshot: HLS-SRC-20190326.zip
General Purpose Libraries and Infrastructure
- Introduced
parse_test.cwith advanced parse macros - Generic parsing:
parse_opt_enable.c - Timeout system in
LIB/timeout: T45 millisecond timer logic - Generic control app structure:
PIC/Controls pic30libc and memory I/O simulation support
Snapshot: HLS-SRC-20190314.zip, HLS-SRC-20190328.zip
♻️ Refactors
- Renamed:
statmach_bobcat→statmach_enablestatmach_tracks→statmach_travelfor clarity- Split monolithic
statmach.cinto modular .c/.h files - Removed unused LLx definitions and legacy remote LED macros
- Unified CAN buffer mask definitions in
hls_can_def.h
🛠️ Fixes
- Corrected:
- CAN_CTRL_MASK_INIT logic
- HDLC CPU reset and reject frame windows
- Timer ISRs, monitorin timeouts, and output updates
- Fixed address formatting in LED definitions
- Enabled proximity and PT1/PT2 config parsing with Y/N selector
- Applied consistent parameter type definitions and value ranges
📈 Version Updates
- BOBCAT/M2:
1.19.03.1301 - LIB:
parse_test.c,parse_opt_enable.cintroduced - INCLUDE: added
ccsdefs.h,delay_ms,timeout.hupdates
📁 Source Snapshots
HLS-SRC-20190301.zipHLS-SRC-20190301;1.zipHLS-SRC-20190304.zipHLS-SRC-20190304;1.zipHLS-SRC-20190307.zipHLS-SRC-20190307;1.zipHLS-SRC-20190308.zipHLS-SRC-20190309.zipHLS-SRC-20190311.zipHLS-SRC-20190313.zipHLS-SRC-20190314.zipHLS-SRC-20190318.zipHLS-SRC-20190321.zipHLS-SRC-20190323.zipHLS-SRC-20190325.zipHLS-SRC-20190326.zipHLS-SRC-20190328.zipHLS-SRC-20190329.zip
🧠 Inferred Architecture Notes
- Strong modular trend: LED control, state machines, CAN filter logic
- Timeout abstraction through software-managed T45 system
- Improved resilience to CAN failures via message retries and dropout delay fields
- Bobcat/Excavator S450 and EX5600 now share configuration paradigms with standard bitfield and ROM block patterns
- Expected migration path from legacy M2/M16 flat architectures to board-revision-aware modular state machines