@@ -47,7 +47,8 @@ static int modem_backend_mock_transmit(void *data, const uint8_t *buf, size_t si
47
47
struct modem_backend_mock * t_mock = mock -> bridge ;
48
48
49
49
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 );
51
52
return ret ;
52
53
}
53
54
@@ -59,6 +60,7 @@ static int modem_backend_mock_transmit(void *data, const uint8_t *buf, size_t si
59
60
mock -> transaction = NULL ;
60
61
}
61
62
63
+ k_work_submit (& mock -> transmit_idle_work );
62
64
return ret ;
63
65
}
64
66
@@ -85,23 +87,31 @@ struct modem_pipe_api modem_backend_mock_api = {
85
87
.close = modem_backend_mock_close ,
86
88
};
87
89
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 )
89
91
{
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 ) ;
92
94
93
95
modem_pipe_notify_receive_ready (& mock -> pipe );
94
96
}
95
97
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
+
96
106
struct modem_pipe * modem_backend_mock_init (struct modem_backend_mock * mock ,
97
107
const struct modem_backend_mock_config * config )
98
108
{
99
109
memset (mock , 0 , sizeof (* mock ));
100
110
101
111
ring_buf_init (& mock -> rx_rb , config -> rx_buf_size , config -> rx_buf );
102
112
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 );
105
115
mock -> limit = config -> limit ;
106
116
modem_pipe_init (& mock -> pipe , mock , & modem_backend_mock_api );
107
117
return & mock -> pipe ;
@@ -130,7 +140,7 @@ void modem_backend_mock_put(struct modem_backend_mock *mock, const uint8_t *buf,
130
140
__ASSERT (ring_buf_put (& mock -> rx_rb , buf , size ) == size ,
131
141
"Mock buffer capacity exceeded" );
132
142
133
- k_work_submit (& mock -> received_work_item . work );
143
+ k_work_submit (& mock -> receive_ready_work );
134
144
}
135
145
136
146
void modem_backend_mock_prime (struct modem_backend_mock * mock ,
0 commit comments