gen RESPONSE_FLAG defines
This commit is contained in:
parent
0f5ced0521
commit
81a53ac5b6
3 changed files with 38 additions and 22 deletions
|
@ -132,7 +132,7 @@
|
|||
}
|
||||
|
||||
response_flags: {
|
||||
define_prefix: XAP_RESP
|
||||
define_prefix: XAP_RESPONSE_FLAG
|
||||
bits: {
|
||||
0: {
|
||||
name: Success
|
||||
|
|
|
@ -94,6 +94,38 @@ def _append_route_capabilities(lines, container, container_id=None, route_stack=
|
|||
route_stack.pop()
|
||||
|
||||
|
||||
def _append_types(lines, container):
|
||||
"""Handles creating the various constants, types, defines, etc.
|
||||
"""
|
||||
response_flags = container.get('response_flags', {})
|
||||
prefix = response_flags['define_prefix']
|
||||
for key, value in response_flags['bits'].items():
|
||||
define = value.get('define')
|
||||
lines.append(f'#define {prefix}_{define} (1ul << ({key}))')
|
||||
|
||||
# Add special
|
||||
lines.append(f'#define {prefix}_FAILED 0x00')
|
||||
|
||||
# TODO: define this in xap_*.hjson
|
||||
lines.append(
|
||||
'''
|
||||
typedef uint8_t xap_identifier_t;
|
||||
typedef uint8_t xap_response_flags_t;
|
||||
typedef uint16_t xap_token_t;
|
||||
|
||||
typedef struct {
|
||||
xap_token_t token;
|
||||
uint8_t length;
|
||||
} xap_request_header_t;
|
||||
|
||||
typedef struct {
|
||||
xap_token_t token;
|
||||
xap_response_flags_t flags;
|
||||
uint8_t length;
|
||||
} xap_response_header_t;'''
|
||||
)
|
||||
|
||||
|
||||
def generate_header(output_file, keyboard):
|
||||
"""Generates the XAP protocol header file, generated during normal build.
|
||||
"""
|
||||
|
@ -112,6 +144,10 @@ def generate_header(output_file, keyboard):
|
|||
lines.append(f'#define XAP_KEYBOARD_IDENTIFIER 0x{keyboard_id:08X}ul')
|
||||
lines.append('')
|
||||
|
||||
# Types
|
||||
_append_types(lines, xap_defs)
|
||||
lines.append('')
|
||||
|
||||
# Append the route and command defines
|
||||
_append_route_defines(lines, xap_defs)
|
||||
lines.append('')
|
||||
|
|
|
@ -19,9 +19,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef uint8_t xap_identifier_t;
|
||||
typedef uint8_t xap_response_flags_t;
|
||||
typedef uint16_t xap_token_t;
|
||||
#include <xap_generated.h>
|
||||
|
||||
#ifndef XAP_SUBSYSTEM_VERSION_KB
|
||||
# define XAP_SUBSYSTEM_VERSION_KB 0
|
||||
|
@ -31,27 +29,9 @@ typedef uint16_t xap_token_t;
|
|||
# define XAP_SUBSYSTEM_VERSION_USER 0
|
||||
#endif
|
||||
|
||||
#define XAP_RESPONSE_FLAG_FAILED 0
|
||||
#define XAP_RESPONSE_FLAG_SUCCESS (1 << 0)
|
||||
#define XAP_RESPONSE_FLAG_SECURE_FAILURE (1 << 1)
|
||||
|
||||
void xap_respond_failure(xap_token_t token, xap_response_flags_t response_flags);
|
||||
bool xap_respond_u32(xap_token_t token, uint32_t value);
|
||||
bool xap_respond_data(xap_token_t token, const void *data, size_t length);
|
||||
bool xap_respond_data_P(xap_token_t token, const void *data, size_t length);
|
||||
|
||||
void xap_send(xap_token_t token, xap_response_flags_t response_flags, const void *data, size_t length);
|
||||
|
||||
// TODO: gen from xap defs?
|
||||
typedef struct {
|
||||
xap_token_t token;
|
||||
uint8_t length;
|
||||
} xap_request_header_t;
|
||||
|
||||
typedef struct {
|
||||
xap_token_t token;
|
||||
xap_response_flags_t flags;
|
||||
uint8_t length;
|
||||
} xap_response_header_t;
|
||||
|
||||
#include <xap_generated.h>
|
||||
|
|
Loading…
Reference in a new issue