hi all
I'm trying to develop a bluetooth network with one client and several servers, but they communicate with the client based on "notify". each server is connected to a sensor (DHT11).
i am able to connect to one server and get the temp characteristic.
i need a code for one esp32 client connecting to multiple ESP32 server .
I'm using the BLE examples
ble communication client to multiple server
Re: ble communication client to multiple server
There should be callbacks(EVT) that you can refer to in your client code in which you would choose to continue scanning or advertising based on whether the client is connecting to the servers or if the servers are connecting to your client and if you've hit your max number of connections. For example, if the number of connections I have currently on my client is 5 but my max connections is 7, I would continue scanning for additional servers to connect to.
Its one of the callbacks below.
Sorry, I can't remember which callback/evt is called after the connection setup is finished which is where you'd determine to continue scanning or stop.
Its one of the callbacks below.
Sorry, I can't remember which callback/evt is called after the connection setup is finished which is where you'd determine to continue scanning or stop.
Code: Select all
case ESP_GATTC_CONNECT_EVT:{
ESP_LOGI(GATTC_TAG, "ESP_GATTC_CONNECT_EVT conn_id %d, if %d", p_data->connect.conn_id, gattc_if);
gl_profile_tab[PROFILE_A_APP_ID].conn_id = p_data->connect.conn_id;
memcpy(gl_profile_tab[PROFILE_A_APP_ID].remote_bda, p_data->connect.remote_bda, sizeof(esp_bd_addr_t));
ESP_LOGI(GATTC_TAG, "REMOTE BDA:");
esp_log_buffer_hex(GATTC_TAG, gl_profile_tab[PROFILE_A_APP_ID].remote_bda, sizeof(esp_bd_addr_t));
esp_err_t mtu_ret = esp_ble_gattc_send_mtu_req (gattc_if, p_data->connect.conn_id);
if (mtu_ret){
ESP_LOGE(GATTC_TAG, "config MTU error, error code = %x", mtu_ret);
}
break;
}
case ESP_GATTC_OPEN_EVT:
if (param->open.status != ESP_GATT_OK){
ESP_LOGE(GATTC_TAG, "open failed, status %d", p_data->open.status);
break;
}
ESP_LOGI(GATTC_TAG, "open success");
break;
Re: ble communication client to multiple server
thank for your reply ,but to be honest i did not understand the code you mentioned , i am using the basic codes already included in arduino examples written by Neil Kolban and updated by @chegewara
Re: ble communication client to multiple server
you would determine whether to continue scanning and connecting in your onConnect. It seems like in the example you would do that by setting/clearing flags they have in place instead of directly calling the scanning function from the onConnect function.
The onConnect callback should be called every time a new connection is made.
also, if you have multiple connections, it's important to keep track of them so you know who you're receiving what from.
Also, normally when it comes to ble, the max number of connections you can have is 7.
The onConnect callback should be called every time a new connection is made.
also, if you have multiple connections, it's important to keep track of them so you know who you're receiving what from.
Also, normally when it comes to ble, the max number of connections you can have is 7.
Code: Select all
class MyClientCallback : public BLEClientCallbacks {
void onConnect(BLEClient* pclient) {
}
void onDisconnect(BLEClient* pclient) {
connected = false;
Serial.println("onDisconnect");
}
};
Who is online
Users browsing this forum: Baidu [Spider] and 53 guests