| # hammerd: A daemon to update hammer |
| |
| ## Summary |
| |
| hammer is the base of detachable, connected via USB over pogo pins. hammer runs |
| its own upgradable firmware (base EC, running EC codebase on STM32F072), is |
| attached to a touchpad (with its own upgradable FW), and is able to pair with |
| the detachable. |
| |
| We need a userspace daemon, running on the AP, that does the following things |
| related to hammer: |
| |
| - Waits for a base to be attached on detachable's pogo pins port, and then |
| performs the following tasks as required. |
| - Base EC FW update |
| - Base touchpad FW update |
| - Base pairing |
| - Tell base to increment its rollback counter (if necessary) |
| - Interaction with Chrome: |
| - Shows notification during update (EC+touchpad) |
| - Shows notification that a new base is connected (pairing) |
| |
| ## Triggered On Boot |
| |
| Before the UI starts, hammerd is invoked to check whether the base is attached |
| and need update or not. If so, then hammerd update the base EC firmware and |
| touchpad firmware. |
| |
| ## Triggered On Attachment |
| |
| hammerd is also invoked when the base is attached to check whether the base |
| needs update. But hammerd ONLY send a DBus signal to notify Chrome UI in |
| critical case (firmware is broken or critical update appears), |
| NOT updating anything. |
| |
| ## Update Manually |
| |
| We can also manually update firmware by running: |
| `start hammerd UPDATE_IF="always"` |
| It is useful in development or debugging. |