commit
8f9cd7075e
|
@ -343,8 +343,8 @@ jobs:
|
|||
run: |
|
||||
sudo apt-get install -y gettext
|
||||
pip install requests sh click setuptools awscli
|
||||
wget https://adafruit-circuit-python.s3.amazonaws.com/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
|
||||
sudo tar -C /usr --strip-components=1 -xaf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
|
||||
wget --no-verbose https://adafruit-circuit-python.s3.amazonaws.com/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
|
||||
sudo tar -C /usr --strip-components=1 -xaf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
|
||||
- name: Versions
|
||||
run: |
|
||||
gcc --version
|
||||
|
|
|
@ -61,7 +61,7 @@ STATIC struct {
|
|||
typedef struct __packed {
|
||||
uint8_t properties;
|
||||
uint16_t value_handle;
|
||||
uint8_t uuid[0]; // 2 or 16 bytes
|
||||
uint8_t uuid[]; // 2 or 16 bytes
|
||||
} characteristic_declaration_t;
|
||||
|
||||
STATIC uint8_t bleio_properties_to_ble_spec_properties(uint8_t bleio_properties) {
|
||||
|
@ -1010,21 +1010,22 @@ void process_read_group_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, ui
|
|||
}
|
||||
|
||||
int att_read_group_req(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle, uint16_t uuid, uint8_t response_buffer[]) {
|
||||
struct __packed {
|
||||
|
||||
typedef struct __packed {
|
||||
struct bt_att_hdr h;
|
||||
struct bt_att_read_group_req r;
|
||||
} req = { {
|
||||
.code = BT_ATT_OP_READ_GROUP_REQ,
|
||||
}, {
|
||||
.start_handle = start_handle,
|
||||
.end_handle = end_handle,
|
||||
}
|
||||
};
|
||||
req.r.uuid[0] = uuid & 0xff;
|
||||
req.r.uuid[1] = uuid >> 8;
|
||||
} req_t;
|
||||
|
||||
uint8_t req_bytes[sizeof(req_t) + sizeof(uuid)];
|
||||
req_t *req = (req_t *) req_bytes;
|
||||
|
||||
return send_req_wait_for_rsp(conn_handle, sizeof(req), (uint8_t *) &req, response_buffer);
|
||||
req->h.code = BT_ATT_OP_READ_GROUP_REQ;
|
||||
req->r.start_handle = start_handle;
|
||||
req->r.end_handle = end_handle;
|
||||
req->r.uuid[0] = uuid & 0xff;
|
||||
req->r.uuid[1] = uuid >> 8;
|
||||
|
||||
return send_req_wait_for_rsp(conn_handle, sizeof(req_bytes), req_bytes, response_buffer);
|
||||
}
|
||||
|
||||
STATIC void process_read_group_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) {
|
||||
|
@ -1305,20 +1306,21 @@ STATIC void process_read_type_req(uint16_t conn_handle, uint16_t mtu, uint8_t dl
|
|||
}
|
||||
|
||||
int att_read_type_req(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle, uint16_t type, uint8_t response_buffer[]) {
|
||||
struct __packed {
|
||||
typedef struct __packed {
|
||||
struct bt_att_hdr h;
|
||||
struct bt_att_read_type_req r;
|
||||
} req = { {
|
||||
.code = BT_ATT_OP_READ_TYPE_REQ,
|
||||
}, {
|
||||
.start_handle = start_handle,
|
||||
.end_handle = end_handle,
|
||||
}
|
||||
};
|
||||
req.r.uuid[0] = type & 0xff;
|
||||
req.r.uuid[1] = type >> 8;
|
||||
} req_t;
|
||||
|
||||
return send_req_wait_for_rsp(conn_handle, sizeof(req), (uint8_t *) &req, response_buffer);
|
||||
uint8_t req_bytes[sizeof(req_t) + sizeof(type)];
|
||||
req_t *req = (req_t *) req_bytes;
|
||||
|
||||
req->h.code = BT_ATT_OP_READ_TYPE_REQ;
|
||||
req->r.start_handle = start_handle;
|
||||
req->r.end_handle = end_handle;
|
||||
req->r.uuid[0] = type & 0xff;
|
||||
req->r.uuid[1] = type >> 8;
|
||||
|
||||
return send_req_wait_for_rsp(conn_handle, sizeof(req_bytes), req_bytes, response_buffer);
|
||||
}
|
||||
|
||||
STATIC void process_read_type_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) {
|
||||
|
|
|
@ -69,7 +69,7 @@ struct bt_att_info_128 {
|
|||
#define BT_ATT_OP_FIND_INFO_RSP 0x05
|
||||
struct bt_att_find_info_rsp {
|
||||
uint8_t format;
|
||||
uint8_t info[0];
|
||||
uint8_t info[];
|
||||
} __packed;
|
||||
|
||||
/* Find By Type Value Request */
|
||||
|
@ -78,7 +78,7 @@ struct bt_att_find_type_req {
|
|||
uint16_t start_handle;
|
||||
uint16_t end_handle;
|
||||
uint16_t type;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
struct bt_att_handle_group {
|
||||
|
@ -89,7 +89,8 @@ struct bt_att_handle_group {
|
|||
/* Find By Type Value Response */
|
||||
#define BT_ATT_OP_FIND_TYPE_RSP 0x07
|
||||
struct bt_att_find_type_rsp {
|
||||
struct bt_att_handle_group list[0];
|
||||
uint8_t _dummy[0];
|
||||
struct bt_att_handle_group list[];
|
||||
} __packed;
|
||||
|
||||
/* Read By Type Request */
|
||||
|
@ -97,19 +98,19 @@ struct bt_att_find_type_rsp {
|
|||
struct bt_att_read_type_req {
|
||||
uint16_t start_handle;
|
||||
uint16_t end_handle;
|
||||
uint8_t uuid[0];
|
||||
uint8_t uuid[];
|
||||
} __packed;
|
||||
|
||||
struct bt_att_data {
|
||||
uint16_t handle;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Read By Type Response */
|
||||
#define BT_ATT_OP_READ_TYPE_RSP 0x09
|
||||
struct bt_att_read_type_rsp {
|
||||
uint8_t len;
|
||||
struct bt_att_data data[0];
|
||||
struct bt_att_data data[];
|
||||
} __packed;
|
||||
|
||||
/* Read Request */
|
||||
|
@ -121,7 +122,8 @@ struct bt_att_read_req {
|
|||
/* Read Response */
|
||||
#define BT_ATT_OP_READ_RSP 0x0b
|
||||
struct bt_att_read_rsp {
|
||||
uint8_t value[0];
|
||||
uint8_t _dummy[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Read Blob Request */
|
||||
|
@ -134,7 +136,8 @@ struct bt_att_read_blob_req {
|
|||
/* Read Blob Response */
|
||||
#define BT_ATT_OP_READ_BLOB_RSP 0x0d
|
||||
struct bt_att_read_blob_rsp {
|
||||
uint8_t value[0];
|
||||
uint8_t _dummy[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Read Multiple Request */
|
||||
|
@ -142,13 +145,15 @@ struct bt_att_read_blob_rsp {
|
|||
|
||||
#define BT_ATT_OP_READ_MULT_REQ 0x0e
|
||||
struct bt_att_read_mult_req {
|
||||
uint16_t handles[0];
|
||||
uint8_t _dummy[0];
|
||||
uint16_t handles[];
|
||||
} __packed;
|
||||
|
||||
/* Read Multiple Respose */
|
||||
#define BT_ATT_OP_READ_MULT_RSP 0x0f
|
||||
struct bt_att_read_mult_rsp {
|
||||
uint8_t value[0];
|
||||
uint8_t _dummy[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Read by Group Type Request */
|
||||
|
@ -156,27 +161,27 @@ struct bt_att_read_mult_rsp {
|
|||
struct bt_att_read_group_req {
|
||||
uint16_t start_handle;
|
||||
uint16_t end_handle;
|
||||
uint8_t uuid[0];
|
||||
uint8_t uuid[];
|
||||
} __packed;
|
||||
|
||||
struct bt_att_group_data {
|
||||
uint16_t start_handle;
|
||||
uint16_t end_handle;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Read by Group Type Response */
|
||||
#define BT_ATT_OP_READ_GROUP_RSP 0x11
|
||||
struct bt_att_read_group_rsp {
|
||||
uint8_t len;
|
||||
struct bt_att_group_data data[0];
|
||||
struct bt_att_group_data data[];
|
||||
} __packed;
|
||||
|
||||
/* Write Request */
|
||||
#define BT_ATT_OP_WRITE_REQ 0x12
|
||||
struct bt_att_write_req {
|
||||
uint16_t handle;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Write Response */
|
||||
|
@ -187,7 +192,7 @@ struct bt_att_write_req {
|
|||
struct bt_att_prepare_write_req {
|
||||
uint16_t handle;
|
||||
uint16_t offset;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Prepare Write Respond */
|
||||
|
@ -195,7 +200,7 @@ struct bt_att_prepare_write_req {
|
|||
struct bt_att_prepare_write_rsp {
|
||||
uint16_t handle;
|
||||
uint16_t offset;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Execute Write Request */
|
||||
|
@ -214,14 +219,14 @@ struct bt_att_exec_write_req {
|
|||
#define BT_ATT_OP_NOTIFY 0x1b
|
||||
struct bt_att_notify {
|
||||
uint16_t handle;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Handle Value Indication */
|
||||
#define BT_ATT_OP_INDICATE 0x1d
|
||||
struct bt_att_indicate {
|
||||
uint16_t handle;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Handle Value Confirm */
|
||||
|
@ -233,14 +238,15 @@ struct bt_att_signature {
|
|||
|
||||
#define BT_ATT_OP_READ_MULT_VL_REQ 0x20
|
||||
struct bt_att_read_mult_vl_req {
|
||||
uint16_t handles[0];
|
||||
uint8_t _dummy[0];
|
||||
uint16_t handles[];
|
||||
} __packed;
|
||||
|
||||
/* Read Multiple Respose */
|
||||
#define BT_ATT_OP_READ_MULT_VL_RSP 0x21
|
||||
struct bt_att_read_mult_vl_rsp {
|
||||
uint16_t len;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Handle Multiple Value Notification */
|
||||
|
@ -248,19 +254,19 @@ struct bt_att_read_mult_vl_rsp {
|
|||
struct bt_att_notify_mult {
|
||||
uint16_t handle;
|
||||
uint16_t len;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Write Command */
|
||||
#define BT_ATT_OP_WRITE_CMD 0x52
|
||||
struct bt_att_write_cmd {
|
||||
uint16_t handle;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
||||
/* Signed Write Command */
|
||||
#define BT_ATT_OP_SIGNED_WRITE_CMD 0xd2
|
||||
struct bt_att_signed_write_cmd {
|
||||
uint16_t handle;
|
||||
uint8_t value[0];
|
||||
uint8_t value[];
|
||||
} __packed;
|
||||
|
|
|
@ -454,7 +454,7 @@ struct bt_hci_handle_count {
|
|||
#define BT_HCI_OP_HOST_NUM_COMPLETED_PACKETS BT_OP(BT_OGF_BASEBAND, 0x0035)
|
||||
struct bt_hci_cp_host_num_completed_packets {
|
||||
uint8_t num_handles;
|
||||
struct bt_hci_handle_count h[0];
|
||||
struct bt_hci_handle_count h[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_OP_WRITE_INQUIRY_MODE BT_OP(BT_OGF_BASEBAND, 0x0045)
|
||||
|
@ -1099,7 +1099,7 @@ struct bt_hci_ext_adv_set {
|
|||
struct bt_hci_cp_le_set_ext_adv_enable {
|
||||
uint8_t enable;
|
||||
uint8_t set_num;
|
||||
struct bt_hci_ext_adv_set s[0];
|
||||
struct bt_hci_ext_adv_set s[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_OP_LE_READ_MAX_ADV_DATA_LEN BT_OP(BT_OGF_LE, 0x003a)
|
||||
|
@ -1158,7 +1158,7 @@ struct bt_hci_cp_le_set_ext_scan_param {
|
|||
uint8_t own_addr_type;
|
||||
uint8_t filter_policy;
|
||||
uint8_t phys;
|
||||
struct bt_hci_ext_scan_phy p[0];
|
||||
struct bt_hci_ext_scan_phy p[];
|
||||
} __packed;
|
||||
|
||||
/* Extends BT_HCI_LE_SCAN_FILTER_DUP */
|
||||
|
@ -1189,7 +1189,7 @@ struct bt_hci_cp_le_ext_create_conn {
|
|||
uint8_t own_addr_type;
|
||||
bt_addr_le_t peer_addr;
|
||||
uint8_t phys;
|
||||
struct bt_hci_ext_conn_phy p[0];
|
||||
struct bt_hci_ext_conn_phy p[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_OP_LE_PER_ADV_CREATE_SYNC BT_OP(BT_OGF_LE, 0x0044)
|
||||
|
@ -1354,7 +1354,7 @@ struct bt_hci_evt_role_change {
|
|||
#define BT_HCI_EVT_NUM_COMPLETED_PACKETS 0x13
|
||||
struct bt_hci_evt_num_completed_packets {
|
||||
uint8_t num_handles;
|
||||
struct bt_hci_handle_count h[0];
|
||||
struct bt_hci_handle_count h[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_EVT_PIN_CODE_REQ 0x16
|
||||
|
@ -1510,11 +1510,11 @@ struct bt_hci_evt_le_advertising_info {
|
|||
uint8_t evt_type;
|
||||
bt_addr_le_t addr;
|
||||
uint8_t length;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
struct bt_hci_evt_le_advertising_report {
|
||||
uint8_t num_reports;
|
||||
struct bt_hci_evt_le_advertising_info adv_info[0];
|
||||
struct bt_hci_evt_le_advertising_info adv_info[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_EVT_LE_CONN_UPDATE_COMPLETE 0x03
|
||||
|
@ -1593,7 +1593,7 @@ struct bt_hci_evt_le_direct_adv_info {
|
|||
} __packed;
|
||||
struct bt_hci_evt_le_direct_adv_report {
|
||||
uint8_t num_reports;
|
||||
struct bt_hci_evt_le_direct_adv_info direct_adv_info[0];
|
||||
struct bt_hci_evt_le_direct_adv_info direct_adv_info[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_EVT_LE_PHY_UPDATE_COMPLETE 0x0c
|
||||
|
@ -1628,11 +1628,11 @@ struct bt_hci_evt_le_ext_advertising_info {
|
|||
uint16_t interval;
|
||||
bt_addr_le_t direct_addr;
|
||||
uint8_t length;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
struct bt_hci_evt_le_ext_advertising_report {
|
||||
uint8_t num_reports;
|
||||
struct bt_hci_evt_le_ext_advertising_info adv_info[0];
|
||||
struct bt_hci_evt_le_ext_advertising_info adv_info[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_EVT_LE_PER_ADV_SYNC_ESTABLISHED 0x0e
|
||||
|
@ -1654,7 +1654,7 @@ struct bt_hci_evt_le_per_advertising_report {
|
|||
uint8_t unused;
|
||||
uint8_t data_status;
|
||||
uint8_t length;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_EVT_LE_PER_ADV_SYNC_LOST 0x10
|
||||
|
|
|
@ -104,7 +104,7 @@ struct bt_hci_cp_vs_set_trace_enable {
|
|||
#define BT_HCI_OP_VS_READ_BUILD_INFO BT_OP(BT_OGF_VS, 0x0008)
|
||||
struct bt_hci_rp_vs_read_build_info {
|
||||
uint8_t status;
|
||||
uint8_t info[0];
|
||||
uint8_t info[];
|
||||
} __packed;
|
||||
|
||||
struct bt_hci_vs_static_addr {
|
||||
|
@ -116,7 +116,7 @@ struct bt_hci_vs_static_addr {
|
|||
struct bt_hci_rp_vs_read_static_addrs {
|
||||
uint8_t status;
|
||||
uint8_t num_addrs;
|
||||
struct bt_hci_vs_static_addr a[0];
|
||||
struct bt_hci_vs_static_addr a[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_OP_VS_READ_KEY_HIERARCHY_ROOTS BT_OP(BT_OGF_VS, 0x000a)
|
||||
|
@ -143,7 +143,7 @@ struct bt_hci_vs_cmd {
|
|||
struct bt_hci_rp_vs_read_host_stack_cmds {
|
||||
uint8_t status;
|
||||
uint8_t num_cmds;
|
||||
struct bt_hci_vs_cmd c[0];
|
||||
struct bt_hci_vs_cmd c[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_VS_SCAN_REQ_REPORTS_DISABLED 0x00
|
||||
|
@ -189,7 +189,7 @@ struct bt_hci_rp_vs_read_tx_power_level {
|
|||
struct bt_hci_rp_vs_read_usb_transport_mode {
|
||||
uint8_t status;
|
||||
uint8_t num_supported_modes;
|
||||
uint8_t supported_mode[0];
|
||||
uint8_t supported_mode[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_VS_USB_H2_MODE 0x00
|
||||
|
@ -210,7 +210,7 @@ struct bt_hci_evt_vs {
|
|||
#define BT_HCI_EVT_VS_FATAL_ERROR 0x02
|
||||
struct bt_hci_evt_vs_fatal_error {
|
||||
uint64_t pc;
|
||||
uint8_t err_info[0];
|
||||
uint8_t err_info[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_VS_TRACE_LMP_TX 0x01
|
||||
|
@ -221,7 +221,7 @@ struct bt_hci_evt_vs_fatal_error {
|
|||
#define BT_HCI_EVT_VS_TRACE_INFO 0x03
|
||||
struct bt_hci_evt_vs_trace_info {
|
||||
uint8_t type;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
#define BT_HCI_EVT_VS_SCAN_REQ_RX 0x04
|
||||
|
@ -267,14 +267,14 @@ struct bt_hci_rp_mesh_get_opts {
|
|||
#define BT_HCI_OC_MESH_SET_SCAN_FILTER 0x01
|
||||
struct bt_hci_mesh_pattern {
|
||||
uint8_t pattern_len;
|
||||
uint8_t pattern[0];
|
||||
uint8_t pattern[];
|
||||
} __packed;
|
||||
|
||||
struct bt_hci_cp_mesh_set_scan_filter {
|
||||
uint8_t scan_filter;
|
||||
uint8_t filter_dup;
|
||||
uint8_t num_patterns;
|
||||
struct bt_hci_mesh_pattern patterns[0];
|
||||
struct bt_hci_mesh_pattern patterns[];
|
||||
} __packed;
|
||||
struct bt_hci_rp_mesh_set_scan_filter {
|
||||
uint8_t status;
|
||||
|
@ -365,11 +365,11 @@ struct bt_hci_evt_mesh_scan_report {
|
|||
int8_t rssi;
|
||||
uint32_t instant;
|
||||
uint8_t data_len;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
struct bt_hci_evt_mesh_scanning_report {
|
||||
uint8_t num_reports;
|
||||
struct bt_hci_evt_mesh_scan_report reports[0];
|
||||
struct bt_hci_evt_mesh_scan_report reports[];
|
||||
} __packed;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -45,7 +45,7 @@ struct bt_l2cap_sig_hdr {
|
|||
#define BT_L2CAP_CMD_REJECT 0x01
|
||||
struct bt_l2cap_cmd_reject {
|
||||
uint16_t reason;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
struct bt_l2cap_cmd_reject_cid_data {
|
||||
|
@ -88,7 +88,7 @@ struct bt_l2cap_conn_rsp {
|
|||
struct bt_l2cap_conf_req {
|
||||
uint16_t dcid;
|
||||
uint16_t flags;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
#define BT_L2CAP_CONF_RSP 0x05
|
||||
|
@ -96,7 +96,7 @@ struct bt_l2cap_conf_rsp {
|
|||
uint16_t scid;
|
||||
uint16_t flags;
|
||||
uint16_t result;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
/* Option type used by MTU config request data */
|
||||
|
@ -108,7 +108,7 @@ struct bt_l2cap_conf_rsp {
|
|||
struct bt_l2cap_conf_opt {
|
||||
uint8_t type;
|
||||
uint8_t len;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
#define BT_L2CAP_DISCONN_REQ 0x06
|
||||
|
@ -139,7 +139,7 @@ struct bt_l2cap_info_req {
|
|||
struct bt_l2cap_info_rsp {
|
||||
uint16_t type;
|
||||
uint16_t result;
|
||||
uint8_t data[0];
|
||||
uint8_t data[];
|
||||
} __packed;
|
||||
|
||||
#define BT_L2CAP_CONN_PARAM_REQ 0x12
|
||||
|
@ -201,7 +201,7 @@ struct bt_l2cap_ecred_conn_req {
|
|||
uint16_t mtu;
|
||||
uint16_t mps;
|
||||
uint16_t credits;
|
||||
uint16_t scid[0];
|
||||
uint16_t scid[];
|
||||
} __packed;
|
||||
|
||||
#define BT_L2CAP_ECRED_CONN_RSP 0x18
|
||||
|
@ -210,14 +210,14 @@ struct bt_l2cap_ecred_conn_rsp {
|
|||
uint16_t mps;
|
||||
uint16_t credits;
|
||||
uint16_t result;
|
||||
uint16_t dcid[0];
|
||||
uint16_t dcid[];
|
||||
} __packed;
|
||||
|
||||
#define BT_L2CAP_ECRED_RECONF_REQ 0x19
|
||||
struct bt_l2cap_ecred_reconf_req {
|
||||
uint16_t mtu;
|
||||
uint16_t mps;
|
||||
uint16_t scid[0];
|
||||
uint16_t scid[];
|
||||
} __packed;
|
||||
|
||||
#define BT_L2CAP_RECONF_SUCCESS 0x0000
|
||||
|
|
|
@ -94,21 +94,21 @@ endif
|
|||
|
||||
ifeq ($(CHIP_FAMILY), samd51)
|
||||
PERIPHERALS_CHIP_FAMILY=sam_d5x_e5x
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
# TinyUSB defines
|
||||
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAMD51 -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
|
||||
endif
|
||||
|
||||
ifeq ($(CHIP_FAMILY), same51)
|
||||
PERIPHERALS_CHIP_FAMILY=sam_d5x_e5x
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
# TinyUSB defines
|
||||
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAME5X -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
|
||||
endif
|
||||
|
||||
ifeq ($(CHIP_FAMILY), same54)
|
||||
PERIPHERALS_CHIP_FAMILY=sam_d5x_e5x
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
# TinyUSB defines
|
||||
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAME5X -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
|
||||
endif
|
||||
|
@ -116,6 +116,9 @@ endif
|
|||
# option to override default optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||
CFLAGS += $(OPTIMIZATION_FLAGS)
|
||||
|
||||
# Add -ftree-vrp optimization and checking to all builds. It's not enabled for -Os by default.
|
||||
CFLAGS += -ftree-vrp
|
||||
|
||||
$(echo PERIPHERALS_CHIP_FAMILY=$(PERIPHERALS_CHIP_FAMILY))
|
||||
#Debugging/Optimization
|
||||
ifeq ($(DEBUG), 1)
|
||||
|
|
|
@ -9,3 +9,5 @@ CHIP_FAMILY = samd21
|
|||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
|
|
@ -16,3 +16,5 @@ CIRCUITPY_AUDIOBUSIO = 0
|
|||
CIRCUITPY_VECTORIO = 0
|
||||
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DotStar
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
|
|
@ -122,7 +122,7 @@ CFLAGS += \
|
|||
-fdata-sections \
|
||||
-Wall \
|
||||
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
|
||||
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||
CFLAGS += $(OPTIMIZATION_FLAGS)
|
||||
|
|
|
@ -80,7 +80,7 @@ ifeq ($(DEBUG), 1)
|
|||
OPTIMIZATION_FLAGS ?= -Og
|
||||
else
|
||||
CFLAGS += -DNDEBUG -ggdb3
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
# TODO: Test with -flto
|
||||
### CFLAGS += -flto
|
||||
endif
|
||||
|
|
|
@ -75,7 +75,7 @@ INC += \
|
|||
|
||||
# NDEBUG disables assert() statements. This reduces code size pretty dramatically, per tannewt.
|
||||
|
||||
CFLAGS += -Os -DNDEBUG -ffreestanding
|
||||
CFLAGS += -Os -ftree-vrp -DNDEBUG -ffreestanding
|
||||
|
||||
# TinyUSB defines
|
||||
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_MIMXRT10XX -DCFG_TUD_MIDI_RX_BUFSIZE=512 -DCFG_TUD_CDC_RX_BUFSIZE=512 -DCFG_TUD_MIDI_TX_BUFSIZE=512 -DCFG_TUD_CDC_TX_BUFSIZE=512 -DCFG_TUD_MSC_BUFSIZE=1024
|
||||
|
@ -108,7 +108,7 @@ CFLAGS += \
|
|||
-g3 -Wno-unused-parameter \
|
||||
-ffunction-sections -fdata-sections -fstack-usage
|
||||
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
|
||||
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||
CFLAGS += $(OPTIMIZATION_FLAGS)
|
||||
|
|
|
@ -89,7 +89,7 @@ ifeq ($(DEBUG), 1)
|
|||
CFLAGS += -ggdb3
|
||||
OPTIMIZATION_FLAGS = -Og
|
||||
else
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
CFLAGS += -DNDEBUG -ggdb3
|
||||
CFLAGS += -flto -flto-partition=none
|
||||
endif
|
||||
|
|
|
@ -16,12 +16,14 @@ CIRCUITPY_AUDIOMP3 = 0
|
|||
CIRCUITPY_BUSIO = 1
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_GAMEPAD = 0
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||
CIRCUITPY_NVM = 0
|
||||
CIRCUITPY_PIXELBUF = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
CIRCUITPY_ROTARYIO = 0
|
||||
CIRCUITPY_RTC = 1
|
||||
CIRCUITPY_SDCARDIO = 0
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
CIRCUITPY_ULAB = 0
|
||||
CIRCUITPY_WATCHDOG = 1
|
||||
|
|
|
@ -86,7 +86,7 @@ ifeq ($(DEBUG), 1)
|
|||
CFLAGS += -fno-inline -fno-ipa-sra
|
||||
else
|
||||
CFLAGS += -DNDEBUG
|
||||
OPTIMIZATION_FLAGS ?= -O2
|
||||
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
|
||||
CFLAGS += -ggdb3
|
||||
# TODO: Test with -flto
|
||||
# CFLAGS += -flto
|
||||
|
@ -95,6 +95,9 @@ endif
|
|||
# to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||
CFLAGS += $(OPTIMIZATION_FLAGS)
|
||||
|
||||
# Add -ftree-vrp optimization and checking to all builds. It's not enabled for -Os by default.
|
||||
CFLAGS += -ftree-vrp
|
||||
|
||||
# MCU Series is defined by the HAL package and doesn't need to be specified here
|
||||
C_DEFS = -D$(MCU_PACKAGE) -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -D$(MCU_VARIANT)
|
||||
|
||||
|
|
|
@ -20,3 +20,5 @@ LD_FILE = boards/STM32F401xd_fs.ld
|
|||
# lto for this port, and if other stuff hasn't been added in the
|
||||
# meantime
|
||||
CIRCUITPY_ULAB = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
|
2
py/py.mk
2
py/py.mk
|
@ -19,7 +19,7 @@ endif
|
|||
QSTR_GLOBAL_DEPENDENCIES += $(PY_SRC)/mpconfig.h mpconfigport.h
|
||||
|
||||
# some code is performance bottleneck and compiled with other optimization options
|
||||
_CSUPEROPT = -O3
|
||||
CSUPEROPT = -O3
|
||||
|
||||
# this sets the config file for FatFs
|
||||
CFLAGS_MOD += -DFFCONF_H=\"lib/oofatfs/ffconf.h\"
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
//| RGB565: ImageFormat
|
||||
//| """RGB565 format."""
|
||||
//|
|
||||
const mp_obj_type_t camera_imageformat_type;
|
||||
|
||||
const camera_imageformat_obj_t camera_imageformat_jpg_obj = {
|
||||
{ &camera_imageformat_type },
|
||||
|
|
|
@ -35,7 +35,7 @@ typedef enum {
|
|||
IMAGEFORMAT_RGB565,
|
||||
} camera_imageformat_t;
|
||||
|
||||
const mp_obj_type_t camera_imageformat_type;
|
||||
extern const mp_obj_type_t camera_imageformat_type;
|
||||
|
||||
camera_imageformat_t camera_imageformat_obj_to_type(mp_obj_t obj);
|
||||
mp_obj_t camera_imageformat_type_to_obj(camera_imageformat_t mode);
|
||||
|
|
Loading…
Reference in New Issue