diff options
Diffstat (limited to 'src/libs/mynewt-nimble/apps/bttester')
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/pkg.yml | 2 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/bttester.c | 44 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/bttester.h | 743 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/bttester_pipe.h | 6 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/gap.c | 162 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/gatt.c | 144 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/glue.c | 4 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/glue.h | 18 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/l2cap.c | 375 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/mesh.c | 182 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/rtt_pipe.c | 8 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/src/uart_pipe.c | 8 | ||||
-rw-r--r-- | src/libs/mynewt-nimble/apps/bttester/syscfg.yml | 18 |
13 files changed, 971 insertions, 743 deletions
diff --git a/src/libs/mynewt-nimble/apps/bttester/pkg.yml b/src/libs/mynewt-nimble/apps/bttester/pkg.yml index 00e7a760..ba2b7fb1 100644 --- a/src/libs/mynewt-nimble/apps/bttester/pkg.yml +++ b/src/libs/mynewt-nimble/apps/bttester/pkg.yml @@ -37,7 +37,7 @@ pkg.deps: - "@apache-mynewt-nimble/nimble/host/services/gap" - "@apache-mynewt-nimble/nimble/host/services/gatt" - "@apache-mynewt-nimble/nimble/host/services/dis" - - "@apache-mynewt-nimble/nimble/host/store/ram" + - "@apache-mynewt-nimble/nimble/host/store/config" - "@apache-mynewt-nimble/nimble/transport/ram" - "@apache-mynewt-core/hw/drivers/uart" - "@apache-mynewt-core/hw/drivers/rtt" diff --git a/src/libs/mynewt-nimble/apps/bttester/src/bttester.c b/src/libs/mynewt-nimble/apps/bttester/src/bttester.c index 54b14daa..5ddc2954 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/bttester.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/bttester.c @@ -44,16 +44,16 @@ static struct os_event bttester_ev[CMD_QUEUED]; struct btp_buf { struct os_event *ev; union { - u8_t data[BTP_MTU]; + uint8_t data[BTP_MTU]; struct btp_hdr hdr; }; }; static struct btp_buf cmd_buf[CMD_QUEUED]; -static void supported_commands(u8_t *data, u16_t len) +static void supported_commands(uint8_t *data, uint16_t len) { - u8_t buf[1]; + uint8_t buf[1]; struct core_read_supported_commands_rp *rp = (void *) buf; memset(buf, 0, sizeof(buf)); @@ -64,12 +64,12 @@ static void supported_commands(u8_t *data, u16_t len) tester_set_bit(buf, CORE_UNREGISTER_SERVICE); tester_send(BTP_SERVICE_ID_CORE, CORE_READ_SUPPORTED_COMMANDS, - BTP_INDEX_NONE, (u8_t *) rp, sizeof(buf)); + BTP_INDEX_NONE, (uint8_t *) rp, sizeof(buf)); } -static void supported_services(u8_t *data, u16_t len) +static void supported_services(uint8_t *data, uint16_t len) { - u8_t buf[1]; + uint8_t buf[1]; struct core_read_supported_services_rp *rp = (void *) buf; memset(buf, 0, sizeof(buf)); @@ -85,13 +85,13 @@ static void supported_services(u8_t *data, u16_t len) #endif /* MYNEWT_VAL(BLE_MESH) */ tester_send(BTP_SERVICE_ID_CORE, CORE_READ_SUPPORTED_SERVICES, - BTP_INDEX_NONE, (u8_t *) rp, sizeof(buf)); + BTP_INDEX_NONE, (uint8_t *) rp, sizeof(buf)); } -static void register_service(u8_t *data, u16_t len) +static void register_service(uint8_t *data, uint16_t len) { struct core_register_service_cmd *cmd = (void *) data; - u8_t status; + uint8_t status; switch (cmd->id) { case BTP_SERVICE_ID_GAP: @@ -124,10 +124,10 @@ rsp: status); } -static void unregister_service(u8_t *data, u16_t len) +static void unregister_service(uint8_t *data, uint16_t len) { struct core_unregister_service_cmd *cmd = (void *) data; - u8_t status; + uint8_t status; switch (cmd->id) { case BTP_SERVICE_ID_GAP: @@ -155,8 +155,8 @@ static void unregister_service(u8_t *data, u16_t len) status); } -static void handle_core(u8_t opcode, u8_t index, u8_t *data, - u16_t len) +static void handle_core(uint8_t opcode, uint8_t index, uint8_t *data, + uint16_t len) { if (index != BTP_INDEX_NONE) { tester_rsp(BTP_SERVICE_ID_CORE, opcode, index, @@ -186,7 +186,7 @@ static void handle_core(u8_t opcode, u8_t index, u8_t *data, static void cmd_handler(struct os_event *ev) { - u16_t len; + uint16_t len; struct btp_buf *cmd; if (!ev || !ev->ev_arg) { @@ -241,12 +241,12 @@ static void cmd_handler(struct os_event *ev) os_eventq_put(&avail_queue, ev); } -static u8_t *recv_cb(u8_t *buf, size_t *off) +static uint8_t *recv_cb(uint8_t *buf, size_t *off) { struct btp_hdr *cmd = (void *) buf; struct os_event *new_ev; struct btp_buf *new_buf, *old_buf; - u16_t len; + uint16_t len; if (*off < sizeof(*cmd)) { return buf; @@ -319,7 +319,7 @@ void tester_init(void) NULL, 0); } -void tester_send(u8_t service, u8_t opcode, u8_t index, u8_t *data, +void tester_send(uint8_t service, uint8_t opcode, uint8_t index, uint8_t *data, size_t len) { struct btp_hdr msg; @@ -329,7 +329,7 @@ void tester_send(u8_t service, u8_t opcode, u8_t index, u8_t *data, msg.index = index; msg.len = len; - bttester_pipe_send((u8_t *)&msg, sizeof(msg)); + bttester_pipe_send((uint8_t *)&msg, sizeof(msg)); if (data && len) { bttester_pipe_send(data, len); } @@ -344,7 +344,7 @@ void tester_send(u8_t service, u8_t opcode, u8_t index, u8_t *data, } } -void tester_send_buf(u8_t service, u8_t opcode, u8_t index, +void tester_send_buf(uint8_t service, uint8_t opcode, uint8_t index, struct os_mbuf *data) { struct btp_hdr msg; @@ -354,13 +354,13 @@ void tester_send_buf(u8_t service, u8_t opcode, u8_t index, msg.index = index; msg.len = os_mbuf_len(data); - bttester_pipe_send((u8_t *)&msg, sizeof(msg)); + bttester_pipe_send((uint8_t *)&msg, sizeof(msg)); if (data && msg.len) { bttester_pipe_send_buf(data); } } -void tester_rsp(u8_t service, u8_t opcode, u8_t index, u8_t status) +void tester_rsp(uint8_t service, uint8_t opcode, uint8_t index, uint8_t status) { struct btp_status s; @@ -370,5 +370,5 @@ void tester_rsp(u8_t service, u8_t opcode, u8_t index, u8_t status) } s.code = status; - tester_send(service, BTP_STATUS, index, (u8_t *) &s, sizeof(s)); + tester_send(service, BTP_STATUS, index, (uint8_t *) &s, sizeof(s)); } diff --git a/src/libs/mynewt-nimble/apps/bttester/src/bttester.h b/src/libs/mynewt-nimble/apps/bttester/src/bttester.h index f4e66a6f..6761681e 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/bttester.h +++ b/src/libs/mynewt-nimble/apps/bttester/src/bttester.h @@ -71,37 +71,37 @@ #define sys_cpu_to_le16 htole16 struct btp_hdr { - u8_t service; - u8_t opcode; - u8_t index; - u16_t len; - u8_t data[0]; + uint8_t service; + uint8_t opcode; + uint8_t index; + uint16_t len; + uint8_t data[0]; } __packed; #define BTP_STATUS 0x00 struct btp_status { - u8_t code; + uint8_t code; } __packed; /* Core Service */ #define CORE_READ_SUPPORTED_COMMANDS 0x01 struct core_read_supported_commands_rp { - u8_t data[0]; + uint8_t data[0]; } __packed; #define CORE_READ_SUPPORTED_SERVICES 0x02 struct core_read_supported_services_rp { - u8_t data[0]; + uint8_t data[0]; } __packed; #define CORE_REGISTER_SERVICE 0x03 struct core_register_service_cmd { - u8_t id; + uint8_t id; } __packed; #define CORE_UNREGISTER_SERVICE 0x04 struct core_unregister_service_cmd { - u8_t id; + uint8_t id; } __packed; /* events */ @@ -111,13 +111,13 @@ struct core_unregister_service_cmd { /* commands */ #define GAP_READ_SUPPORTED_COMMANDS 0x01 struct gap_read_supported_commands_rp { - u8_t data[0]; + uint8_t data[0]; } __packed; #define GAP_READ_CONTROLLER_INDEX_LIST 0x02 struct gap_read_controller_index_list_rp { - u8_t num; - u8_t index[0]; + uint8_t num; + uint8_t index[0]; } __packed; #define GAP_SETTINGS_POWERED 0 @@ -139,41 +139,41 @@ struct gap_read_controller_index_list_rp { #define GAP_READ_CONTROLLER_INFO 0x03 struct gap_read_controller_info_rp { - u8_t address[6]; - u32_t supported_settings; - u32_t current_settings; - u8_t cod[3]; - u8_t name[249]; - u8_t short_name[11]; + uint8_t address[6]; + uint32_t supported_settings; + uint32_t current_settings; + uint8_t cod[3]; + uint8_t name[249]; + uint8_t short_name[11]; } __packed; #define GAP_RESET 0x04 struct gap_reset_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_SET_POWERED 0x05 struct gap_set_powered_cmd { - u8_t powered; + uint8_t powered; } __packed; struct gap_set_powered_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_SET_CONNECTABLE 0x06 struct gap_set_connectable_cmd { - u8_t connectable; + uint8_t connectable; } __packed; struct gap_set_connectable_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_SET_FAST_CONNECTABLE 0x07 struct gap_set_fast_connectable_cmd { - u8_t fast_connectable; + uint8_t fast_connectable; } __packed; struct gap_set_fast_connectable_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_NON_DISCOVERABLE 0x00 @@ -182,34 +182,34 @@ struct gap_set_fast_connectable_rp { #define GAP_SET_DISCOVERABLE 0x08 struct gap_set_discoverable_cmd { - u8_t discoverable; + uint8_t discoverable; } __packed; struct gap_set_discoverable_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_SET_BONDABLE 0x09 struct gap_set_bondable_cmd { - u8_t bondable; + uint8_t bondable; } __packed; struct gap_set_bondable_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_START_ADVERTISING 0x0a struct gap_start_advertising_cmd { - u8_t adv_data_len; - u8_t scan_rsp_len; - u8_t adv_data[0]; - u8_t scan_rsp[0]; + uint8_t adv_data_len; + uint8_t scan_rsp_len; + uint8_t adv_data[0]; + uint8_t scan_rsp[0]; } __packed; struct gap_start_advertising_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_STOP_ADVERTISING 0x0b struct gap_stop_advertising_rp { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_DISCOVERY_FLAG_LE 0x01 @@ -220,21 +220,21 @@ struct gap_stop_advertising_rp { #define GAP_START_DISCOVERY 0x0c struct gap_start_discovery_cmd { - u8_t flags; + uint8_t flags; } __packed; #define GAP_STOP_DISCOVERY 0x0d #define GAP_CONNECT 0x0e struct gap_connect_cmd { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; #define GAP_DISCONNECT 0x0f struct gap_disconnect_cmd { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; #define GAP_IO_CAP_DISPLAY_ONLY 0 @@ -245,85 +245,85 @@ struct gap_disconnect_cmd { #define GAP_SET_IO_CAP 0x10 struct gap_set_io_cap_cmd { - u8_t io_cap; + uint8_t io_cap; } __packed; #define GAP_PAIR 0x11 struct gap_pair_cmd { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; #define GAP_UNPAIR 0x12 struct gap_unpair_cmd { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; #define GAP_PASSKEY_ENTRY 0x13 struct gap_passkey_entry_cmd { - u8_t address_type; - u8_t address[6]; - u32_t passkey; + uint8_t address_type; + uint8_t address[6]; + uint32_t passkey; } __packed; #define GAP_PASSKEY_CONFIRM 0x14 struct gap_passkey_confirm_cmd { - u8_t address_type; - u8_t address[6]; - u8_t match; + uint8_t address_type; + uint8_t address[6]; + uint8_t match; } __packed; #define GAP_START_DIRECT_ADV 0x15 struct gap_start_direct_adv_cmd { - u8_t address_type; - u8_t address[6]; - u8_t high_duty; + uint8_t address_type; + uint8_t address[6]; + uint8_t high_duty; } __packed; #define GAP_CONN_PARAM_UPDATE 0x16 struct gap_conn_param_update_cmd { - u8_t address_type; - u8_t address[6]; - u16_t conn_itvl_min; - u16_t conn_itvl_max; - u16_t conn_latency; - u16_t supervision_timeout; + uint8_t address_type; + uint8_t address[6]; + uint16_t conn_itvl_min; + uint16_t conn_itvl_max; + uint16_t conn_latency; + uint16_t supervision_timeout; } __packed; #define GAP_PAIRING_CONSENT_RSP 0x17 struct gap_pairing_consent_rsp_cmd { - u8_t address_type; - u8_t address[6]; - u8_t consent; + uint8_t address_type; + uint8_t address[6]; + uint8_t consent; } __packed; #define GAP_OOB_LEGACY_SET_DATA 0x18 struct gap_oob_legacy_set_data_cmd { - u8_t oob_data[16]; + uint8_t oob_data[16]; } __packed; #define GAP_OOB_SC_GET_LOCAL_DATA 0x19 struct gap_oob_sc_get_local_data_rp { - u8_t r[16]; - u8_t c[16]; + uint8_t r[16]; + uint8_t c[16]; } __packed; #define GAP_OOB_SC_SET_REMOTE_DATA 0x1a struct gap_oob_sc_set_remote_data_cmd { - u8_t r[16]; - u8_t c[16]; + uint8_t r[16]; + uint8_t c[16]; } __packed; #define GAP_SET_MITM 0x1b struct gap_set_mitm_cmd { - u8_t mitm; + uint8_t mitm; } __packed; /* events */ #define GAP_EV_NEW_SETTINGS 0x80 struct gap_new_settings_ev { - u32_t current_settings; + uint32_t current_settings; } __packed; #define GAP_DEVICE_FOUND_FLAG_RSSI 0x01 @@ -332,84 +332,84 @@ struct gap_new_settings_ev { #define GAP_EV_DEVICE_FOUND 0x81 struct gap_device_found_ev { - u8_t address_type; - u8_t address[6]; - s8_t rssi; - u8_t flags; - u16_t eir_data_len; - u8_t eir_data[0]; + uint8_t address_type; + uint8_t address[6]; + int8_t rssi; + uint8_t flags; + uint16_t eir_data_len; + uint8_t eir_data[0]; } __packed; #define GAP_EV_DEVICE_CONNECTED 0x82 struct gap_device_connected_ev { - u8_t address_type; - u8_t address[6]; - u16_t conn_itvl; - u16_t conn_latency; - u16_t supervision_timeout; + uint8_t address_type; + uint8_t address[6]; + uint16_t conn_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; } __packed; #define GAP_EV_DEVICE_DISCONNECTED 0x83 struct gap_device_disconnected_ev { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; #define GAP_EV_PASSKEY_DISPLAY 0x84 struct gap_passkey_display_ev { - u8_t address_type; - u8_t address[6]; - u32_t passkey; + uint8_t address_type; + uint8_t address[6]; + uint32_t passkey; } __packed; #define GAP_EV_PASSKEY_ENTRY_REQ 0x85 struct gap_passkey_entry_req_ev { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; #define GAP_EV_PASSKEY_CONFIRM_REQ 0x86 struct gap_passkey_confirm_req_ev { - u8_t address_type; - u8_t address[6]; - u32_t passkey; + uint8_t address_type; + uint8_t address[6]; + uint32_t passkey; } __packed; #define GAP_EV_IDENTITY_RESOLVED 0x87 struct gap_identity_resolved_ev { - u8_t address_type; - u8_t address[6]; - u8_t identity_address_type; - u8_t identity_address[6]; + uint8_t address_type; + uint8_t address[6]; + uint8_t identity_address_type; + uint8_t identity_address[6]; } __packed; #define GAP_EV_CONN_PARAM_UPDATE 0x88 struct gap_conn_param_update_ev { - u8_t address_type; - u8_t address[6]; - u16_t conn_itvl; - u16_t conn_latency; - u16_t supervision_timeout; + uint8_t address_type; + uint8_t address[6]; + uint16_t conn_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; } __packed; #define GAP_EV_SEC_LEVEL_CHANGED 0x89 struct gap_sec_level_changed_ev { - u8_t address_type; - u8_t address[6]; - u8_t level; + uint8_t address_type; + uint8_t address[6]; + uint8_t level; } __packed; #define GAP_EV_PAIRING_CONSENT_REQ 0x8a struct gap_pairing_consent_req_ev { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; /* GATT Service */ /* commands */ #define GATT_READ_SUPPORTED_COMMANDS 0x01 struct gatt_read_supported_commands_rp { - u8_t data[0]; + uint8_t data[0]; } __packed; #define GATT_SERVICE_PRIMARY 0x00 @@ -417,320 +417,320 @@ struct gatt_read_supported_commands_rp { #define GATT_ADD_SERVICE 0x02 struct gatt_add_service_cmd { - u8_t type; - u8_t uuid_length; - u8_t uuid[0]; + uint8_t type; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; struct gatt_add_service_rp { - u16_t svc_id; + uint16_t svc_id; } __packed; #define GATT_ADD_CHARACTERISTIC 0x03 struct gatt_add_characteristic_cmd { - u16_t svc_id; - u8_t properties; - u8_t permissions; - u8_t uuid_length; - u8_t uuid[0]; + uint16_t svc_id; + uint8_t properties; + uint8_t permissions; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; struct gatt_add_characteristic_rp { - u16_t char_id; + uint16_t char_id; } __packed; #define GATT_ADD_DESCRIPTOR 0x04 struct gatt_add_descriptor_cmd { - u16_t char_id; - u8_t permissions; - u8_t uuid_length; - u8_t uuid[0]; + uint16_t char_id; + uint8_t permissions; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; struct gatt_add_descriptor_rp { - u16_t desc_id; + uint16_t desc_id; } __packed; #define GATT_ADD_INCLUDED_SERVICE 0x05 struct gatt_add_included_service_cmd { - u16_t svc_id; + uint16_t svc_id; } __packed; struct gatt_add_included_service_rp { - u16_t included_service_id; + uint16_t included_service_id; } __packed; #define GATT_SET_VALUE 0x06 struct gatt_set_value_cmd { - u16_t attr_id; - u16_t len; - u8_t value[0]; + uint16_t attr_id; + uint16_t len; + uint8_t value[0]; } __packed; #define GATT_START_SERVER 0x07 struct gatt_start_server_rp { - u16_t db_attr_off; - u8_t db_attr_cnt; + uint16_t db_attr_off; + uint8_t db_attr_cnt; } __packed; #define GATT_SET_ENC_KEY_SIZE 0x09 struct gatt_set_enc_key_size_cmd { - u16_t attr_id; - u8_t key_size; + uint16_t attr_id; + uint8_t key_size; } __packed; /* Gatt Client */ struct gatt_service { - u16_t start_handle; - u16_t end_handle; - u8_t uuid_length; - u8_t uuid[0]; + uint16_t start_handle; + uint16_t end_handle; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; struct gatt_included { - u16_t included_handle; + uint16_t included_handle; struct gatt_service service; } __packed; struct gatt_characteristic { - u16_t characteristic_handle; - u16_t value_handle; - u8_t properties; - u8_t uuid_length; - u8_t uuid[0]; + uint16_t characteristic_handle; + uint16_t value_handle; + uint8_t properties; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; struct gatt_descriptor { - u16_t descriptor_handle; - u8_t uuid_length; - u8_t uuid[0]; + uint16_t descriptor_handle; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; #define GATT_EXCHANGE_MTU 0x0a #define GATT_DISC_ALL_PRIM_SVCS 0x0b struct gatt_disc_all_prim_svcs_cmd { - u8_t address_type; - u8_t address[6]; + uint8_t address_type; + uint8_t address[6]; } __packed; struct gatt_disc_all_prim_svcs_rp { - u8_t services_count; + uint8_t services_count; struct gatt_service services[0]; } __packed; #define GATT_DISC_PRIM_UUID 0x0c struct gatt_disc_prim_uuid_cmd { - u8_t address_type; - u8_t address[6]; - u8_t uuid_length; - u8_t uuid[0]; + uint8_t address_type; + uint8_t address[6]; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; struct gatt_disc_prim_uuid_rp { - u8_t services_count; + uint8_t services_count; struct gatt_service services[0]; } __packed; #define GATT_FIND_INCLUDED 0x0d struct gatt_find_included_cmd { - u8_t address_type; - u8_t address[6]; - u16_t start_handle; - u16_t end_handle; + uint8_t address_type; + uint8_t address[6]; + uint16_t start_handle; + uint16_t end_handle; } __packed; struct gatt_find_included_rp { - u8_t services_count; + uint8_t services_count; struct gatt_included included[0]; } __packed; #define GATT_DISC_ALL_CHRC 0x0e struct gatt_disc_all_chrc_cmd { - u8_t address_type; - u8_t address[6]; - u16_t start_handle; - u16_t end_handle; + uint8_t address_type; + uint8_t address[6]; + uint16_t start_handle; + uint16_t end_handle; } __packed; struct gatt_disc_chrc_rp { - u8_t characteristics_count; + uint8_t characteristics_count; struct gatt_characteristic characteristics[0]; } __packed; #define GATT_DISC_CHRC_UUID 0x0f struct gatt_disc_chrc_uuid_cmd { - u8_t address_type; - u8_t address[6]; - u16_t start_handle; - u16_t end_handle; - u8_t uuid_length; - u8_t uuid[0]; + uint8_t address_type; + uint8_t address[6]; + uint16_t start_handle; + uint16_t end_handle; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; #define GATT_DISC_ALL_DESC 0x10 struct gatt_disc_all_desc_cmd { - u8_t address_type; - u8_t address[6]; - u16_t start_handle; - u16_t end_handle; + uint8_t address_type; + uint8_t address[6]; + uint16_t start_handle; + uint16_t end_handle; } __packed; struct gatt_disc_all_desc_rp { - u8_t descriptors_count; + uint8_t descriptors_count; struct gatt_descriptor descriptors[0]; } __packed; #define GATT_READ 0x11 struct gatt_read_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; } __packed; struct gatt_read_rp { - u8_t att_response; - u16_t data_length; - u8_t data[0]; + uint8_t att_response; + uint16_t data_length; + uint8_t data[0]; } __packed; #define GATT_READ_UUID 0x12 struct gatt_read_uuid_cmd { - u8_t address_type; - u8_t address[6]; - u16_t start_handle; - u16_t end_handle; - u8_t uuid_length; - u8_t uuid[0]; + uint8_t address_type; + uint8_t address[6]; + uint16_t start_handle; + uint16_t end_handle; + uint8_t uuid_length; + uint8_t uuid[0]; } __packed; #define GATT_READ_LONG 0x13 struct gatt_read_long_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; - u16_t offset; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; + uint16_t offset; } __packed; #define GATT_READ_MULTIPLE 0x14 struct gatt_read_multiple_cmd { - u8_t address_type; - u8_t address[6]; - u8_t handles_count; - u16_t handles[0]; + uint8_t address_type; + uint8_t address[6]; + uint8_t handles_count; + uint16_t handles[0]; } __packed; #define GATT_WRITE_WITHOUT_RSP 0x15 struct gatt_write_without_rsp_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; - u16_t data_length; - u8_t data[0]; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; + uint16_t data_length; + uint8_t data[0]; } __packed; #define GATT_SIGNED_WRITE_WITHOUT_RSP 0x16 struct gatt_signed_write_without_rsp_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; - u16_t data_length; - u8_t data[0]; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; + uint16_t data_length; + uint8_t data[0]; } __packed; #define GATT_WRITE 0x17 struct gatt_write_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; - u16_t data_length; - u8_t data[0]; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; + uint16_t data_length; + uint8_t data[0]; } __packed; #define GATT_WRITE_LONG 0x18 struct gatt_write_long_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; - u16_t offset; - u16_t data_length; - u8_t data[0]; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; + uint16_t offset; + uint16_t data_length; + uint8_t data[0]; } __packed; #define GATT_RELIABLE_WRITE 0x19 struct gatt_reliable_write_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; - u16_t offset; - u16_t data_length; - u8_t data[0]; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; + uint16_t offset; + uint16_t data_length; + uint8_t data[0]; } __packed; #define GATT_CFG_NOTIFY 0x1a #define GATT_CFG_INDICATE 0x1b struct gatt_cfg_notify_cmd { - u8_t address_type; - u8_t address[6]; - u8_t enable; - u16_t ccc_handle; + uint8_t address_type; + uint8_t address[6]; + uint8_t enable; + uint16_t ccc_handle; } __packed; #define GATT_GET_ATTRIBUTES 0x1c struct gatt_get_attributes_cmd { - u16_t start_handle; - u16_t end_handle; - u8_t type_length; - u8_t type[0]; + uint16_t start_handle; + uint16_t end_handle; + uint8_t type_length; + uint8_t type[0]; } __packed; struct gatt_get_attributes_rp { - u8_t attrs_count; - u8_t attrs[0]; + uint8_t attrs_count; + uint8_t attrs[0]; } __packed; struct gatt_attr { - u16_t handle; - u8_t permission; - u8_t type_length; - u8_t type[0]; + uint16_t handle; + uint8_t permission; + uint8_t type_length; + uint8_t type[0]; } __packed; #define GATT_GET_ATTRIBUTE_VALUE 0x1d struct gatt_get_attribute_value_cmd { - u8_t address_type; - u8_t address[6]; - u16_t handle; + uint8_t address_type; + uint8_t address[6]; + uint16_t handle; } __packed; struct gatt_get_attribute_value_rp { - u8_t att_response; - u16_t value_length; - u8_t value[0]; + uint8_t att_response; + uint16_t value_length; + uint8_t value[0]; } __packed; #define GATT_CHANGE_DATABASE 0x1e struct gatt_change_database { - u16_t start_handle; - u16_t end_handle; - u8_t visibility; + uint16_t start_handle; + uint16_t end_handle; + uint8_t visibility; } __packed; /* GATT events */ #define GATT_EV_NOTIFICATION 0x80 struct gatt_notification_ev { - u8_t address_type; - u8_t address[6]; - u8_t type; - u16_t handle; - u16_t data_length; - u8_t data[0]; + uint8_t address_type; + uint8_t address[6]; + uint8_t type; + uint16_t handle; + uint16_t data_length; + uint8_t data[0]; } __packed; #define GATT_EV_ATTR_VALUE_CHANGED 0x81 struct gatt_attr_value_changed_ev { - u16_t handle; - u16_t data_length; - u8_t data[0]; + uint16_t handle; + uint16_t data_length; + uint8_t data[0]; } __packed; -static inline void tester_set_bit(u8_t *addr, unsigned int bit) +static inline void tester_set_bit(uint8_t *addr, unsigned int bit) { - u8_t *p = addr + (bit / 8); + uint8_t *p = addr + (bit / 8); *p |= BIT(bit % 8); } -static inline u8_t tester_test_bit(const u8_t *addr, unsigned int bit) +static inline uint8_t tester_test_bit(const uint8_t *addr, unsigned int bit) { - const u8_t *p = addr + (bit / 8); + const uint8_t *p = addr + (bit / 8); return *p & BIT(bit % 8); } @@ -739,30 +739,33 @@ static inline u8_t tester_test_bit(const u8_t *addr, unsigned int bit) /* commands */ #define L2CAP_READ_SUPPORTED_COMMANDS 0x01 struct l2cap_read_supported_commands_rp { - u8_t data[0]; + uint8_t data[0]; } __packed; #define L2CAP_CONNECT 0x02 struct l2cap_connect_cmd { - u8_t address_type; - u8_t address[6]; - u16_t psm; + uint8_t address_type; + uint8_t address[6]; + uint16_t psm; + uint16_t mtu; + uint8_t num; } __packed; struct l2cap_connect_rp { - u8_t chan_id; + uint8_t num; + uint8_t chan_ids[0]; } __packed; #define L2CAP_DISCONNECT 0x03 struct l2cap_disconnect_cmd { - u8_t chan_id; + uint8_t chan_id; } __packed; #define L2CAP_SEND_DATA 0x04 struct l2cap_send_data_cmd { - u8_t chan_id; - u16_t data_len; - u8_t data[]; + uint8_t chan_id; + uint16_t data_len; + uint8_t data[]; } __packed; #define L2CAP_TRANSPORT_BREDR 0x00 @@ -770,54 +773,78 @@ struct l2cap_send_data_cmd { #define L2CAP_LISTEN 0x05 struct l2cap_listen_cmd { - u16_t psm; - u8_t transport; + uint16_t psm; + uint8_t transport; + uint16_t mtu; + uint16_t response; } __packed; #define L2CAP_ACCEPT_CONNECTION 0x06 struct l2cap_accept_connection_cmd { - u8_t chan_id; - u16_t result; + uint8_t chan_id; + uint16_t result; +} __packed; + +#define L2CAP_RECONFIGURE 0x07 +struct l2cap_reconfigure_cmd { + uint8_t address_type; + uint8_t address[6]; + uint16_t mtu; + uint8_t num; + uint8_t idxs[]; } __packed; /* events */ #define L2CAP_EV_CONNECTION_REQ 0x80 struct l2cap_connection_req_ev { - u8_t chan_id; - u16_t psm; - u8_t address_type; - u8_t address[6]; + uint8_t chan_id; + uint16_t psm; + uint8_t address_type; + uint8_t address[6]; } __packed; #define L2CAP_EV_CONNECTED 0x81 struct l2cap_connected_ev { - u8_t chan_id; - u16_t psm; - u8_t address_type; - u8_t address[6]; + uint8_t chan_id; + uint16_t psm; + uint16_t peer_mtu; + uint16_t peer_mps; + uint16_t our_mtu; + uint16_t our_mps; + uint8_t address_type; + uint8_t address[6]; } __packed; #define L2CAP_EV_DISCONNECTED 0x82 struct l2cap_disconnected_ev { - u16_t result; - u8_t chan_id; - u16_t psm; - u8_t address_type; - u8_t address[6]; + uint16_t result; + uint8_t chan_id; + uint16_t psm; + uint8_t address_type; + uint8_t address[6]; } __packed; #define L2CAP_EV_DATA_RECEIVED 0x83 struct l2cap_data_received_ev { - u8_t chan_id; - u16_t data_length; - u8_t data[0]; + uint8_t chan_id; + uint16_t data_length; + uint8_t data[0]; +} __packed; + +#define L2CAP_EV_RECONFIGURED 0x84 +struct l2cap_reconfigured_ev { + uint8_t chan_id; + uint16_t peer_mtu; + uint16_t peer_mps; + uint16_t our_mtu; + uint16_t our_mps; } __packed; /* MESH Service */ /* commands */ #define MESH_READ_SUPPORTED_COMMANDS 0x01 struct mesh_read_supported_commands_rp { - u8_t data[0]; + uint8_t data[0]; } __packed; #define MESH_OUT_BLINK BIT(0) @@ -833,88 +860,88 @@ struct mesh_read_supported_commands_rp { #define MESH_CONFIG_PROVISIONING 0x02 struct mesh_config_provisioning_cmd { - u8_t uuid[16]; - u8_t static_auth[16]; - u8_t out_size; - u16_t out_actions; - u8_t in_size; - u16_t in_actions; + uint8_t uuid[16]; + uint8_t static_auth[16]; + uint8_t out_size; + uint16_t out_actions; + uint8_t in_size; + uint16_t in_actions; } __packed; #define MESH_PROVISION_NODE 0x03 struct mesh_provision_node_cmd { - u8_t net_key[16]; - u16_t net_key_idx; - u8_t flags; - u32_t iv_index; - u32_t seq_num; - u16_t addr; - u8_t dev_key[16]; + uint8_t net_key[16]; + uint16_t net_key_idx; + uint8_t flags; + uint32_t iv_index; + uint32_t seq_num; + uint16_t addr; + uint8_t dev_key[16]; } __packed; #define MESH_INIT 0x04 #define MESH_RESET 0x05 #define MESH_INPUT_NUMBER 0x06 struct mesh_input_number_cmd { - u32_t number; + uint32_t number; } __packed; #define MESH_INPUT_STRING 0x07 struct mesh_input_string_cmd { - u8_t string_len; - u8_t string[0]; + uint8_t string_len; + uint8_t string[0]; } __packed; #define MESH_IVU_TEST_MODE 0x08 struct mesh_ivu_test_mode_cmd { - u8_t enable; + uint8_t enable; } __packed; #define MESH_IVU_TOGGLE_STATE 0x09 #define MESH_NET_SEND 0x0a struct mesh_net_send_cmd { - u8_t ttl; - u16_t src; - u16_t dst; - u8_t payload_len; - u8_t payload[0]; + uint8_t ttl; + uint16_t src; + uint16_t dst; + uint8_t payload_len; + uint8_t payload[0]; } __packed; #define MESH_HEALTH_GENERATE_FAULTS 0x0b struct mesh_health_generate_faults_rp { - u8_t test_id; - u8_t cur_faults_count; - u8_t reg_faults_count; - u8_t current_faults[0]; - u8_t registered_faults[0]; + uint8_t test_id; + uint8_t cur_faults_count; + uint8_t reg_faults_count; + uint8_t current_faults[0]; + uint8_t registered_faults[0]; } __packed; #define MESH_HEALTH_CLEAR_FAULTS 0x0c #define MESH_LPN 0x0d struct mesh_lpn_set_cmd { - u8_t enable; + uint8_t enable; } __packed; #define MESH_LPN_POLL 0x0e #define MESH_MODEL_SEND 0x0f struct mesh_model_send_cmd { - u16_t src; - u16_t dst; - u8_t payload_len; - u8_t payload[0]; + uint16_t src; + uint16_t dst; + uint8_t payload_len; + uint8_t payload[0]; } __packed; #define MESH_LPN_SUBSCRIBE 0x10 struct mesh_lpn_subscribe_cmd { - u16_t address; + uint16_t address; } __packed; #define MESH_LPN_UNSUBSCRIBE 0x11 struct mesh_lpn_unsubscribe_cmd { - u16_t address; + uint16_t address; } __packed; #define MESH_RPL_CLEAR 0x12 @@ -923,20 +950,20 @@ struct mesh_lpn_unsubscribe_cmd { /* events */ #define MESH_EV_OUT_NUMBER_ACTION 0x80 struct mesh_out_number_action_ev { - u16_t action; - u32_t number; + uint16_t action; + uint32_t number; } __packed; #define MESH_EV_OUT_STRING_ACTION 0x81 struct mesh_out_string_action_ev { - u8_t string_len; - u8_t string[0]; + uint8_t string_len; + uint8_t string[0]; } __packed; #define MESH_EV_IN_ACTION 0x82 struct mesh_in_action_ev { - u16_t action; - u8_t size; + uint16_t action; + uint8_t size; } __packed; #define MESH_EV_PROVISIONED 0x83 @@ -945,63 +972,63 @@ struct mesh_in_action_ev { #define MESH_PROV_BEARER_PB_GATT 0x01 #define MESH_EV_PROV_LINK_OPEN 0x84 struct mesh_prov_link_open_ev { - u8_t bearer; + uint8_t bearer; } __packed; #define MESH_EV_PROV_LINK_CLOSED 0x85 struct mesh_prov_link_closed_ev { - u8_t bearer; + uint8_t bearer; } __packed; #define MESH_EV_NET_RECV 0x86 struct mesh_net_recv_ev { - u8_t ttl; - u8_t ctl; - u16_t src; - u16_t dst; - u8_t payload_len; - u8_t payload[0]; + uint8_t ttl; + uint8_t ctl; + uint16_t src; + uint16_t dst; + uint8_t payload_len; + uint8_t payload[0]; } __packed; #define MESH_EV_INVALID_BEARER 0x87 struct mesh_invalid_bearer_ev { - u8_t opcode; + uint8_t opcode; } __packed; #define MESH_EV_INCOMP_TIMER_EXP 0x88 void tester_init(void); -void tester_rsp(u8_t service, u8_t opcode, u8_t index, u8_t status); -void tester_send(u8_t service, u8_t opcode, u8_t index, u8_t *data, +void tester_rsp(uint8_t service, uint8_t opcode, uint8_t index, uint8_t status); +void tester_send(uint8_t service, uint8_t opcode, uint8_t index, uint8_t *data, size_t len); -void tester_send_buf(u8_t service, u8_t opcode, u8_t index, +void tester_send_buf(uint8_t service, uint8_t opcode, uint8_t index, struct os_mbuf *buf); -u8_t tester_init_gap(void); -u8_t tester_unregister_gap(void); -void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data, - u16_t len); -u8_t tester_init_gatt(void); -u8_t tester_unregister_gatt(void); -void tester_handle_gatt(u8_t opcode, u8_t index, u8_t *data, - u16_t len); -int tester_gatt_notify_rx_ev(u16_t conn_handle, u16_t attr_handle, - u8_t indication, struct os_mbuf *om); -int tester_gatt_subscribe_ev(u16_t conn_handle, u16_t attr_handle, u8_t reason, - u8_t prev_notify, u8_t cur_notify, - u8_t prev_indicate, u8_t cur_indicate); +uint8_t tester_init_gap(void); +uint8_t tester_unregister_gap(void); +void tester_handle_gap(uint8_t opcode, uint8_t index, uint8_t *data, + uint16_t len); +uint8_t tester_init_gatt(void); +uint8_t tester_unregister_gatt(void); +void tester_handle_gatt(uint8_t opcode, uint8_t index, uint8_t *data, + uint16_t len); +int tester_gatt_notify_rx_ev(uint16_t conn_handle, uint16_t attr_handle, + uint8_t indication, struct os_mbuf *om); +int tester_gatt_subscribe_ev(uint16_t conn_handle, uint16_t attr_handle, uint8_t reason, + uint8_t prev_notify, uint8_t cur_notify, + uint8_t prev_indicate, uint8_t cur_indicate); #if MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) -u8_t tester_init_l2cap(void); -u8_t tester_unregister_l2cap(void); -void tester_handle_l2cap(u8_t opcode, u8_t index, u8_t *data, - u16_t len); +uint8_t tester_init_l2cap(void); +uint8_t tester_unregister_l2cap(void); +void tester_handle_l2cap(uint8_t opcode, uint8_t index, uint8_t *data, + uint16_t len); #endif #if MYNEWT_VAL(BLE_MESH) -u8_t tester_init_mesh(void); -u8_t tester_unregister_mesh(void); -void tester_handle_mesh(u8_t opcode, u8_t index, u8_t *data, u16_t len); +uint8_t tester_init_mesh(void); +uint8_t tester_unregister_mesh(void); +void tester_handle_mesh(uint8_t opcode, uint8_t index, uint8_t *data, uint16_t len); #endif /* MYNEWT_VAL(BLE_MESH) */ void gatt_svr_register_cb(struct ble_gatt_register_ctxt *ctxt, void *arg); diff --git a/src/libs/mynewt-nimble/apps/bttester/src/bttester_pipe.h b/src/libs/mynewt-nimble/apps/bttester/src/bttester_pipe.h index c54d42de..64b63cd6 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/bttester_pipe.h +++ b/src/libs/mynewt-nimble/apps/bttester/src/bttester_pipe.h @@ -27,9 +27,9 @@ extern "C" { #endif -typedef u8_t *(*bttester_pipe_recv_cb)(u8_t *buf, size_t *off); -void bttester_pipe_register(u8_t *buf, size_t len, bttester_pipe_recv_cb cb); -int bttester_pipe_send(const u8_t *data, int len); +typedef uint8_t *(*bttester_pipe_recv_cb)(uint8_t *buf, size_t *off); +void bttester_pipe_register(uint8_t *buf, size_t len, bttester_pipe_recv_cb cb); +int bttester_pipe_send(const uint8_t *data, int len); int bttester_pipe_send_buf(struct os_mbuf *buf); int bttester_pipe_init(void); diff --git a/src/libs/mynewt-nimble/apps/bttester/src/gap.c b/src/libs/mynewt-nimble/apps/bttester/src/gap.c index 9d6de043..acac9989 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/gap.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/gap.c @@ -51,7 +51,7 @@ static struct ble_sm_sc_oob_data oob_data_local; static struct ble_sm_sc_oob_data oob_data_remote; static uint16_t current_settings; -u8_t own_addr_type; +uint8_t own_addr_type; static ble_addr_t peer_id_addr; static ble_addr_t peer_ota_addr; static bool encrypted = false; @@ -109,9 +109,9 @@ static int gap_conn_find_by_addr(const ble_addr_t *dev_addr, static int gap_event_cb(struct ble_gap_event *event, void *arg); -static void supported_commands(u8_t *data, u16_t len) +static void supported_commands(uint8_t *data, uint16_t len) { - u8_t cmds[3]; + uint8_t cmds[3]; struct gap_read_supported_commands_rp *rp = (void *) &cmds; SYS_LOG_DBG(""); @@ -143,13 +143,13 @@ static void supported_commands(u8_t *data, u16_t len) tester_set_bit(cmds, GAP_SET_MITM); tester_send(BTP_SERVICE_ID_GAP, GAP_READ_SUPPORTED_COMMANDS, - CONTROLLER_INDEX, (u8_t *) rp, sizeof(cmds)); + CONTROLLER_INDEX, (uint8_t *) rp, sizeof(cmds)); } -static void controller_index_list(u8_t *data, u16_t len) +static void controller_index_list(uint8_t *data, uint16_t len) { struct gap_read_controller_index_list_rp *rp; - u8_t buf[sizeof(*rp) + 1]; + uint8_t buf[sizeof(*rp) + 1]; SYS_LOG_DBG(""); @@ -159,7 +159,7 @@ static void controller_index_list(u8_t *data, u16_t len) rp->index[0] = CONTROLLER_INDEX; tester_send(BTP_SERVICE_ID_GAP, GAP_READ_CONTROLLER_INDEX_LIST, - BTP_INDEX_NONE, (u8_t *) rp, sizeof(buf)); + BTP_INDEX_NONE, (uint8_t *) rp, sizeof(buf)); } static int check_pub_addr_unassigned(void) @@ -174,10 +174,10 @@ static int check_pub_addr_unassigned(void) #endif } -static void controller_info(u8_t *data, u16_t len) +static void controller_info(uint8_t *data, uint16_t len) { struct gap_read_controller_info_rp rp; - u32_t supported_settings = 0; + uint32_t supported_settings = 0; ble_addr_t addr; int rc; @@ -240,7 +240,7 @@ static void controller_info(u8_t *data, u16_t len) memcpy(rp.name, CONTROLLER_NAME, sizeof(CONTROLLER_NAME)); tester_send(BTP_SERVICE_ID_GAP, GAP_READ_CONTROLLER_INFO, - CONTROLLER_INDEX, (u8_t *) &rp, sizeof(rp)); + CONTROLLER_INDEX, (uint8_t *) &rp, sizeof(rp)); } static struct ble_gap_adv_params adv_params = { @@ -248,7 +248,7 @@ static struct ble_gap_adv_params adv_params = { .disc_mode = BLE_GAP_DISC_MODE_NON, }; -static void set_connectable(u8_t *data, u16_t len) +static void set_connectable(uint8_t *data, uint16_t len) { const struct gap_set_connectable_cmd *cmd = (void *) data; struct gap_set_connectable_rp rp; @@ -266,12 +266,12 @@ static void set_connectable(u8_t *data, u16_t len) rp.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_SET_CONNECTABLE, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) &rp, sizeof(rp)); } -static u8_t ad_flags = BLE_HS_ADV_F_BREDR_UNSUP; +static uint8_t ad_flags = BLE_HS_ADV_F_BREDR_UNSUP; -static void set_discoverable(u8_t *data, u16_t len) +static void set_discoverable(uint8_t *data, uint16_t len) { const struct gap_set_discoverable_cmd *cmd = (void *) data; struct gap_set_discoverable_rp rp; @@ -305,10 +305,10 @@ static void set_discoverable(u8_t *data, u16_t len) rp.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_SET_DISCOVERABLE, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) &rp, sizeof(rp)); } -static void set_bondable(const u8_t *data, u16_t len) +static void set_bondable(const uint8_t *data, uint16_t len) { const struct gap_set_bondable_cmd *cmd = (void *) data; struct gap_set_bondable_rp rp; @@ -325,7 +325,7 @@ static void set_bondable(const u8_t *data, u16_t len) rp.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_SET_BONDABLE, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) &rp, sizeof(rp)); } static struct bt_data ad[10] = { @@ -334,7 +334,7 @@ static struct bt_data ad[10] = { static struct bt_data sd[10]; static int set_ad(const struct bt_data *ad, size_t ad_len, - u8_t *buf, u8_t *buf_len) + uint8_t *buf, uint8_t *buf_len) { int i; @@ -350,14 +350,14 @@ static int set_ad(const struct bt_data *ad, size_t ad_len, return 0; } -static void start_advertising(const u8_t *data, u16_t len) +static void start_advertising(const uint8_t *data, uint16_t len) { const struct gap_start_advertising_cmd *cmd = (void *) data; struct gap_start_advertising_rp rp; int32_t duration_ms = BLE_HS_FOREVER; uint8_t buf[BLE_HS_ADV_MAX_SZ]; uint8_t buf_len = 0; - u8_t adv_len, sd_len; + uint8_t adv_len, sd_len; int err; int i; @@ -429,14 +429,14 @@ static void start_advertising(const u8_t *data, u16_t len) rp.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_START_ADVERTISING, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) &rp, sizeof(rp)); return; fail: tester_rsp(BTP_SERVICE_ID_GAP, GAP_START_ADVERTISING, CONTROLLER_INDEX, BTP_STATUS_FAILED); } -static void stop_advertising(const u8_t *data, u16_t len) +static void stop_advertising(const uint8_t *data, uint16_t len) { struct gap_stop_advertising_rp rp; @@ -452,12 +452,12 @@ static void stop_advertising(const u8_t *data, u16_t len) rp.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_STOP_ADVERTISING, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) &rp, sizeof(rp)); } -static u8_t get_ad_flags(const u8_t *data, u8_t data_len) +static uint8_t get_ad_flags(const uint8_t *data, uint8_t data_len) { - u8_t len, i; + uint8_t len, i; /* Parse advertisement to get flags */ for (i = 0; i < data_len; i += len - 1) { @@ -482,11 +482,11 @@ static u8_t get_ad_flags(const u8_t *data, u8_t data_len) return 0; } -static u8_t discovery_flags; +static uint8_t discovery_flags; static struct os_mbuf *adv_buf; -static void store_adv(const ble_addr_t *addr, s8_t rssi, - const u8_t *data, u8_t len) +static void store_adv(const ble_addr_t *addr, int8_t rssi, + const uint8_t *data, uint8_t len) { struct gap_device_found_ev *ev; @@ -503,8 +503,8 @@ static void store_adv(const ble_addr_t *addr, s8_t rssi, memcpy(net_buf_simple_add(adv_buf, len), data, len); } -static void device_found(ble_addr_t *addr, s8_t rssi, u8_t evtype, - const u8_t *data, u8_t len) +static void device_found(ble_addr_t *addr, int8_t rssi, uint8_t evtype, + const uint8_t *data, uint8_t len) { struct gap_device_found_ev *ev; ble_addr_t a; @@ -512,7 +512,7 @@ static void device_found(ble_addr_t *addr, s8_t rssi, u8_t evtype, /* if General/Limited Discovery - parse Advertising data to get flags */ if (!(discovery_flags & GAP_DISCOVERY_FLAG_LE_OBSERVE) && (evtype != BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP)) { - u8_t flags = get_ad_flags(data, len); + uint8_t flags = get_ad_flags(data, len); /* ignore non-discoverable devices */ if (!(flags & BLE_AD_DISCOV_MASK)) { @@ -593,11 +593,11 @@ static int discovery_cb(struct ble_gap_event *event, void *arg) return 0; } -static void start_discovery(const u8_t *data, u16_t len) +static void start_discovery(const uint8_t *data, uint16_t len) { const struct gap_start_discovery_cmd *cmd = (void *) data; struct ble_gap_disc_params params = {0}; - u8_t status; + uint8_t status; SYS_LOG_DBG(""); @@ -626,9 +626,9 @@ reply: status); } -static void stop_discovery(const u8_t *data, u16_t len) +static void stop_discovery(const uint8_t *data, uint16_t len) { - u8_t status = BTP_STATUS_SUCCESS; + uint8_t status = BTP_STATUS_SUCCESS; SYS_LOG_DBG(""); @@ -680,13 +680,13 @@ static void device_connected_ev_send(struct os_event *ev) } tester_send(BTP_SERVICE_ID_GAP, GAP_EV_DEVICE_CONNECTED, - CONTROLLER_INDEX, (u8_t *) &connected_ev, + CONTROLLER_INDEX, (uint8_t *) &connected_ev, sizeof(connected_ev)); periph_privacy(desc); } -static void le_connected(u16_t conn_handle, int status) +static void le_connected(uint16_t conn_handle, int status) { struct ble_gap_conn_desc desc; ble_addr_t *addr; @@ -720,7 +720,7 @@ static void le_connected(u16_t conn_handle, int status) CONNECTED_EV_DELAY_MS(desc.conn_itvl))); #else tester_send(BTP_SERVICE_ID_GAP, GAP_EV_DEVICE_CONNECTED, - CONTROLLER_INDEX, (u8_t *) &connected_ev, + CONTROLLER_INDEX, (uint8_t *) &connected_ev, sizeof(connected_ev)); #endif } @@ -763,10 +763,10 @@ static void le_disconnected(struct ble_gap_conn_desc *conn, int reason) ev.address_type = addr->type; tester_send(BTP_SERVICE_ID_GAP, GAP_EV_DEVICE_DISCONNECTED, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } -static void auth_passkey_oob(u16_t conn_handle) +static void auth_passkey_oob(uint16_t conn_handle) { struct ble_gap_conn_desc desc; struct ble_sm_io pk; @@ -786,7 +786,7 @@ static void auth_passkey_oob(u16_t conn_handle) assert(rc == 0); } -static void auth_passkey_display(u16_t conn_handle, unsigned int passkey) +static void auth_passkey_display(uint16_t conn_handle, unsigned int passkey) { struct ble_gap_conn_desc desc; struct gap_passkey_display_ev ev; @@ -817,10 +817,10 @@ static void auth_passkey_display(u16_t conn_handle, unsigned int passkey) ev.passkey = sys_cpu_to_le32(pk.passkey); tester_send(BTP_SERVICE_ID_GAP, GAP_EV_PASSKEY_DISPLAY, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } -static void auth_passkey_entry(u16_t conn_handle) +static void auth_passkey_entry(uint16_t conn_handle) { struct ble_gap_conn_desc desc; struct gap_passkey_entry_req_ev ev; @@ -840,10 +840,10 @@ static void auth_passkey_entry(u16_t conn_handle) ev.address_type = addr->type; tester_send(BTP_SERVICE_ID_GAP, GAP_EV_PASSKEY_ENTRY_REQ, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } -static void auth_passkey_numcmp(u16_t conn_handle, unsigned int passkey) +static void auth_passkey_numcmp(uint16_t conn_handle, unsigned int passkey) { struct ble_gap_conn_desc desc; struct gap_passkey_confirm_req_ev ev; @@ -864,10 +864,10 @@ static void auth_passkey_numcmp(u16_t conn_handle, unsigned int passkey) ev.passkey = sys_cpu_to_le32(passkey); tester_send(BTP_SERVICE_ID_GAP, GAP_EV_PASSKEY_CONFIRM_REQ, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } -static void auth_passkey_oob_sc(u16_t conn_handle) +static void auth_passkey_oob_sc(uint16_t conn_handle) { int rc; struct ble_sm_io pk; @@ -889,7 +889,7 @@ static void auth_passkey_oob_sc(u16_t conn_handle) } } -static void le_passkey_action(u16_t conn_handle, +static void le_passkey_action(uint16_t conn_handle, struct ble_gap_passkey_params *params) { SYS_LOG_DBG(""); @@ -917,7 +917,7 @@ static void le_passkey_action(u16_t conn_handle, } } -static void le_identity_resolved(u16_t conn_handle) +static void le_identity_resolved(uint16_t conn_handle) { struct ble_gap_conn_desc desc; struct gap_identity_resolved_ev ev; @@ -941,7 +941,7 @@ static void le_identity_resolved(u16_t conn_handle) sizeof(ev.identity_address)); tester_send(BTP_SERVICE_ID_GAP, GAP_EV_IDENTITY_RESOLVED, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } static void le_conn_param_update(struct ble_gap_conn_desc *desc) @@ -958,7 +958,7 @@ static void le_conn_param_update(struct ble_gap_conn_desc *desc) ev.supervision_timeout = desc->supervision_timeout; tester_send(BTP_SERVICE_ID_GAP, GAP_EV_CONN_PARAM_UPDATE, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } static void le_encryption_changed(struct ble_gap_conn_desc *desc) @@ -986,7 +986,7 @@ static void le_encryption_changed(struct ble_gap_conn_desc *desc) } tester_send(BTP_SERVICE_ID_GAP, GAP_EV_SEC_LEVEL_CHANGED, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } static void print_bytes(const uint8_t *bytes, int len) @@ -1055,7 +1055,7 @@ static void adv_complete(void) ev.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_EV_NEW_SETTINGS, CONTROLLER_INDEX, - (u8_t *) &ev, sizeof(ev)); + (uint8_t *) &ev, sizeof(ev)); } static int gap_event_cb(struct ble_gap_event *event, void *arg) @@ -1197,9 +1197,9 @@ static int gap_event_cb(struct ble_gap_event *event, void *arg) return 0; } -static void connect(const u8_t *data, u16_t len) +static void connect(const uint8_t *data, uint16_t len) { - u8_t status = BTP_STATUS_SUCCESS; + uint8_t status = BTP_STATUS_SUCCESS; SYS_LOG_DBG(""); @@ -1211,10 +1211,10 @@ static void connect(const u8_t *data, u16_t len) tester_rsp(BTP_SERVICE_ID_GAP, GAP_CONNECT, CONTROLLER_INDEX, status); } -static void disconnect(const u8_t *data, u16_t len) +static void disconnect(const uint8_t *data, uint16_t len) { struct ble_gap_conn_desc desc; - u8_t status; + uint8_t status; int rc; SYS_LOG_DBG(""); @@ -1236,10 +1236,10 @@ rsp: status); } -static void set_io_cap(const u8_t *data, u16_t len) +static void set_io_cap(const uint8_t *data, uint16_t len) { const struct gap_set_io_cap_cmd *cmd = (void *) data; - u8_t status; + uint8_t status; SYS_LOG_DBG(""); @@ -1276,10 +1276,10 @@ rsp: status); } -static void pair(const u8_t *data, u16_t len) +static void pair(const uint8_t *data, uint16_t len) { struct ble_gap_conn_desc desc; - u8_t status; + uint8_t status; int rc; SYS_LOG_DBG(""); @@ -1301,9 +1301,9 @@ rsp: tester_rsp(BTP_SERVICE_ID_GAP, GAP_PAIR, CONTROLLER_INDEX, status); } -static void unpair(const u8_t *data, u16_t len) +static void unpair(const uint8_t *data, uint16_t len) { - u8_t status; + uint8_t status; int err; SYS_LOG_DBG(""); @@ -1313,12 +1313,12 @@ static void unpair(const u8_t *data, u16_t len) tester_rsp(BTP_SERVICE_ID_GAP, GAP_UNPAIR, CONTROLLER_INDEX, status); } -static void passkey_entry(const u8_t *data, u16_t len) +static void passkey_entry(const uint8_t *data, uint16_t len) { const struct gap_passkey_entry_cmd *cmd = (void *) data; struct ble_gap_conn_desc desc; struct ble_sm_io pk; - u8_t status; + uint8_t status; int rc; SYS_LOG_DBG(""); @@ -1345,12 +1345,12 @@ rsp: status); } -static void passkey_confirm(const u8_t *data, u16_t len) +static void passkey_confirm(const uint8_t *data, uint16_t len) { const struct gap_passkey_confirm_cmd *cmd = (void *) data; struct ble_gap_conn_desc desc; struct ble_sm_io pk; - u8_t status; + uint8_t status; int rc; SYS_LOG_DBG(""); @@ -1378,7 +1378,7 @@ rsp: status); } -static void start_direct_adv(const u8_t *data, u16_t len) +static void start_direct_adv(const uint8_t *data, uint16_t len) { const struct gap_start_direct_adv_cmd *cmd = (void *) data; struct gap_start_advertising_rp rp; @@ -1403,7 +1403,7 @@ static void start_direct_adv(const u8_t *data, u16_t len) rp.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_START_DIRECT_ADV, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) &rp, sizeof(rp)); return; fail: tester_rsp(BTP_SERVICE_ID_GAP, GAP_START_DIRECT_ADV, CONTROLLER_INDEX, @@ -1416,7 +1416,7 @@ static void conn_param_update_cb(uint16_t conn_handle, int status, void *arg) conn_handle, status); } -static int conn_param_update_slave(u16_t conn_handle, +static int conn_param_update_slave(uint16_t conn_handle, const struct gap_conn_param_update_cmd *cmd) { int rc; @@ -1436,7 +1436,7 @@ static int conn_param_update_slave(u16_t conn_handle, return 0; } -static int conn_param_update_master(u16_t conn_handle, +static int conn_param_update_master(uint16_t conn_handle, const struct gap_conn_param_update_cmd *cmd) { int rc; @@ -1489,7 +1489,7 @@ rsp: SYS_LOG_ERR("Conn param update fail; rc=%d", rc); } -static void conn_param_update_async(const u8_t *data, u16_t len) +static void conn_param_update_async(const uint8_t *data, uint16_t len) { const struct gap_conn_param_update_cmd *cmd = (void *) data; update_params = *cmd; @@ -1500,7 +1500,7 @@ static void conn_param_update_async(const u8_t *data, u16_t len) BTP_STATUS_SUCCESS); } -static void oob_legacy_set_data(const u8_t *data, u16_t len) +static void oob_legacy_set_data(const uint8_t *data, uint16_t len) { const struct gap_oob_legacy_set_data_cmd *cmd = (void *) data; @@ -1511,7 +1511,7 @@ static void oob_legacy_set_data(const u8_t *data, u16_t len) CONTROLLER_INDEX, BTP_STATUS_SUCCESS); } -static void oob_sc_get_local_data(const u8_t *data, u16_t len) +static void oob_sc_get_local_data(const uint8_t *data, uint16_t len) { struct gap_oob_sc_get_local_data_rp rp; @@ -1519,10 +1519,10 @@ static void oob_sc_get_local_data(const u8_t *data, u16_t len) memcpy(rp.c, oob_data_local.c, 16); tester_send(BTP_SERVICE_ID_GAP, GAP_OOB_SC_GET_LOCAL_DATA, - CONTROLLER_INDEX, (u8_t *) &rp, sizeof(rp)); + CONTROLLER_INDEX, (uint8_t *) &rp, sizeof(rp)); } -static void oob_sc_set_remote_data(const u8_t *data, u16_t len) +static void oob_sc_set_remote_data(const uint8_t *data, uint16_t len) { const struct gap_oob_sc_set_remote_data_cmd *cmd = (void *) data; @@ -1534,7 +1534,7 @@ static void oob_sc_set_remote_data(const u8_t *data, u16_t len) CONTROLLER_INDEX, BTP_STATUS_SUCCESS); } -static void set_mitm(const u8_t *data, u16_t len) +static void set_mitm(const uint8_t *data, uint16_t len) { const struct gap_set_mitm_cmd *cmd = (void *) data; @@ -1544,8 +1544,8 @@ static void set_mitm(const u8_t *data, u16_t len) CONTROLLER_INDEX, BTP_STATUS_SUCCESS); } -void tester_handle_gap(u8_t opcode, u8_t index, u8_t *data, - u16_t len) +void tester_handle_gap(uint8_t opcode, uint8_t index, uint8_t *data, + uint16_t len) { switch (opcode) { case GAP_READ_SUPPORTED_COMMANDS: @@ -1664,7 +1664,7 @@ static void tester_init_gap_cb(int err) BTP_STATUS_SUCCESS); } -u8_t tester_init_gap(void) +uint8_t tester_init_gap(void) { #if MYNEWT_VAL(BLE_SM_SC) int rc; @@ -1682,7 +1682,7 @@ u8_t tester_init_gap(void) return BTP_STATUS_SUCCESS; } -u8_t tester_unregister_gap(void) +uint8_t tester_unregister_gap(void) { return BTP_STATUS_SUCCESS; } diff --git a/src/libs/mynewt-nimble/apps/bttester/src/gatt.c b/src/libs/mynewt-nimble/apps/bttester/src/gatt.c index 7e7d1d3b..d40de262 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/gatt.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/gatt.c @@ -76,8 +76,8 @@ static uint8_t gatt_svr_pts_static_long_val[300]; static uint8_t gatt_svr_pts_static_val[30]; static uint8_t gatt_svr_pts_static_short_val; -static u8_t notify_state; -static u8_t indicate_state; +static uint8_t notify_state; +static uint8_t indicate_state; static uint16_t myconn_handle; static struct os_callout notify_tx_timer; uint16_t notify_handle; @@ -253,7 +253,7 @@ static const struct ble_gatt_svc_def gatt_svr_svcs[] = { }, }; -static void attr_value_changed_ev(u16_t handle, struct os_mbuf *data) +static void attr_value_changed_ev(uint16_t handle, struct os_mbuf *data) { struct gatt_attr_value_changed_ev *ev; struct os_mbuf *buf = os_msys_get(0, 0); @@ -569,7 +569,7 @@ gatt_svr_rel_write_test(uint16_t conn_handle, uint16_t attr_handle, } } -static void start_server(u8_t *data, u16_t len) +static void start_server(uint8_t *data, uint16_t len) { struct gatt_start_server_rp rp; @@ -583,14 +583,14 @@ static void start_server(u8_t *data, u16_t len) rp.db_attr_cnt = 0; tester_send(BTP_SERVICE_ID_GATT, GATT_START_SERVER, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) &rp, sizeof(rp)); } /* Convert UUID from BTP command to bt_uuid */ -static u8_t btp2bt_uuid(const u8_t *uuid, u8_t len, +static uint8_t btp2bt_uuid(const uint8_t *uuid, uint8_t len, ble_uuid_any_t *bt_uuid) { - u16_t le16; + uint16_t le16; switch (len) { case 0x02: /* UUID 16 */ @@ -614,8 +614,8 @@ static u8_t btp2bt_uuid(const u8_t *uuid, u8_t len, * It is not intended to be used by client and server at the same time. */ static struct { - u16_t len; - u8_t buf[MAX_BUFFER_SIZE]; + uint16_t len; + uint8_t buf[MAX_BUFFER_SIZE]; } gatt_buf; static void *gatt_buf_add(const void *data, size_t len) @@ -665,7 +665,7 @@ static int read_cb(uint16_t conn_handle, void *arg) { struct gatt_read_rp *rp = (void *) gatt_buf.buf; - u8_t btp_opcode = (uint8_t) (int) arg; + uint8_t btp_opcode = (uint8_t) (int) arg; SYS_LOG_DBG("status=%d", error->status); @@ -692,7 +692,7 @@ static int read_cb(uint16_t conn_handle, return 0; } -static void read(u8_t *data, u16_t len) +static void read(uint8_t *data, uint16_t len) { const struct gatt_read_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -731,7 +731,7 @@ static int read_long_cb(uint16_t conn_handle, void *arg) { struct gatt_read_rp *rp = (void *) gatt_buf.buf; - u8_t btp_opcode = (uint8_t) (int) arg; + uint8_t btp_opcode = (uint8_t) (int) arg; SYS_LOG_DBG("status=%d", error->status); @@ -762,7 +762,7 @@ static int read_long_cb(uint16_t conn_handle, return 0; } -static void read_long(u8_t *data, u16_t len) +static void read_long(uint8_t *data, uint16_t len) { const struct gatt_read_long_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -797,10 +797,10 @@ fail: BTP_STATUS_FAILED); } -static void read_multiple(u8_t *data, u16_t len) +static void read_multiple(uint8_t *data, uint16_t len) { const struct gatt_read_multiple_cmd *cmd = (void *) data; - u16_t handles[cmd->handles_count]; + uint16_t handles[cmd->handles_count]; struct ble_gap_conn_desc conn; int rc, i; @@ -836,11 +836,11 @@ fail: BTP_STATUS_FAILED); } -static void write_without_rsp(u8_t *data, u16_t len, u8_t op, bool sign) +static void write_without_rsp(uint8_t *data, uint16_t len, uint8_t op, bool sign) { const struct gatt_write_without_rsp_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; - u8_t status = BTP_STATUS_SUCCESS; + uint8_t status = BTP_STATUS_SUCCESS; int rc; SYS_LOG_DBG(""); @@ -866,7 +866,7 @@ static int write_rsp(uint16_t conn_handle, const struct ble_gatt_error *error, void *arg) { uint8_t err = (uint8_t) error->status; - u8_t btp_opcode = (uint8_t) (int) arg; + uint8_t btp_opcode = (uint8_t) (int) arg; SYS_LOG_DBG(""); @@ -875,7 +875,7 @@ static int write_rsp(uint16_t conn_handle, const struct ble_gatt_error *error, return 0; } -static void write(u8_t *data, u16_t len) +static void write(uint8_t *data, uint16_t len) { const struct gatt_write_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -901,7 +901,7 @@ fail: BTP_STATUS_FAILED); } -static void write_long(u8_t *data, u16_t len) +static void write_long(uint8_t *data, uint16_t len) { const struct gatt_write_long_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -952,7 +952,7 @@ static int reliable_write_rsp(uint16_t conn_handle, return 0; } -static void reliable_write(u8_t *data, u16_t len) +static void reliable_write(uint8_t *data, uint16_t len) { const struct gatt_reliable_write_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -994,12 +994,12 @@ fail: } static struct bt_gatt_subscribe_params { - u16_t ccc_handle; - u16_t value; - u16_t value_handle; + uint16_t ccc_handle; + uint16_t value; + uint16_t value_handle; } subscribe_params; -static void read_uuid(u8_t *data, u16_t len) +static void read_uuid(uint8_t *data, uint16_t len) { const struct gatt_read_uuid_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -1046,8 +1046,8 @@ static int disc_prim_uuid_cb(uint16_t conn_handle, struct gatt_disc_prim_uuid_rp *rp = (void *) gatt_buf.buf; struct gatt_service *service; const ble_uuid_any_t *uuid; - u8_t uuid_length; - u8_t opcode = (u8_t) (int) arg; + uint8_t uuid_length; + uint8_t opcode = (uint8_t) (int) arg; SYS_LOG_DBG(""); @@ -1081,7 +1081,7 @@ static int disc_prim_uuid_cb(uint16_t conn_handle, service->uuid_length = uuid_length; if (uuid->u.type == BLE_UUID_TYPE_16) { - u16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); + uint16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); memcpy(service->uuid, &u16, uuid_length); } else { memcpy(service->uuid, BLE_UUID128(uuid)->value, @@ -1102,7 +1102,7 @@ static int disc_all_desc_cb(uint16_t conn_handle, struct gatt_disc_all_desc_rp *rp = (void *) gatt_buf.buf; struct gatt_descriptor *dsc; const ble_uuid_any_t *uuid; - u8_t uuid_length; + uint8_t uuid_length; SYS_LOG_DBG(""); @@ -1135,7 +1135,7 @@ static int disc_all_desc_cb(uint16_t conn_handle, dsc->uuid_length = uuid_length; if (uuid->u.type == BLE_UUID_TYPE_16) { - u16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); + uint16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); memcpy(dsc->uuid, &u16, uuid_length); } else { memcpy(dsc->uuid, BLE_UUID128(uuid)->value, uuid_length); @@ -1146,7 +1146,7 @@ static int disc_all_desc_cb(uint16_t conn_handle, return 0; } -static void disc_all_prim_svcs(u8_t *data, u16_t len) +static void disc_all_prim_svcs(uint8_t *data, uint16_t len) { struct ble_gap_conn_desc conn; int rc; @@ -1175,7 +1175,7 @@ fail: CONTROLLER_INDEX, BTP_STATUS_FAILED); } -static void disc_all_desc(u8_t *data, u16_t len) +static void disc_all_desc(uint8_t *data, uint16_t len) { const struct gatt_disc_all_desc_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -1221,7 +1221,7 @@ static int find_included_cb(uint16_t conn_handle, struct gatt_included *included; const ble_uuid_any_t *uuid; int service_handle = (int) arg; - u8_t uuid_length; + uint8_t uuid_length; SYS_LOG_DBG(""); @@ -1259,7 +1259,7 @@ static int find_included_cb(uint16_t conn_handle, included->service.uuid_length = uuid_length; if (uuid->u.type == BLE_UUID_TYPE_16) { - u16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); + uint16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); memcpy(included->service.uuid, &u16, uuid_length); } else { memcpy(included->service.uuid, BLE_UUID128(uuid)->value, @@ -1278,8 +1278,8 @@ static int disc_chrc_cb(uint16_t conn_handle, struct gatt_disc_chrc_rp *rp = (void *) gatt_buf.buf; struct gatt_characteristic *chrc; const ble_uuid_any_t *uuid; - u8_t btp_opcode = (uint8_t) (int) arg; - u8_t uuid_length; + uint8_t btp_opcode = (uint8_t) (int) arg; + uint8_t uuid_length; SYS_LOG_DBG(""); @@ -1314,7 +1314,7 @@ static int disc_chrc_cb(uint16_t conn_handle, chrc->uuid_length = uuid_length; if (uuid->u.type == BLE_UUID_TYPE_16) { - u16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); + uint16_t u16 = sys_cpu_to_le16(BLE_UUID16(uuid)->value); memcpy(chrc->uuid, &u16, uuid_length); } else { memcpy(chrc->uuid, BLE_UUID128(uuid)->value, @@ -1326,7 +1326,7 @@ static int disc_chrc_cb(uint16_t conn_handle, return 0; } -static void disc_chrc_uuid(u8_t *data, u16_t len) +static void disc_chrc_uuid(uint8_t *data, uint16_t len) { const struct gatt_disc_chrc_uuid_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -1366,7 +1366,7 @@ fail: BTP_STATUS_FAILED); } -static void disc_prim_uuid(u8_t *data, u16_t len) +static void disc_prim_uuid(uint8_t *data, uint16_t len) { const struct gatt_disc_prim_uuid_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -1402,7 +1402,7 @@ fail: BTP_STATUS_FAILED); } -static void disc_all_chrc(u8_t *data, u16_t len) +static void disc_all_chrc(uint8_t *data, uint16_t len) { const struct gatt_disc_all_chrc_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -1439,7 +1439,7 @@ fail: BTP_STATUS_FAILED); } -static void find_included(u8_t *data, u16_t len) +static void find_included(uint8_t *data, uint16_t len) { const struct gatt_find_included_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; @@ -1495,7 +1495,7 @@ static int exchange_func(uint16_t conn_handle, return 0; } -static void exchange_mtu(u8_t *data, u16_t len) +static void exchange_mtu(uint8_t *data, uint16_t len) { struct ble_gap_conn_desc conn; int rc; @@ -1517,10 +1517,10 @@ fail: CONTROLLER_INDEX, BTP_STATUS_FAILED); } -static int enable_subscription(u16_t conn_handle, u16_t ccc_handle, - u16_t value) +static int enable_subscription(uint16_t conn_handle, uint16_t ccc_handle, + uint16_t value) { - u8_t op; + uint8_t op; SYS_LOG_DBG(""); @@ -1538,9 +1538,9 @@ static int enable_subscription(u16_t conn_handle, u16_t ccc_handle, return 0; } -static int disable_subscription(u16_t conn_handle, u16_t ccc_handle) +static int disable_subscription(uint16_t conn_handle, uint16_t ccc_handle) { - u16_t value = 0x00; + uint16_t value = 0x00; SYS_LOG_DBG(""); @@ -1559,12 +1559,12 @@ static int disable_subscription(u16_t conn_handle, u16_t ccc_handle) return 0; } -static void config_subscription(u8_t *data, u16_t len, u8_t op) +static void config_subscription(uint8_t *data, uint16_t len, uint8_t op) { const struct gatt_cfg_notify_cmd *cmd = (void *) data; struct ble_gap_conn_desc conn; - u16_t ccc_handle = sys_le16_to_cpu(cmd->ccc_handle); - u8_t status; + uint16_t ccc_handle = sys_le16_to_cpu(cmd->ccc_handle); + uint8_t status; int rc; SYS_LOG_DBG(""); @@ -1577,7 +1577,7 @@ static void config_subscription(u8_t *data, u16_t len, u8_t op) } if (cmd->enable) { - u16_t value; + uint16_t value; if (op == GATT_CFG_NOTIFY) { value = 0x0001; @@ -1625,10 +1625,10 @@ static int flags_hs2btp_map[] = { BTP_PERM_F_WRITE_AUTHOR, }; -static u8_t flags_hs2btp(u8_t flags) +static uint8_t flags_hs2btp(uint8_t flags) { int i; - u8_t ret = 0; + uint8_t ret = 0; for (i = 0; i < 8; ++i) { if (flags & BIT(i)) { @@ -1639,17 +1639,17 @@ static u8_t flags_hs2btp(u8_t flags) return ret; } -static void get_attrs(u8_t *data, u16_t len) +static void get_attrs(uint8_t *data, uint16_t len) { const struct gatt_get_attributes_cmd *cmd = (void *) data; struct gatt_get_attributes_rp *rp; struct gatt_attr *gatt_attr; struct os_mbuf *buf = os_msys_get(0, 0); - u16_t start_handle, end_handle; + uint16_t start_handle, end_handle; struct ble_att_svr_entry *entry = NULL; ble_uuid_any_t uuid; ble_uuid_t *uuid_ptr = NULL; - u8_t count = 0; + uint8_t count = 0; char str[BLE_UUID_STR_LEN]; SYS_LOG_DBG(""); @@ -1718,13 +1718,13 @@ free: os_mbuf_free_chain(buf); } -static void get_attr_val(u8_t *data, u16_t len) +static void get_attr_val(uint8_t *data, uint16_t len) { const struct gatt_get_attribute_value_cmd *cmd = (void *) data; struct gatt_get_attribute_value_rp *rp; struct ble_gap_conn_desc conn; struct os_mbuf *buf = os_msys_get(0, 0); - u16_t handle = sys_cpu_to_le16(cmd->handle); + uint16_t handle = sys_cpu_to_le16(cmd->handle); uint8_t out_att_err; int conn_status; @@ -1766,7 +1766,7 @@ free: os_mbuf_free_chain(buf); } -static void change_database(u8_t *data, u16_t len) +static void change_database(uint8_t *data, uint16_t len) { const struct gatt_change_database *cmd = (void *) data; @@ -1782,9 +1782,9 @@ static void change_database(u8_t *data, u16_t len) return; } -static void supported_commands(u8_t *data, u16_t len) +static void supported_commands(uint8_t *data, uint16_t len) { - u8_t cmds[4]; + uint8_t cmds[4]; struct gatt_read_supported_commands_rp *rp = (void *) cmds; SYS_LOG_DBG(""); @@ -1816,7 +1816,7 @@ static void supported_commands(u8_t *data, u16_t len) tester_set_bit(cmds, GATT_CHANGE_DATABASE); tester_send(BTP_SERVICE_ID_GATT, GATT_READ_SUPPORTED_COMMANDS, - CONTROLLER_INDEX, (u8_t *) rp, sizeof(cmds)); + CONTROLLER_INDEX, (uint8_t *) rp, sizeof(cmds)); } enum attr_type { @@ -1825,8 +1825,8 @@ enum attr_type { BLE_GATT_ATTR_DSC, }; -void tester_handle_gatt(u8_t opcode, u8_t index, u8_t *data, - u16_t len) +void tester_handle_gatt(uint8_t opcode, uint8_t index, uint8_t *data, + uint16_t len) { switch (opcode) { case GATT_READ_SUPPORTED_COMMANDS: @@ -1905,8 +1905,8 @@ void tester_handle_gatt(u8_t opcode, u8_t index, u8_t *data, } } -int tester_gatt_notify_rx_ev(u16_t conn_handle, u16_t attr_handle, - u8_t indication, struct os_mbuf *om) +int tester_gatt_notify_rx_ev(uint16_t conn_handle, uint16_t attr_handle, + uint8_t indication, struct os_mbuf *om) { struct gatt_notification_ev *ev; struct ble_gap_conn_desc conn; @@ -1930,7 +1930,7 @@ int tester_gatt_notify_rx_ev(u16_t conn_handle, u16_t attr_handle, ev->address_type = addr->type; memcpy(ev->address, addr->val, sizeof(ev->address)); - ev->type = (u8_t) (indication ? 0x02 : 0x01); + ev->type = (uint8_t) (indication ? 0x02 : 0x01); ev->handle = sys_cpu_to_le16(attr_handle); ev->data_length = sys_cpu_to_le16(os_mbuf_len(om)); os_mbuf_appendfrom(buf, om, 0, os_mbuf_len(om)); @@ -1988,9 +1988,9 @@ void notify_test(struct os_event *ev) } } -int tester_gatt_subscribe_ev(u16_t conn_handle, u16_t attr_handle, u8_t reason, - u8_t prev_notify, u8_t cur_notify, - u8_t prev_indicate, u8_t cur_indicate) +int tester_gatt_subscribe_ev(uint16_t conn_handle, uint16_t attr_handle, uint8_t reason, + uint8_t prev_notify, uint8_t cur_notify, + uint8_t prev_indicate, uint8_t cur_indicate) { SYS_LOG_DBG(""); myconn_handle = conn_handle; @@ -2084,7 +2084,7 @@ int gatt_svr_init(void) return 0; } -u8_t tester_init_gatt(void) +uint8_t tester_init_gatt(void) { os_callout_init(¬ify_tx_timer, os_eventq_dflt_get(), notify_test, NULL); @@ -2092,7 +2092,7 @@ u8_t tester_init_gatt(void) return BTP_STATUS_SUCCESS; } -u8_t tester_unregister_gatt(void) +uint8_t tester_unregister_gatt(void) { return BTP_STATUS_SUCCESS; } diff --git a/src/libs/mynewt-nimble/apps/bttester/src/glue.c b/src/libs/mynewt-nimble/apps/bttester/src/glue.c index 6cd7643c..3e606062 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/glue.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/glue.c @@ -33,8 +33,8 @@ const char *bt_hex(const void *buf, size_t len) { static const char hex[] = "0123456789abcdef"; static char hexbufs[4][137]; - static u8_t curbuf; - const u8_t *b = buf; + static uint8_t curbuf; + const uint8_t *b = buf; char *str; int i; diff --git a/src/libs/mynewt-nimble/apps/bttester/src/glue.h b/src/libs/mynewt-nimble/apps/bttester/src/glue.h index e563331e..65085601 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/glue.h +++ b/src/libs/mynewt-nimble/apps/bttester/src/glue.h @@ -22,11 +22,11 @@ #include "os/endian.h" -#define u8_t uint8_t -#define s8_t int8_t -#define u16_t uint16_t -#define u32_t uint32_t -#define s32_t int32_t +#define uint8_t uint8_t +#define int8_t int8_t +#define uint16_t uint16_t +#define uint32_t uint32_t +#define int32_t int32_t #ifndef BIT #define BIT(n) (1UL << (n)) @@ -37,16 +37,16 @@ #define sys_le16_to_cpu le16toh struct bt_data { - u8_t type; - u8_t data_len; - const u8_t *data; + uint8_t type; + uint8_t data_len; + const uint8_t *data; }; #define BT_DATA(_type, _data, _data_len) \ { \ .type = (_type), \ .data_len = (_data_len), \ - .data = (const u8_t *)(_data), \ + .data = (const uint8_t *)(_data), \ } struct os_mbuf * NET_BUF_SIMPLE(uint16_t size); diff --git a/src/libs/mynewt-nimble/apps/bttester/src/l2cap.c b/src/libs/mynewt-nimble/apps/bttester/src/l2cap.c index 45b904a1..5c4fc712 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/l2cap.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/l2cap.c @@ -33,11 +33,13 @@ #include "host/ble_gap.h" #include "host/ble_l2cap.h" +#include "../../../nimble/host/src/ble_l2cap_priv.h" + #include "bttester.h" #define CONTROLLER_INDEX 0 #define CHANNELS MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) -#define TESTER_COC_MTU (230) +#define TESTER_COC_MTU MYNEWT_VAL(BTTESTER_L2CAP_COC_MTU) #define TESTER_COC_BUF_COUNT (3 * MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM)) static os_membuf_t tester_sdu_coc_mem[ @@ -48,14 +50,34 @@ struct os_mbuf_pool sdu_os_mbuf_pool; static struct os_mempool sdu_coc_mbuf_mempool; static struct channel { - u8_t chan_id; /* Internal number that identifies L2CAP channel. */ - u8_t state; + uint8_t chan_id; /* Internal number that identifies L2CAP channel. */ + uint8_t state; struct ble_l2cap_chan *chan; } channels[CHANNELS]; -static u8_t recv_cb_buf[TESTER_COC_MTU + sizeof(struct l2cap_data_received_ev)]; +static uint8_t recv_cb_buf[TESTER_COC_MTU + sizeof(struct l2cap_data_received_ev)]; + +static struct channel *get_free_channel(void) +{ + uint8_t i; + struct channel *chan; -struct channel *find_channel(struct ble_l2cap_chan *chan) { + for (i = 0; i < CHANNELS; i++) { + if (channels[i].state) { + continue; + } + + chan = &channels[i]; + chan->chan_id = i; + + return chan; + } + + return NULL; +} + +struct channel *find_channel(struct ble_l2cap_chan *chan) +{ int i; for (i = 0; i < CHANNELS; ++i) { @@ -67,6 +89,15 @@ struct channel *find_channel(struct ble_l2cap_chan *chan) { return NULL; } +struct channel *get_channel(uint8_t chan_id) +{ + if (chan_id >= CHANNELS) { + return NULL; + } + + return &channels[chan_id]; +} + static void tester_l2cap_coc_recv(struct ble_l2cap_chan *chan, struct os_mbuf *sdu) { @@ -84,14 +115,20 @@ static void recv_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, struct os_mbuf *buf, void *arg) { struct l2cap_data_received_ev *ev = (void *) recv_cb_buf; - struct channel *channel = arg; + struct channel *channel = find_channel(chan); + assert(channel != NULL); ev->chan_id = channel->chan_id; - ev->data_length = buf->om_len; - memcpy(ev->data, buf->om_data, buf->om_len); + ev->data_length = OS_MBUF_PKTLEN(buf); + + if (ev->data_length > TESTER_COC_MTU) { + SYS_LOG_ERR("Too large sdu received, truncating data"); + ev->data_length = TESTER_COC_MTU; + } + os_mbuf_copydata(buf, 0, ev->data_length, ev->data); tester_send(BTP_SERVICE_ID_L2CAP, L2CAP_EV_DATA_RECEIVED, - CONTROLLER_INDEX, recv_cb_buf, sizeof(*ev) + buf->om_len); + CONTROLLER_INDEX, recv_cb_buf, sizeof(*ev) + ev->data_length); tester_l2cap_coc_recv(chan, buf); } @@ -108,44 +145,49 @@ static void unstalled_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, } } -static struct channel *get_free_channel(void) +static void reconfigured_ev(uint16_t conn_handle, struct ble_l2cap_chan *chan, + struct ble_l2cap_chan_info *chan_info, + int status) { - u8_t i; - struct channel *chan; + struct l2cap_reconfigured_ev ev; + struct channel *channel; - for (i = 0; i < CHANNELS; i++) { - if (channels[i].state) { - continue; - } + if (status != 0) { + return; + } - chan = &channels[i]; - chan->chan_id = i; + channel = find_channel(chan); + assert(channel != NULL); - return chan; - } + ev.chan_id = channel->chan_id; + ev.peer_mtu = chan_info->peer_coc_mtu; + ev.peer_mps = chan_info->peer_l2cap_mtu; + ev.our_mtu = chan_info->our_coc_mtu; + ev.our_mps = chan_info->our_l2cap_mtu; - return NULL; + tester_send(BTP_SERVICE_ID_L2CAP, L2CAP_EV_RECONFIGURED, + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } static void connected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, - void *arg) + struct ble_l2cap_chan_info *chan_info, void *arg) { struct l2cap_connected_ev ev; struct ble_gap_conn_desc desc; - struct channel *channel; + struct channel *channel = find_channel(chan); - channel = get_free_channel(); - if (!channel) { - assert(0); + if (channel == NULL) { + channel = get_free_channel(); } - channel->chan = chan; - channel->state = 0; - ev.chan_id = channel->chan_id; + ev.psm = chan_info->psm; + ev.peer_mtu = chan_info->peer_coc_mtu; + ev.peer_mps = chan_info->peer_l2cap_mtu; + ev.our_mtu = chan_info->our_coc_mtu; + ev.our_mps = chan_info->our_l2cap_mtu; channel->state = 1; channel->chan = chan; - /* TODO: ev.psm */ if (!ble_gap_conn_find(conn_handle, &desc)) { ev.address_type = desc.peer_ota_addr.type; @@ -154,11 +196,11 @@ static void connected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, } tester_send(BTP_SERVICE_ID_L2CAP, L2CAP_EV_CONNECTED, CONTROLLER_INDEX, - (u8_t *) &ev, sizeof(ev)); + (uint8_t *) &ev, sizeof(ev)); } static void disconnected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, - void *arg) + struct ble_l2cap_chan_info *chan_info, void *arg) { struct l2cap_disconnected_ev ev; struct ble_gap_conn_desc desc; @@ -167,14 +209,12 @@ static void disconnected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, memset(&ev, 0, sizeof(struct l2cap_disconnected_ev)); channel = find_channel(chan); - if (channel != NULL) { - channel->state = 0; - channel->chan = chan; + assert(channel != NULL); - ev.chan_id = channel->chan_id; - /* TODO: ev.result */ - /* TODO: ev.psm */ - } + channel->state = 0; + channel->chan = chan; + ev.chan_id = channel->chan_id; + ev.psm = chan_info->psm; if (!ble_gap_conn_find(conn_handle, &desc)) { ev.address_type = desc.peer_ota_addr.type; @@ -183,7 +223,7 @@ static void disconnected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, } tester_send(BTP_SERVICE_ID_L2CAP, L2CAP_EV_DISCONNECTED, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } static int accept_cb(uint16_t conn_handle, uint16_t peer_mtu, @@ -208,39 +248,51 @@ static int tester_l2cap_event(struct ble_l2cap_event *event, void *arg) { struct ble_l2cap_chan_info chan_info; + int accept_response; switch (event->type) { - case BLE_L2CAP_EVENT_COC_CONNECTED: + case BLE_L2CAP_EVENT_COC_CONNECTED: + if (ble_l2cap_get_chan_info(event->connect.chan, &chan_info)) { + assert(0); + } + if (event->connect.status) { console_printf("LE COC error: %d\n", event->connect.status); disconnected_cb(event->connect.conn_handle, - event->connect.chan, arg); + event->connect.chan, &chan_info, arg); return 0; } - ble_l2cap_get_chan_info(event->connect.chan, &chan_info); - - console_printf("LE COC connected, conn: %d, chan: 0x%08lx, scid: 0x%04x, " - "dcid: 0x%04x, our_mtu: 0x%04x, peer_mtu: 0x%04x\n", - event->connect.conn_handle, - (uint32_t) event->connect.chan, - chan_info.scid, - chan_info.dcid, - chan_info.our_l2cap_mtu, - chan_info.peer_l2cap_mtu); + console_printf("LE COC connected, conn: %d, chan: 0x%08lx, " + "psm: 0x%02x, scid: 0x%04x, dcid: 0x%04x, " + "our_mps: %d, our_mtu: %d, peer_mps: %d, " + "peer_mtu: %d\n", event->connect.conn_handle, + (uint32_t) event->connect.chan, chan_info.psm, + chan_info.scid, chan_info.dcid, + chan_info.our_l2cap_mtu, chan_info.our_coc_mtu, + chan_info.peer_l2cap_mtu, chan_info.peer_coc_mtu); connected_cb(event->connect.conn_handle, - event->connect.chan, arg); + event->connect.chan, &chan_info, arg); return 0; case BLE_L2CAP_EVENT_COC_DISCONNECTED: + if (ble_l2cap_get_chan_info(event->disconnect.chan, + &chan_info)) { + assert(0); + } console_printf("LE CoC disconnected, chan: 0x%08lx\n", (uint32_t) event->disconnect.chan); disconnected_cb(event->disconnect.conn_handle, - event->disconnect.chan, arg); + event->disconnect.chan, &chan_info, arg); return 0; case BLE_L2CAP_EVENT_COC_ACCEPT: + accept_response = POINTER_TO_INT(arg); + if (accept_response) { + return accept_response; + } + console_printf("LE CoC accept, chan: 0x%08lx, handle: %u, sdu_size: %u\n", (uint32_t) event->accept.chan, event->accept.conn_handle, @@ -254,7 +306,8 @@ tester_l2cap_event(struct ble_l2cap_event *event, void *arg) console_printf("LE CoC data received, chan: 0x%08lx, handle: %u, sdu_len: %u\n", (uint32_t) event->receive.chan, event->receive.conn_handle, - event->receive.sdu_rx->om_len); + OS_MBUF_PKTLEN(event->receive.sdu_rx)); + recv_cb(event->receive.conn_handle, event->receive.chan, event->receive.sdu_rx, arg); return 0; @@ -263,57 +316,118 @@ tester_l2cap_event(struct ble_l2cap_event *event, void *arg) (uint32_t) event->tx_unstalled.chan, event->tx_unstalled.conn_handle, event->tx_unstalled.status); + unstalled_cb(event->tx_unstalled.conn_handle, event->tx_unstalled.chan, event->tx_unstalled.status, arg); return 0; + case BLE_L2CAP_EVENT_COC_RECONFIG_COMPLETED: + if (ble_l2cap_get_chan_info(event->reconfigured.chan, + &chan_info)) { + assert(0); + } + console_printf("LE CoC reconfigure completed status 0x%02x, " + "chan: 0x%08lx\n", event->reconfigured.status, + (uint32_t) event->reconfigured.chan); + + if (event->reconfigured.status == 0) { + console_printf("\t our_mps: %d our_mtu %d\n", + chan_info.our_l2cap_mtu, chan_info.our_coc_mtu); + } + + reconfigured_ev(event->reconfigured.conn_handle, + event->reconfigured.chan, + &chan_info, + event->reconfigured.status); + return 0; + case BLE_L2CAP_EVENT_COC_PEER_RECONFIGURED: + if (ble_l2cap_get_chan_info(event->reconfigured.chan, + &chan_info)) { + assert(0); + } + console_printf("LE CoC peer reconfigured status 0x%02x, " + "chan: 0x%08lx\n", event->reconfigured.status, + (uint32_t) event->reconfigured.chan); + + if (event->reconfigured.status == 0) { + console_printf("\t peer_mps: %d peer_mtu %d\n", + chan_info.peer_l2cap_mtu, chan_info.peer_coc_mtu); + } + + reconfigured_ev(event->reconfigured.conn_handle, + event->reconfigured.chan, + &chan_info, + event->reconfigured.status); + return 0; default: return 0; } } -static void connect(u8_t *data, u16_t len) +static void connect(uint8_t *data, uint16_t len) { const struct l2cap_connect_cmd *cmd = (void *) data; - struct l2cap_connect_rp rp; + uint8_t rp_buf[sizeof(struct l2cap_connect_rp) + cmd->num]; + struct l2cap_connect_rp *rp = (void *) rp_buf; struct ble_gap_conn_desc desc; struct channel *chan; - struct os_mbuf *sdu_rx; + struct os_mbuf *sdu_rx[cmd->num]; ble_addr_t *addr = (void *) data; + uint16_t mtu = htole16(cmd->mtu); int rc; + int i; SYS_LOG_DBG("connect: type: %d addr: %s", addr->type, bt_hex(addr->val, 6)); + if (mtu == 0 || mtu > TESTER_COC_MTU) { + mtu = TESTER_COC_MTU; + } + rc = ble_gap_conn_find_by_addr(addr, &desc); if (rc) { SYS_LOG_ERR("GAP conn find failed"); goto fail; } - chan = get_free_channel(); - if (!chan) { - SYS_LOG_ERR("No free channels"); - goto fail; + rp->num = cmd->num; + + for (i = 0; i < cmd->num; i++) { + chan = get_free_channel(); + if (!chan) { + SYS_LOG_ERR("No free channels"); + goto fail; + } + + rp->chan_ids[i] = chan->chan_id; + + sdu_rx[i] = os_mbuf_get_pkthdr(&sdu_os_mbuf_pool, 0); + if (sdu_rx[i] == NULL) { + SYS_LOG_ERR("Failed to alloc buf"); + goto fail; + } } - sdu_rx = os_mbuf_get_pkthdr(&sdu_os_mbuf_pool, 0); - if (sdu_rx == NULL) { - SYS_LOG_ERR("Failed to alloc buf"); + if (cmd->num == 1) { + rc = ble_l2cap_connect(desc.conn_handle, htole16(cmd->psm), + mtu, sdu_rx[0], + tester_l2cap_event, NULL); + } else if (cmd->num > 1) { + rc = ble_l2cap_enhanced_connect(desc.conn_handle, + htole16(cmd->psm), mtu, + cmd->num, sdu_rx, + tester_l2cap_event, NULL); + } else { + SYS_LOG_ERR("Invalid 'num' parameter value"); goto fail; } - rc = ble_l2cap_connect(desc.conn_handle, htole16(cmd->psm), - TESTER_COC_MTU, sdu_rx, - tester_l2cap_event, chan); if (rc) { SYS_LOG_ERR("L2CAP connect failed\n"); goto fail; } - rp.chan_id = chan->chan_id; - tester_send(BTP_SERVICE_ID_L2CAP, L2CAP_CONNECT, CONTROLLER_INDEX, - (u8_t *) &rp, sizeof(rp)); + (uint8_t *) rp, sizeof(rp_buf)); return; @@ -322,16 +436,17 @@ fail: BTP_STATUS_FAILED); } -static void disconnect(u8_t *data, u16_t len) +static void disconnect(const uint8_t *data, uint16_t len) { const struct l2cap_disconnect_cmd *cmd = (void *) data; struct channel *chan; - u8_t status; + uint8_t status; int err; SYS_LOG_DBG(""); - chan = &channels[cmd->chan_id]; + chan = get_channel(cmd->chan_id); + assert(chan != NULL); err = ble_l2cap_disconnect(chan->chan); if (err) { @@ -346,16 +461,21 @@ rsp: status); } -static void send_data(u8_t *data, u16_t len) +static void send_data(const uint8_t *data, uint16_t len) { const struct l2cap_send_data_cmd *cmd = (void *) data; - struct channel *chan = &channels[cmd->chan_id]; struct os_mbuf *sdu_tx = NULL; int rc; - u16_t data_len = sys_le16_to_cpu(cmd->data_len); + uint16_t data_len = sys_le16_to_cpu(cmd->data_len); + struct channel *chan = get_channel(cmd->chan_id); SYS_LOG_DBG("cmd->chan_id=%d", cmd->chan_id); + if (!chan) { + SYS_LOG_ERR("Invalid channel\n"); + goto fail; + } + /* FIXME: For now, fail if data length exceeds buffer length */ if (data_len > TESTER_COC_MTU) { SYS_LOG_ERR("Data length exceeds buffer length"); @@ -386,16 +506,48 @@ fail: BTP_STATUS_FAILED); } -static void listen(u8_t *data, u16_t len) +static int +l2cap_coc_err2hs_err(uint16_t coc_err) +{ + switch (coc_err) { + case BLE_L2CAP_COC_ERR_UNKNOWN_LE_PSM: + return BLE_HS_ENOTSUP; + case BLE_L2CAP_COC_ERR_NO_RESOURCES: + return BLE_HS_ENOMEM; + case BLE_L2CAP_COC_ERR_INSUFFICIENT_AUTHEN: + return BLE_HS_EAUTHEN; + case BLE_L2CAP_COC_ERR_INSUFFICIENT_AUTHOR: + return BLE_HS_EAUTHOR; + case BLE_L2CAP_COC_ERR_INSUFFICIENT_ENC: + return BLE_HS_EENCRYPT; + case BLE_L2CAP_COC_ERR_INSUFFICIENT_KEY_SZ: + return BLE_HS_EENCRYPT_KEY_SZ; + case BLE_L2CAP_COC_ERR_UNACCEPTABLE_PARAMETERS: + return BLE_HS_EINVAL; + default: + return 0; + } +} + + +static void listen(const uint8_t *data, uint16_t len) { const struct l2cap_listen_cmd *cmd = (void *) data; + uint16_t mtu = htole16(cmd->mtu); + uint16_t rsp = htole16(cmd->response); int rc; SYS_LOG_DBG(""); + if (mtu == 0 || mtu > TESTER_COC_MTU) { + mtu = TESTER_COC_MTU; + } + + rsp = l2cap_coc_err2hs_err(rsp); + /* TODO: Handle cmd->transport flag */ - rc = ble_l2cap_create_server(cmd->psm, TESTER_COC_MTU, - tester_l2cap_event, NULL); + rc = ble_l2cap_create_server(cmd->psm, mtu, tester_l2cap_event, + INT_TO_POINTER(rsp)); if (rc) { goto fail; } @@ -409,9 +561,54 @@ fail: BTP_STATUS_FAILED); } -static void supported_commands(u8_t *data, u16_t len) +static void reconfigure(const uint8_t *data, uint16_t len) { - u8_t cmds[1]; + const struct l2cap_reconfigure_cmd *cmd = (void *) data; + uint16_t mtu = htole16(cmd->mtu); + struct ble_gap_conn_desc desc; + ble_addr_t *addr = (void *) data; + struct ble_l2cap_chan *chans[cmd->num]; + struct channel *channel; + int rc; + int i; + + SYS_LOG_DBG(""); + + if (mtu == 0 || mtu > TESTER_COC_MTU) { + mtu = TESTER_COC_MTU; + } + + rc = ble_gap_conn_find_by_addr(addr, &desc); + if (rc) { + SYS_LOG_ERR("GAP conn find failed"); + goto fail; + } + + for (i = 0; i < cmd->num; ++i) { + channel = get_channel(cmd->idxs[i]); + if (channel == NULL) { + goto fail; + } + chans[i] = channel->chan; + } + + rc = ble_l2cap_reconfig(chans, cmd->num, mtu); + if (rc) { + goto fail; + } + + tester_rsp(BTP_SERVICE_ID_L2CAP, L2CAP_RECONFIGURE, CONTROLLER_INDEX, + BTP_STATUS_SUCCESS); + return; + +fail: + tester_rsp(BTP_SERVICE_ID_L2CAP, L2CAP_RECONFIGURE, CONTROLLER_INDEX, + BTP_STATUS_FAILED); +} + +static void supported_commands(uint8_t *data, uint16_t len) +{ + uint8_t cmds[1]; struct l2cap_read_supported_commands_rp *rp = (void *) cmds; memset(cmds, 0, sizeof(cmds)); @@ -421,13 +618,14 @@ static void supported_commands(u8_t *data, u16_t len) tester_set_bit(cmds, L2CAP_DISCONNECT); tester_set_bit(cmds, L2CAP_LISTEN); tester_set_bit(cmds, L2CAP_SEND_DATA); + tester_set_bit(cmds, L2CAP_RECONFIGURE); tester_send(BTP_SERVICE_ID_L2CAP, L2CAP_READ_SUPPORTED_COMMANDS, - CONTROLLER_INDEX, (u8_t *) rp, sizeof(cmds)); + CONTROLLER_INDEX, (uint8_t *) rp, sizeof(cmds)); } -void tester_handle_l2cap(u8_t opcode, u8_t index, u8_t *data, - u16_t len) +void tester_handle_l2cap(uint8_t opcode, uint8_t index, uint8_t *data, + uint16_t len) { switch (opcode) { case L2CAP_READ_SUPPORTED_COMMANDS: @@ -445,6 +643,9 @@ void tester_handle_l2cap(u8_t opcode, u8_t index, u8_t *data, case L2CAP_LISTEN: listen(data, len); return; + case L2CAP_RECONFIGURE: + reconfigure(data, len); + return; default: tester_rsp(BTP_SERVICE_ID_L2CAP, opcode, index, BTP_STATUS_UNKNOWN_CMD); @@ -452,7 +653,7 @@ void tester_handle_l2cap(u8_t opcode, u8_t index, u8_t *data, } } -u8_t tester_init_l2cap(void) +uint8_t tester_init_l2cap(void) { int rc; @@ -469,7 +670,7 @@ u8_t tester_init_l2cap(void) return BTP_STATUS_SUCCESS; } -u8_t tester_unregister_l2cap(void) +uint8_t tester_unregister_l2cap(void) { return BTP_STATUS_SUCCESS; } diff --git a/src/libs/mynewt-nimble/apps/bttester/src/mesh.c b/src/libs/mynewt-nimble/apps/bttester/src/mesh.c index e18a2a4e..8226fe99 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/mesh.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/mesh.c @@ -38,7 +38,7 @@ #include "bttester.h" -extern u8_t own_addr_type; +extern uint8_t own_addr_type; #define CONTROLLER_INDEX 0 #define CID_LOCAL 0xffff @@ -47,21 +47,21 @@ extern u8_t own_addr_type; #define CUR_FAULTS_MAX 4 #define HEALTH_TEST_ID 0x00 -static u8_t cur_faults[CUR_FAULTS_MAX]; -static u8_t reg_faults[CUR_FAULTS_MAX * 2]; +static uint8_t cur_faults[CUR_FAULTS_MAX]; +static uint8_t reg_faults[CUR_FAULTS_MAX * 2]; /* Provision node data */ -static u8_t net_key[16]; -static u16_t net_key_idx; -static u8_t flags; -static u32_t iv_index; -static u16_t addr; -static u8_t dev_key[16]; -static u8_t input_size; +static uint8_t net_key[16]; +static uint16_t net_key_idx; +static uint8_t flags; +static uint32_t iv_index; +static uint16_t addr; +static uint8_t dev_key[16]; +static uint8_t input_size; /* Configured provisioning data */ -static u8_t dev_uuid[16]; -static u8_t static_auth[16]; +static uint8_t dev_uuid[16]; +static uint8_t static_auth[16]; /* Vendor Model data */ #define VND_MODEL_ID_1 0x1234 @@ -71,20 +71,20 @@ static u8_t static_auth[16]; static struct model_data { struct bt_mesh_model *model; - u16_t addr; - u16_t appkey_idx; + uint16_t addr; + uint16_t appkey_idx; } model_bound[MODEL_BOUNDS_MAX]; static struct { - u16_t local; - u16_t dst; - u16_t net_idx; + uint16_t local; + uint16_t dst; + uint16_t net_idx; } net = { .local = BT_MESH_ADDR_UNASSIGNED, .dst = BT_MESH_ADDR_UNASSIGNED, }; -static void supported_commands(u8_t *data, u16_t len) +static void supported_commands(uint8_t *data, uint16_t len) { struct os_mbuf *buf = NET_BUF_SIMPLE(BTP_DATA_MAX_SIZE); @@ -121,29 +121,9 @@ static void supported_commands(u8_t *data, u16_t len) CONTROLLER_INDEX, buf); } -static struct bt_mesh_cfg_srv cfg_srv = { - .relay = BT_MESH_RELAY_ENABLED, - .beacon = BT_MESH_BEACON_ENABLED, -#if MYNEWT_VAL(BLE_MESH_FRIEND) - .frnd = BT_MESH_FRIEND_ENABLED, -#else - .frnd = BT_MESH_FRIEND_NOT_SUPPORTED, -#endif -#if MYNEWT_VAL(BLE_MESH_GATT_PROXY) - .gatt_proxy = BT_MESH_GATT_PROXY_ENABLED, -#else - .gatt_proxy = BT_MESH_GATT_PROXY_NOT_SUPPORTED, -#endif - .default_ttl = 7, - - /* 3 transmissions with 20ms interval */ - .net_transmit = BT_MESH_TRANSMIT(2, 20), - .relay_retransmit = BT_MESH_TRANSMIT(2, 20), -}; - -static void get_faults(u8_t *faults, u8_t faults_size, u8_t *dst, u8_t *count) +static void get_faults(uint8_t *faults, uint8_t faults_size, uint8_t *dst, uint8_t *count) { - u8_t i, limit = *count; + uint8_t i, limit = *count; for (i = 0, *count = 0; i < faults_size && *count < limit; i++) { if (faults[i]) { @@ -153,8 +133,8 @@ static void get_faults(u8_t *faults, u8_t faults_size, u8_t *dst, u8_t *count) } } -static int fault_get_cur(struct bt_mesh_model *model, u8_t *test_id, - u16_t *company_id, u8_t *faults, u8_t *fault_count) +static int fault_get_cur(struct bt_mesh_model *model, uint8_t *test_id, + uint16_t *company_id, uint8_t *faults, uint8_t *fault_count) { SYS_LOG_DBG(""); @@ -166,8 +146,8 @@ static int fault_get_cur(struct bt_mesh_model *model, u8_t *test_id, return 0; } -static int fault_get_reg(struct bt_mesh_model *model, u16_t company_id, - u8_t *test_id, u8_t *faults, u8_t *fault_count) +static int fault_get_reg(struct bt_mesh_model *model, uint16_t company_id, + uint8_t *test_id, uint8_t *faults, uint8_t *fault_count) { SYS_LOG_DBG("company_id 0x%04x", company_id); @@ -229,7 +209,7 @@ health_pub_init(void) static struct bt_mesh_cfg_cli cfg_cli = { }; -void show_faults(u8_t test_id, u16_t cid, u8_t *faults, size_t fault_count) +void show_faults(uint8_t test_id, uint16_t cid, uint8_t *faults, size_t fault_count) { size_t i; @@ -247,8 +227,8 @@ void show_faults(u8_t test_id, u16_t cid, u8_t *faults, size_t fault_count) } } -static void health_current_status(struct bt_mesh_health_cli *cli, u16_t addr, - u8_t test_id, u16_t cid, u8_t *faults, +static void health_current_status(struct bt_mesh_health_cli *cli, uint16_t addr, + uint8_t test_id, uint16_t cid, uint8_t *faults, size_t fault_count) { SYS_LOG_DBG("Health Current Status from 0x%04x", addr); @@ -260,7 +240,7 @@ static struct bt_mesh_health_cli health_cli = { }; static struct bt_mesh_model root_models[] = { - BT_MESH_MODEL_CFG_SRV(&cfg_srv), + BT_MESH_MODEL_CFG_SRV, BT_MESH_MODEL_CFG_CLI(&cfg_cli), BT_MESH_MODEL_HEALTH_SRV(&health_srv, &health_pub), BT_MESH_MODEL_HEALTH_CLI(&health_cli), @@ -295,7 +275,7 @@ static void link_open(bt_mesh_prov_bearer_t bearer) } tester_send(BTP_SERVICE_ID_MESH, MESH_EV_PROV_LINK_OPEN, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } static void link_close(bt_mesh_prov_bearer_t bearer) @@ -318,10 +298,10 @@ static void link_close(bt_mesh_prov_bearer_t bearer) } tester_send(BTP_SERVICE_ID_MESH, MESH_EV_PROV_LINK_CLOSED, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } -static int output_number(bt_mesh_output_action_t action, u32_t number) +static int output_number(bt_mesh_output_action_t action, uint32_t number) { struct mesh_out_number_action_ev ev; @@ -331,7 +311,7 @@ static int output_number(bt_mesh_output_action_t action, u32_t number) ev.number = sys_cpu_to_le32(number); tester_send(BTP_SERVICE_ID_MESH, MESH_EV_OUT_NUMBER_ACTION, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); return 0; } @@ -357,7 +337,7 @@ static int output_string(const char *str) return 0; } -static int input(bt_mesh_input_action_t action, u8_t size) +static int input(bt_mesh_input_action_t action, uint8_t size) { struct mesh_in_action_ev ev; @@ -369,12 +349,15 @@ static int input(bt_mesh_input_action_t action, u8_t size) ev.size = size; tester_send(BTP_SERVICE_ID_MESH, MESH_EV_IN_ACTION, CONTROLLER_INDEX, - (u8_t *) &ev, sizeof(ev)); + (uint8_t *) &ev, sizeof(ev)); return 0; } -static void prov_complete(u16_t net_idx, u16_t addr) +static uint8_t vnd_app_key[16]; +static uint16_t vnd_app_key_idx = 0x000f; + +static void prov_complete(uint16_t net_idx, uint16_t addr) { SYS_LOG_DBG("net_idx 0x%04x addr 0x%04x", net_idx, addr); @@ -412,7 +395,7 @@ static struct bt_mesh_prov prov = { .reset = prov_reset, }; -static void config_prov(u8_t *data, u16_t len) +static void config_prov(uint8_t *data, uint16_t len) { const struct mesh_config_provisioning_cmd *cmd = (void *) data; @@ -430,7 +413,7 @@ static void config_prov(u8_t *data, u16_t len) CONTROLLER_INDEX, BTP_STATUS_SUCCESS); } -static void provision_node(u8_t *data, u16_t len) +static void provision_node(uint8_t *data, uint16_t len) { const struct mesh_provision_node_cmd *cmd = (void *) data; @@ -448,9 +431,9 @@ static void provision_node(u8_t *data, u16_t len) CONTROLLER_INDEX, BTP_STATUS_SUCCESS); } -static void init(u8_t *data, u16_t len) +static void init(uint8_t *data, uint16_t len) { - u8_t status = BTP_STATUS_SUCCESS; + uint8_t status = BTP_STATUS_SUCCESS; int err; SYS_LOG_DBG(""); @@ -475,15 +458,12 @@ static void init(u8_t *data, u16_t len) } } - /* Set device key for vendor model */ - vnd_models[0].keys[0] = BT_MESH_KEY_DEV; - rsp: tester_rsp(BTP_SERVICE_ID_MESH, MESH_INIT, CONTROLLER_INDEX, status); } -static void reset(u8_t *data, u16_t len) +static void reset(uint8_t *data, uint16_t len) { SYS_LOG_DBG(""); @@ -493,11 +473,11 @@ static void reset(u8_t *data, u16_t len) BTP_STATUS_SUCCESS); } -static void input_number(u8_t *data, u16_t len) +static void input_number(uint8_t *data, uint16_t len) { const struct mesh_input_number_cmd *cmd = (void *) data; - u8_t status = BTP_STATUS_SUCCESS; - u32_t number; + uint8_t status = BTP_STATUS_SUCCESS; + uint32_t number; int err; number = sys_le32_to_cpu(cmd->number); @@ -513,11 +493,11 @@ static void input_number(u8_t *data, u16_t len) status); } -static void input_string(u8_t *data, u16_t len) +static void input_string(uint8_t *data, uint16_t len) { const struct mesh_input_string_cmd *cmd = (void *) data; - u8_t status = BTP_STATUS_SUCCESS; - u8_t str_auth[16]; + uint8_t status = BTP_STATUS_SUCCESS; + uint8_t str_auth[16]; int err; SYS_LOG_DBG(""); @@ -544,7 +524,7 @@ rsp: status); } -static void ivu_test_mode(u8_t *data, u16_t len) +static void ivu_test_mode(uint8_t *data, uint16_t len) { const struct mesh_ivu_test_mode_cmd *cmd = (void *) data; @@ -556,7 +536,7 @@ static void ivu_test_mode(u8_t *data, u16_t len) BTP_STATUS_SUCCESS); } -static void ivu_toggle_state(u8_t *data, u16_t len) +static void ivu_toggle_state(uint8_t *data, uint16_t len) { bool result; @@ -571,7 +551,7 @@ static void ivu_toggle_state(u8_t *data, u16_t len) result ? BTP_STATUS_SUCCESS : BTP_STATUS_FAILED); } -static void lpn(u8_t *data, u16_t len) +static void lpn(uint8_t *data, uint16_t len) { struct mesh_lpn_set_cmd *cmd = (void *) data; bool enable; @@ -589,7 +569,7 @@ static void lpn(u8_t *data, u16_t len) err ? BTP_STATUS_FAILED : BTP_STATUS_SUCCESS); } -static void lpn_poll(u8_t *data, u16_t len) +static void lpn_poll(uint8_t *data, uint16_t len) { int err; @@ -604,13 +584,13 @@ static void lpn_poll(u8_t *data, u16_t len) err ? BTP_STATUS_FAILED : BTP_STATUS_SUCCESS); } -static void net_send(u8_t *data, u16_t len) +static void net_send(uint8_t *data, uint16_t len) { struct mesh_net_send_cmd *cmd = (void *) data; - struct os_mbuf *msg = NET_BUF_SIMPLE(UINT8_MAX); + struct os_mbuf *msg = NET_BUF_SIMPLE(UINT8_MAX); struct bt_mesh_msg_ctx ctx = { .net_idx = net.net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = vnd_app_key_idx, .addr = sys_le16_to_cpu(cmd->dst), .send_ttl = cmd->ttl, }; @@ -619,6 +599,12 @@ static void net_send(u8_t *data, u16_t len) SYS_LOG_DBG("ttl 0x%02x dst 0x%04x payload_len %d", ctx.send_ttl, ctx.addr, cmd->payload_len); + if (!bt_mesh_app_key_get(vnd_app_key_idx)) { + (void)bt_mesh_app_key_add(vnd_app_key_idx, net.net_idx, + vnd_app_key); + vnd_models[0].keys[0] = vnd_app_key_idx; + } + net_buf_simple_add_mem(msg, cmd->payload, cmd->payload_len); err = bt_mesh_model_send(&vnd_models[0], &ctx, msg, NULL, NULL); @@ -632,13 +618,13 @@ static void net_send(u8_t *data, u16_t len) os_mbuf_free_chain(msg); } -static void health_generate_faults(u8_t *data, u16_t len) +static void health_generate_faults(uint8_t *data, uint16_t len) { struct mesh_health_generate_faults_rp *rp; struct os_mbuf *buf = NET_BUF_SIMPLE(sizeof(*rp) + sizeof(cur_faults) + sizeof(reg_faults)); - u8_t some_faults[] = { 0x01, 0x02, 0x03, 0xff, 0x06 }; - u8_t cur_faults_count, reg_faults_count; + uint8_t some_faults[] = { 0x01, 0x02, 0x03, 0xff, 0x06 }; + uint8_t cur_faults_count, reg_faults_count; rp = net_buf_simple_add(buf, sizeof(*rp)); @@ -658,7 +644,7 @@ static void health_generate_faults(u8_t *data, u16_t len) CONTROLLER_INDEX, buf); } -static void health_clear_faults(u8_t *data, u16_t len) +static void health_clear_faults(uint8_t *data, uint16_t len) { SYS_LOG_DBG(""); @@ -671,7 +657,7 @@ static void health_clear_faults(u8_t *data, u16_t len) CONTROLLER_INDEX, BTP_STATUS_SUCCESS); } -static void model_send(u8_t *data, u16_t len) +static void model_send(uint8_t *data, uint16_t len) { struct mesh_model_send_cmd *cmd = (void *) data; struct os_mbuf *msg = NET_BUF_SIMPLE(UINT8_MAX); @@ -683,7 +669,7 @@ static void model_send(u8_t *data, u16_t len) }; struct bt_mesh_model *model = NULL; int err, i; - u16_t src = sys_le16_to_cpu(cmd->src); + uint16_t src = sys_le16_to_cpu(cmd->src); /* Lookup source address */ for (i = 0; i < ARRAY_SIZE(model_bound); i++) { @@ -720,10 +706,10 @@ fail: } #if MYNEWT_VAL(BLE_MESH_TESTING) -static void lpn_subscribe(u8_t *data, u16_t len) +static void lpn_subscribe(uint8_t *data, uint16_t len) { struct mesh_lpn_subscribe_cmd *cmd = (void *) data; - u16_t address = sys_le16_to_cpu(cmd->address); + uint16_t address = sys_le16_to_cpu(cmd->address); int err; SYS_LOG_DBG("address 0x%04x", address); @@ -737,10 +723,10 @@ static void lpn_subscribe(u8_t *data, u16_t len) err ? BTP_STATUS_FAILED : BTP_STATUS_SUCCESS); } -static void lpn_unsubscribe(u8_t *data, u16_t len) +static void lpn_unsubscribe(uint8_t *data, uint16_t len) { struct mesh_lpn_unsubscribe_cmd *cmd = (void *) data; - u16_t address = sys_le16_to_cpu(cmd->address); + uint16_t address = sys_le16_to_cpu(cmd->address); int err; SYS_LOG_DBG("address 0x%04x", address); @@ -754,7 +740,7 @@ static void lpn_unsubscribe(u8_t *data, u16_t len) err ? BTP_STATUS_FAILED : BTP_STATUS_SUCCESS); } -static void rpl_clear(u8_t *data, u16_t len) +static void rpl_clear(uint8_t *data, uint16_t len) { int err; @@ -770,7 +756,7 @@ static void rpl_clear(u8_t *data, u16_t len) } #endif /* MYNEWT_VAL(BLE_MESH_TESTING) */ -static void proxy_identity_enable(u8_t *data, u16_t len) +static void proxy_identity_enable(uint8_t *data, uint16_t len) { int err; @@ -785,7 +771,7 @@ static void proxy_identity_enable(u8_t *data, u16_t len) err ? BTP_STATUS_FAILED : BTP_STATUS_SUCCESS); } -void tester_handle_mesh(u8_t opcode, u8_t index, u8_t *data, u16_t len) +void tester_handle_mesh(uint8_t opcode, uint8_t index, uint8_t *data, uint16_t len) { switch (opcode) { case MESH_READ_SUPPORTED_COMMANDS: @@ -854,7 +840,7 @@ void tester_handle_mesh(u8_t opcode, u8_t index, u8_t *data, u16_t len) } } -void net_recv_ev(u8_t ttl, u8_t ctl, u16_t src, u16_t dst, const void *payload, +void net_recv_ev(uint8_t ttl, uint8_t ctl, uint16_t src, uint16_t dst, const void *payload, size_t payload_len) { struct os_mbuf *buf = NET_BUF_SIMPLE(UINT8_MAX); @@ -883,8 +869,8 @@ done: os_mbuf_free_chain(buf); } -static void model_bound_cb(u16_t addr, struct bt_mesh_model *model, - u16_t key_idx) +static void model_bound_cb(uint16_t addr, struct bt_mesh_model *model, + uint16_t key_idx) { int i; @@ -904,8 +890,8 @@ static void model_bound_cb(u16_t addr, struct bt_mesh_model *model, SYS_LOG_ERR("model_bound is full"); } -static void model_unbound_cb(u16_t addr, struct bt_mesh_model *model, - u16_t key_idx) +static void model_unbound_cb(uint16_t addr, struct bt_mesh_model *model, + uint16_t key_idx) { int i; @@ -925,7 +911,7 @@ static void model_unbound_cb(u16_t addr, struct bt_mesh_model *model, SYS_LOG_INF("model not found"); } -static void invalid_bearer_cb(u8_t opcode) +static void invalid_bearer_cb(uint8_t opcode) { struct mesh_invalid_bearer_ev ev = { .opcode = opcode, @@ -934,7 +920,7 @@ static void invalid_bearer_cb(u8_t opcode) SYS_LOG_DBG("opcode 0x%02x", opcode); tester_send(BTP_SERVICE_ID_MESH, MESH_EV_INVALID_BEARER, - CONTROLLER_INDEX, (u8_t *) &ev, sizeof(ev)); + CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev)); } static void incomp_timer_exp_cb(void) @@ -951,7 +937,7 @@ static struct bt_test_cb bt_test_cb = { .mesh_trans_incomp_timer_exp = incomp_timer_exp_cb, }; -u8_t tester_init_mesh(void) +uint8_t tester_init_mesh(void) { health_pub_init(); @@ -962,7 +948,7 @@ u8_t tester_init_mesh(void) return BTP_STATUS_SUCCESS; } -u8_t tester_unregister_mesh(void) +uint8_t tester_unregister_mesh(void) { return BTP_STATUS_SUCCESS; } diff --git a/src/libs/mynewt-nimble/apps/bttester/src/rtt_pipe.c b/src/libs/mynewt-nimble/apps/bttester/src/rtt_pipe.c index 379345a0..4e667709 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/rtt_pipe.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/rtt_pipe.c @@ -31,7 +31,7 @@ static struct hal_timer rtt_timer; static bttester_pipe_recv_cb app_cb; -static u8_t *recv_buf; +static uint8_t *recv_buf; static size_t recv_buf_len; static size_t recv_off; @@ -74,7 +74,7 @@ rtt_pipe_poll_func(void *arg) itvl_ms = min(itvl_ms, RTT_INPUT_POLL_INTERVAL_MAX); } else { while (key >= 0 && avail > 0) { - recv_buf[recv_off] = (u8_t) key; + recv_buf[recv_off] = (uint8_t) key; recv_off++; avail = recv_buf_len - recv_off; key = rtt_pipe_get_char((unsigned int) rtt_index_down); @@ -93,14 +93,14 @@ rtt_pipe_poll_func(void *arg) } int -bttester_pipe_send(const u8_t *data, int len) +bttester_pipe_send(const uint8_t *data, int len) { SEGGER_RTT_Write((unsigned int) rtt_index_up, data, (unsigned int) len); return 0; } void -bttester_pipe_register(u8_t *buf, size_t len, bttester_pipe_recv_cb cb) +bttester_pipe_register(uint8_t *buf, size_t len, bttester_pipe_recv_cb cb) { recv_buf = buf; recv_buf_len = len; diff --git a/src/libs/mynewt-nimble/apps/bttester/src/uart_pipe.c b/src/libs/mynewt-nimble/apps/bttester/src/uart_pipe.c index ecbefa02..1118d9af 100644 --- a/src/libs/mynewt-nimble/apps/bttester/src/uart_pipe.c +++ b/src/libs/mynewt-nimble/apps/bttester/src/uart_pipe.c @@ -26,7 +26,7 @@ #include "bttester_pipe.h" -static u8_t *recv_buf; +static uint8_t *recv_buf; static size_t recv_buf_len; static bttester_pipe_recv_cb app_cb; static size_t recv_off; @@ -144,7 +144,7 @@ uart_console_rx_char(void *arg, uint8_t byte) static int uart_pipe_handle_char(int key) { - recv_buf[recv_off] = (u8_t) key; + recv_buf[recv_off] = (uint8_t) key; recv_off++; return 0; @@ -194,7 +194,7 @@ uart_console_rx_char_event(struct os_event *ev) } int -bttester_pipe_send(const u8_t *data, int len) +bttester_pipe_send(const uint8_t *data, int len) { int i; @@ -272,7 +272,7 @@ bttester_pipe_init(void) } void -bttester_pipe_register(u8_t *buf, size_t len, bttester_pipe_recv_cb cb) +bttester_pipe_register(uint8_t *buf, size_t len, bttester_pipe_recv_cb cb) { recv_buf = buf; recv_buf_len = len; diff --git a/src/libs/mynewt-nimble/apps/bttester/syscfg.yml b/src/libs/mynewt-nimble/apps/bttester/syscfg.yml index d0fffe13..db869c34 100644 --- a/src/libs/mynewt-nimble/apps/bttester/syscfg.yml +++ b/src/libs/mynewt-nimble/apps/bttester/syscfg.yml @@ -53,7 +53,7 @@ syscfg.defs: BTTESTER_CONN_RETRY: description: Retry connections when connection failed to be established - value: 3 + value: 0 BTTESTER_BTP_DATA_SIZE_MAX: description: Maximum BTP payload @@ -71,12 +71,16 @@ syscfg.defs: description: Enable logging BTP traffic value: 0 + BTTESTER_L2CAP_COC_MTU: + description: Maximum MTU size the application can handle + value: 230 + syscfg.vals: OS_MAIN_STACK_SIZE: 512 SHELL_TASK: 0 SHELL_NEWTMGR: 0 LOG_LEVEL: 12 - MSYS_1_BLOCK_COUNT: 48 + MSYS_1_BLOCK_COUNT: 80 BLE_MONITOR_RTT: 1 CONSOLE_RTT: 0 @@ -86,6 +90,8 @@ syscfg.vals: BLE_L2CAP_COC_MAX_NUM: 2 BLE_L2CAP_SIG_MAX_PROCS: 2 + BLE_L2CAP_ENHANCED_COC: 1 + BLE_VERSION: 52 # Some testcases require MPS < MTU BLE_L2CAP_COC_MPS: 100 BLE_RPA_TIMEOUT: 30 @@ -98,6 +104,9 @@ syscfg.vals: BLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL: 9 BLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL: 30 BLE_SVC_GAP_PPCP_SUPERVISION_TMO: 2000 + BLE_SVC_GAP_APPEARANCE_WRITE_PERM: 0 + BLE_SVC_GAP_DEVICE_NAME_WRITE_PERM: 0 + BLE_STORE_CONFIG_PERSIST: 0 BLE_MESH: 1 BLE_MESH_SHELL: 0 @@ -117,6 +126,11 @@ syscfg.vals: BLE_MESH_FRIEND: 1 BLE_MESH_CFG_CLI: 1 BLE_MESH_RX_SDU_MAX: 110 + BLE_MESH_HEALTH_CLI: 1 + BLE_MESH_FRIEND_QUEUE_SIZE: 32 + BLE_MESH_RX_SEG_MAX: 13 + BLE_MESH_TX_SEG_MSG_COUNT: 2 + BLE_MAX_CONNECTIONS: 8 BLE_MESH_ADV_BUF_COUNT: 20 BLE_MESH_TX_SEG_MAX: 6 |