Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

about SPP mode hangup problem #11

Open
akioolin opened this issue Jul 28, 2020 · 0 comments
Open

about SPP mode hangup problem #11

akioolin opened this issue Jul 28, 2020 · 0 comments

Comments

@akioolin
Copy link

akioolin commented Jul 28, 2020

Dear Sir:

the following code is what I used for send out data which captured from ADC via BT SPP. what I met problem is the data no longer send out after two times connect / disconnect from android BT serial terminal app. after put some debug code in loop(), I found after two times connect / disconnect, the data did'nt send out.
where is my missing point? if this a potential bug for real application or product prototyping?

Thanks in advance.

=============================================================
#include "BluetoothSerial.h"
#include "esp_bt_main.h"
#include "esp_bt_device.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run make menuconfig to and enable it
#endif

#define LED_BUILTIN 22
#define DIST_SENSOR_PIN 33

#define uS_TO_S_FACTOR 1000000
#define DELAY_MS 10

typedef enum {
BT_UNKOWN = -1,
BT_DISCONNTECT = 0,
BT_CONNECTED = 1,
};

char sensor_name[16] = {0};
int bt_event_type = BT_UNKOWN;

BluetoothSerial SerialBT;

void callback(esp_spp_cb_event_t event, esp_spp_cb_param_t *param)
{
if (event == ESP_SPP_SRV_OPEN_EVT) {
Serial.println("Client Connected");
bt_event_type = BT_CONNECTED;
}

if (event == ESP_SPP_CLOSE_EVT ) {
Serial.println("Client disconnected");
bt_event_type = BT_DISCONNTECT;
}
}

bool initBluetooth()
{
if (!btStart()) {
Serial.println("Failed to initialize controller");
return false;
}

if (esp_bluedroid_init() != ESP_OK) {
Serial.println("Failed to initialize bluedroid");
return false;
}

if (esp_bluedroid_enable() != ESP_OK) {
Serial.println("Failed to enable bluedroid");
return false;
}

return true;
}

void printDeviceAddress()
{
const uint8_t* point = esp_bt_dev_get_address();

memset(sensor_name, 0x00, 16);
sprintf(sensor_name, "DIST_%02X%02X", point[4], point[5]);

for (int i = 0; i < 6; i++) {
char str[3];
sprintf(str, "%02X", (int)point[i]);
Serial.print(str);
if (i < 5) {
Serial.print(":");
}
}
Serial.println("");
Serial.println("");
}

// the setup function runs once when you press reset or power the board
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(DIST_SENSOR_PIN, INPUT);

Serial.begin(115200);

delay(100);
Serial.println("");

analogSetCycles(8);
analogSetSamples(2);
adcStart(DIST_SENSOR_PIN);
digitalWrite(LED_BUILTIN, LOW);

Serial.println("Distance Sensor V2.0");
Serial.println("");

initBluetooth();
printDeviceAddress();

SerialBT.begin(sensor_name);
SerialBT.register_callback(callback);
Serial.println(sensor_name);
bt_event_type = BT_DISCONNTECT;
}

// the loop function runs over and over again forever
void loop() {
int dist_val = 0;
unsigned long start_time = 0;
unsigned long stop_time = 0;
int diff_time = 0;

//start_time = millis();
digitalWrite(LED_BUILTIN, HIGH);

dist_val = analogRead(DIST_SENSOR_PIN);

diff_time = SerialBT.available();

if (bt_event_type == BT_CONNECTED) {
SerialBT.println(String(dist_val));
//} else if(bt_event_type == BT_DISCONNTECT) {
// Serial.println(String(dist_val));
//} else {
// Serial.println("no data");
}

Serial.println(String(dist_val) + " " + String(diff_time));

//stop_time = millis();
//diff_time = DELAY_MS - (stop_time - start_time);
//if (diff_time > 0) delay(diff_time);
delay(DELAY_MS);

digitalWrite(LED_BUILTIN, LOW);
delay(DELAY_MS);
}

BR, Akio

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant