Beispiel #1
0
/*host creat connection*/
tBleStatus ble_host_connect(tBDAddr bdaddr)
{

    tBleStatus ret;
    if(set_connectable == TRUE) {
        printf("Client Create Connection\n");
        BSP_LED_On(LED0);
        /*
          Scan_Interval, Scan_Window, Peer_Address_Type, Peer_Address, Own_Address_Type, Conn_Interval_Min,
          Conn_Interval_Max, Conn_Latency, Supervision_Timeout, Conn_Len_Min, Conn_Len_Max
          */
        ret = aci_gap_create_connection(SCAN_P, SCAN_L, PUBLIC_ADDR, bdaddr, PUBLIC_ADDR, CONN_P1, CONN_P2, 0,
                                        SUPERV_TIMEOUT, CONN_L1 , CONN_L2);
        if (ret != 0) {
            printf("Error while starting connection.\n");
            Clock_Wait(100);
        }
        printf("connection init\n\r");

    }
    set_connectable = FALSE;
    /*discover device*/
    ble_host_discover_char();
    
    return ret;
}
/**
 * @brief  Make the device connectable
 * @param  None 
 * @retval None
 */
void Make_Connection(void)
{  
  tBleStatus ret;
  
  
  if(BLE_Role == CLIENT) {
    
    PRINTF("Client Create Connection\n");
    tBDAddr bdaddr = {0xaa, 0x00, 0x00, 0xE1, 0x80, 0x02};
    //tBDAddr bdaddr = {0xfd, 0x00, 0x25, 0xec, 0x02, 0x04}; //BT address for HRM test
    
    BSP_LED_On(LED2); //To indicate the start of the connection and discovery phase
    
    // Intial value for connection interval 9
    /*
    Scan_Interval, Scan_Window, Peer_Address_Type, Peer_Address, Own_Address_Type, Conn_Interval_Min, 
    Conn_Interval_Max, Conn_Latency, Supervision_Timeout, Conn_Len_Min, Conn_Len_Max    
    */
    ret = aci_gap_create_connection(SCAN_P, SCAN_L, PUBLIC_ADDR, bdaddr, PUBLIC_ADDR, CONN_P1, CONN_P2, 0, 
      SUPERV_TIMEOUT, CONN_L1 , CONN_L2);

    //ret = aci_gap_create_connection(0x4000, 0x4000, PUBLIC_ADDR, bdaddr, PUBLIC_ADDR, 40, 40, 0, 600, 2000 , 2000);
    
    if (ret != 0){
      PRINTF("Error while starting connection.\n");
      Clock_Wait(100);
    }
    
  } else  {
    
    const char local_name[] = {AD_TYPE_COMPLETE_LOCAL_NAME,'B','l','u','e','N','R','G','_','C','h','a','t'};
    
    /* disable scan response */
    hci_le_set_scan_resp_data(0,NULL);
    
    PRINTF("General Discoverable Mode ");
    /*
    Advertising_Event_Type, Adv_Interval_Min, Adv_Interval_Max, Address_Type, Adv_Filter_Policy,
    Local_Name_Length, Local_Name, Service_Uuid_Length, Service_Uuid_List, Slave_Conn_Interval_Min,
    Slave_Conn_Interval_Max
    */
    ret = aci_gap_set_discoverable(ADV_IND, 0, 0, PUBLIC_ADDR, NO_WHITE_LIST_USE,
                                   13, local_name, 0, NULL, 0, 0);
    PRINTF("%d\n",ret);
  }
}
void ble_host_connect(tBDAddr bdaddr)
{
    if(host_connect_init_flag == FALSE) {
        tBleStatus ret;
        printf("Client Create Connection\n");
        BSP_LED_On(LED0);
        /*
          scan_interval, scan_window, peer_address_type, peer_address, own_address_type, conn_interval_min,
          conn_interval_max, conn_latency, supervision_timeout, conn_len_min, conn_len_max
          */
        ret = aci_gap_create_connection(SCAN_P, SCAN_L, RANDOM_ADDR, bdaddr, PUBLIC_ADDR, CONN_P1, CONN_P2, 0,
                                        SUPERV_TIMEOUT, CONN_L1 , CONN_L2);
        if (ret != 0) {
            printf("Error while starting connection.\n");
            Clock_Wait(100);
        } else {
            host_connect_init_flag = TRUE;
        }
        printf("connection init\n\r");
    }
}