hands on hid firmware development