# Customize Your Own HMI HMIWorker is a standalone singleton which processes HMI actions. If you want to have a customized HMI instead the one integrated with Apollo Dreamview, just develope a frontend and send operations to the backend which delegates to HMIWorker. ## HMI Config See modules/dreamview/proto/hmi_config.proto. It defines all supported modes, modules, hardware and tools. ## HMI Worker According to the HMIConfig, HMI Worker could trigger actions like: - Change mode, map, vehicle and driving mode. - Register event handler for changing mode, map and vehicle. - Start, stop or execute other registered commands for modules. - Execute registered tools. - Submit DriveEvent which will be recorded as a ROS message. - Get current HMIConfig and HMIStatus, which could be used for UI update. ## Vehicle Manager VehicleManager is the one to actually config everything when changing vehicles. The major thing is to copy all vehicle-wised parameter files to right place. The source and destination mappings are defined by modules/dreamview/conf/vehicle_data.pb.txt.