From 761fcdd19d71cd270c89bc716fc0072deb068c78 Mon Sep 17 00:00:00 2001 From: DAsamhan <23522019@std.stei.itb.ac.id> Date: Wed, 19 Jun 2024 23:36:08 +0700 Subject: [PATCH] stash online --- debug-app/app/prj.conf | 3 + debug-app/include/main-handler.h | 7 +++ debug-app/include/utilities.h | 3 +- .../module/driver-hook/src/driver-hook.cpp | 4 +- .../device-parser/src/device-parser.cpp | 1 + .../handler/main-handler/src/main-handler.cpp | 56 +++++++++++-------- 6 files changed, 50 insertions(+), 24 deletions(-) diff --git a/debug-app/app/prj.conf b/debug-app/app/prj.conf index 52583b6..589d0ce 100644 --- a/debug-app/app/prj.conf +++ b/debug-app/app/prj.conf @@ -63,3 +63,6 @@ CONFIG_NET_L2_ETHERNET=y # Log CONFIG_LOG=y +CONFIG_LOG_PROCESS_THREAD=y +CONFIG_LOG_BUFFER_SIZE=2048 +CONFIG_LOG_MODE_DEFERRED=y \ No newline at end of file diff --git a/debug-app/include/main-handler.h b/debug-app/include/main-handler.h index 1c4bc03..f47cb19 100644 --- a/debug-app/include/main-handler.h +++ b/debug-app/include/main-handler.h @@ -1,6 +1,13 @@ #include <zephyr/kernel.h> #include "utilities.h" +typedef enum DeviceState{ + STANDBY, + SCANNING, + USER_1, + USER_2 +} DeviceState_e; + class MainHandler { public: /** Constructor. diff --git a/debug-app/include/utilities.h b/debug-app/include/utilities.h index 9c34753..9fcaaac 100644 --- a/debug-app/include/utilities.h +++ b/debug-app/include/utilities.h @@ -8,7 +8,8 @@ typedef enum DriverNumb{ SENSOR_2, SENSOR_3, BLUETOOTH, - ACTUATOR_1, + WINDOW, + LAMP } DriverNumb_e; typedef enum StateFlag{ diff --git a/debug-app/module/driver-hook/src/driver-hook.cpp b/debug-app/module/driver-hook/src/driver-hook.cpp index 2fe05b4..d05bb67 100644 --- a/debug-app/module/driver-hook/src/driver-hook.cpp +++ b/debug-app/module/driver-hook/src/driver-hook.cpp @@ -47,7 +47,7 @@ void DriverHook::DriverRequestListener(const struct zbus_channel *chan){ DriverMessage_t sentMessage = { .number = msg->number, - .value = data + .value = msg->value }; switch (msg->number) @@ -69,6 +69,8 @@ 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 diff --git a/debug-app/module/handler/device-parser/src/device-parser.cpp b/debug-app/module/handler/device-parser/src/device-parser.cpp index 1a13531..11145e8 100644 --- a/debug-app/module/handler/device-parser/src/device-parser.cpp +++ b/debug-app/module/handler/device-parser/src/device-parser.cpp @@ -22,6 +22,7 @@ void DeviceParser::BleScanListener(const struct zbus_channel *chan){ if(context->BleDeviceParser(msg, &parsedData)){ LOG_INF("Device %s has data %d", msg->address.c_str(), parsedData.tempSensor); } + LOG_HEXDUMP_INF(msg->data.data(), msg->data.size(), "data raw"); } else{ return; diff --git a/debug-app/module/handler/main-handler/src/main-handler.cpp b/debug-app/module/handler/main-handler/src/main-handler.cpp index 9032059..21cdaf1 100644 --- a/debug-app/module/handler/main-handler/src/main-handler.cpp +++ b/debug-app/module/handler/main-handler/src/main-handler.cpp @@ -40,7 +40,7 @@ MainHandler::MainHandler(){ k_sem_init(&responseWait, 0, 1); // zbus_chan_add_obs(&driverResponseChannel, &sensorSubs, K_MSEC(200)); - // zbus_chan_add_obs(&driverResponseChannel, &driverListener, K_NO_WAIT); + zbus_chan_add_obs(&driverResponseChannel, &driverListener, K_NO_WAIT); } void MainHandler::Init(){ @@ -54,6 +54,7 @@ int MainHandler::Deinit(){ void MainHandler::MainThread(MainHandler *context){ // const struct zbus_channel *chan; uint8_t currentState = 1; + uint8_t stateCounter = 0; // while (!zbus_sub_wait(&stateSubs, &chan, K_MSEC(200))) { // StateMessage_t state; @@ -77,26 +78,44 @@ void MainHandler::MainThread(MainHandler *context){ switch (currentState) { - case 1:{ - LOG_INF("entering state 1. get data from sensor 1"); + case STANDBY:{ + LOG_INF("entering state 1"); DriverMessage_t configVector, responseVector; configVector.number = SENSOR_1; - configVector.value.push_back(SENSOR_1); + configVector.value.push_back(stateCounter); if(context->DriverRequest(&configVector, &responseVector, K_MSEC(200))){ - LOG_INF("get sensor data %d", responseVector.number); + if(responseVector.value.size() > 0){ + LOG_INF("get sensor data %d", responseVector.value[0]); + } } else{ LOG_INF("fail"); } + k_msleep(500); + stateCounter++; + if(stateCounter > 10){ + stateCounter = 0; + currentState = SCANNING; + } break; } - case 2: - /* code */ + case SCANNING: + LOG_INF("entering state 2"); + k_msleep(500); + stateCounter++; + if(stateCounter > 10){ + stateCounter = 0; + currentState = 1; + } break; - case 3: + case USER_1: + /* code */ + break; + + case USER_2: /* code */ break; default: @@ -110,25 +129,18 @@ void MainHandler::DriverResponseListener(const struct zbus_channel *chan){ const DriverMessage_t *driver; if (&driverResponseChannel == chan) { driver = (DriverMessage_t *)zbus_chan_const_msg(chan); // Direct message access - if(driver->number == context->requestedResponse){ - // k_sem_give(&responseWait); - context->driverResponse_g = *driver; - } + context->driverResponse_g = *driver; } } bool MainHandler::DriverRequest(DriverMessage_t *sentMessage, DriverMessage_t *driverResponse, k_timeout_t timeout){ zbus_chan_pub(&driverRequestChannel, sentMessage, K_MSEC(200)); - requestedResponse = sentMessage->number; - - if (k_sem_take(&responseWait, timeout) == 0) { - *driverResponse = driverResponse_g; - LOG_INF("data available!"); - - } else { - LOG_ERR("timeout"); - return false; - } + // if(&driverResponse_g == NULL){ + // return false; + // } + *driverResponse = driverResponse_g; + // *driverResponse_g = NULL; + LOG_INF("data available!"); return true; } \ No newline at end of file -- GitLab