diff --git a/debug-app/drivers/ble-scanner/src/ble-scanner.cpp b/debug-app/drivers/ble-scanner/src/ble-scanner.cpp index 7c1576036f2db52a35b5924ecd7472e54d9f7d26..532870a2e137e5edfb59111e61106775a335c9b4 100644 --- a/debug-app/drivers/ble-scanner/src/ble-scanner.cpp +++ b/debug-app/drivers/ble-scanner/src/ble-scanner.cpp @@ -45,6 +45,10 @@ void BleScanner::SetScan(bool enable){ } } +void BleScanner::RegisterCallback(void (*callback)(std::string, std::vector<uint8_t>, int8_t)){ + registeredCallback = callback; +} + 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)); diff --git a/debug-app/drivers/ir-driver/src/ir-driver.cpp b/debug-app/drivers/ir-driver/src/ir-driver.cpp index 97104aee3f78acefbd91d47e1e1a5cf88c7de9cf..6a4dd0094b316848c9533a89f737b0ae0c8646b9 100644 --- a/debug-app/drivers/ir-driver/src/ir-driver.cpp +++ b/debug-app/drivers/ir-driver/src/ir-driver.cpp @@ -11,7 +11,7 @@ static IrDriver *context; IrDriver::IrDriver(){ context = this; int err = gpio_pin_configure_dt(&irSensorNode, GPIO_INPUT); - gpio_pin_interrupt_configure_dt(&irSensorNode, GPIO_INT_EDGE_BOTH); + gpio_pin_interrupt_configure_dt(&irSensorNode, GPIO_INT_EDGE_RISING); gpio_init_callback(&irSensorCb, InterruptCallback, BIT(irSensorNode.pin)); gpio_add_callback(irSensorNode.port, &irSensorCb); diff --git a/debug-app/module/driver-hook/src/driver-hook.cpp b/debug-app/module/driver-hook/src/driver-hook.cpp index 8704d5fd02c94d7ea7ab3ebcc6bdba3bf47483e8..18dd26a7d4768c49cc3b266d3a4b160b8479ce92 100644 --- a/debug-app/module/driver-hook/src/driver-hook.cpp +++ b/debug-app/module/driver-hook/src/driver-hook.cpp @@ -24,6 +24,8 @@ DriverHook::DriverHook(){ ledDriver = new LedDriver(); servoDriver = new ServoDriver(); irDriver = new IrDriver(); + irDriver->RegisterInterrupt(IrSensorCallback); + bleScanner->RegisterCallback(BleDataCallback); zbus_chan_add_obs(&driverRequestChannel, &driverHookListener, K_NO_WAIT); } @@ -32,6 +34,23 @@ DriverHook::~DriverHook(){ } +void DriverHook::IrSensorCallback(uint8_t data){ + LOG_INF("Iterrupt triggeredd. pin %d", data); + std::vector<uint8_t> sensorData; + sensorData.push_back(data); + + DriverMessage_t sentMessage = { + .number = IR_DRIVER, + .type = REQUEST_SET, + .value = sensorData + }; + + zbus_chan_pub(&driverResponseChannel, &sentMessage, K_MSEC(200)); +} + +void DriverHook::BleDataCallback(std::string addr, std::vector<uint8_t> data, int8_t rssi){ + LOG_HEXDUMP_INF(data.data(), data.size(), "BLE data:"); +} void DriverHook::Init(){ @@ -93,8 +112,6 @@ void DriverHook::DriverRequestListener(const struct zbus_channel *chan){ break; } - LOG_INF("Sensor data %d", msg->value[0]); - int status = zbus_chan_pub(&driverResponseChannel, &sentMessage, K_MSEC(200)); LOG_INF("Status pub %d", status); } \ No newline at end of file