- Ethernet Emulation Model (EEM) basics added
This commit is contained in:
parent
c9d8a42872
commit
53226e79cb
@ -4,6 +4,9 @@ target_sources(
|
||||
|
||||
class/cdc.c
|
||||
class/cdc.h
|
||||
class/eem.c
|
||||
class/eem.h
|
||||
|
||||
CMakeLists.txt
|
||||
|
||||
desc/usb_desc.c
|
||||
|
39
class/eem.c
Normal file
39
class/eem.c
Normal file
@ -0,0 +1,39 @@
|
||||
#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;
|
||||
}
|
26
class/eem.h
Normal file
26
class/eem.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef CLASS_EEM
|
||||
#define CLASS_EEM
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "../usb_callback_event.h"
|
||||
|
||||
typedef struct {
|
||||
uint8_t data_ep; // bulk data in and out endpoint pair
|
||||
bool initialized; // EEM is initialized
|
||||
} USB_EemState;
|
||||
|
||||
/**
|
||||
* Initialize USB EEM module.
|
||||
* @param data_ep data endpoint number
|
||||
*/
|
||||
void usb_eem_init(uint8_t data_ep);
|
||||
|
||||
/**
|
||||
* Callback function for data reception and transmission.
|
||||
* @param cbevt pointer to callback event structure
|
||||
* @return function returns how to proceed with packet processing
|
||||
*/
|
||||
int usb_eem_process_and_return(USB_CallbackEvent * cbevt);
|
||||
|
||||
#endif /* CLASS_EEM */
|
Loading…
x
Reference in New Issue
Block a user