40 lines
722 B
C
40 lines
722 B
C
#include "eem.h"
|
|
|
|
#include <memory.h>
|
|
|
|
#include "../usb.h"
|
|
|
|
static USB_EemState eems = {0};
|
|
|
|
void usb_eem_init(uint8_t data_ep) {
|
|
// clear the state
|
|
memset(&eems, 0, sizeof(USB_EemState));
|
|
|
|
// store data endpoint number
|
|
eems.data_ep = data_ep;
|
|
|
|
// EEM is operational
|
|
eems.initialized = true;
|
|
}
|
|
|
|
int usb_eem_process_and_return(USB_CallbackEvent *cbevt) {
|
|
switch (cbevt->type) {
|
|
case USB_CBEVT_UNKNOWN_REQ:
|
|
break;
|
|
|
|
case USB_CBEVT_OUT:
|
|
break;
|
|
|
|
case USB_CBEVT_IN:
|
|
if (cbevt->ep == eems.data_ep) { // verify endpoint number
|
|
usbcore_write(eems.data_ep, NULL, 0); // send ZLP
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|