Skip to content

Commit 325bc95

Browse files
bjarki-andreasencarlescufi
authored andcommitted
tests: modem: pipe: mock: Implement TRANSMIT_IDLE event
Implements TRANSMIT_IDLE event notification for mock modem_pipe. Signed-off-by: Bjarki Arge Andreasen <[email protected]>
1 parent 7c9f287 commit 325bc95

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

tests/subsys/modem/mock/modem_backend_mock.c

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ static int modem_backend_mock_transmit(void *data, const uint8_t *buf, size_t si
4747
struct modem_backend_mock *t_mock = mock->bridge;
4848

4949
ret = ring_buf_put(&t_mock->rx_rb, buf, size);
50-
k_work_submit(&t_mock->received_work_item.work);
50+
k_work_submit(&t_mock->receive_ready_work);
51+
k_work_submit(&mock->transmit_idle_work);
5152
return ret;
5253
}
5354

@@ -59,6 +60,7 @@ static int modem_backend_mock_transmit(void *data, const uint8_t *buf, size_t si
5960
mock->transaction = NULL;
6061
}
6162

63+
k_work_submit(&mock->transmit_idle_work);
6264
return ret;
6365
}
6466

@@ -85,23 +87,31 @@ struct modem_pipe_api modem_backend_mock_api = {
8587
.close = modem_backend_mock_close,
8688
};
8789

88-
static void modem_backend_mock_received_handler(struct k_work *item)
90+
static void modem_backend_mock_receive_ready_handler(struct k_work *item)
8991
{
90-
struct modem_backend_mock_work *mock_work_item = (struct modem_backend_mock_work *)item;
91-
struct modem_backend_mock *mock = mock_work_item->mock;
92+
struct modem_backend_mock *mock =
93+
CONTAINER_OF(item, struct modem_backend_mock, receive_ready_work);
9294

9395
modem_pipe_notify_receive_ready(&mock->pipe);
9496
}
9597

98+
static void modem_backend_mock_transmit_idle_handler(struct k_work *item)
99+
{
100+
struct modem_backend_mock *mock =
101+
CONTAINER_OF(item, struct modem_backend_mock, transmit_idle_work);
102+
103+
modem_pipe_notify_transmit_idle(&mock->pipe);
104+
}
105+
96106
struct modem_pipe *modem_backend_mock_init(struct modem_backend_mock *mock,
97107
const struct modem_backend_mock_config *config)
98108
{
99109
memset(mock, 0, sizeof(*mock));
100110

101111
ring_buf_init(&mock->rx_rb, config->rx_buf_size, config->rx_buf);
102112
ring_buf_init(&mock->tx_rb, config->tx_buf_size, config->tx_buf);
103-
mock->received_work_item.mock = mock;
104-
k_work_init(&mock->received_work_item.work, modem_backend_mock_received_handler);
113+
k_work_init(&mock->receive_ready_work, modem_backend_mock_receive_ready_handler);
114+
k_work_init(&mock->transmit_idle_work, modem_backend_mock_transmit_idle_handler);
105115
mock->limit = config->limit;
106116
modem_pipe_init(&mock->pipe, mock, &modem_backend_mock_api);
107117
return &mock->pipe;
@@ -130,7 +140,7 @@ void modem_backend_mock_put(struct modem_backend_mock *mock, const uint8_t *buf,
130140
__ASSERT(ring_buf_put(&mock->rx_rb, buf, size) == size,
131141
"Mock buffer capacity exceeded");
132142

133-
k_work_submit(&mock->received_work_item.work);
143+
k_work_submit(&mock->receive_ready_work);
134144
}
135145

136146
void modem_backend_mock_prime(struct modem_backend_mock *mock,

tests/subsys/modem/mock/modem_backend_mock.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,6 @@
1111
#ifndef ZEPHYR_DRIVERS_MODEM_MODEM_PIPE_MOCK
1212
#define ZEPHYR_DRIVERS_MODEM_MODEM_PIPE_MOCK
1313

14-
struct modem_backend_mock;
15-
16-
struct modem_backend_mock_work {
17-
struct k_work work;
18-
struct modem_backend_mock *mock;
19-
};
20-
2114
struct modem_backend_mock_transaction {
2215
/* Get data which will trigger put */
2316
const uint8_t *get;
@@ -34,7 +27,8 @@ struct modem_backend_mock {
3427
struct ring_buf rx_rb;
3528
struct ring_buf tx_rb;
3629

37-
struct modem_backend_mock_work received_work_item;
30+
struct k_work receive_ready_work;
31+
struct k_work transmit_idle_work;
3832

3933
const struct modem_backend_mock_transaction *transaction;
4034
size_t transaction_match_cnt;

0 commit comments

Comments
 (0)