XCORE SDK
XCORE Software Development Kit
device_control_shared.h
1 // Copyright 2022 XMOS LIMITED.
2 // This Software is subject to the terms of the XMOS Public Licence: Version 1.
3 
4 #ifndef DEVICE_CONTROL_SHARED_H_
5 #define DEVICE_CONTROL_SHARED_H_
6 
7 #include <stdint.h>
8 #include <stddef.h>
9 
20 #define CONTROL_VERSION 0x10
21 
27 typedef uint8_t control_resid_t;
28 typedef uint8_t control_cmd_t;
29 typedef uint8_t control_version_t;
30 typedef uint8_t control_status_t;
36 typedef enum {
37  CONTROL_SUCCESS = 0,
38  CONTROL_REGISTRATION_FAILED,
39  CONTROL_BAD_COMMAND,
40  CONTROL_DATA_LENGTH_ERROR,
41  CONTROL_OTHER_TRANSPORT_ERROR,
42  CONTROL_ERROR
44 
49 typedef enum {
50  CONTROL_HOST_TO_DEVICE,
51  CONTROL_DEVICE_TO_HOST
53 
62 #define IS_CONTROL_CMD_READ(c) ((c) & 0x80)
63 
69 #define CONTROL_CMD_SET_READ(c) ((c) | 0x80)
70 
76 #define CONTROL_CMD_SET_WRITE(c) ((c) & ~0x80)
77 
83 #define CONTROL_SPECIAL_RESID 0
84 
89 #define CONTROL_MAX_RESOURCE_ID 255
90 
95 #define CONTROL_GET_VERSION CONTROL_CMD_SET_READ(0)
96 
101 #define CONTROL_GET_LAST_COMMAND_STATUS CONTROL_CMD_SET_READ(1)
102 
109 #define DEVICE_CONTROL_HOST_MODE 0
110 
117 #define DEVICE_CONTROL_CLIENT_MODE 1
118 
123 #define DEVICE_CONTROL_CALLBACK_ATTR __attribute__((fptrgroup("device_control_cb_fptr_grp")))
124 
127 #endif /* DEVICE_CONTROL_SHARED_H_ */
uint8_t control_resid_t
Definition: device_control_shared.h:27
control_direction_t
Definition: device_control_shared.h:49
control_ret_t
Definition: device_control_shared.h:36