blob: f23ee74e3cd5a1939eb7a911e1e29f86991c8a61 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include <zircon/types.h>
__BEGIN_CDECLS
// clang-format off
#define BUTTONS_RPT_ID_INPUT 0x01
// clang-format on
// TODO(andresoportus): Remove bitfields.
typedef struct buttons_input_rpt {
uint8_t rpt_id;
#if __BYTE_ORDER == __LITTLE_ENDIAN
uint8_t volume_up : 1;
uint8_t volume_down : 1;
uint8_t reset : 1;
uint8_t padding : 5;
#else
uint8_t padding : 5;
uint8_t volume_up : 1;
uint8_t volume_down : 1;
uint8_t reset : 1;
#endif
#if __BYTE_ORDER == __LITTLE_ENDIAN
uint8_t mute : 1;
uint8_t padding2 : 7;
#else
uint8_t padding2 : 7;
uint8_t mute : 1;
#endif
} __PACKED buttons_input_rpt_t;
size_t get_buttons_report_desc(const uint8_t** buf);
void fill_button_in_report(uint8_t id, bool value, buttons_input_rpt_t* rpt);
__END_CDECLS