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: {
|
response_flags: {
|
||||||
define_prefix: XAP_RESP
|
define_prefix: XAP_RESPONSE_FLAG
|
||||||
bits: {
|
bits: {
|
||||||
0: {
|
0: {
|
||||||
name: Success
|
name: Success
|
||||||
|
|
|
@ -94,6 +94,38 @@ def _append_route_capabilities(lines, container, container_id=None, route_stack=
|
||||||
route_stack.pop()
|
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):
|
def generate_header(output_file, keyboard):
|
||||||
"""Generates the XAP protocol header file, generated during normal build.
|
"""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(f'#define XAP_KEYBOARD_IDENTIFIER 0x{keyboard_id:08X}ul')
|
||||||
lines.append('')
|
lines.append('')
|
||||||
|
|
||||||
|
# Types
|
||||||
|
_append_types(lines, xap_defs)
|
||||||
|
lines.append('')
|
||||||
|
|
||||||
# Append the route and command defines
|
# Append the route and command defines
|
||||||
_append_route_defines(lines, xap_defs)
|
_append_route_defines(lines, xap_defs)
|
||||||
lines.append('')
|
lines.append('')
|
||||||
|
|
|
@ -19,9 +19,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
typedef uint8_t xap_identifier_t;
|
#include <xap_generated.h>
|
||||||
typedef uint8_t xap_response_flags_t;
|
|
||||||
typedef uint16_t xap_token_t;
|
|
||||||
|
|
||||||
#ifndef XAP_SUBSYSTEM_VERSION_KB
|
#ifndef XAP_SUBSYSTEM_VERSION_KB
|
||||||
# define XAP_SUBSYSTEM_VERSION_KB 0
|
# define XAP_SUBSYSTEM_VERSION_KB 0
|
||||||
|
@ -31,27 +29,9 @@ typedef uint16_t xap_token_t;
|
||||||
# define XAP_SUBSYSTEM_VERSION_USER 0
|
# define XAP_SUBSYSTEM_VERSION_USER 0
|
||||||
#endif
|
#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);
|
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_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(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);
|
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);
|
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