Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions generated/include/infuse/tdf/definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -669,10 +669,12 @@ struct tdf_wifi_disconnected {
uint8_t reason;
} __packed;

/** Example array type */
struct tdf_array_type {
/** I am an array of length 4 */
uint8_t array[4];
/** Counts associated with scanning Wi-Fi and LTE networks */
struct tdf_network_scan_count {
/** Number of Wi-Fi APs found */
uint8_t num_wifi;
/** Number of LTE cells found */
uint8_t num_lte;
} __packed;

/** Infuse-IoT builtin TDF definitions */
Expand Down Expand Up @@ -771,8 +773,8 @@ enum tdf_builtin_id {
TDF_WIFI_CONNECTION_FAILED = 49,
/** Wi-Fi network is now disconnected */
TDF_WIFI_DISCONNECTED = 50,
/** Example array type */
TDF_ARRAY_TYPE = 100,
/** Counts associated with scanning Wi-Fi and LTE networks */
TDF_NETWORK_SCAN_COUNT = 51,
/** End of builtin TDF range */
TDF_BUILTIN_END = 1024,
};
Expand Down Expand Up @@ -825,7 +827,7 @@ enum tdf_builtin_id {
#define _TDF_WIFI_CONNECTED_TYPE struct tdf_wifi_connected
#define _TDF_WIFI_CONNECTION_FAILED_TYPE struct tdf_wifi_connection_failed
#define _TDF_WIFI_DISCONNECTED_TYPE struct tdf_wifi_disconnected
#define _TDF_ARRAY_TYPE_TYPE struct tdf_array_type
#define _TDF_NETWORK_SCAN_COUNT_TYPE struct tdf_network_scan_count

/** Size of builtin TDF definitions */
enum tdf_builtin_size {
Expand Down Expand Up @@ -875,7 +877,7 @@ enum tdf_builtin_size {
_TDF_WIFI_CONNECTED_SIZE = sizeof(struct tdf_wifi_connected),
_TDF_WIFI_CONNECTION_FAILED_SIZE = sizeof(struct tdf_wifi_connection_failed),
_TDF_WIFI_DISCONNECTED_SIZE = sizeof(struct tdf_wifi_disconnected),
_TDF_ARRAY_TYPE_SIZE = sizeof(struct tdf_array_type),
_TDF_NETWORK_SCAN_COUNT_SIZE = sizeof(struct tdf_network_scan_count),
};

/** @endcond */
Expand Down
33 changes: 33 additions & 0 deletions include/infuse/data_logger/backend/epacket.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* @file
* @brief ePacket specific data logging interface
* @copyright 2025 Embeint Inc
* @author Jordan Yates <[email protected]>
*
* SPDX-License-Identifier: LicenseRef-Embeint
*/

#ifndef INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_BACKEND_EPACKET_H_
#define INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_BACKEND_EPACKET_H_

#include <stdint.h>

#include <zephyr/device.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
* @brief Set ePacket flags for this backend
*
* @param dev ePacket data logger to configure
* @param flags Bitmask of @ref epacket_flags or interface specific flags
*/
void logger_epacket_flags_set(const struct device *dev, uint16_t flags);

#ifdef __cplusplus
}
#endif

#endif /* INFUSE_SDK_INCLUDE_INFUSE_DATA_LOGGER_BACKEND_EPACKET_H_ */
2 changes: 2 additions & 0 deletions include/infuse/task_runner/tasks/network_scan_args.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ enum {
TASK_NETWORK_SCAN_LOG_LTE_CELLS = BIT(0),
/** @ref TDF_WIFI_AP_INFO */
TASK_NETWORK_SCAN_LOG_WIFI_AP = BIT(1),
/** @ref TDF_NETWORK_SCAN_COUNT */
TASK_NETWORK_SCAN_LOG_COUNT = BIT(2),
};

enum {
Expand Down
9 changes: 5 additions & 4 deletions scripts/west_commands/cloud_definitions/tdf.json
Original file line number Diff line number Diff line change
Expand Up @@ -513,11 +513,12 @@
{"name": "reason", "type": "uint8_t", "description": "Reported reason for disconnection"}
]
},
"100": {
"name": "ARRAY_TYPE",
"description": "Example array type",
"51": {
"name": "NETWORK_SCAN_COUNT",
"description": "Counts associated with scanning Wi-Fi and LTE networks",
"fields": [
{"name": "array", "type": "uint8_t", "num": 4, "description": "I am an array of length 4"}
{"name": "num_wifi", "type": "uint8_t", "description": "Number of Wi-Fi APs found"},
{"name": "num_lte", "type": "uint8_t", "description": "Number of LTE cells found"}
]
}
}
Expand Down
12 changes: 11 additions & 1 deletion subsys/data_logger/backends/epacket.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,29 @@ struct dl_epacket_config {
struct dl_epacket_data {
struct data_logger_common_data common;
struct epacket_interface_cb interface_cb;
uint16_t flags;
};

void logger_epacket_flags_set(const struct device *dev, uint16_t flags)
{
struct dl_epacket_data *data = dev->data;

data->flags = flags;
}

static int logger_epacket_write(const struct device *dev, uint32_t phy_block,
enum infuse_type data_type, const void *mem, uint16_t mem_len)
{
const struct dl_epacket_config *config = dev->config;
struct dl_epacket_data *data = dev->data;
struct net_buf *buf = epacket_alloc_tx_for_interface(config->backend, K_FOREVER);

if (net_buf_tailroom(buf) < mem_len) {
net_buf_unref(buf);
return -ENOSPC;
}
epacket_set_tx_metadata(buf, EPACKET_AUTH_NETWORK, 0x00, data_type, EPACKET_ADDR_ALL);
epacket_set_tx_metadata(buf, EPACKET_AUTH_NETWORK, data->flags, data_type,
EPACKET_ADDR_ALL);
net_buf_add_mem(buf, mem, mem_len);
epacket_queue(config->backend, buf);
return 0;
Expand Down
14 changes: 14 additions & 0 deletions subsys/task_runner/tasks/task_network_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,20 @@ void network_scan_task_fn(struct k_work *work)

epoch_time = epoch_time_now();

struct tdf_network_scan_count count = {
#ifdef CONFIG_WIFI
.num_wifi = state.aps_found,
#endif /* CONFIG_WIFI */
#ifdef CONFIG_LTE_LINK_CONTROL
.num_lte = state.gci_cells +
(state.local_cells.cell.eci != LTE_LC_CELL_EUTRAN_ID_INVALID),
#endif /* CONFIG_LTE_LINK_CONTROL */
};

/* Network scan count */
TASK_SCHEDULE_TDF_LOG(sch, TASK_NETWORK_SCAN_LOG_COUNT, TDF_NETWORK_SCAN_COUNT, epoch_time,
&count);

#ifdef CONFIG_WIFI
if (state.aps_found > 0) {
/* Individual APs in a TDF_ARRAY_TIME */
Expand Down
32 changes: 32 additions & 0 deletions tests/subsys/data_logger/backends/epacket/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <infuse/epacket/interface.h>
#include <infuse/epacket/packet.h>
#include <infuse/data_logger/logger.h>
#include <infuse/data_logger/backend/epacket.h>
#include <infuse/epacket/interface/epacket_dummy.h>

int logger_epacket_init(const struct device *dev);
Expand Down Expand Up @@ -124,6 +125,37 @@ ZTEST(data_logger_epacket, test_block_write)
zassert_equal(0, state.current_block);
}

ZTEST(data_logger_epacket, test_block_write_flags)
{
const struct device *logger = DEVICE_DT_GET(DT_NODELABEL(data_logger_epacket));
struct k_fifo *sent_queue = epacket_dummmy_transmit_fifo_get();
struct epacket_dummy_frame *frame;
struct net_buf *sent;
uint8_t payload[4];
int rc;

for (int i = 0; i < 100; i += 0x7) {
/* Request arbitrary flags */
logger_epacket_flags_set(logger, i);

/* Write random block */
rc = data_logger_block_write(logger, 0, payload, sizeof(payload));
zassert_equal(0, rc);

/* Validate packet was sent with requested flags */
sent = k_fifo_get(sent_queue, K_MSEC(1));
zassert_not_null(sent);
zassert_equal(sizeof(payload) + sizeof(struct epacket_dummy_frame), sent->len);
frame = (void *)sent->data;
zassert_equal(0, frame->type);
zassert_equal(i, frame->flags);
net_buf_unref(sent);
}

/* Reset flags to 0 */
logger_epacket_flags_set(logger, 0);
}

static void data_logger_setup(void *fixture)
{
const struct device *dummy = DEVICE_DT_GET(DT_NODELABEL(epacket_dummy));
Expand Down