Changeset 374 for asp3_tinet_ecnl_rx/trunk/btstack/src/hci.c
- Timestamp:
- Apr 5, 2019, 9:26:53 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_rx/trunk/btstack/src/hci.c
r337 r374 233 233 bd_addr_t addr; 234 234 hci_connection_t * conn; 235 bt_flip_addr(addr, *(bd_addr_t *) bd_addr);235 reverse_bd_addr(*(bd_addr_t *) bd_addr, addr); 236 236 conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC); 237 237 if (conn) { … … 469 469 // copy handle_and_flags if not first fragment and update packet boundary flags to be 01 (continuing fragmnent) 470 470 if (acl_header_pos > 0){ 471 uint16_t handle_and_flags = READ_BT_16(hci_stack->hci_packet_buffer, 0);471 uint16_t handle_and_flags = little_endian_read_16(hci_stack->hci_packet_buffer, 0); 472 472 handle_and_flags = (handle_and_flags & 0xcfff) | (1 << 12); 473 bt_store_16(hci_stack->hci_packet_buffer, acl_header_pos, handle_and_flags);473 little_endian_store_16(hci_stack->hci_packet_buffer, acl_header_pos, handle_and_flags); 474 474 } 475 475 476 476 // update header len 477 bt_store_16(hci_stack->hci_packet_buffer, acl_header_pos + 2, current_acl_data_packet_length);477 little_endian_store_16(hci_stack->hci_packet_buffer, acl_header_pos + 2, current_acl_data_packet_length); 478 478 479 479 // count packet … … 640 640 conn->acl_recombination_pos = acl_length + 4; 641 641 conn->acl_recombination_length = l2cap_length; 642 bt_store_16(conn->acl_recombination_buffer, HCI_INCOMING_PRE_BUFFER_SIZE + 2, l2cap_length +4);642 little_endian_store_16(conn->acl_recombination_buffer, HCI_INCOMING_PRE_BUFFER_SIZE + 2, l2cap_length +4); 643 643 } 644 644 break; … … 793 793 // odd: waiting for event 794 794 if (packet[0] == HCI_EVENT_COMMAND_COMPLETE){ 795 uint16_t opcode = READ_BT_16(packet,3);795 uint16_t opcode = little_endian_read_16(packet,3); 796 796 if (opcode == hci_stack->last_cmd_opcode){ 797 797 command_completed = 1; … … 803 803 if (packet[0] == HCI_EVENT_COMMAND_STATUS){ 804 804 uint8_t status = packet[2]; 805 uint16_t opcode = READ_BT_16(packet,4);805 uint16_t opcode = little_endian_read_16(packet,4); 806 806 if (opcode == hci_stack->last_cmd_opcode){ 807 807 if (status){ … … 843 843 case 1: // SEND BAUD CHANGE 844 844 hci_stack->control->baudrate_cmd(hci_stack->config, ((hci_uart_config_t *)hci_stack->config)->baudrate_main, hci_stack->hci_packet_buffer); 845 hci_stack->last_cmd_opcode = READ_BT_16(hci_stack->hci_packet_buffer, 0);845 hci_stack->last_cmd_opcode = little_endian_read_16(hci_stack->hci_packet_buffer, 0); 846 846 hci_dump_packet(HCI_COMMAND_DATA_PACKET, 0, hci_stack->hci_packet_buffer, 3 + hci_stack->hci_packet_buffer[2]); 847 847 hci_send_cmd_packet(hci_stack->hci_packet_buffer, 3 + hci_stack->hci_packet_buffer[2]); … … 860 860 if (valid_cmd){ 861 861 int size = 3 + hci_stack->hci_packet_buffer[2]; 862 hci_stack->last_cmd_opcode = READ_BT_16(hci_stack->hci_packet_buffer, 0);862 hci_stack->last_cmd_opcode = little_endian_read_16(hci_stack->hci_packet_buffer, 0); 863 863 hci_dump_packet(HCI_COMMAND_DATA_PACKET, 0, hci_stack->hci_packet_buffer, size); 864 864 hci_stack->hci_transport->send_packet(HCI_COMMAND_DATA_PACKET, hci_stack->hci_packet_buffer, size); … … 992 992 hci_stack->num_cmd_packets = packet[2]; 993 993 994 if ( COMMAND_COMPLETE_EVENT(packet, hci_read_buffer_size)){994 if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_buffer_size)){ 995 995 // from offset 5 996 996 // status 997 997 // "The HC_ACL_Data_Packet_Length return parameter will be used to determine the size of the L2CAP segments contained in ACL Data Packets" 998 hci_stack->acl_data_packet_length = READ_BT_16(packet, 6);998 hci_stack->acl_data_packet_length = little_endian_read_16(packet, 6); 999 999 // ignore: SCO data packet len (8) 1000 1000 hci_stack->acl_packets_total_num = packet[9]; … … 1010 1010 } 1011 1011 #ifdef HAVE_BLE 1012 if ( COMMAND_COMPLETE_EVENT(packet, hci_le_read_buffer_size)){1013 hci_stack->le_data_packets_length = READ_BT_16(packet, 6);1012 if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_le_read_buffer_size)){ 1013 hci_stack->le_data_packets_length = little_endian_read_16(packet, 6); 1014 1014 hci_stack->le_acl_packets_total_num = packet[8]; 1015 1015 // determine usable ACL payload size … … 1021 1021 #endif 1022 1022 // Dump local address 1023 if ( COMMAND_COMPLETE_EVENT(packet, hci_read_bd_addr)) {1024 bt_flip_addr(hci_stack->local_bd_addr, &packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE + 1]);1023 if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_bd_addr)) { 1024 reverse_bd_addr(&packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE + 1], hci_stack->local_bd_addr); 1025 1025 log_info("Local Address, Status: 0x%02x: Addr: %s", 1026 1026 packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE], bd_addr_to_str(hci_stack->local_bd_addr)); 1027 1027 } 1028 if ( COMMAND_COMPLETE_EVENT(packet, hci_write_scan_enable)){1028 if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_scan_enable)){ 1029 1029 hci_emit_discoverable_enabled(hci_stack->discoverable); 1030 1030 } 1031 1031 // Note: HCI init checks 1032 if ( COMMAND_COMPLETE_EVENT(packet, hci_read_local_supported_features)){1032 if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_local_supported_features)){ 1033 1033 memcpy(hci_stack->local_supported_features, &packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1], 8); 1034 1034 log_info("Local Supported Features: 0x%02x%02x%02x%02x%02x%02x%02x%02x", … … 1057 1057 for (i=0; i<packet[2];i++){ 1058 1058 uint16_t num_packets; 1059 handle = READ_BT_16(packet, offset);1059 handle = little_endian_read_16(packet, offset); 1060 1060 offset += 2; 1061 num_packets = READ_BT_16(packet, offset);1061 num_packets = little_endian_read_16(packet, offset); 1062 1062 offset += 2; 1063 1063 … … 1079 1079 } 1080 1080 case HCI_EVENT_CONNECTION_REQUEST: 1081 bt_flip_addr(addr, &packet[2]);1081 reverse_bd_addr(&packet[2], addr); 1082 1082 // TODO: eval COD 8-10 1083 1083 link_type = packet[11]; … … 1106 1106 case HCI_EVENT_CONNECTION_COMPLETE: 1107 1107 // Connection management 1108 bt_flip_addr(addr, &packet[5]);1108 reverse_bd_addr(&packet[5], addr); 1109 1109 log_info("Connection_complete (status=%u) %s", packet[2], bd_addr_to_str(addr)); 1110 1110 addr_type = BD_ADDR_TYPE_CLASSIC; … … 1113 1113 if (!packet[2]){ 1114 1114 conn->state = OPEN; 1115 conn->con_handle = READ_BT_16(packet, 3);1115 conn->con_handle = little_endian_read_16(packet, 3); 1116 1116 conn->bonding_flags |= BONDING_REQUEST_REMOTE_FEATURES; 1117 1117 … … 1148 1148 1149 1149 case HCI_EVENT_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE: 1150 handle = READ_BT_16(packet, 3);1150 handle = little_endian_read_16(packet, 3); 1151 1151 conn = hci_connection_for_handle(handle); 1152 1152 if (!conn) break; … … 1176 1176 case HCI_EVENT_LINK_KEY_NOTIFICATION: { 1177 1177 link_key_type_t link_key_type; 1178 bt_flip_addr(addr, &packet[2]);1178 reverse_bd_addr(&packet[2], addr); 1179 1179 conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC); 1180 1180 if (!conn) break; … … 1201 1201 // PIN CODE REQUEST means the link key request didn't succee -> delete stored link key 1202 1202 if (!hci_stack->remote_device_db) break; 1203 bt_flip_addr(addr, &packet[2]);1203 reverse_bd_addr(&packet[2], addr); 1204 1204 hci_stack->remote_device_db->delete_link_key(&addr); 1205 1205 break; … … 1223 1223 1224 1224 case HCI_EVENT_ENCRYPTION_CHANGE: 1225 handle = READ_BT_16(packet, 3);1225 handle = little_endian_read_16(packet, 3); 1226 1226 conn = hci_connection_for_handle(handle); 1227 1227 if (!conn) break; … … 1237 1237 1238 1238 case HCI_EVENT_AUTHENTICATION_COMPLETE_EVENT: 1239 handle = READ_BT_16(packet, 3);1239 handle = little_endian_read_16(packet, 3); 1240 1240 conn = hci_connection_for_handle(handle); 1241 1241 if (!conn) break; … … 1262 1262 if (!hci_stack->remote_device_db) break; 1263 1263 if (packet[2]) break; // status not ok 1264 bt_flip_addr(addr, &packet[3]);1264 reverse_bd_addr(&packet[3], addr); 1265 1265 // fix for invalid remote names - terminate on 0xff 1266 1266 for (i=0; i<248;i++){ … … 1283 1283 int offset = 3; 1284 1284 for (i=0; i<packet[2];i++){ 1285 bt_flip_addr(addr, &packet[offset]);1285 reverse_bd_addr(&packet[offset], addr); 1286 1286 offset += 14; // 6 + 1 + 1 + 1 + 3 + 2; 1287 1287 if (hci_stack->remote_device_db->get_name(&addr, &device_name)){ … … 1308 1308 case HCI_EVENT_ROLE_CHANGE: 1309 1309 if (packet[2]) break; // status != 0 1310 handle = READ_BT_16(packet, 3);1310 handle = little_endian_read_16(packet, 3); 1311 1311 conn = hci_connection_for_handle(handle); 1312 1312 if (!conn) break; // no conn … … 1331 1331 case HCI_SUBEVENT_LE_CONNECTION_COMPLETE: 1332 1332 // Connection management 1333 bt_flip_addr(addr, &packet[8]);1333 reverse_bd_addr(&packet[8], addr); 1334 1334 addr_type = (bd_addr_type_t)packet[7]; 1335 1335 log_info("LE Connection_complete (status=%u) type %u, %s", packet[3], addr_type, bd_addr_to_str(addr)); … … 1357 1357 1358 1358 conn->state = OPEN; 1359 conn->con_handle = READ_BT_16(packet, 4);1359 conn->con_handle = little_endian_read_16(packet, 4); 1360 1360 1361 1361 // TODO: store - role, peer address type, conn_interval, conn_latency, supervision timeout, master clock … … 1370 1370 break; 1371 1371 1372 // log_info("LE buffer size: %u, count %u", READ_BT_16(packet,6), packet[8]);1372 // log_info("LE buffer size: %u, count %u", little_endian_read_16(packet,6), packet[8]); 1373 1373 1374 1374 default: … … 1389 1389 if (hci_stack->state == HCI_STATE_FALLING_ASLEEP 1390 1390 && hci_stack->substate == 1 1391 && COMMAND_COMPLETE_EVENT(packet, hci_write_scan_enable)){1391 && HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_scan_enable)){ 1392 1392 hci_stack->substate++; 1393 1393 } … … 1400 1400 if (!packet[2]){ 1401 1401 hci_connection_t * conn; 1402 handle = READ_BT_16(packet, 3);1402 handle = little_endian_read_16(packet, 3); 1403 1403 conn = hci_connection_for_handle(handle); 1404 1404 if (conn) { … … 1793 1793 } 1794 1794 1795 void hci_discoverable_control(uint8_t enable){1795 void gap_discoverable_control(uint8_t enable){ 1796 1796 if (enable) enable = 1; // normalize argument 1797 1797 … … 2140 2140 // create_connection? 2141 2141 if (IS_COMMAND(packet, hci_create_connection)){ 2142 bt_flip_addr(addr, &packet[3]);2142 reverse_bd_addr(&packet[3], addr); 2143 2143 log_info("Create_connection to %s", bd_addr_to_str(addr)); 2144 2144 … … 2179 2179 if (IS_COMMAND(packet, hci_delete_stored_link_key)){ 2180 2180 if (hci_stack->remote_device_db){ 2181 bt_flip_addr(addr, &packet[3]);2181 reverse_bd_addr(&packet[3], addr); 2182 2182 hci_stack->remote_device_db->delete_link_key(&addr); 2183 2183 } … … 2186 2186 if (IS_COMMAND(packet, hci_pin_code_request_negative_reply) 2187 2187 || IS_COMMAND(packet, hci_pin_code_request_reply)){ 2188 bt_flip_addr(addr, &packet[3]);2188 reverse_bd_addr(&packet[3], addr); 2189 2189 conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC); 2190 2190 if (conn){ … … 2197 2197 || IS_COMMAND(packet, hci_user_passkey_request_negative_reply) 2198 2198 || IS_COMMAND(packet, hci_user_passkey_request_reply)) { 2199 bt_flip_addr(addr, &packet[3]);2199 reverse_bd_addr(&packet[3], addr); 2200 2200 conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC); 2201 2201 if (conn){ … … 2209 2209 } 2210 2210 if (IS_COMMAND(packet, hci_le_set_random_address)){ 2211 bt_flip_addr(hci_stack->adv_address, &packet[3]);2211 reverse_bd_addr(&packet[3], hci_stack->adv_address); 2212 2212 } 2213 2213 #endif … … 2303 2303 event[1] = sizeof(event) - 2; 2304 2304 event[2] = status; 2305 bt_store_16(event, 3, conn->con_handle);2306 bt_flip_addr(&event[5], conn->address);2305 little_endian_store_16(event, 3, conn->con_handle); 2306 reverse_bd_addr(conn->address, &event[5]); 2307 2307 event[11] = 1; // ACL connection 2308 2308 event[12] = 0; // encryption disabled … … 2317 2317 event[2] = HCI_SUBEVENT_LE_CONNECTION_COMPLETE; 2318 2318 event[3] = status; 2319 bt_store_16(event, 4, conn_handle);2319 little_endian_store_16(event, 4, conn_handle); 2320 2320 event[6] = 0; // TODO: role 2321 2321 event[7] = address_type; 2322 bt_flip_addr(&event[8], *address);2323 bt_store_16(event, 14, 0); // interval2324 bt_store_16(event, 16, 0); // latency2325 bt_store_16(event, 18, 0); // supervision timeout2322 reverse_bd_addr(*address, &event[8]); 2323 little_endian_store_16(event, 14, 0); // interval 2324 little_endian_store_16(event, 16, 0); // latency 2325 little_endian_store_16(event, 18, 0); // supervision timeout 2326 2326 event[20] = 0; // master clock accuracy 2327 2327 hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event)); … … 2334 2334 event[1] = sizeof(event) - 2; 2335 2335 event[2] = 0; // status = OK 2336 bt_store_16(event, 3, handle);2336 little_endian_store_16(event, 3, handle); 2337 2337 event[5] = reason; 2338 2338 hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event)); … … 2346 2346 event[0] = L2CAP_EVENT_TIMEOUT_CHECK; 2347 2347 event[1] = sizeof(event) - 2; 2348 bt_store_16(event, 2, conn->con_handle);2348 little_endian_store_16(event, 2, conn->con_handle); 2349 2349 hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event)); 2350 2350 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event)); … … 2378 2378 event[2] = BTSTACK_MAJOR; 2379 2379 event[3] = BTSTACK_MINOR; 2380 bt_store_16(event, 4, BTSTACK_REVISION);2380 little_endian_store_16(event, 4, BTSTACK_REVISION); 2381 2381 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event)); 2382 2382 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event)); … … 2399 2399 event[1] = sizeof(event) - 2 - 1; 2400 2400 event[2] = 0; // just to be compatible with HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE 2401 bt_flip_addr(&event[3], *addr);2401 reverse_bd_addr(*addr, &event[3]); 2402 2402 memcpy(&event[9], name, 248); 2403 2403 … … 2426 2426 event[pos++] = GAP_SECURITY_LEVEL; 2427 2427 event[pos++] = sizeof(event) - 2; 2428 bt_store_16(event, 2, con_handle);2428 little_endian_store_16(event, 2, con_handle); 2429 2429 pos += 2; 2430 2430 event[pos++] = level; … … 2441 2441 event[pos++] = sizeof(event) - 2; 2442 2442 event[pos++] = status; 2443 bt_flip_addr( * (bd_addr_t *) &event[pos], address);2443 reverse_bd_addr(address, * (bd_addr_t *) &event[pos]); 2444 2444 pos += 6; 2445 2445 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
Note:
See TracChangeset
for help on using the changeset viewer.