3 #ifndef __control_host_support_h__
4 #define __control_host_support_h__
10 #include "device_control_shared.h"
14 control_xscope_create_upload_buffer(uint32_t buffer[XSCOPE_UPLOAD_MAX_WORDS],
16 const uint8_t *payload,
unsigned payload_len)
18 const size_t header_size =
sizeof(
struct control_xscope_response);
19 struct control_xscope_packet *p;
21 p = (
struct control_xscope_packet*)buffer;
26 assert(payload_len <= XSCOPE_DATA_MAX_BYTES &&
"payload length can't be represented as a uint8_t");
27 p->payload_len = (uint8_t)payload_len;
30 if (payload_len + header_size <= XSCOPE_UPLOAD_MAX_WORDS *
sizeof(uint32_t)) {
31 memcpy((uint8_t*)buffer + header_size, payload, payload_len);
33 return header_size + payload_len;
42 #define USB_TRANSACTION_MAX_BYTES 64
44 control_usb_fill_header(uint16_t *windex, uint16_t *wvalue, uint16_t *wlength,
50 assert(payload_len < (1<<16) &&
"payload length can't be represented as a uint16_t");
51 *wlength = (uint16_t)payload_len;
57 control_build_spi_data(uint8_t data[SPI_TRANSACTION_MAX_BYTES],
59 const uint8_t payload[],
unsigned payload_len)
63 data[2] = (uint8_t) payload_len;
65 for(
unsigned i=0; i<5; ++i)
70 for(
unsigned i=0; i<payload_len; ++i)
71 data[3 + i] = payload[i];
73 return 3 + payload_len;
78 #define I2C_TRANSACTION_MAX_BYTES 256
79 #define I2C_DATA_MAX_BYTES (I2C_TRANSACTION_MAX_BYTES - 3)
81 control_build_i2c_data(uint8_t data[I2C_TRANSACTION_MAX_BYTES],
83 const uint8_t payload[],
unsigned payload_len)
89 data[2] = (uint8_t)payload_len;
95 for (i = 0; i < payload_len; i++) {
96 data[3 + i] = payload[i];
98 return 3 + payload_len;
uint8_t control_resid_t
Definition: device_control_shared.h:27
#define IS_CONTROL_CMD_READ(c)
Definition: device_control_shared.h:62