@@ -2,7 +2,8 @@ mod callback;
2
2
pub use callback:: process_api_stream;
3
3
use callback:: {
4
4
add_xbd_timeout_callback,
5
- add_xbd_gcoap_req_callback} ;
5
+ // add_xbd_gcoap_req_callback
6
+ } ;
6
7
7
8
mod server;
8
9
pub use server:: process_gcoap_server_stream;
@@ -171,26 +172,25 @@ impl Xbd {
171
172
* const u8 , * const u8 , u8 ,
172
173
* const u8 , usize , bool , usize , * const c_void , * const c_void ) ;
173
174
174
- if 1 == 1 { // ok
175
+ if 0 == 1 { // waypoint, ok
175
176
let ( waker, hv) = unsafe { & mut * finale_ptr } ;
176
177
hv. push ( 42 ) . unwrap ( ) ;
177
178
hv. push ( 42 +1 ) . unwrap ( ) ;
178
179
hv. push ( 42 +2 ) . unwrap ( ) ;
179
180
waker. wake ( ) ;
181
+ return ;
180
182
}
181
- if 0 == 1 {
182
- assert_eq ! ( blockwise, blockwise_state_index. is_some( ) ) ;
183
- unsafe {
184
- ( get_xbd_fn ! ( "xbd_gcoap_req_send" , Ty ) ) (
185
- addr_cstr. as_ptr ( ) ,
186
- uri_cstr. as_ptr ( ) ,
187
- method, payload_ptr, payload_len,
188
- blockwise, blockwise_state_index. unwrap_or ( 0 /* to be ignored */ ) ,
189
- // callback::into_raw(cb), // context !!!!!!!!! push `waker` how??????????
190
- // waker_ptr as *const c_void, // !!!!
191
- finale_ptr as * const c_void , // !!!!
192
- Self :: gcoap_req_resp_handler as * const c_void ) ;
193
- }
183
+
184
+ assert_eq ! ( blockwise, blockwise_state_index. is_some( ) ) ;
185
+ unsafe {
186
+ ( get_xbd_fn ! ( "xbd_gcoap_req_send" , Ty ) ) (
187
+ addr_cstr. as_ptr ( ) ,
188
+ uri_cstr. as_ptr ( ) ,
189
+ method, payload_ptr, payload_len,
190
+ blockwise, blockwise_state_index. unwrap_or ( 0 /* to be ignored */ ) ,
191
+ //callback::into_raw(cb), // context !!!!
192
+ finale_ptr as * const c_void , // context !!!! WIP
193
+ Self :: gcoap_req_resp_handler as * const c_void ) ;
194
194
}
195
195
}
196
196
@@ -214,8 +214,14 @@ impl Xbd {
214
214
} ;
215
215
let out = GcoapMemoState :: new ( memo_state, payload) ;
216
216
217
- add_xbd_gcoap_req_callback (
218
- Box :: into_raw ( Box :: new ( ( context /* cb_ptr */ , out) ) ) as * const c_void ) ; // arg_ptr
217
+ // add_xbd_gcoap_req_callback(
218
+ // Box::into_raw(Box::new((context /* cb_ptr */, out))) as *const c_void); // arg_ptr
219
+ //==== !!!! TODO hv <<<< out, heepless--ly
220
+ let ( waker, hv) = unsafe { & mut * ( context as * mut Finale ) } ;
221
+ hv. push ( 42 ) . unwrap ( ) ;
222
+ hv. push ( 42 +1 ) . unwrap ( ) ;
223
+ hv. push ( 42 +2 ) . unwrap ( ) ;
224
+ waker. wake ( ) ;
219
225
}
220
226
221
227
pub fn async_sleep ( msec : u32 ) -> impl Future < Output = ( ) > + ' static {
0 commit comments