@@ -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+
96106struct 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
136146void modem_backend_mock_prime (struct modem_backend_mock * mock ,
0 commit comments