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
# 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
#include <zephyr/kernel.h>
#include "utilities.h"
typedef enum DeviceState{
STANDBY,
SCANNING,
USER_1,
USER_2
} DeviceState_e;
class MainHandler {
public:
/** Constructor.
......
......@@ -8,7 +8,8 @@ typedef enum DriverNumb{
SENSOR_2,
SENSOR_3,
BLUETOOTH,
ACTUATOR_1,
WINDOW,
LAMP
} DriverNumb_e;
typedef enum StateFlag{
......
......@@ -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
......@@ -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;
......
......@@ -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
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