OSDN Git Service

build: Fix ptr <-> integer cast warnings
authorArman Uguray <armansito@google.com>
Wed, 3 Jun 2015 04:11:07 +0000 (21:11 -0700)
committerArman Uguray <armansito@google.com>
Fri, 12 Jun 2015 19:53:37 +0000 (12:53 -0700)
This CL removes the -Wno-pointer-to-integer-cast and
-Wno-integer-to-pointer-cast flags from GN build files. The resulting errors
were fixed using the following:

  1. All ptr <-> integer casts are now done by using the new
     PTR_TO_INT/INT_TO_PTR macros defined in osi.h

  2. The TIMER_PARAM_TYPE macro, defined in gki/common/gki.h and
     include/bt_target.h have been redefined as void* rather than UINT32. This
     is better, since "void*" can act as a simple container without any
     precision loss that would be caused by a type such as UINT32 on 64-bit
     systems. void* inherently is a safer container for all pointer types but
     UINT32 isn't.

BUG=21570302

Change-Id: I4a82c4a40c91caa31e372382c40d424be220cbe3

30 files changed:
bta/BUILD.gn
bta/ag/bta_ag_main.c
bta/ag/bta_ag_sco.c
bta/av/bta_av_act.c
bta/dm/bta_dm_act.c
bta/jv/bta_jv_act.c
btif/BUILD.gn
btif/src/btif_av.c
btif/src/btif_gatt_client.c
btif/src/btif_gatt_multi_adv_util.c
btif/src/btif_hh.c
btif/src/btif_hl.c
btif/src/btif_pan.c
btif/src/btif_sdp.c
btif/src/btif_sdp_server.c
btif/src/btif_sock_l2cap.c
btif/src/btif_sock_rfc.c
gki/common/gki.h
include/bt_target.h
main/BUILD.gn
stack/BUILD.gn
stack/avdt/avdt_ccb.c
stack/avdt/avdt_scb.c
stack/bnep/bnep_utils.c
stack/btm/btm_acl.c
stack/btm/btm_sec.c
stack/hid/hidh_conn.c
stack/rfcomm/rfc_utils.c
stack/sdp/sdp_api.c
stack/sdp/sdp_utils.c

index c4eee0e..756a80d 100644 (file)
@@ -111,14 +111,4 @@ static_library("bta") {
     "//utils/include",
     "//vnd/include",
   ]
-
-  # TODO(armansito): Remove all of the flags below, since we want to enable all
-  # warnings.
-  cflags = [
-    "-Wno-int-to-pointer-cast",
-  ]
-
-  cflags_c = [
-    "-Wno-pointer-to-int-cast",
-  ]
 }
index b550191..a3c1784 100644 (file)
@@ -321,7 +321,7 @@ static tBTA_AG_SCB *bta_ag_scb_alloc(void)
             p_scb->codec_updated = FALSE;
 #endif
             /* set up timers */
-            p_scb->act_timer.param = (UINT32) p_scb;
+            p_scb->act_timer.param = p_scb;
             p_scb->act_timer.p_cback = bta_ag_timer_cback;
 #if (BTM_WBS_INCLUDED == TRUE)
             /* set eSCO mSBC setting to T2 as the preferred */
@@ -650,7 +650,7 @@ void bta_ag_collision_cback (tBTA_SYS_CONN_STATUS status, UINT8 id,
 
         /* Start timer to han */
         p_scb->colli_timer.p_cback = (TIMER_CBACK*)&bta_ag_colli_timer_cback;
-        p_scb->colli_timer.param = (INT32)p_scb;
+        p_scb->colli_timer.param = p_scb;
         bta_sys_start_timer(&p_scb->colli_timer, 0, BTA_AG_COLLISION_TIMER);
         p_scb->colli_tmr_on = TRUE;
     }
index af6c9bc..c7b3023 100644 (file)
@@ -693,7 +693,7 @@ void bta_ag_codec_negotiate(tBTA_AG_SCB *p_scb)
 
         /* Start timer to handle timeout */
         p_scb->cn_timer.p_cback = (TIMER_CBACK*)&bta_ag_cn_timer_cback;
-        p_scb->cn_timer.param = (INT32)p_scb;
+        p_scb->cn_timer.param = p_scb;
         bta_sys_start_timer(&p_scb->cn_timer, 0, BTA_AG_CODEC_NEGO_TIMEOUT);
     }
     else
index 75e0900..5d7588e 100644 (file)
@@ -33,6 +33,7 @@
 #include "utl.h"
 #include "l2c_api.h"
 #include "osi/include/list.h"
+#include "osi/include/osi.h"
 #if( defined BTA_AR_INCLUDED ) && (BTA_AR_INCLUDED == TRUE)
 #include "bta_ar_api.h"
 #endif
@@ -1467,7 +1468,12 @@ void bta_av_sig_chg(tBTA_AV_DATA *p_data)
                         /* Possible collision : need to avoid outgoing processing while the timer is running */
                         p_cb->p_scb[xx]->coll_mask = BTA_AV_COLL_INC_TMR;
 
-                        p_cb->acp_sig_tmr.param = (UINT32)xx;
+
+                        // TODO(armansito): Why is this variable called "xx" and
+                        // why is it a signed integer? The callback reinterprets
+                        // it as a UINT8 and then reassigns it as param that
+                        // way, so should this be unsigned?
+                        p_cb->acp_sig_tmr.param = INT_TO_PTR(xx);
                         p_cb->acp_sig_tmr.p_cback = (TIMER_CBACK*)&bta_av_acp_sig_timer_cback;
                         bta_sys_start_timer(&p_cb->acp_sig_tmr, 0, BTA_AV_ACP_SIG_TIME_VAL);
                     }
@@ -1564,7 +1570,7 @@ void bta_av_sig_timer(tBTA_AV_DATA *p_data)
 *******************************************************************************/
 static void bta_av_acp_sig_timer_cback (TIMER_LIST_ENT *p_tle)
 {
-    UINT8   inx = (UINT8)p_tle->param;
+    UINT8   inx = PTR_TO_UINT(p_tle->param);
     tBTA_AV_CB  *p_cb = &bta_av_cb;
     tBTA_AV_SCB *p_scb = NULL;
     tBTA_AV_API_OPEN  *p_buf;
@@ -1587,7 +1593,7 @@ static void bta_av_acp_sig_timer_cback (TIMER_LIST_ENT *p_tle)
                     /* We are still doing SDP. Run the timer again. */
                     p_scb->coll_mask |= BTA_AV_COLL_INC_TMR;
 
-                    p_cb->acp_sig_tmr.param = (UINT32)inx;
+                    p_cb->acp_sig_tmr.param = UINT_TO_PTR(inx);
                     p_cb->acp_sig_tmr.p_cback = (TIMER_CBACK *)&bta_av_acp_sig_timer_cback;
                     bta_sys_start_timer(&p_cb->acp_sig_tmr, 0, BTA_AV_ACP_SIG_TIME_VAL);
                 }
index 0ec5426..2f94a0e 100644 (file)
@@ -41,6 +41,7 @@
 
 #define LOG_TAG "bt_bta_dm"
 #include "osi/include/log.h"
+#include "osi/include/osi.h"
 
 #if (GAP_INCLUDED == TRUE)
 #include "gap_api.h"
@@ -451,7 +452,7 @@ void bta_dm_disable (tBTA_DM_MSG *p_data)
     else
     {
         bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK*)&bta_dm_disable_timer_cback;
-        bta_dm_cb.disable_timer.param = 0;
+        bta_dm_cb.disable_timer.param = INT_TO_PTR(0);
         bta_sys_start_timer(&bta_dm_cb.disable_timer, 0, 5000);
     }
 
@@ -479,7 +480,7 @@ static void bta_dm_disable_timer_cback (TIMER_LIST_ENT *p_tle)
 
     APPL_TRACE_EVENT(" bta_dm_disable_timer_cback trial %d ", p_tle->param);
 
-    if(BTM_GetNumAclLinks() && p_tle->param == 0)
+    if(BTM_GetNumAclLinks() && PTR_TO_INT(p_tle->param) == 0)
     {
         for(i=0; i<bta_dm_cb.device_list.count; i++)
         {
@@ -495,7 +496,7 @@ static void bta_dm_disable_timer_cback (TIMER_LIST_ENT *p_tle)
         if (trigger_disc)
         {
             bta_dm_cb.disable_timer.p_cback = (TIMER_CBACK*)&bta_dm_disable_timer_cback;
-            bta_dm_cb.disable_timer.param = 1;
+            bta_dm_cb.disable_timer.param = INT_TO_PTR(1);
             bta_sys_start_timer(&bta_dm_cb.disable_timer, 0, 1500);
         }
     }
index d79c972..ea14d6d 100644 (file)
@@ -25,6 +25,7 @@
 #include <arpa/inet.h>
 #include <pthread.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "osi/include/allocator.h"
 #include "bt_types.h"
 #include "sdp_api.h"
 #include "l2c_api.h"
 #include "port_api.h"
-#include <string.h>
 #include "rfcdefs.h"
 #include "avct_api.h"
 #include "avdt_api.h"
 #include "gap_api.h"
 #include "l2c_api.h"
 
+#include "osi/include/osi.h"
+
 
 /* one of these exists for each client */
 struct fc_client {
@@ -1650,7 +1652,7 @@ static int find_rfc_pcb(void* user_data, tBTA_JV_RFC_CB **cb, tBTA_JV_PCB **pcb)
             return 1;
         }
     }
-    APPL_TRACE_DEBUG("find_rfc_pcb: cannot find rfc_cb from user data:%d", (UINT32)user_data);
+    APPL_TRACE_DEBUG("find_rfc_pcb: cannot find rfc_cb from user data: %u", PTR_TO_UINT(user_data));
     return 0;
 }
 
index fca504b..cee6c03 100644 (file)
@@ -86,14 +86,4 @@ static_library("btif") {
     "//utils/include",
     "//vnd/include",
   ]
-
-  # TODO(armansito): Remove all of these flags below. We want to enable all
-  # warnings that we can.
-  cflags = [
-    "-Wno-int-to-pointer-cast",
-  ]
-
-  cflags_c = [
-    "-Wno-pointer-to-int-cast",
-  ]
 }
index 58ce311..acb7716 100644 (file)
@@ -324,7 +324,7 @@ static BOOLEAN btif_av_state_idle_handler(btif_sm_event_t event, void *p_data)
 
             BTIF_TRACE_DEBUG("BTA_AV_RC_OPEN_EVT received w/o AV");
             memset(&tle_av_open_on_rc, 0, sizeof(tle_av_open_on_rc));
-            tle_av_open_on_rc.param = (UINT32)btif_initiate_av_open_tmr_hdlr;
+            tle_av_open_on_rc.param = btif_initiate_av_open_tmr_hdlr;
             btu_start_timer(&tle_av_open_on_rc, BTU_TTYPE_USER_FUNC,
                             BTIF_TIMEOUT_AV_OPEN_ON_RC_SECS);
             btif_rc_handler(event, p_data);
index 5477f24..aaacbcc 100644 (file)
@@ -247,7 +247,7 @@ static uint8_t rssi_request_client_if;
 static bt_status_t btif_gattc_multi_adv_disable(int client_if);
 static void btif_multi_adv_stop_cb(void *p_tle)
 {
-    int client_if = ((TIMER_LIST_ENT*)p_tle)->data;
+    int client_if = PTR_TO_INT(((TIMER_LIST_ENT*)p_tle)->data);
     btif_gattc_multi_adv_disable(client_if); // Does context switch
 }
 
index 63bca08..692945d 100644 (file)
@@ -633,8 +633,8 @@ void btif_multi_adv_timer_ctrl(int client_if, TIMER_CBACK cb)
                 btu_stop_timer_oneshot(&p_multi_adv_data_cb->inst_cb[cbindex].tle_limited_timer);
 
             memset(&p_multi_adv_data_cb->inst_cb[cbindex].tle_limited_timer, 0, sizeof(TIMER_LIST_ENT));
-            p_multi_adv_data_cb->inst_cb[cbindex].tle_limited_timer.param = (UINT32)cb;
-            p_multi_adv_data_cb->inst_cb[cbindex].tle_limited_timer.data = (UINT32)client_if;
+            p_multi_adv_data_cb->inst_cb[cbindex].tle_limited_timer.param = cb;
+            p_multi_adv_data_cb->inst_cb[cbindex].tle_limited_timer.data = INT_TO_PTR(client_if);
             btu_start_timer_oneshot(&p_multi_adv_data_cb->inst_cb[cbindex].tle_limited_timer,
                     BTU_TTYPE_USER_FUNC, p_multi_adv_data_cb->inst_cb[cbindex].timeout_s);
         }
index 5e31951..7ba3c8f 100644 (file)
@@ -434,7 +434,7 @@ void btif_hh_start_vup_timer(bt_bdaddr_t *bd_addr)
     {
         BTIF_TRACE_DEBUG("Start VUP timer ");
         memset(&p_dev->vup_timer, 0, sizeof(TIMER_LIST_ENT));
-        p_dev->vup_timer.param = (UINT32)btif_hh_tmr_hdlr;
+        p_dev->vup_timer.param = btif_hh_tmr_hdlr;
         btu_start_timer(&p_dev->vup_timer, BTU_TTYPE_USER_FUNC,
                         BTIF_TIMEOUT_VUP_SECS);
     }
index 5f320d4..2f370a5 100644 (file)
@@ -358,7 +358,7 @@ void btif_hl_start_cch_timer(UINT8 app_idx, UINT8 mcl_idx)
     {
         BTIF_TRACE_DEBUG("Start CCH timer ");
         memset(&p_mcb->cch_timer, 0, sizeof(TIMER_LIST_ENT));
-        p_mcb->cch_timer.param = (UINT32)btif_hl_tmr_hdlr;
+        p_mcb->cch_timer.param = btif_hl_tmr_hdlr;
         btu_start_timer(&p_mcb->cch_timer, BTU_TTYPE_USER_FUNC,
                         BTIF_TIMEOUT_CCH_NO_DCH_SECS);
     }
index 5351cf6..256568c 100644 (file)
@@ -390,7 +390,7 @@ void btpan_set_flow_control(BOOLEAN enable) {
     btpan_cb.flow = enable;
     if (enable) {
         btsock_thread_add_fd(pan_pth, btpan_cb.tap_fd, 0, SOCK_THREAD_FD_RD, 0);
-        bta_dmexecutecallback(btu_exec_tap_fd_read, (void *)btpan_cb.tap_fd);
+        bta_dmexecutecallback(btu_exec_tap_fd_read, INT_TO_PTR(btpan_cb.tap_fd));
     }
 }
 
@@ -660,7 +660,7 @@ static void bta_pan_callback(tBTA_PAN_EVT event, tBTA_PAN *p_data)
 #define IS_EXCEPTION(e) ((e) & (POLLHUP | POLLRDHUP | POLLERR | POLLNVAL))
 static void btu_exec_tap_fd_read(void *p_param) {
     struct pollfd ufd;
-    int fd = (int)p_param;
+    int fd = PTR_TO_INT(p_param);
 
     if (fd == INVALID_FD || fd != btpan_cb.tap_fd)
         return;
@@ -759,5 +759,5 @@ static void btpan_tap_fd_signaled(int fd, int type, int flags, uint32_t user_id)
         btpan_tap_close(fd);
         btif_pan_close_all_conns();
     } else if (flags & SOCK_THREAD_FD_RD)
-        bta_dmexecutecallback(btu_exec_tap_fd_read, (void *)fd);
+        bta_dmexecutecallback(btu_exec_tap_fd_read, INT_TO_PTR(fd));
 }
index 94c1172..b14d6cb 100644 (file)
@@ -108,12 +108,12 @@ static void sdp_dm_cback(tBTA_SDP_EVT event, tBTA_SDP *p_data, void *user_data)
         }
         case BTA_SDP_CREATE_RECORD_USER_EVT:
         {
-            on_create_record_event((int)user_data);
+            on_create_record_event(PTR_TO_INT(user_data));
             break;
         }
         case BTA_SDP_REMOVE_RECORD_USER_EVT:
         {
-            on_remove_record_event((int)user_data);
+            on_remove_record_event(PTR_TO_INT(user_data));
             break;
         }
         default:
index d8f45a8..1f44e93 100644 (file)
@@ -283,7 +283,7 @@ bt_status_t create_sdp_record(bluetooth_sdp_record *record, int* record_handle)
     if(handle < 0)
         return BT_STATUS_FAIL;
 
-    BTA_SdpCreateRecordByUser((void*) handle);
+    BTA_SdpCreateRecordByUser(INT_TO_PTR(handle));
 
     *record_handle = handle;
 
@@ -300,7 +300,7 @@ bt_status_t remove_sdp_record(int record_id) {
 
     /* Pass the actual record handle */
     if(handle > 0) {
-        BTA_SdpRemoveRecordByUser((void*) handle);
+        BTA_SdpRemoveRecordByUser(INT_TO_PTR(handle));
         return BT_STATUS_SUCCESS;
     }
     BTIF_TRACE_DEBUG("Sdp Server %s - record already removed - or never created", __FUNCTION__);
index 7689015..97cb37f 100644 (file)
@@ -513,7 +513,7 @@ static void on_srv_l2cap_le_connect_l(tBTA_JV_L2CAP_LE_OPEN *p_open, l2cap_socke
 
         //if we do not set a callback, this socket will be dropped */
         *(p_open->p_p_cback) = (void*)btsock_l2cap_cbk;
-        *(p_open->p_user_data) = (void*)accept_rs->id;
+        *(p_open->p_user_data) = UINT_TO_PTR(accept_rs->id);
 
         //start monitor the socket
         btsock_thread_add_fd(pth, sock->our_fd, BTSOCK_L2CAP, SOCK_THREAD_FD_EXCEPTION, sock->id);
@@ -717,27 +717,29 @@ static void on_l2cap_data_ind(tBTA_JV *evt, uint32_t id)
 
 static void btsock_l2cap_cbk(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data)
 {
+    uint32_t sock_id = PTR_TO_UINT(user_data);
+
     switch (event) {
     case BTA_JV_L2CAP_START_EVT:
-        on_srv_l2cap_listen_started(&p_data->l2c_start, (uint32_t)user_data);
+        on_srv_l2cap_listen_started(&p_data->l2c_start, sock_id);
         break;
 
     case BTA_JV_L2CAP_CL_INIT_EVT:
-        on_cl_l2cap_init(&p_data->l2c_cl_init, (uint32_t)user_data);
+        on_cl_l2cap_init(&p_data->l2c_cl_init, sock_id);
         break;
 
     case BTA_JV_L2CAP_OPEN_EVT:
-        on_l2cap_connect(p_data, (uint32_t)user_data);
-        BTA_JvSetPmProfile(p_data->l2c_open.handle,BTA_JV_PM_ID_1,BTA_JV_CONN_OPEN);
+        on_l2cap_connect(p_data, sock_id);
+        BTA_JvSetPmProfile(p_data->l2c_open.handle, BTA_JV_PM_ID_1,BTA_JV_CONN_OPEN);
         break;
 
     case BTA_JV_L2CAP_CLOSE_EVT:
-        APPL_TRACE_DEBUG("BTA_JV_L2CAP_CLOSE_EVT: user_data:%d", (uint32_t)user_data);
-        on_l2cap_close(&p_data->l2c_close, (uint32_t)user_data);
+        APPL_TRACE_DEBUG("BTA_JV_L2CAP_CLOSE_EVT: id: %u", sock_id);
+        on_l2cap_close(&p_data->l2c_close, sock_id);
         break;
 
     case BTA_JV_L2CAP_DATA_IND_EVT:
-        on_l2cap_data_ind(p_data, (uint32_t)user_data);
+        on_l2cap_data_ind(p_data, sock_id);
         APPL_TRACE_DEBUG("BTA_JV_L2CAP_DATA_IND_EVT");
         break;
 
@@ -750,21 +752,21 @@ static void btsock_l2cap_cbk(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data
         break;
 
     case BTA_JV_L2CAP_WRITE_EVT:
-        APPL_TRACE_DEBUG("BTA_JV_L2CAP_WRITE_EVT id: %d", (int)user_data);
-        on_l2cap_write_done((void*)p_data->l2c_write.req_id, (uint32_t)user_data);
+        APPL_TRACE_DEBUG("BTA_JV_L2CAP_WRITE_EVT: id: %u", sock_id);
+        on_l2cap_write_done(UINT_TO_PTR(p_data->l2c_write.req_id), sock_id);
         break;
 
     case BTA_JV_L2CAP_WRITE_FIXED_EVT:
-        APPL_TRACE_DEBUG("BTA_JV_L2CAP_WRITE_FIXED_EVT id: %d", (int)user_data);
-        on_l2cap_write_fixed_done((void*)p_data->l2c_write_fixed.req_id, (uint32_t)user_data);
+        APPL_TRACE_DEBUG("BTA_JV_L2CAP_WRITE_FIXED_EVT: id: %u", sock_id);
+        on_l2cap_write_fixed_done(UINT_TO_PTR(p_data->l2c_write_fixed.req_id), sock_id);
         break;
 
     case BTA_JV_L2CAP_CONG_EVT:
-        on_l2cap_outgoing_congest(&p_data->l2c_cong, (uint32_t)user_data);
+        on_l2cap_outgoing_congest(&p_data->l2c_cong, sock_id);
         break;
 
     default:
-        APPL_TRACE_ERROR("unhandled event %d, slot id:%d", event, (uint32_t)user_data);
+        APPL_TRACE_ERROR("unhandled event %d, slot id: %u", event, sock_id);
         break;
     }
 }
@@ -823,7 +825,7 @@ static bt_status_t btSock_start_l2cap_server_l(l2cap_socket *sock) {
     if (sock->fixed_chan) {
 
         if (BTA_JvL2capStartServerLE(sock->security, 0, NULL, sock->channel,
-                L2CAP_DEFAULT_MTU, NULL, btsock_l2cap_cbk, (void*)sock->id)
+                L2CAP_DEFAULT_MTU, NULL, btsock_l2cap_cbk, UINT_TO_PTR(sock->id))
                 != BTA_JV_SUCCESS)
             stat = BT_STATUS_FAIL;
 
@@ -831,12 +833,12 @@ static bt_status_t btSock_start_l2cap_server_l(l2cap_socket *sock) {
         /* If we have a channel specified in the request, just start the server,
          * else we request a PSM and start the server after we receive a PSM. */
         if(sock->channel < 0) {
-            if(BTA_JvGetChannelId(BTA_JV_CONN_TYPE_L2CAP, (void*)sock->id, 0)
+            if(BTA_JvGetChannelId(BTA_JV_CONN_TYPE_L2CAP, UINT_TO_PTR(sock->id), 0)
                     != BTA_JV_SUCCESS)
                 stat = BT_STATUS_FAIL;
         } else {
             if (BTA_JvL2capStartServer(sock->security, 0, &obex_l2c_etm_opt,
-                    sock->channel, L2CAP_MAX_SDU_LENGTH, &cfg, btsock_l2cap_cbk, (void*)sock->id)
+                    sock->channel, L2CAP_MAX_SDU_LENGTH, &cfg, btsock_l2cap_cbk, UINT_TO_PTR(sock->id))
                     != BTA_JV_SUCCESS)
                 stat = BT_STATUS_FAIL;
         }
@@ -892,13 +894,13 @@ static bt_status_t btsock_l2cap_listen_or_connect(const char *name, const bt_bda
         if (fixed_chan) {
             if (BTA_JvL2capConnectLE(sock->security, 0, NULL, channel,
                     L2CAP_DEFAULT_MTU, NULL, sock->addr.address, btsock_l2cap_cbk,
-                    (void*)sock->id) != BTA_JV_SUCCESS)
+                    UINT_TO_PTR(sock->id)) != BTA_JV_SUCCESS)
                 stat = BT_STATUS_FAIL;
 
         } else {
             if (BTA_JvL2capConnect(sock->security, 0, &obex_l2c_etm_opt,
                     channel, L2CAP_MAX_SDU_LENGTH, &cfg, sock->addr.address,
-                    btsock_l2cap_cbk, (void*)sock->id) != BTA_JV_SUCCESS)
+                    btsock_l2cap_cbk, UINT_TO_PTR(sock->id)) != BTA_JV_SUCCESS)
                 stat = BT_STATUS_FAIL;
         }
     }
@@ -998,21 +1000,28 @@ void btsock_l2cap_signaled(int fd, int flags, uint32_t user_id)
                          * be wrong
                          * UPDATE: Since we are responsible for freeing the buffer in the
                          * write_complete_ind, it is OK to use malloc. */
-
                         int count = recv(fd, buffer, L2CAP_MAX_SDU_LENGTH,
                                 MSG_NOSIGNAL | MSG_DONTWAIT);
                         APPL_TRACE_DEBUG("btsock_l2cap_signaled - %d bytes received from socket",
                                 count);
+
+                        // TODO(armansito): |buffer|, which is created above via
+                        // malloc, is being cast below to UINT32 to be used as
+                        // the |req_id| parameter of BTA_JvL2capWriteFixed and
+                        // BTA_JvL2capWrite. The "id" then gets freed in an
+                        // obscure callback elsewhere. We need to watch out for
+                        // this type of unsafe practice, as this is error prone
+                        // and difficult to follow.
                         if (sock->fixed_chan) {
                             if(BTA_JvL2capWriteFixed(sock->channel, (BD_ADDR*)&sock->addr,
-                                    (UINT32)buffer, btsock_l2cap_cbk, buffer, count,
-                                    (void *)user_id) != BTA_JV_SUCCESS) {
+                                    PTR_TO_UINT(buffer), btsock_l2cap_cbk, buffer, count,
+                                    UINT_TO_PTR(user_id)) != BTA_JV_SUCCESS) {
                                 // On fail, free the buffer
                                 on_l2cap_write_fixed_done(buffer, user_id);
                             }
                         } else {
-                            if(BTA_JvL2capWrite(sock->handle, (UINT32)buffer, buffer, count,
-                                    (void *)user_id) != BTA_JV_SUCCESS) {
+                            if(BTA_JvL2capWrite(sock->handle, PTR_TO_UINT(buffer), buffer, count,
+                                    UINT_TO_PTR(user_id)) != BTA_JV_SUCCESS) {
                                 // On fail, free the buffer
                                 on_l2cap_write_done(buffer, user_id);
                             }
index 6bd45f8..8e74880 100644 (file)
@@ -284,7 +284,7 @@ bt_status_t btsock_rfc_listen(const char *service_name, const uint8_t *service_u
     goto out;
   }
   APPL_TRACE_DEBUG("BTA_JvGetChannelId: service_name: %s - channel: %d", service_name, channel);
-  BTA_JvGetChannelId(BTA_JV_CONN_TYPE_RFCOMM, (void*) slot->id, channel);
+  BTA_JvGetChannelId(BTA_JV_CONN_TYPE_RFCOMM, UINT_TO_PTR(slot->id), channel);
   *sock_fd = slot->app_fd;    // Transfer ownership of fd to caller.
   /*TODO:
    * We are leaking one of the app_fd's - either the listen socket, or the connection socket.
@@ -599,7 +599,7 @@ static void *rfcomm_cback(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data) {
 }
 
 static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data) {
-  uint32_t id = (uintptr_t)user_data;
+  uint32_t id = PTR_TO_UINT(user_data);
   switch(event) {
     case BTA_JV_GET_SCN_EVT:
     {
@@ -625,13 +625,13 @@ static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data) {
         } else {
           if(rs->is_service_uuid_valid == true) {
             // We already have data for SDP record, create it (RFC-only profiles)
-            BTA_JvCreateRecordByUser((void *)rs->id);
+            BTA_JvCreateRecordByUser(UINT_TO_PTR(rs->id));
           } else {
             APPL_TRACE_DEBUG("is_service_uuid_valid==false - don't set SDP-record, "
                     "just start the RFCOMM server", rs->id);
             //now start the rfcomm server after sdp & channel # assigned
             BTA_JvRfcommStartServer(rs->security, rs->role, rs->scn, MAX_RFC_SESSION,
-                    rfcomm_cback, (void*)rs->id);
+                    rfcomm_cback, UINT_TO_PTR(rs->id));
           }
         }
       } else if(rs) {
index cf1c48c..f0df9e3 100644 (file)
@@ -27,7 +27,7 @@ static const char GKI_MODULE[] = "gki_module";
 */
 typedef void (TIMER_CBACK)(void *p_tle);
 #ifndef TIMER_PARAM_TYPE
-#define TIMER_PARAM_TYPE    UINT32
+#define TIMER_PARAM_TYPE void*
 #endif
 /* Define a timer list entry
 */
index f712d2c..57ff43d 100644 (file)
 
 
 #ifndef TIMER_PARAM_TYPE
-#define TIMER_PARAM_TYPE    UINT32
+#define TIMER_PARAM_TYPE void*
 #endif
 
 /******************************************************************************
index 94c6280..a80e31d 100644 (file)
@@ -74,15 +74,5 @@ shared_library("bluetooth.default") {
     "//utils",
   ]
 
-  # TODO(armansito): Remove all of the flags below, as we want to be able to
-  # compile the source code with as many warnings enabled as possible.
-  cflags = [
-    "-Wno-int-to-pointer-cast",
-  ]
-
-  cflags_c = [
-    "-Wno-pointer-to-int-cast",
-  ]
-
   libs = [ "-lpthread", "-lrt", "-ldl" ]
 }
index 23cdb1d..f8ea514 100644 (file)
@@ -166,10 +166,4 @@ static_library("stack") {
     "//utils/include",
     "//",
   ]
-
-  # TODO(armansito): Remove all of these flags.
-  cflags = [
-    "-Wno-pointer-to-int-cast",
-    "-Wno-int-to-pointer-cast",
-  ]
 }
index 09ed39a..0cad57c 100644 (file)
@@ -386,7 +386,7 @@ tAVDT_CCB *avdt_ccb_alloc(BD_ADDR bd_addr)
             memcpy(p_ccb->peer_addr, bd_addr, BD_ADDR_LEN);
             GKI_init_q(&p_ccb->cmd_q);
             GKI_init_q(&p_ccb->rsp_q);
-            p_ccb->timer_entry.param = (UINT32) p_ccb;
+            p_ccb->timer_entry.param = p_ccb;
             AVDT_TRACE_DEBUG("avdt_ccb_alloc %d", i);
             break;
         }
index 696fcca..2a2ab4a 100644 (file)
@@ -620,7 +620,7 @@ tAVDT_SCB *avdt_scb_alloc(tAVDT_CS *p_cs)
 #endif
             }
 #endif
-            p_scb->timer_entry.param = (UINT32) p_scb;
+            p_scb->timer_entry.param = p_scb;
             AVDT_TRACE_DEBUG("avdt_scb_alloc hdl=%d, psc_mask:0x%x", i+1, p_cs->cfg.psc_mask);
             break;
         }
index 1db329d..0cf3b3f 100644 (file)
@@ -120,7 +120,7 @@ tBNEP_CONN *bnepu_allocate_bcb (BD_ADDR p_rem_bda)
         {
             memset ((UINT8 *)p_bcb, 0, sizeof (tBNEP_CONN));
 
-            p_bcb->conn_tle.param = (UINT32) p_bcb;
+            p_bcb->conn_tle.param = p_bcb;
 
             memcpy ((UINT8 *)(p_bcb->rem_bda), (UINT8 *)p_rem_bda, BD_ADDR_LEN);
             p_bcb->handle = xx + 1;
index 9337697..59a311f 100644 (file)
@@ -795,7 +795,7 @@ void btm_acl_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable)
                 btsnd_hcic_disconnect(p_dev_rec->hci_handle, HCI_ERR_PEER_USER);
             }
             BTM_TRACE_ERROR("btm_acl_encrypt_change: tBTM_SEC_DEV:0x%x rs_disc_pending=%d",
-                (UINT32)p_dev_rec, p_dev_rec->rs_disc_pending);
+                            PTR_TO_UINT(p_dev_rec), p_dev_rec->rs_disc_pending);
             p_dev_rec->rs_disc_pending = BTM_SEC_RS_NOT_PENDING;     /* reset flag */
         }
 #endif
@@ -1528,7 +1528,7 @@ void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role)
             btsnd_hcic_disconnect(p_dev_rec->hci_handle, HCI_ERR_PEER_USER);
         }
         BTM_TRACE_ERROR("tBTM_SEC_DEV:0x%x rs_disc_pending=%d",
-                         (UINT32)p_dev_rec, p_dev_rec->rs_disc_pending);
+                        PTR_TO_UINT(p_dev_rec), p_dev_rec->rs_disc_pending);
         p_dev_rec->rs_disc_pending = BTM_SEC_RS_NOT_PENDING;     /* reset flag */
     }
 
index 26ee89c..126007f 100644 (file)
@@ -3944,7 +3944,7 @@ static void btm_sec_auth_collision (UINT16 handle)
                 p_dev_rec->sec_state = 0;
 
             btm_cb.p_collided_dev_rec = p_dev_rec;
-            btm_cb.sec_collision_tle.param = (UINT32) btm_sec_collision_timeout;
+            btm_cb.sec_collision_tle.param = UINT_TO_PTR(btm_sec_collision_timeout);
             btu_start_timer (&btm_cb.sec_collision_tle, BTU_TTYPE_USER_FUNC, BT_1SEC_TIMEOUT);
         }
     }
@@ -4415,7 +4415,7 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode)
                         /* Start timer with 0 to initiate connection with new LCB */
                         /* because L2CAP will delete current LCB with this event  */
                         btm_cb.p_collided_dev_rec = p_dev_rec;
-                        btm_cb.sec_collision_tle.param = (UINT32) btm_sec_connect_after_reject_timeout;
+                        btm_cb.sec_collision_tle.param = UINT_TO_PTR(btm_sec_connect_after_reject_timeout);
                         btu_start_timer (&btm_cb.sec_collision_tle, BTU_TTYPE_USER_FUNC, 0);
                     }
                     else
@@ -4473,7 +4473,7 @@ void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode)
                 /* Start timer with 0 to initiate connection with new LCB */
                 /* because L2CAP will delete current LCB with this event  */
                 btm_cb.p_collided_dev_rec = p_dev_rec;
-                btm_cb.sec_collision_tle.param = (UINT32) btm_sec_connect_after_reject_timeout;
+                btm_cb.sec_collision_tle.param = UINT_TO_PTR(btm_sec_connect_after_reject_timeout);
                 btu_start_timer (&btm_cb.sec_collision_tle, BTU_TTYPE_USER_FUNC, 0);
             }
 
index efaa1f6..7b3db4a 100644 (file)
@@ -43,6 +43,8 @@
 #include "hidh_int.h"
 #include "bt_utils.h"
 
+#include "osi/include/osi.h"
+
 static UINT8 find_conn_by_cid (UINT16 cid);
 static void hidh_conn_retry (UINT8 dhandle);
 
@@ -301,10 +303,16 @@ static void hidh_l2cif_connect_ind (BD_ADDR  bd_addr, UINT16 l2cap_cid, UINT16 p
 *******************************************************************************/
 void hidh_proc_repage_timeout (TIMER_LIST_ENT *p_tle)
 {
-    hidh_conn_initiate( (UINT8) p_tle->param ) ;
-    hh_cb.devices[p_tle->param].conn_tries++;
-    hh_cb.callback( (UINT8) p_tle->param, hh_cb.devices[p_tle->param].addr,
-                    HID_HDEV_EVT_RETRYING, hh_cb.devices[p_tle->param].conn_tries, NULL ) ;
+    tHID_HOST_DEV_CTB *device;
+    UINT8 dhandle = PTR_TO_UINT(p_tle->param);
+
+    hidh_conn_initiate(dhandle);
+
+    device = &hh_cb.devices[dhandle];
+    device->conn_tries++;
+
+    hh_cb.callback(dhandle, device->addr, HID_HDEV_EVT_RETRYING,
+                   device->conn_tries, NULL ) ;
 }
 
 /*******************************************************************************
@@ -324,7 +332,9 @@ void hidh_sec_check_complete_orig (BD_ADDR bd_addr, tBT_TRANSPORT transport, voi
     UNUSED(bd_addr);
     UNUSED (transport);
 
-    dhandle = ((UINT32)p_dev - (UINT32)&(hh_cb.devices[0]))/ sizeof(tHID_HOST_DEV_CTB);
+    // TODO(armansito): This kind of math to determine a device handle is way
+    // too dirty and unnecessary. Why can't |p_dev| store it's handle?
+    dhandle = (PTR_TO_UINT(p_dev) - PTR_TO_UINT(&(hh_cb.devices[0])))/ sizeof(tHID_HOST_DEV_CTB);
     if( res == BTM_SUCCESS && p_dev->conn.conn_state == HID_CONN_STATE_SECURITY )
     {
         HIDH_TRACE_EVENT ("HID-Host Originator security pass.");
@@ -652,7 +662,7 @@ static void hidh_l2cif_disconnect_ind (UINT16 l2cap_cid, BOOLEAN ack_needed)
             (hh_cb.devices[dhandle].attr_mask & HID_NORMALLY_CONNECTABLE))
         {
             hh_cb.devices[dhandle].conn_tries = 0;
-            hh_cb.devices[dhandle].conn.timer_entry.param = (UINT32) dhandle;
+            hh_cb.devices[dhandle].conn.timer_entry.param = UINT_TO_PTR(dhandle);
             btu_start_timer (&(hh_cb.devices[dhandle].conn.timer_entry), BTU_TTYPE_HID_HOST_REPAGE_TO, HID_HOST_REPAGE_WIN);
             hh_cb.callback( dhandle,  hh_cb.devices[dhandle].addr, HID_HDEV_EVT_CLOSE, disc_res, NULL);
         }
@@ -1085,7 +1095,7 @@ static void hidh_conn_retry(  UINT8 dhandle )
     tHID_HOST_DEV_CTB *p_dev = &hh_cb.devices[dhandle];
 
     p_dev->conn.conn_state = HID_CONN_STATE_UNUSED;
-    p_dev->conn.timer_entry.param = (UINT32) dhandle;
+    p_dev->conn.timer_entry.param = UINT_TO_PTR(dhandle);
 #if (HID_HOST_REPAGE_WIN > 0)
     btu_start_timer (&(p_dev->conn.timer_entry), BTU_TTYPE_HID_HOST_REPAGE_TO, HID_HOST_REPAGE_WIN);
 #else
index e2cff28..0014c9b 100644 (file)
@@ -224,7 +224,7 @@ void rfc_timer_start (tRFC_MCB *p_mcb, UINT16 timeout)
 
     RFCOMM_TRACE_EVENT ("rfc_timer_start - timeout:%d", timeout);
 
-    p_tle->param = (UINT32)p_mcb;
+    p_tle->param = p_mcb;
 
     btu_start_timer (p_tle, BTU_TTYPE_RFCOMM_MFC, timeout);
 }
@@ -258,7 +258,7 @@ void rfc_port_timer_start (tPORT *p_port, UINT16 timeout)
 
     RFCOMM_TRACE_EVENT ("rfc_port_timer_start - timeout:%d", timeout);
 
-    p_tle->param = (UINT32)p_port;
+    p_tle->param = p_port;
 
     btu_start_timer (p_tle, BTU_TTYPE_RFCOMM_PORT, timeout);
 }
index 6e84ded..5a69816 100644 (file)
@@ -37,6 +37,8 @@
 #include "sdpint.h"
 #include "btu.h"
 
+#include "osi/include/osi.h"
+
 /**********************************************************************
 **   C L I E N T    F U N C T I O N    P R O T O T Y P E S            *
 ***********************************************************************/
@@ -73,7 +75,7 @@ BOOLEAN SDP_InitDiscoveryDb (tSDP_DISCOVERY_DB *p_db, UINT32 len, UINT16 num_uui
         num_attr > SDP_MAX_ATTR_FILTERS || num_uuid > SDP_MAX_UUID_FILTERS)
     {
         SDP_TRACE_ERROR("SDP_InitDiscoveryDb Illegal param: p_db 0x%x, len %d, num_uuid %d, num_attr %d",
-                         (UINT32)p_db, len, num_uuid, num_attr);
+                        PTR_TO_UINT(p_db), len, num_uuid, num_attr);
 
         return(FALSE);
     }
index 6e5c064..345fa66 100644 (file)
@@ -122,7 +122,7 @@ tCONN_CB *sdpu_allocate_ccb (void)
         {
             memset (p_ccb, 0, sizeof (tCONN_CB));
 
-            p_ccb->timer_entry.param = (UINT32) p_ccb;
+            p_ccb->timer_entry.param = p_ccb;
 
             return (p_ccb);
         }