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