看板 C_and_CPP 關於我們 聯絡資訊
各位好~基本上這是Android原本的Code.. 目前就是讀code在研究啦!!!因為很多地方沒有看懂... 有點類似讀一篇文章...但是讀下去..囧囧的 原始的Code如下: void btsnd_hcic_vendor_spec_cmd (void *buffer, UINT16 opcode, UINT8 len, UINT8 *p_data, void *p_cmd_cplt_cback) { BT_HDR *p = (BT_HDR *)buffer; UINT8 *pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + len; p->offset = sizeof(void *); *((void **)pp) = p_cmd_cplt_cback; /* Store command complete callback in buffer */ pp += sizeof(void *); /* Skip over callback pointer */ UINT16_TO_STREAM (pp, HCI_GRP_VENDOR_SPECIFIC | opcode); UINT8_TO_STREAM (pp, len); ARRAY_TO_STREAM (pp, p_data, len); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); } 網址如下唷: https://android.googlesource.com/platform/system/bt/+/android-6.0.0_r1/stack/hcic/hcicmds.c 感謝大家 ※ 引述《blueguan ()》之銘言: : 在請問大家另外一個問題 如下: : UINT8 *pp = (UINT8 *)(p + 1); : *((void **)pp) = p_cmd_cplt_cback; : pp += sizeof(void *); : 請問這三行是怎麼處理? : ※ 引述《blueguan ()》之銘言: : : 開發平台(Platform): (Ex: Win10, Linux, ...) : : Linux/Android : : 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) : : GCC : : 問題(Question): : : 請問各位~我幾段Code不清楚~想請問大家 : : Q1). : : static int op(vendor_code_t opcode, void *param){ : : ... : : int *state = (int *) param; <== : : ... : : } : : 這邊指的是宣告一個指標 state. 並且把*state的位置給param並且轉化為int type. : : 請問我的理解有錯嗎?另外假如要轉為char type則就改成以下,是否正確 : : char *state = (char *)param; : : Q2). : : status = *((uint8_t *)(p_evt_buf + 1) + HCI_EVT_CMD_CMPL_STATUS_RET_BYTE); : : 這段 Code 我有點看不懂. 這到底是把值塞給status嗎? : : 所謂的 *((uint8_t *)(p_evt_buf + 1) 是指那一塊塞過去呢? : : p = (uint8_t *)(p_buf + 1); : : 哪這段 Code 跟剛原本的差異是在哪? : : 感謝各位大大.謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.205.85 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1481521414.A.F52.html ※ 編輯: blueguan (1.164.205.85), 12/12/2016 13:44:48
stupid0319: 對C不熟,看NDK會很難過 12/12 13:53
dijkstra: 把buffer當作一個BT_HDR array, 因此pp = p+1 就是pp指 12/12 15:22
dijkstra: 向第二個BT_HDR開頭,而BT_HDR前幾個byte是用來存callba 12/12 15:22
dijkstra: ck func pointer, p_cmd_cp....那行就是來覆蓋掉原本的c 12/12 15:22
dijkstra: allback,接著pp會移到這個callback後面 12/12 15:22
Bencrie: 藍芽 XD 12/12 17:18
Gway: 看到HCI的字眼 有猜到 xD 12/13 22:35
blueguan: 哈~對啊!是藍芽...我大概懂了!! 感謝各位大大 12/13 23:33