Files
KeyBoard_QT/inc/keyboard_proto.h

65 lines
1.5 KiB
C
Raw Normal View History

2026-04-11 11:56:45 +08:00
#ifndef KEYBOARD_PROTO_H__
#define KEYBOARD_PROTO_H__
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <pb_decode.h>
#include <pb_encode.h>
#include "KeyBorad/proto/keyboard.pb.h"
#define KEYBOARD_PROTO_MAX_BODY_SIZE 64U
#define KEYBOARD_PROTO_MAX_FRAME_SIZE 128U
#define KEYBOARD_PROTO_FUNCTION_BITMAP_SIZE 29U
enum keyboard_proto_transport {
KEYBOARD_PROTO_TRANSPORT_CDC = 0,
KEYBOARD_PROTO_TRANSPORT_GATT,
};
typedef bool (*keyboard_proto_send_body_fn)(
const keyboard_cdc_CdcPacketBody *body,
2026-04-11 11:56:45 +08:00
void *user_data);
bool keyboard_proto_encode_body(
const keyboard_cdc_CdcPacketBody *body,
2026-04-11 11:56:45 +08:00
uint8_t *buffer,
size_t buffer_size,
size_t *encoded_size);
bool keyboard_proto_decode_body(
const uint8_t *buffer,
size_t buffer_size,
keyboard_cdc_CdcPacketBody *body);
2026-04-11 11:56:45 +08:00
bool keyboard_proto_encode_cdc_frame(
uint32_t packet_type,
const keyboard_cdc_CdcPacketBody *body,
2026-04-11 11:56:45 +08:00
uint8_t *buffer,
size_t buffer_size,
size_t *encoded_size);
bool keyboard_proto_try_take_cdc_frame(
uint8_t *buffer,
size_t *buffer_size,
keyboard_cdc_CdcFrame *frame);
2026-04-11 11:56:45 +08:00
bool keyboard_proto_build_function_key_event_body(
uint16_t usage,
bool pressed,
keyboard_cdc_CdcPacketBody *body);
2026-04-11 11:56:45 +08:00
bool keyboard_proto_build_led_state_body(
uint8_t led_mask,
keyboard_cdc_CdcPacketBody *body);
2026-04-11 11:56:45 +08:00
bool keyboard_proto_handle_host_body(
const keyboard_cdc_CdcPacketBody *body,
2026-04-11 11:56:45 +08:00
enum keyboard_proto_transport transport,
keyboard_proto_send_body_fn send_fn,
void *user_data);
#endif /* KEYBOARD_PROTO_H__ */