- EEM class indented
This commit is contained in:
		
							parent
							
								
									f6e3d48476
								
							
						
					
					
						commit
						d140d7c183
					
				
							
								
								
									
										30
									
								
								class/eem.c
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								class/eem.c
									
									
									
									
									
								
							@ -83,7 +83,7 @@ int usb_eem_process_and_return(USB_CallbackEvent *cbevt) {
 | 
			
		||||
            bfifo_push(&(eems.netbFifo), cbevt->data, cbevt->size); // store portion of netbound packet
 | 
			
		||||
            usb_eem_push_event(EEM_EVT_NETBOUND_PCKT_RECEIVED);     // push notification
 | 
			
		||||
 | 
			
		||||
            if (bfifo_get_free(&eems.netbFifo) < EEM_PCKT_SIZE) {   // don't autoarm if OUT no more packets can be stored
 | 
			
		||||
            if (bfifo_get_free(&eems.netbFifo) < EEM_PCKT_SIZE) { // don't autoarm if OUT no more packets can be stored
 | 
			
		||||
                eems.netbAutoArm = false;
 | 
			
		||||
                cbevt->arm_out_endpoint = false;
 | 
			
		||||
            }
 | 
			
		||||
@ -91,23 +91,23 @@ int usb_eem_process_and_return(USB_CallbackEvent *cbevt) {
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
    case USB_CBEVT_IN:
 | 
			
		||||
        if (cbevt->ep == eems.data_ep) {                                                                // verify endpoint number
 | 
			
		||||
            if ((eems.hostbFrame != NULL) && (eems.hostbFrameIndex < eems.hostbFrameLength)) {          // if there's something in the FIFO
 | 
			
		||||
                uint8_t *readPtr = ((uint8_t *)eems.hostbFrame) + eems.hostbFrameIndex;                 // calculate read pointer
 | 
			
		||||
                uint16_t bytesLeft = eems.hostbFrameLength - eems.hostbFrameIndex;                      // calculate bytes left
 | 
			
		||||
                uint32_t writeSize = usbcore_schedule_transmission(eems.data_ep, readPtr, bytesLeft);   // attempt to schedule transmission
 | 
			
		||||
                
 | 
			
		||||
                //bool enableZLP = (bytesLeft < EEM_TRANSFER_UNIT) && ((bytesLeft % EEM_PCKT_SIZE) == 0); // ZLP transmission should be enabled if this was the last write and transfer size is integer multiple of the USB packet size
 | 
			
		||||
                //cbevt->enable_autozlp = enableZLP;
 | 
			
		||||
        if (cbevt->ep == eems.data_ep) {                                                              // verify endpoint number
 | 
			
		||||
            if ((eems.hostbFrame != NULL) && (eems.hostbFrameIndex < eems.hostbFrameLength)) {        // if there's something in the FIFO
 | 
			
		||||
                uint8_t *readPtr = ((uint8_t *)eems.hostbFrame) + eems.hostbFrameIndex;               // calculate read pointer
 | 
			
		||||
                uint16_t bytesLeft = eems.hostbFrameLength - eems.hostbFrameIndex;                    // calculate bytes left
 | 
			
		||||
                uint32_t writeSize = usbcore_schedule_transmission(eems.data_ep, readPtr, bytesLeft); // attempt to schedule transmission
 | 
			
		||||
 | 
			
		||||
                // bool enableZLP = (bytesLeft < EEM_TRANSFER_UNIT) && ((bytesLeft % EEM_PCKT_SIZE) == 0); // ZLP transmission should be enabled if this was the last write and transfer size is integer multiple of the USB packet size
 | 
			
		||||
                // cbevt->enable_autozlp = enableZLP;
 | 
			
		||||
 | 
			
		||||
                eems.hostbFrameIndex += writeSize; // advance frame index
 | 
			
		||||
                //MSG("U: %u T: %u\n", writeSize, bytesLeft);
 | 
			
		||||
                // MSG("U: %u T: %u\n", writeSize, bytesLeft);
 | 
			
		||||
 | 
			
		||||
                // if (eems.hostbFrameIndex >= eems.hostbFrameLength) {
 | 
			
		||||
                //     MSG("---\n");
 | 
			
		||||
                // }
 | 
			
		||||
            } else {                                                  // no data is waiting for transmission
 | 
			
		||||
                //usbcore_schedule_transmission(eems.data_ep, NULL, 0); // send ZLP
 | 
			
		||||
            } else { // no data is waiting for transmission
 | 
			
		||||
                // usbcore_schedule_transmission(eems.data_ep, NULL, 0); // send ZLP
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // if FIFO is empty or flushed, then send notification
 | 
			
		||||
@ -241,7 +241,7 @@ void usb_eem_process_hostbound() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // invalidate frame
 | 
			
		||||
    USB_EemFrame * oldEemFrame = eems.hostbFrame;
 | 
			
		||||
    USB_EemFrame *oldEemFrame = eems.hostbFrame;
 | 
			
		||||
    eems.hostbFrame = NULL;
 | 
			
		||||
 | 
			
		||||
    // release frame
 | 
			
		||||
@ -300,6 +300,10 @@ void usb_eem_ethernet_intercept_cb(EthInterface *intf, const RawPckt *rawPckt) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void usb_eem_set_intf(EthInterface *intf) {
 | 
			
		||||
    if (!eems.initialized) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    eems.intf = intf;                                                   // store interface
 | 
			
		||||
    ethinf_set_intercept_callback(intf, usb_eem_ethernet_intercept_cb); // set intercept callback
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user