From bdd8ad0790efda8573643aed2e33a266627f8136 Mon Sep 17 00:00:00 2001 From: lights0123 Date: Sun, 22 Nov 2020 17:34:15 -0500 Subject: [PATCH] Use latest libnspire changes --- .../libnspire-sys/libnspire/src/cx2.cpp | 19 ++++++++++++------ .../libnspire-sys/libnspire/src/init.c | 1 + .../web-libnspire/pkg/web_libnspire_bg.wasm | Bin 242894 -> 243905 bytes web/web-libusb/web-libnspire/src/lib.rs | 1 + web/web-libusb/web-libnspire/src/printf.rs | 2 ++ web/web-libusb/web-libusb/src/lib.rs | 5 +++-- 6 files changed, 20 insertions(+), 8 deletions(-) diff --git a/web/web-libusb/libnspire-sys/libnspire/src/cx2.cpp b/web/web-libusb/libnspire-sys/libnspire/src/cx2.cpp index 25c6d36..fa26b6e 100644 --- a/web/web-libusb/libnspire-sys/libnspire/src/cx2.cpp +++ b/web/web-libusb/libnspire-sys/libnspire/src/cx2.cpp @@ -286,7 +286,7 @@ static void handlePacket(struct nspire_handle *nsp_handle, NNSEMessage *message, if(!writePacket(handle, &ack)) printf("Failed to ack\n"); } - printf("%d", message->service); + printf("SERVICE %d", message->service); switch(message->service & ~AckFlag) { case AddrReqService: @@ -298,19 +298,26 @@ static void handlePacket(struct nspire_handle *nsp_handle, NNSEMessage *message, #ifdef DEBUG printf("Got request from client %s (product id %c%c)\n", &req->clientID[12], req->clientID[10], req->clientID[11]); #endif - - NNSEMessage_AddrResp resp = {}; +/* Sending this somehow introduces issues like the time request not + arriving or the calc responding with yet another address request. + // Address release request. Not sure how that works. + NNSEMessage_AddrResp resp{}; resp.hdr.service = message->service; resp.addr = AddrCalc; - if(!sendMessage(handle, resp)) + if(!sendMessage(resp)) printf("Failed to send message\n"); +*/ NNSEMessage_AddrResp resp2 = {}; resp2.hdr.service = message->service; resp2.addr = 0x80; // No idea - if(!sendMessage(handle, resp2)) + // In some cases on HW and in Firebird always after reconnecting + // it ignores the first packet for some reason. So just send it + // twice (the seqno doesn't really matter at this point), if it + // receives both it'll ignore the second one. + if(!sendMessage(handle, resp2) || !sendMessage(handle, resp2)) printf("Failed to send message\n"); break; @@ -408,7 +415,7 @@ int packet_send_cx2(struct nspire_handle *nsp_handle, char *data, int size) printf("packet_send_cx2"); if(!assureReady(nsp_handle)) return -NSPIRE_ERR_BUSY; - + printf("assuredReady"); auto *handle = nsp_handle->device.dev; int len = sizeof(NNSEMessage) + size; diff --git a/web/web-libusb/libnspire-sys/libnspire/src/init.c b/web/web-libusb/libnspire-sys/libnspire/src/init.c index a3ff2f4..fd9d9c2 100644 --- a/web/web-libusb/libnspire-sys/libnspire/src/init.c +++ b/web/web-libusb/libnspire-sys/libnspire/src/init.c @@ -64,6 +64,7 @@ int nspire_init(nspire_handle_t **ptr, libusb_device_handle *dev, bool is_cx2) { return NSPIRE_ERR_SUCCESS; error_free_usb: + printf("err %d", ret); usb_free_device(&h->device); error: free(h); diff --git a/web/web-libusb/web-libnspire/pkg/web_libnspire_bg.wasm b/web/web-libusb/web-libnspire/pkg/web_libnspire_bg.wasm index 23d735f36ae29cc666e1bee62ca7ce905455c4b3..a3a14c9d70a25064c7e669138ec9fd882c57048a 100644 GIT binary patch delta 51552 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 delta 50550 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 c_int { } let mut s = String::new(); printf::func(format as _, args.as_va_list(), printf::to_write(&mut s)); + s.trim_end(); log(&s); 0 } diff --git a/web/web-libusb/web-libnspire/src/printf.rs b/web/web-libusb/web-libnspire/src/printf.rs index 3b8783e..93dad1e 100644 --- a/web/web-libusb/web-libnspire/src/printf.rs +++ b/web/web-libusb/web-libnspire/src/printf.rs @@ -35,6 +35,8 @@ pub fn to_write<'a>(w: &'a mut impl fmt::Write) -> impl FnMut(Argument) + 'a { Argument::Extra(d) => {w.write_str(&String::from_utf8_lossy(d));}, Argument::Hex(len, data) => {write!(w, "{:#0width$x}", data, width=len as usize);}, Argument::Int(data) => {write!(w, "{}", data);}, + Argument::String(data) => {write!(w, "{}", data.to_string_lossy());}, + Argument::Char(data) => {write!(w, "{}", data as char);}, e => {dbg!(e);}, } } diff --git a/web/web-libusb/web-libusb/src/lib.rs b/web/web-libusb/web-libusb/src/lib.rs index 8a5c1f0..140e64c 100644 --- a/web/web-libusb/web-libusb/src/lib.rs +++ b/web/web-libusb/web-libusb/src/lib.rs @@ -202,10 +202,11 @@ pub unsafe extern "C" fn libusb_bulk_transfer( ) { Ok(reply) => match reply.0 { Ok(buf) => { - slice::from_raw_parts_mut(data, (buf.0).len().min(length as usize)) + let len = (buf.0).len().min(length as usize); + slice::from_raw_parts_mut(data, len) .copy_from_slice(buf.0); if !transferred.is_null() { - *transferred = (buf.0).len() as c_int; + *transferred = len as c_int; } LIBUSB_SUCCESS }