Add firmware nanopb protocol core
This commit is contained in:
64
inc/keyboard_proto.h
Normal file
64
inc/keyboard_proto.h
Normal file
@@ -0,0 +1,64 @@
|
||||
#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 struct keyboard_cdc_CdcPacketBody *body,
|
||||
void *user_data);
|
||||
|
||||
bool keyboard_proto_encode_body(
|
||||
const struct keyboard_cdc_CdcPacketBody *body,
|
||||
uint8_t *buffer,
|
||||
size_t buffer_size,
|
||||
size_t *encoded_size);
|
||||
|
||||
bool keyboard_proto_decode_body(
|
||||
const uint8_t *buffer,
|
||||
size_t buffer_size,
|
||||
struct keyboard_cdc_CdcPacketBody *body);
|
||||
|
||||
bool keyboard_proto_encode_cdc_frame(
|
||||
uint32_t packet_type,
|
||||
const struct keyboard_cdc_CdcPacketBody *body,
|
||||
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,
|
||||
struct keyboard_cdc_CdcFrame *frame);
|
||||
|
||||
bool keyboard_proto_build_function_key_event_body(
|
||||
uint16_t usage,
|
||||
bool pressed,
|
||||
struct keyboard_cdc_CdcPacketBody *body);
|
||||
|
||||
bool keyboard_proto_build_led_state_body(
|
||||
uint8_t led_mask,
|
||||
struct keyboard_cdc_CdcPacketBody *body);
|
||||
|
||||
bool keyboard_proto_handle_host_body(
|
||||
const struct keyboard_cdc_CdcPacketBody *body,
|
||||
enum keyboard_proto_transport transport,
|
||||
keyboard_proto_send_body_fn send_fn,
|
||||
void *user_data);
|
||||
|
||||
#endif /* KEYBOARD_PROTO_H__ */
|
||||
Reference in New Issue
Block a user