Skip to content
Snippets Groups Projects
Commit 761fcdd1 authored by DAsamhan's avatar DAsamhan
Browse files

stash online

parent 48a0597b
1 merge request!6Implement main application
...@@ -63,3 +63,6 @@ CONFIG_NET_L2_ETHERNET=y ...@@ -63,3 +63,6 @@ CONFIG_NET_L2_ETHERNET=y
# Log # Log
CONFIG_LOG=y CONFIG_LOG=y
CONFIG_LOG_PROCESS_THREAD=y
CONFIG_LOG_BUFFER_SIZE=2048
CONFIG_LOG_MODE_DEFERRED=y
\ No newline at end of file
#include <zephyr/kernel.h> #include <zephyr/kernel.h>
#include "utilities.h" #include "utilities.h"
typedef enum DeviceState{
STANDBY,
SCANNING,
USER_1,
USER_2
} DeviceState_e;
class MainHandler { class MainHandler {
public: public:
/** Constructor. /** Constructor.
......
...@@ -8,7 +8,8 @@ typedef enum DriverNumb{ ...@@ -8,7 +8,8 @@ typedef enum DriverNumb{
SENSOR_2, SENSOR_2,
SENSOR_3, SENSOR_3,
BLUETOOTH, BLUETOOTH,
ACTUATOR_1, WINDOW,
LAMP
} DriverNumb_e; } DriverNumb_e;
typedef enum StateFlag{ typedef enum StateFlag{
......
...@@ -47,7 +47,7 @@ void DriverHook::DriverRequestListener(const struct zbus_channel *chan){ ...@@ -47,7 +47,7 @@ void DriverHook::DriverRequestListener(const struct zbus_channel *chan){
DriverMessage_t sentMessage = { DriverMessage_t sentMessage = {
.number = msg->number, .number = msg->number,
.value = data .value = msg->value
}; };
switch (msg->number) switch (msg->number)
...@@ -69,6 +69,8 @@ void DriverHook::DriverRequestListener(const struct zbus_channel *chan){ ...@@ -69,6 +69,8 @@ void DriverHook::DriverRequestListener(const struct zbus_channel *chan){
break; break;
} }
LOG_INF("Sensor data %d", msg->value[0]);
int status = zbus_chan_pub(&driverResponseChannel, &sentMessage, K_MSEC(200)); int status = zbus_chan_pub(&driverResponseChannel, &sentMessage, K_MSEC(200));
LOG_INF("Status pub %d", status); LOG_INF("Status pub %d", status);
} }
\ No newline at end of file
...@@ -22,6 +22,7 @@ void DeviceParser::BleScanListener(const struct zbus_channel *chan){ ...@@ -22,6 +22,7 @@ void DeviceParser::BleScanListener(const struct zbus_channel *chan){
if(context->BleDeviceParser(msg, &parsedData)){ if(context->BleDeviceParser(msg, &parsedData)){
LOG_INF("Device %s has data %d", msg->address.c_str(), parsedData.tempSensor); 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{ else{
return; return;
......
...@@ -40,7 +40,7 @@ MainHandler::MainHandler(){ ...@@ -40,7 +40,7 @@ MainHandler::MainHandler(){
k_sem_init(&responseWait, 0, 1); k_sem_init(&responseWait, 0, 1);
// zbus_chan_add_obs(&driverResponseChannel, &sensorSubs, K_MSEC(200)); // 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(){ void MainHandler::Init(){
...@@ -54,6 +54,7 @@ int MainHandler::Deinit(){ ...@@ -54,6 +54,7 @@ int MainHandler::Deinit(){
void MainHandler::MainThread(MainHandler *context){ void MainHandler::MainThread(MainHandler *context){
// const struct zbus_channel *chan; // const struct zbus_channel *chan;
uint8_t currentState = 1; uint8_t currentState = 1;
uint8_t stateCounter = 0;
// while (!zbus_sub_wait(&stateSubs, &chan, K_MSEC(200))) { // while (!zbus_sub_wait(&stateSubs, &chan, K_MSEC(200))) {
// StateMessage_t state; // StateMessage_t state;
...@@ -77,26 +78,44 @@ void MainHandler::MainThread(MainHandler *context){ ...@@ -77,26 +78,44 @@ void MainHandler::MainThread(MainHandler *context){
switch (currentState) switch (currentState)
{ {
case 1:{ case STANDBY:{
LOG_INF("entering state 1. get data from sensor 1"); LOG_INF("entering state 1");
DriverMessage_t configVector, responseVector; DriverMessage_t configVector, responseVector;
configVector.number = SENSOR_1; configVector.number = SENSOR_1;
configVector.value.push_back(SENSOR_1); configVector.value.push_back(stateCounter);
if(context->DriverRequest(&configVector, &responseVector, K_MSEC(200))){ 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{ else{
LOG_INF("fail"); LOG_INF("fail");
} }
k_msleep(500);
stateCounter++;
if(stateCounter > 10){
stateCounter = 0;
currentState = SCANNING;
}
break; break;
} }
case 2: case SCANNING:
/* code */ LOG_INF("entering state 2");
k_msleep(500);
stateCounter++;
if(stateCounter > 10){
stateCounter = 0;
currentState = 1;
}
break; break;
case 3: case USER_1:
/* code */
break;
case USER_2:
/* code */ /* code */
break; break;
default: default:
...@@ -110,25 +129,18 @@ void MainHandler::DriverResponseListener(const struct zbus_channel *chan){ ...@@ -110,25 +129,18 @@ void MainHandler::DriverResponseListener(const struct zbus_channel *chan){
const DriverMessage_t *driver; const DriverMessage_t *driver;
if (&driverResponseChannel == chan) { if (&driverResponseChannel == chan) {
driver = (DriverMessage_t *)zbus_chan_const_msg(chan); // Direct message access driver = (DriverMessage_t *)zbus_chan_const_msg(chan); // Direct message access
if(driver->number == context->requestedResponse){ context->driverResponse_g = *driver;
// k_sem_give(&responseWait);
context->driverResponse_g = *driver;
}
} }
} }
bool MainHandler::DriverRequest(DriverMessage_t *sentMessage, DriverMessage_t *driverResponse, k_timeout_t timeout){ bool MainHandler::DriverRequest(DriverMessage_t *sentMessage, DriverMessage_t *driverResponse, k_timeout_t timeout){
zbus_chan_pub(&driverRequestChannel, sentMessage, K_MSEC(200)); zbus_chan_pub(&driverRequestChannel, sentMessage, K_MSEC(200));
requestedResponse = sentMessage->number; // if(&driverResponse_g == NULL){
// return false;
if (k_sem_take(&responseWait, timeout) == 0) { // }
*driverResponse = driverResponse_g; *driverResponse = driverResponse_g;
LOG_INF("data available!"); // *driverResponse_g = NULL;
LOG_INF("data available!");
} else {
LOG_ERR("timeout");
return false;
}
return true; return true;
} }
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment