Ignore:
Timestamp:
Apr 5, 2019, 9:26:53 PM (5 years ago)
Author:
coas-nagasima
Message:

mbed関連を更新
シリアルドライバをmbedのHALを使うよう変更
ファイルディスクリプタの処理を更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asp3_tinet_ecnl_arm/trunk/btstack/src/hci.c

    r352 r374  
    233233    bd_addr_t addr;
    234234    hci_connection_t * conn;
    235     bt_flip_addr(addr, *(bd_addr_t *) bd_addr);
     235    reverse_bd_addr(*(bd_addr_t *) bd_addr, addr);
    236236    conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC);
    237237    if (conn) {
     
    469469        // copy handle_and_flags if not first fragment and update packet boundary flags to be 01 (continuing fragmnent)
    470470        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);
    472472            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);
    474474        }
    475475
    476476        // 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);
    478478
    479479        // count packet
     
    640640                conn->acl_recombination_pos    = acl_length + 4;
    641641                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);
    643643            }
    644644            break;
     
    793793    // odd: waiting for event
    794794    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);
    796796        if (opcode == hci_stack->last_cmd_opcode){
    797797            command_completed = 1;
     
    803803    if (packet[0] == HCI_EVENT_COMMAND_STATUS){
    804804        uint8_t  status = packet[2];
    805         uint16_t opcode = READ_BT_16(packet,4);
     805        uint16_t opcode = little_endian_read_16(packet,4);
    806806        if (opcode == hci_stack->last_cmd_opcode){
    807807            if (status){
     
    843843        case 1: // SEND BAUD CHANGE
    844844            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);
    846846            hci_dump_packet(HCI_COMMAND_DATA_PACKET, 0, hci_stack->hci_packet_buffer, 3 + hci_stack->hci_packet_buffer[2]);
    847847            hci_send_cmd_packet(hci_stack->hci_packet_buffer, 3 + hci_stack->hci_packet_buffer[2]);
     
    860860                if (valid_cmd){
    861861                    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);
    863863                    hci_dump_packet(HCI_COMMAND_DATA_PACKET, 0, hci_stack->hci_packet_buffer, size);
    864864                    hci_stack->hci_transport->send_packet(HCI_COMMAND_DATA_PACKET, hci_stack->hci_packet_buffer, size);
     
    992992            hci_stack->num_cmd_packets = packet[2];
    993993
    994             if (COMMAND_COMPLETE_EVENT(packet, hci_read_buffer_size)){
     994            if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_buffer_size)){
    995995                // from offset 5
    996996                // status
    997997                // "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);
    999999                // ignore: SCO data packet len (8)
    10001000                hci_stack->acl_packets_total_num  = packet[9];
     
    10101010            }
    10111011#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);
    10141014                hci_stack->le_acl_packets_total_num  = packet[8];
    10151015                    // determine usable ACL payload size
     
    10211021#endif
    10221022            // 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);
    10251025                log_info("Local Address, Status: 0x%02x: Addr: %s",
    10261026                    packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE], bd_addr_to_str(hci_stack->local_bd_addr));
    10271027            }
    1028             if (COMMAND_COMPLETE_EVENT(packet, hci_write_scan_enable)){
     1028            if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_scan_enable)){
    10291029                hci_emit_discoverable_enabled(hci_stack->discoverable);
    10301030            }
    10311031            // 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)){
    10331033                memcpy(hci_stack->local_supported_features, &packet[OFFSET_OF_DATA_IN_COMMAND_COMPLETE+1], 8);
    10341034                log_info("Local Supported Features: 0x%02x%02x%02x%02x%02x%02x%02x%02x",
     
    10571057            for (i=0; i<packet[2];i++){
    10581058                uint16_t num_packets;
    1059                 handle = READ_BT_16(packet, offset);
     1059                handle = little_endian_read_16(packet, offset);
    10601060                offset += 2;
    1061                 num_packets = READ_BT_16(packet, offset);
     1061                num_packets = little_endian_read_16(packet, offset);
    10621062                offset += 2;
    10631063
     
    10791079        }
    10801080        case HCI_EVENT_CONNECTION_REQUEST:
    1081             bt_flip_addr(addr, &packet[2]);
     1081            reverse_bd_addr(&packet[2], addr);
    10821082            // TODO: eval COD 8-10
    10831083            link_type = packet[11];
     
    11061106        case HCI_EVENT_CONNECTION_COMPLETE:
    11071107            // Connection management
    1108             bt_flip_addr(addr, &packet[5]);
     1108            reverse_bd_addr(&packet[5], addr);
    11091109            log_info("Connection_complete (status=%u) %s", packet[2], bd_addr_to_str(addr));
    11101110            addr_type = BD_ADDR_TYPE_CLASSIC;
     
    11131113                if (!packet[2]){
    11141114                    conn->state = OPEN;
    1115                     conn->con_handle = READ_BT_16(packet, 3);
     1115                    conn->con_handle = little_endian_read_16(packet, 3);
    11161116                    conn->bonding_flags |= BONDING_REQUEST_REMOTE_FEATURES;
    11171117
     
    11481148
    11491149        case HCI_EVENT_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE:
    1150             handle = READ_BT_16(packet, 3);
     1150            handle = little_endian_read_16(packet, 3);
    11511151            conn = hci_connection_for_handle(handle);
    11521152            if (!conn) break;
     
    11761176        case HCI_EVENT_LINK_KEY_NOTIFICATION: {
    11771177            link_key_type_t link_key_type;
    1178             bt_flip_addr(addr, &packet[2]);
     1178            reverse_bd_addr(&packet[2], addr);
    11791179            conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC);
    11801180            if (!conn) break;
     
    12011201            // PIN CODE REQUEST means the link key request didn't succee -> delete stored link key
    12021202            if (!hci_stack->remote_device_db) break;
    1203             bt_flip_addr(addr, &packet[2]);
     1203            reverse_bd_addr(&packet[2], addr);
    12041204            hci_stack->remote_device_db->delete_link_key(&addr);
    12051205            break;
     
    12231223
    12241224        case HCI_EVENT_ENCRYPTION_CHANGE:
    1225             handle = READ_BT_16(packet, 3);
     1225            handle = little_endian_read_16(packet, 3);
    12261226            conn = hci_connection_for_handle(handle);
    12271227            if (!conn) break;
     
    12371237
    12381238        case HCI_EVENT_AUTHENTICATION_COMPLETE_EVENT:
    1239             handle = READ_BT_16(packet, 3);
     1239            handle = little_endian_read_16(packet, 3);
    12401240            conn = hci_connection_for_handle(handle);
    12411241            if (!conn) break;
     
    12621262            if (!hci_stack->remote_device_db) break;
    12631263            if (packet[2]) break; // status not ok
    1264             bt_flip_addr(addr, &packet[3]);
     1264            reverse_bd_addr(&packet[3], addr);
    12651265            // fix for invalid remote names - terminate on 0xff
    12661266            for (i=0; i<248;i++){
     
    12831283            int offset = 3;
    12841284            for (i=0; i<packet[2];i++){
    1285                 bt_flip_addr(addr, &packet[offset]);
     1285                reverse_bd_addr(&packet[offset], addr);
    12861286                offset += 14; // 6 + 1 + 1 + 1 + 3 + 2;
    12871287                if (hci_stack->remote_device_db->get_name(&addr, &device_name)){
     
    13081308        case HCI_EVENT_ROLE_CHANGE:
    13091309            if (packet[2]) break;   // status != 0
    1310             handle = READ_BT_16(packet, 3);
     1310            handle = little_endian_read_16(packet, 3);
    13111311            conn = hci_connection_for_handle(handle);
    13121312            if (!conn) break;       // no conn
     
    13311331                case HCI_SUBEVENT_LE_CONNECTION_COMPLETE:
    13321332                    // Connection management
    1333                     bt_flip_addr(addr, &packet[8]);
     1333                    reverse_bd_addr(&packet[8], addr);
    13341334                    addr_type = (bd_addr_type_t)packet[7];
    13351335                    log_info("LE Connection_complete (status=%u) type %u, %s", packet[3], addr_type, bd_addr_to_str(addr));
     
    13571357
    13581358                    conn->state = OPEN;
    1359                     conn->con_handle = READ_BT_16(packet, 4);
     1359                    conn->con_handle = little_endian_read_16(packet, 4);
    13601360
    13611361                    // TODO: store - role, peer address type, conn_interval, conn_latency, supervision timeout, master clock
     
    13701370                    break;
    13711371
    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]);
    13731373
    13741374                default:
     
    13891389    if (hci_stack->state == HCI_STATE_FALLING_ASLEEP
    13901390        && hci_stack->substate == 1
    1391         && COMMAND_COMPLETE_EVENT(packet, hci_write_scan_enable)){
     1391        && HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_write_scan_enable)){
    13921392        hci_stack->substate++;
    13931393    }
     
    14001400        if (!packet[2]){
    14011401            hci_connection_t * conn;
    1402             handle = READ_BT_16(packet, 3);
     1402            handle = little_endian_read_16(packet, 3);
    14031403            conn = hci_connection_for_handle(handle);
    14041404            if (conn) {
     
    17931793}
    17941794
    1795 void hci_discoverable_control(uint8_t enable){
     1795void gap_discoverable_control(uint8_t enable){
    17961796    if (enable) enable = 1; // normalize argument
    17971797
     
    21402140    // create_connection?
    21412141    if (IS_COMMAND(packet, hci_create_connection)){
    2142         bt_flip_addr(addr, &packet[3]);
     2142        reverse_bd_addr(&packet[3], addr);
    21432143        log_info("Create_connection to %s", bd_addr_to_str(addr));
    21442144
     
    21792179    if (IS_COMMAND(packet, hci_delete_stored_link_key)){
    21802180        if (hci_stack->remote_device_db){
    2181             bt_flip_addr(addr, &packet[3]);
     2181            reverse_bd_addr(&packet[3], addr);
    21822182            hci_stack->remote_device_db->delete_link_key(&addr);
    21832183        }
     
    21862186    if (IS_COMMAND(packet, hci_pin_code_request_negative_reply)
    21872187    ||  IS_COMMAND(packet, hci_pin_code_request_reply)){
    2188         bt_flip_addr(addr, &packet[3]);
     2188        reverse_bd_addr(&packet[3], addr);
    21892189        conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC);
    21902190        if (conn){
     
    21972197    ||  IS_COMMAND(packet, hci_user_passkey_request_negative_reply)
    21982198    ||  IS_COMMAND(packet, hci_user_passkey_request_reply)) {
    2199         bt_flip_addr(addr, &packet[3]);
     2199        reverse_bd_addr(&packet[3], addr);
    22002200        conn = hci_connection_for_bd_addr_and_type(&addr, BD_ADDR_TYPE_CLASSIC);
    22012201        if (conn){
     
    22092209    }
    22102210    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);
    22122212    }
    22132213#endif
     
    23032303    event[1] = sizeof(event) - 2;
    23042304    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]);
    23072307    event[11] = 1; // ACL connection
    23082308    event[12] = 0; // encryption disabled
     
    23172317    event[2] = HCI_SUBEVENT_LE_CONNECTION_COMPLETE;
    23182318    event[3] = status;
    2319     bt_store_16(event, 4, conn_handle);
     2319    little_endian_store_16(event, 4, conn_handle);
    23202320    event[6] = 0; // TODO: role
    23212321    event[7] = address_type;
    2322     bt_flip_addr(&event[8], *address);
    2323     bt_store_16(event, 14, 0); // interval
    2324     bt_store_16(event, 16, 0); // latency
    2325     bt_store_16(event, 18, 0); // supervision timeout
     2322    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
    23262326    event[20] = 0; // master clock accuracy
    23272327    hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event));
     
    23342334    event[1] = sizeof(event) - 2;
    23352335    event[2] = 0; // status = OK
    2336     bt_store_16(event, 3, handle);
     2336    little_endian_store_16(event, 3, handle);
    23372337    event[5] = reason;
    23382338    hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event));
     
    23462346    event[0] = L2CAP_EVENT_TIMEOUT_CHECK;
    23472347    event[1] = sizeof(event) - 2;
    2348     bt_store_16(event, 2, conn->con_handle);
     2348    little_endian_store_16(event, 2, conn->con_handle);
    23492349    hci_dump_packet(HCI_EVENT_PACKET, 0, event, sizeof(event));
    23502350    hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
     
    23782378    event[2] = BTSTACK_MAJOR;
    23792379    event[3] = BTSTACK_MINOR;
    2380     bt_store_16(event, 4, BTSTACK_REVISION);
     2380    little_endian_store_16(event, 4, BTSTACK_REVISION);
    23812381    hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
    23822382    hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
     
    23992399    event[1] = sizeof(event) - 2 - 1;
    24002400    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]);
    24022402    memcpy(&event[9], name, 248);
    24032403
     
    24262426    event[pos++] = GAP_SECURITY_LEVEL;
    24272427    event[pos++] = sizeof(event) - 2;
    2428     bt_store_16(event, 2, con_handle);
     2428    little_endian_store_16(event, 2, con_handle);
    24292429    pos += 2;
    24302430    event[pos++] = level;
     
    24412441    event[pos++] = sizeof(event) - 2;
    24422442    event[pos++] = status;
    2443     bt_flip_addr( * (bd_addr_t *) &event[pos], address);
     2443    reverse_bd_addr(address,  * (bd_addr_t *) &event[pos]);
    24442444    pos += 6;
    24452445    hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
Note: See TracChangeset for help on using the changeset viewer.