+ while (g.stream_enable_from && !g.stream_ended
+ && get_used_from() >= sizeof(pkt.data) / STREAM_EL_SZ)
+ {
+ uint32_t f_o;
+ int i;
+
+ f_o = g.f_o;
+ for (i = 0; i < sizeof(pkt.data); i += STREAM_EL_SZ) {
+ memcpy(pkt.data + i, &g.stream_from[f_o++],
+ STREAM_EL_SZ);
+ f_o &= STREAM_BUF_MASK;
+ }
+ g.f_o = f_o;
+
+ pkt.type = PKT_STREAM_DATA_FROM;
+ pkt.size = i;
+
+ ret = usb_rawhid_send(&pkt, 1000);
+ if (ret != sizeof(pkt)) {
+ printf("send DATA_FROM: %d\n", ret);
+ break;
+ }
+ }
+