📄 mfw_bt.c
字号:
case BT_SRV_SYNC_AUTH_IND:
srv_sync_auth_ind = (T_MFW_BT_SRV_SYNC_AUTH_IND *)para;
if(srv_sync_auth_ind->service EQ MFW_BT_SYNC)
{
memcpy(&bt_data->para.srv_sync_auth,
para,sizeof(T_MFW_BT_SRV_SYNC_AUTH_IND));
}
else
return FALSE;
break;
case BT_SRV_SYNC_PULL_IND:
srv_sync_pull_ind = (T_MFW_BT_SRV_SYNC_PULL_IND *)para;
if(srv_sync_pull_ind->service EQ MFW_BT_SYNC)
{
memcpy(&bt_data->para.sync_pull_ind,
para,sizeof(T_MFW_BT_SRV_SYNC_PULL_IND));
}
else
return FALSE;
break;
case BT_SRV_SYNC_PUSH_IND:
srv_sync_push_ind = (T_MFW_BT_SRV_SYNC_PUSH_IND *)para;
if(srv_sync_push_ind->service EQ MFW_BT_SYNC)
{
memcpy(&bt_data->para.sync_push_ind,
para,sizeof(T_MFW_BT_SRV_SYNC_PUSH_IND));
}
else
return FALSE;
break;
case BT_SRV_SYNC_PUSH_CNF:
srv_sync_push_cnf = (T_MFW_BT_SRV_SYNC_PUSH_CNF *)para;
if(srv_sync_push_cnf->service EQ MFW_BT_SYNC)
{
memcpy(&bt_data->para.sync_push_cnf,
para,sizeof(T_MFW_BT_SRV_SYNC_PUSH_CNF));
}
else
return FALSE;
break;
}
switch (event)
{
case BT_HSG_SPECIFIC_CMD_CFM:
memcpy(&bt_data->para.hsg_specific_cmd_cfm, para,sizeof(T_MFW_BT_HSG_SPECIFIC_CMD_CFM));
break;
case BT_HSG_HEADSET_CONNECTION_IND:
memcpy(&bt_data->para.hsg_headset_connection_ind, para,sizeof(T_MFW_BT_HSG_HEADSET_CONNECTION_IND));
break;
case BT_HSG_SAVE_LIST_CNF:
memcpy(&bt_data->para.hsg_save_list_cnf, para,sizeof(T_MFW_BT_HSG_SAVE_LIST_CNF));
break;
}
switch (event)
{
case BT_CONNECT_DEVICE_IND:
memcpy(&bt_data->para.connect_indication,
para,sizeof(T_MFW_BT_CONNECT_IND));
/* service with event BT_CONNECT_DEVICE_IND to MMI */
break;
case BT_CONNECT_DEVICE_INF:
memcpy(&bt_data->para.connect_information,
para,sizeof(T_MFW_BT_CONNECT_INF));
/* service with event BT_CONNECT_DEVICE_INF to MMI */
break;
case BT_DISCONNECT_DEVICE_CNF:
discon_ptr = (T_MFW_BT_DISCONNECT_CNF *)para;
if(discon_ptr->service EQ MFW_BT_HEADSET)
{
/* confirms disconnection */
memcpy(&bt_data->para.disconnect_cnf,
para,sizeof(T_MFW_BT_DISCONNECT_CNF));
/* service, addr with event BT_DISCONNECT_DEVICE_CNF to MMI */
break;
}
else
return FALSE;
case BT_DISCON_DUN_FAX_CNF:
discon_dun_fax_ptr = (T_MFW_BT_DISCON_DUN_FAX_CNF *)para;
if((discon_dun_fax_ptr->service EQ MFW_BT_DIAL_UP) OR
(discon_dun_fax_ptr->service EQ MFW_BT_FAX_GW))
{
/* confirms disconnection by remote dial up/fax */
memcpy(&bt_data->para.disc_dun_fax_cnf,
para,sizeof(T_MFW_BT_DISCON_DUN_FAX_CNF));
/* device, result with event BT_DISCON_DUN_FAX_CNF to MMI */
break;
}
else
return FALSE;
case BT_DISCONNECT_DEVICE_IND:
discon_i_ptr = (T_MFW_BT_DISCONNECT_IND *)para;
if(discon_i_ptr->service EQ MFW_BT_HEADSET)
{
/* confirms indication */
memcpy(&bt_data->para.disconnect_ind,
para,sizeof(T_MFW_BT_DISCONNECT_IND));
/* service, addr, error_cause with event BT_DISCONNECT_DEVICE_IND to MMI */
break;
}
else
return FALSE;
case BT_DISCON_DUN_FAX_IND:
discon_dun_fax_ind_ptr = (T_MFW_BT_DISCON_DUN_FAX_IND *)para;
if((discon_dun_fax_ind_ptr->service EQ MFW_BT_DIAL_UP) OR
(discon_dun_fax_ind_ptr->service EQ MFW_BT_FAX_GW))
{
/* indicats disconnection by remote dial up */
memcpy(&bt_data->para.con_dun_fax_ind,
para,sizeof(T_MFW_BT_DISCON_DUN_FAX_IND));
/* device, result with event BT_DISCON_DUN_FAX_IND to MMI */
break;
}
else
return FALSE;
}
switch (event) /* BT CTRL */
{
case BT_CHNG_LOCAL_NAME:
memcpy(&bt_data->para.chng_local_name, para, sizeof(T_MFW_BT_CHNG_LOCAL_NAME));
break;
case BT_READ_LOCAL_NAME:
memcpy(&bt_data->para.read_local_name, para, sizeof(T_MFW_BT_READ_LOCAL_NAME));
break;
case BT_REMOTE_DEV_INFO_RES:
memcpy(&bt_data->para.remote_dev_info, para, sizeof(T_MFW_BT_REMOTE_DEV_INFO_RES));
break;
case BT_CHNG_CONNECTABLE_MODE:
memcpy(&bt_data->para.chng_conn_mode, para, sizeof(T_MFW_BT_CHNG_CONNECTABLE_MODE));
break;
case BT_CHNG_DISCOVERABLE_MODE:
memcpy(&bt_data->para.chng_disc_mode, para, sizeof(T_MFW_BT_CHNG_DISCOVERABLE_MODE));
break;
case BT_READ_BD_ADDR:
memcpy(&bt_data->para.read_bd_addr, para, sizeof(T_MFW_BT_READ_BD_ADDR));
break;
case BT_TRUSTED_DEV_LIST_FULL:
break;
}
switch (event)
{
case BT_TRANSFER_AUDIO_IN_CNF:
/* confirms transfer audio out */
memcpy(&bt_data->para.audio_in_cnf,
para,sizeof(T_MFW_BT_TRANSFER_AUDIO_IN_CNF));
/* service, addr with event BT_TRANSFER_AUDIO_IN_CNF to MMI */
break;
case BT_TRANSFER_AUDIO_OUT_CNF:
/* confirms transfer audio in */
memcpy(&bt_data->para.audio_out_cnf,
para,sizeof(T_MFW_BT_TRANSFER_AUDIO_OUT_CNF));
/* service, addr with event BT_TRANSFER_AUDIO_OUT_CNF to MMI */
break;
case BT_AUTHORIZATION_IND:
/* indicats remote device authorization request */
memcpy(&bt_data->para.authoriz_ind,
para,sizeof(T_MFW_BT_AUTHORIZATION_IND));
/* addr,remote name,service name, authorization_mask,connection_dir with event BT_AUTHORIZATION_IND to MMI */
break;
case BT_PIN_IND:
/* indicats remote pin request */
memcpy(&bt_data->para.pin_ind,
para,sizeof(T_MFW_BT_PIN_IND));
/* addr,name with event BT_PIN_IND to MMI */
break;
case BT_RECONFIG_PROFILE_CNF:
/* confirm reconfiguration profile */
memcpy(&bt_data->para.profile,
para,sizeof(T_MFW_BT_PROFILE_CNF));
/* service, result_bd(,mfw_opp_mode,mfw_sync_mode,mfw_syn_aut_mode) with event BT_RECONFIG_PROFILE_CNF to MMI */
break;
case BT_DEVICE_PAIRED_IND:
/* confirm pairing procedure */
memcpy(&bt_data->para.pair_ind,
para,sizeof(T_MFW_BT_DEV_PAIR_IND));
/* remote addr, remote name and pair_res with event BT_DEVICE_PAIRED_IND to MMI */
break;
case BT_CALL_MONITORING_STATUS:
/* indicats call monitoring events by dun/fax */
memcpy(&bt_data->para.call_status,
para,sizeof(T_MFW_BT_CALL_STATUS_DUN_FAX));
/* device and call status with event BT_CALL_MONITORING_STATUS to MMI */
break;
case BT_OPP_SERV_PUT_IND:
/* indicats put request by opp server */
memcpy(&bt_data->para.opp_s_obj,
para,sizeof(T_MFW_BT_OPP_PUT_IND));
/* device,subtype,client_addr,object with event BT_OPP_SERV_PUT_IND to MMI */
break;
case BT_OPP_SERV_PUT_CNF:
/* indicats put request by opp server (server side) */
memcpy(&bt_data->para.opp_s_obj_cnf,
para,sizeof(T_MFW_BT_OPP_PUT_CNF));
/* device,subtype,client_addr,object,error with event BT_OPP_SERV_PUT_CNF to MMI */
break;
case BT_OPP_OBJECT_PUSH_CNF:
/* indicats push object to opp server (client side)*/
memcpy(&bt_data->para.opp_cl_push_ob_cnf,
para,sizeof(T_MFW_BT_OPP_PUSH_CNF));
/* device,subtype,server_addr,object,error with event BT_OPP_OBJECT_PUSH_CNF to MMI */
break;
case BT_OPP_OBJECT_PULL_CNF:
/* indicats push object from opp server (client side)*/
memcpy(&bt_data->para.opp_cl_pull_ob_cnf,
para,sizeof(T_MFW_BT_OPP_PULL_CNF));
/* device,subtype,server_addr,object,error with event BT_OPP_OBJECT_PULL_CNF to MMI */
break;
}
/*#ifdef PCA_6350*/
switch (event)
{
case BT_PCA_GW_STATUS_CFM:
memcpy(&bt_data->para.pca_gw_status, para, sizeof(T_MFW_BT_PCA_GW_STATUS_CFM));
break;
case BT_PCA_GW_LINK_MONITORING:
memcpy(&bt_data->para.pca_link_mon, para, sizeof(T_MFW_BT_PCA_GW_LINK_MONITORING));
break;
case BT_PCA_GW_CALL_MONITORING:
memcpy(&bt_data->para.pca_call_mon, para, sizeof(T_MFW_BT_PCA_GW_CALL_MONITORING));
break;
case BT_PCA_GW_HANGUP_CFM:
memcpy(&bt_data->para.pca_hangup, para, sizeof(T_MFW_BT_PCA_GW_HANGUP_CFM));
break;
}
/*#endif*/ /* PCA_6350 */
if (bt_data->handler)
{
current_mfw_elem = cur_elem;
/* to call back function in mmi */
if ((*(bt_data->handler))(bt_data->event,
(void *) &bt_data->para))
return TRUE;
}
}
}/* next element for look for type of handle */
cur_elem = cur_elem->next;
}
return FALSE;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445) MODULE : MFW_BT |
| STATE : code ROUTINE : bt_init_profile_hsg_cl|
+--------------------------------------------------------------------+
PURPOSE : configure and initialize a BT headset profile in client mode
*/
T_MFW_BT_RESULT_BT bt_init_profile_hsg_cl (T_MFW_BT_SERVICE_TYPE service,
T_MFW_BT_HSG_CLIENT_CONFIG mfw_config)
{
T_BTI_HSG_CLIENT_CONF bt_config;
TRACE_FUNCTION ("bt_init_profile_hsg_cl()");
memset(&bt_config,0,sizeof(bt_config));
if(service EQ MFW_BT_HEADSET)
{
/* type of connection:
*** MFW_BT_AUTO_OUTG_DEF_CONN_OFF or
MFW_BT_AUTO_OUTG_DEF_CONN_ON
(connection with default pre-defined headset as soon as it receives a
RING command from GSM)
***
*/
switch(mfw_config.config_mode)
{
case MFW_BT_AUTO_OUTG_DEF_CONN_OFF:
bt_config.config_mode = BTI_AUTO_OUTG_DEF_CONN_OFF;
break;
case MFW_BT_AUTO_OUTG_DEF_CONN_ON:
bt_config.config_mode = BTI_AUTO_OUTG_DEF_CONN_ON;
break;
}
bt_config.security = mfw_config.security;
switch(btibtp_init_profile_hsg_req_cl((T_BTI_DEVICE_TYPE)service,bt_config))
{/* BTP_INIT_PROFILE_REQ to BT */
case BTP_OK:
return MFW_BT_EXECUTE;
case BTP_INVALID_PARAMETER:
return MFW_BT_INVALID_PARA;
case BTP_NOT_SUPP:
return MFW_BT_NO_SUPP;
case BTP_NOT_READY:
return MFW_BT_NOT_READY;
case BTP_INT_ERR:
return MFW_BT_INT_ERR;
case BTP_MEMORY_ERR:
return MFW_BT_MEM_ERR;
case BTP_NOK:
return MFW_BT_NOK;
}
}
return MFW_BT_FAIL;
}
/*
+----------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445) MODULE : MFW_BT |
| STATE : code ROUTINE : bt_init_profile_hsg_serv|
+----------------------------------------------------------------------+
PURPOSE : configure and initialize a BT headset profile in server mode
*/
T_MFW_BT_RESULT_BT bt_init_profile_hsg_serv (T_MFW_BT_SERVICE_TYPE service,
T_MFW_BT_HSG_SERVER_CONFIG mfw_config)
{
T_BTI_HSG_SERVER_CONF bt_config;
TRACE_FUNCTION ("bt_init_profile_hsg_serv()");
memset(&bt_config,0,sizeof(bt_config));
if(service EQ MFW_BT_HEADSET)
{
bt_config.conn_config = mfw_config.serv_con_conf;
/* length scan of connection requests of remote headsets *
/* default value: MFW_BT_CONN_SCAN_TIME_DEFAULT_VALUE */
bt_config.conn_time = mfw_config.conn_time;
/* period between 2 scans of connection of remote headsets */
/* default value: MFW_BT_CONN_SCAN_BREAK_DEFAULT_VALUE */
bt_config.conn_break= mfw_config.conn_break;
/* number of phone number in phone list */
bt_config.nb_phone = mfw_config.nb_phone;
/* phone number list of remote headset */
memcpy(bt_config.phon_list,mfw_config.mfw_phone_list,sizeof(mfw_config.mfw_phone_list));
/* associatd key list of remote headset */
memcpy(bt_config.key_list,mfw_config.mfw_key_list,sizeof(mfw_config.mfw_key_list));
bt_config.security = mfw_config.security;
switch(btibtp_init_profile_hsg_req_serv((T_BTI_DEVICE_TYPE)service,bt_config))
{/* BTP_INIT_PROFILE_REQ to BT */
case BTP_OK:
return MFW_BT_EXECUTE;
case BTP_INVALID_PARAMETER:
return MFW_BT_INVALID_PARA;
case BTP_NOT_SUPP:
return MFW_BT_NO_SUPP;
case BTP_NOT_READY:
return MFW_BT_NOT_READY;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -