56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
#include "sensor_task.h"
|
|
|
|
#include "stm32f4xx_hal.h"
|
|
#include "stm32f4xx_hal_gpio.h"
|
|
#include "gpio.h"
|
|
|
|
#include "incphub/incphub_client.h"
|
|
|
|
|
|
|
|
StackType_t _sensor_task_stack[SENSOR_TASK_STACK_DEPTH];
|
|
StaticTask_t _sensor_task;
|
|
|
|
|
|
|
|
void sensor_task_main(void *params)
|
|
{
|
|
(void)params;
|
|
|
|
uint8_t *buffer;
|
|
size_t length;
|
|
incphub_addr_t source;
|
|
|
|
// Init incphub client
|
|
incphub_cli_t *cli;
|
|
incphub_init_client(&cli, 69);
|
|
|
|
while (1)
|
|
{
|
|
// Get a message (assume it is a uint32_t)
|
|
incphub_await_msg(cli, &buffer, &length, &source, portMAX_DELAY);
|
|
|
|
// Ignore messages of different size
|
|
if (length != sizeof(uint32_t))
|
|
continue;
|
|
|
|
// Read incoming message
|
|
uint32_t num = *(uint32_t*)buffer;
|
|
|
|
// Release buffer once read
|
|
incphub_release_msg_buffer(cli, buffer);
|
|
|
|
// Process message
|
|
num++;
|
|
|
|
// Request buffer for reply
|
|
incphub_get_msg_buffer(cli, &buffer, sizeof(uint32_t));
|
|
|
|
// Prepare reply message
|
|
*(uint32_t*)buffer = num;
|
|
|
|
// Send reply
|
|
incphub_send_msg(cli, buffer, sizeof(uint32_t), source, portMAX_DELAY);
|
|
}
|
|
}
|