diff --git a/debug-app/app/src/main.cpp b/debug-app/app/src/main.cpp index 7cf10b0ac03848c00f74f78cbc229050258e32ac..f0eb08a9b80f67e42ff1c697b75754e413350a0e 100644 --- a/debug-app/app/src/main.cpp +++ b/debug-app/app/src/main.cpp @@ -56,7 +56,7 @@ int main() { #if !defined(CONFIG_SOC_POSIX) WifiController wifiController; - BleScanner bleScanner; + // BleScanner bleScanner; #endif DebugHandler debugHanddler; MainHandler mainHandler; diff --git a/debug-app/drivers/ble-scanner/src/ble-scanner.cpp b/debug-app/drivers/ble-scanner/src/ble-scanner.cpp index 532870a2e137e5edfb59111e61106775a335c9b4..0131d0fd8a86ffdc273af2065d67ed9cc51e53ee 100644 --- a/debug-app/drivers/ble-scanner/src/ble-scanner.cpp +++ b/debug-app/drivers/ble-scanner/src/ble-scanner.cpp @@ -8,8 +8,6 @@ #include "ble-scanner.h" LOG_MODULE_REGISTER(BleScanner); -ZBUS_CHAN_DECLARE(driverRequestChannel, bleScanChannel); - static BleScanner *context; static struct bt_le_scan_param scan_param = { @@ -19,8 +17,6 @@ static struct bt_le_scan_param scan_param = { .window = BT_GAP_SCAN_FAST_WINDOW, }; -// ZBUS_LISTENER_DEFINE(bleScanListener, context->DriverRequestListener); - BleScanner::BleScanner(){ context = this; int err = bt_enable(NULL); @@ -30,10 +26,14 @@ BleScanner::BleScanner(){ return; } - // zbus_chan_add_obs(&driverResponseChannel, &debugDriverListener, K_NO_WAIT); + k_work_init(&bleWork, BleInterruptHandler); +} - // //TODO: remove when bus communication has fully established - // bt_le_scan_start(&scan_param, BleDevicefound); +void BleScanner::BleInterruptHandler(struct k_work *item){ + LOG_INF("bt handler"); + if(context->registeredCallback != NULL){ + context->registeredCallback(context->currAddr, context->currData, context->currRssi); + } } void BleScanner::SetScan(bool enable){ @@ -49,33 +49,27 @@ void BleScanner::RegisterCallback(void (*callback)(std::string, std::vector<uint registeredCallback = callback; } +RawBleData_t BleScanner::GetLatestData(){ + RawBleData_t rawData = { + .addrStr = currAddr, + .bleData = currData, + .rssi = currRssi + }; + return rawData; +} + void BleScanner::BleDevicefound(const bt_addr_le_t *addr, int8_t rssi, uint8_t type, struct net_buf_simple *ad){ char addr_str[BT_ADDR_LE_STR_LEN]; bt_addr_le_to_str(addr, addr_str, sizeof(addr_str)); std::string addrStr(addr_str, sizeof(addr_str)); std::vector<uint8_t> dataVec(ad->data, ad->data + ad->len); - if(context->registeredCallback != NULL){ - context->registeredCallback(addrStr, dataVec, rssi); - } - // BleData_t sentMessage = { - // .address = std::string(addr_str, sizeof(addr_str)), - // .data = std::vector<uint8_t>(ad->data, ad->data + ad->len) - // }; - // zbus_chan_pub(&bleScanChannel, &sentMessage, K_MSEC(200)); -} + context->currAddr = addrStr; + context->currData = dataVec; + context->currRssi = rssi; + + LOG_INF("bt interrupt"); -// void DriverRequestListener(const struct zbus_channel *chan){ -// const DriverMessage_t *msg; -// if (&driverRequestChannel == chan) { -// msg = (DriverMessage_t *)zbus_chan_const_msg(chan); // Direct message access -// if(msg->number == BLUETOOTH){ -// if(msg->value[0]){ -// bt_le_scan_start(&scan_param, bleDevicefound); -// } -// } -// } -// else{ -// return; -// } -// } + int err = k_work_submit(&context->bleWork); + LOG_INF("Work q error %d", err); +} \ No newline at end of file