From f87797ece2bdcf108a1d9fb9b588ce716b41e4d6 Mon Sep 17 00:00:00 2001 From: DAsamhan <23522019@std.stei.itb.ac.id> Date: Sat, 22 Jun 2024 11:36:40 +0700 Subject: [PATCH] pass compile skeleton code --- debug-app/CMakeLists.txt | 2 +- debug-app/drivers/CMakeLists.txt | 5 ++++ .../ble-scanner/CMakeLists.txt | 0 .../ble-scanner/src/ble-scanner.cpp | 29 ++++++++++++++----- debug-app/drivers/ir-driver/CMakeLists.txt | 1 + debug-app/drivers/ir-driver/src/ir-driver.cpp | 18 ++++++++++++ debug-app/drivers/led-driver/CMakeLists.txt | 1 + .../drivers/led-driver/src/led-driver.cpp | 17 +++++++++++ debug-app/drivers/servo-driver/CMakeLists.txt | 1 + .../drivers/servo-driver/src/servo-driver.cpp | 17 +++++++++++ .../wifi-controller/CMakeLists.txt | 0 .../wifi-controller/src/wifi-controller.cpp | 0 debug-app/include/ble-scanner.h | 11 +++++++ debug-app/include/debug-handler.h | 2 ++ debug-app/include/device-parser.h | 2 ++ debug-app/include/driver-hook.h | 9 ++++++ debug-app/include/ir-driver.h | 24 +++++++++++++++ debug-app/include/led-driver.h | 23 +++++++++++++++ debug-app/include/main-handler.h | 2 ++ debug-app/include/servo-driver.h | 23 +++++++++++++++ debug-app/include/wifi-controller.h | 2 ++ debug-app/module/CMakeLists.txt | 4 +-- .../module/driver-hook/src/driver-hook.cpp | 13 +++++++++ 23 files changed, 194 insertions(+), 12 deletions(-) create mode 100644 debug-app/drivers/CMakeLists.txt rename debug-app/{module => drivers}/ble-scanner/CMakeLists.txt (100%) rename debug-app/{module => drivers}/ble-scanner/src/ble-scanner.cpp (67%) create mode 100644 debug-app/drivers/ir-driver/CMakeLists.txt create mode 100644 debug-app/drivers/ir-driver/src/ir-driver.cpp create mode 100644 debug-app/drivers/led-driver/CMakeLists.txt create mode 100644 debug-app/drivers/led-driver/src/led-driver.cpp create mode 100644 debug-app/drivers/servo-driver/CMakeLists.txt create mode 100644 debug-app/drivers/servo-driver/src/servo-driver.cpp rename debug-app/{module => drivers}/wifi-controller/CMakeLists.txt (100%) rename debug-app/{module => drivers}/wifi-controller/src/wifi-controller.cpp (100%) create mode 100644 debug-app/include/ir-driver.h create mode 100644 debug-app/include/led-driver.h create mode 100644 debug-app/include/servo-driver.h diff --git a/debug-app/CMakeLists.txt b/debug-app/CMakeLists.txt index 5e39eb9..6c6e18d 100644 --- a/debug-app/CMakeLists.txt +++ b/debug-app/CMakeLists.txt @@ -1,4 +1,4 @@ zephyr_include_directories(include) add_subdirectory(module) -# add_subdirectory(drivers) \ No newline at end of file +add_subdirectory(drivers) \ No newline at end of file diff --git a/debug-app/drivers/CMakeLists.txt b/debug-app/drivers/CMakeLists.txt new file mode 100644 index 0000000..6f943b6 --- /dev/null +++ b/debug-app/drivers/CMakeLists.txt @@ -0,0 +1,5 @@ +add_subdirectory(ble-scanner) +add_subdirectory(wifi-controller) +add_subdirectory(ir-driver) +add_subdirectory(servo-driver) +add_subdirectory(led-driver) \ No newline at end of file diff --git a/debug-app/module/ble-scanner/CMakeLists.txt b/debug-app/drivers/ble-scanner/CMakeLists.txt similarity index 100% rename from debug-app/module/ble-scanner/CMakeLists.txt rename to debug-app/drivers/ble-scanner/CMakeLists.txt diff --git a/debug-app/module/ble-scanner/src/ble-scanner.cpp b/debug-app/drivers/ble-scanner/src/ble-scanner.cpp similarity index 67% rename from debug-app/module/ble-scanner/src/ble-scanner.cpp rename to debug-app/drivers/ble-scanner/src/ble-scanner.cpp index cfd98b5..7c15760 100644 --- a/debug-app/module/ble-scanner/src/ble-scanner.cpp +++ b/debug-app/drivers/ble-scanner/src/ble-scanner.cpp @@ -32,20 +32,33 @@ BleScanner::BleScanner(){ // zbus_chan_add_obs(&driverResponseChannel, &debugDriverListener, K_NO_WAIT); - //TODO: remove when bus communication has fully established - bt_le_scan_start(&scan_param, BleDevicefound); - + // //TODO: remove when bus communication has fully established + // bt_le_scan_start(&scan_param, BleDevicefound); +} +void BleScanner::SetScan(bool enable){ + if(enable){ + bt_le_scan_start(&scan_param, BleDevicefound); + } + else{ + bt_le_scan_stop(); + } } 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)); - 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)); + 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)); } // void DriverRequestListener(const struct zbus_channel *chan){ diff --git a/debug-app/drivers/ir-driver/CMakeLists.txt b/debug-app/drivers/ir-driver/CMakeLists.txt new file mode 100644 index 0000000..59e33a4 --- /dev/null +++ b/debug-app/drivers/ir-driver/CMakeLists.txt @@ -0,0 +1 @@ +zephyr_library_sources(src/ir-driver.cpp) \ No newline at end of file diff --git a/debug-app/drivers/ir-driver/src/ir-driver.cpp b/debug-app/drivers/ir-driver/src/ir-driver.cpp new file mode 100644 index 0000000..db8cefb --- /dev/null +++ b/debug-app/drivers/ir-driver/src/ir-driver.cpp @@ -0,0 +1,18 @@ +#include "ir-driver.h" + +IrDriver::IrDriver(){ + +} + +IrDriver::~IrDriver(){ + +} + +bool IrDriver::GetState(){ + + return true; +} + +void IrDriver::RegisterInterrupt(void (*callback)(uint8_t)){ + registeredCallback = callback; +} \ No newline at end of file diff --git a/debug-app/drivers/led-driver/CMakeLists.txt b/debug-app/drivers/led-driver/CMakeLists.txt new file mode 100644 index 0000000..dc876e4 --- /dev/null +++ b/debug-app/drivers/led-driver/CMakeLists.txt @@ -0,0 +1 @@ +zephyr_library_sources(src/led-driver.cpp) \ No newline at end of file diff --git a/debug-app/drivers/led-driver/src/led-driver.cpp b/debug-app/drivers/led-driver/src/led-driver.cpp new file mode 100644 index 0000000..3e6b3ba --- /dev/null +++ b/debug-app/drivers/led-driver/src/led-driver.cpp @@ -0,0 +1,17 @@ +#include "led-driver.h" + +LedDriver::LedDriver(){ + +} + +LedDriver::~LedDriver(){ + +} + +void LedDriver::SetState(bool enable){ + +} + +bool LedDriver::GetState(){ + return true; +} \ No newline at end of file diff --git a/debug-app/drivers/servo-driver/CMakeLists.txt b/debug-app/drivers/servo-driver/CMakeLists.txt new file mode 100644 index 0000000..0b3a778 --- /dev/null +++ b/debug-app/drivers/servo-driver/CMakeLists.txt @@ -0,0 +1 @@ +zephyr_library_sources(src/servo-driver.cpp) \ No newline at end of file diff --git a/debug-app/drivers/servo-driver/src/servo-driver.cpp b/debug-app/drivers/servo-driver/src/servo-driver.cpp new file mode 100644 index 0000000..3ea914d --- /dev/null +++ b/debug-app/drivers/servo-driver/src/servo-driver.cpp @@ -0,0 +1,17 @@ +#include "servo-driver.h" + +ServoDriver::ServoDriver(){ + +} + +ServoDriver::~ServoDriver(){ + +} + +void ServoDriver::SetPwm(uint8_t pwm){ + +} + +uint8_t ServoDriver::GetPwm(){ + return 0; +} \ No newline at end of file diff --git a/debug-app/module/wifi-controller/CMakeLists.txt b/debug-app/drivers/wifi-controller/CMakeLists.txt similarity index 100% rename from debug-app/module/wifi-controller/CMakeLists.txt rename to debug-app/drivers/wifi-controller/CMakeLists.txt diff --git a/debug-app/module/wifi-controller/src/wifi-controller.cpp b/debug-app/drivers/wifi-controller/src/wifi-controller.cpp similarity index 100% rename from debug-app/module/wifi-controller/src/wifi-controller.cpp rename to debug-app/drivers/wifi-controller/src/wifi-controller.cpp diff --git a/debug-app/include/ble-scanner.h b/debug-app/include/ble-scanner.h index 24742c1..85b7bcc 100644 --- a/debug-app/include/ble-scanner.h +++ b/debug-app/include/ble-scanner.h @@ -1,6 +1,10 @@ +#pragma once + #include <zephyr/kernel.h> #include <zephyr/bluetooth/bluetooth.h> #include <zephyr/bluetooth/hci.h> +#include <string> +#include <vector> class BleScanner { public: @@ -16,7 +20,14 @@ public: static void DriverRequestListener(const struct zbus_channel *chan); + void RegisterCallback(void (*callback)(std::string, std::vector<uint8_t>, int8_t)); + + void SetScan(bool enable); + private: + + void (*registeredCallback)(std::string, std::vector<uint8_t>, int8_t) = NULL; + static void BleDevicefound(const bt_addr_le_t *addr, int8_t rssi, uint8_t type, struct net_buf_simple *ad); diff --git a/debug-app/include/debug-handler.h b/debug-app/include/debug-handler.h index 4a7b440..942efe8 100644 --- a/debug-app/include/debug-handler.h +++ b/debug-app/include/debug-handler.h @@ -1,3 +1,5 @@ +#pragma once + #include <zephyr/kernel.h> #include <vector> diff --git a/debug-app/include/device-parser.h b/debug-app/include/device-parser.h index eefa340..8544add 100644 --- a/debug-app/include/device-parser.h +++ b/debug-app/include/device-parser.h @@ -1,3 +1,5 @@ +#pragma once + #include <zephyr/kernel.h> #include "utilities.h" diff --git a/debug-app/include/driver-hook.h b/debug-app/include/driver-hook.h index 0ca8287..cfb4362 100644 --- a/debug-app/include/driver-hook.h +++ b/debug-app/include/driver-hook.h @@ -2,6 +2,11 @@ #include <zephyr/kernel.h> +#include "ble-scanner.h" +#include "led-driver.h" +#include "servo-driver.h" +#include "ir-driver.h" + class DriverHook { public: /** Constructor. @@ -22,4 +27,8 @@ public: static void DriverRequestListener(const struct zbus_channel *chan); private: + BleScanner *bleScanner; + LedDriver *ledDriver; + ServoDriver *servoDriver; + IrDriver *irDriver; }; \ No newline at end of file diff --git a/debug-app/include/ir-driver.h b/debug-app/include/ir-driver.h new file mode 100644 index 0000000..9b036d0 --- /dev/null +++ b/debug-app/include/ir-driver.h @@ -0,0 +1,24 @@ +#pragma once + +#include <zephyr/kernel.h> +#include <string> + +class IrDriver { +public: + /** Constructor. + * + **/ + IrDriver(); + + /** Destructor. + * + **/ + ~IrDriver(); + + bool GetState(); + + void RegisterInterrupt(void (*callback)(uint8_t)); + +private: + void (*registeredCallback)(uint8_t) = NULL; +}; \ No newline at end of file diff --git a/debug-app/include/led-driver.h b/debug-app/include/led-driver.h new file mode 100644 index 0000000..a57cd47 --- /dev/null +++ b/debug-app/include/led-driver.h @@ -0,0 +1,23 @@ +#pragma once + +#include <zephyr/kernel.h> +#include <string> + +class LedDriver { +public: + /** Constructor. + * + **/ + LedDriver(); + + /** Destructor. + * + **/ + ~LedDriver(); + + void SetState(bool enable); + + bool GetState(); + +private: +}; \ No newline at end of file diff --git a/debug-app/include/main-handler.h b/debug-app/include/main-handler.h index f47cb19..93574b0 100644 --- a/debug-app/include/main-handler.h +++ b/debug-app/include/main-handler.h @@ -1,3 +1,5 @@ +#pragma once + #include <zephyr/kernel.h> #include "utilities.h" diff --git a/debug-app/include/servo-driver.h b/debug-app/include/servo-driver.h new file mode 100644 index 0000000..ef7ca12 --- /dev/null +++ b/debug-app/include/servo-driver.h @@ -0,0 +1,23 @@ +#pragma once + +#include <zephyr/kernel.h> +#include <string> + +class ServoDriver { +public: + /** Constructor. + * + **/ + ServoDriver(); + + /** Destructor. + * + **/ + ~ServoDriver(); + + void SetPwm(uint8_t pwm); + + uint8_t GetPwm(); + +private: +}; \ No newline at end of file diff --git a/debug-app/include/wifi-controller.h b/debug-app/include/wifi-controller.h index ebcc467..977ef61 100644 --- a/debug-app/include/wifi-controller.h +++ b/debug-app/include/wifi-controller.h @@ -1,3 +1,5 @@ +#pragma once + #include <zephyr/kernel.h> #include <zephyr/net/wifi.h> #include <zephyr/net/wifi_mgmt.h> diff --git a/debug-app/module/CMakeLists.txt b/debug-app/module/CMakeLists.txt index f2e9245..379a5da 100644 --- a/debug-app/module/CMakeLists.txt +++ b/debug-app/module/CMakeLists.txt @@ -1,4 +1,2 @@ add_subdirectory(driver-hook) -add_subdirectory(handler) -add_subdirectory(ble-scanner) -add_subdirectory(wifi-controller) \ No newline at end of file +add_subdirectory(handler) \ No newline at end of file diff --git a/debug-app/module/driver-hook/src/driver-hook.cpp b/debug-app/module/driver-hook/src/driver-hook.cpp index d05bb67..118975f 100644 --- a/debug-app/module/driver-hook/src/driver-hook.cpp +++ b/debug-app/module/driver-hook/src/driver-hook.cpp @@ -6,6 +6,10 @@ #include "driver-hook.h" #include "utilities.h" +#include "ble-scanner.h" +#include "led-driver.h" +#include "servo-driver.h" +#include "ir-driver.h" LOG_MODULE_REGISTER(Driver_Hook); ZBUS_CHAN_DECLARE(driverRequestChannel, driverResponseChannel); @@ -16,6 +20,11 @@ ZBUS_LISTENER_DEFINE(driverHookListener, context->DriverRequestListener); DriverHook::DriverHook(){ context = this; + bleScanner = new BleScanner(); + ledDriver = new LedDriver(); + servoDriver = new ServoDriver(); + irDriver = new IrDriver(); + zbus_chan_add_obs(&driverRequestChannel, &driverHookListener, K_NO_WAIT); } @@ -63,6 +72,10 @@ void DriverHook::DriverRequestListener(const struct zbus_channel *chan){ case SENSOR_3: LOG_INF("Sensor %d", msg->number); break; + + case BLUETOOTH: + + break; default: LOG_ERR("Invalid Sensor %d", msg->number); -- GitLab