- 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.c
|
||||||
class/cdc.h
|
class/cdc.h
|
||||||
|
class/eem.c
|
||||||
|
class/eem.h
|
||||||
|
|
||||||
CMakeLists.txt
|
CMakeLists.txt
|
||||||
|
|
||||||
desc/usb_desc.c
|
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