LPCOpen Platform
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Endpoint_LPC.c
Go to the documentation of this file.
1 /*
2  * @brief Endpoint declarations and functions for the LPC microcontrollers
3  *
4  * @note
5  * Copyright(C) NXP Semiconductors, 2012
6  * All rights reserved.
7  *
8  * @par
9  * Software that is described herein is for illustrative purposes only
10  * which provides customers with programming information regarding the
11  * LPC products. This software is supplied "AS IS" without any warranties of
12  * any kind, and NXP Semiconductors and its licensor disclaim any and
13  * all warranties, express or implied, including all implied warranties of
14  * merchantability, fitness for a particular purpose and non-infringement of
15  * intellectual property rights. NXP Semiconductors assumes no responsibility
16  * or liability for the use of the software, conveys no license or rights under any
17  * patent, copyright, mask work right, or any other intellectual property rights in
18  * or to any products. NXP Semiconductors reserves the right to make changes
19  * in the software without notification. NXP Semiconductors also makes no
20  * representation or warranty that such application will be suitable for the
21  * specified use without further testing or modification.
22  *
23  * @par
24  * Permission to use, copy, modify, and distribute this software and its
25  * documentation is hereby granted, under NXP Semiconductors' and its
26  * licensor's relevant copyrights in the software, without fee, provided that it
27  * is used in conjunction with NXP Semiconductors microcontrollers. This
28  * copyright, permission, and disclaimer notice must appear in all copies of
29  * this code.
30  */
31 
32 #define __INCLUDE_FROM_USB_DRIVER
33 #include "../USBMode.h"
34 
35 #if defined(USB_CAN_BE_DEVICE)
36 #include "../Endpoint.h"
37 
38 #if !defined(FIXED_CONTROL_ENDPOINT_SIZE)
40 #endif
41 
43 uint8_t usb_data_buffer[USB_DATA_BUFFER_TEM_LENGTH] ATTR_ALIGNED(64) __DATA(USBRAM_SECTION);/* TODO 11uxx require buffer is 64 byte aligned */
44 
45 volatile int32_t usb_data_buffer_size = 0;
46 volatile uint32_t usb_data_buffer_index = 0;
47 uint8_t usb_data_buffer_OUT[USB_DATA_BUFFER_TEM_LENGTH] ATTR_ALIGNED(64) __DATA(USBRAM_SECTION);/* TODO 11uxx require buffer is 64 byte aligned */
50 uint8_t usb_data_buffer_IN[USB_DATA_BUFFER_TEM_LENGTH] ATTR_ALIGNED(64) __DATA(USBRAM_SECTION); /* TODO 11uxx require buffer is 64 byte aligned */
52 
53 uint8_t endpointselected;
55 
56 bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
57  const uint8_t UECFG0XData,
58  const uint8_t UECFG1XData)
59 {
60 #if defined(CONTROL_ONLY_DEVICE) || defined(ORDERED_EP_CONFIG)
63 
64  // UECFG1X = 0;
65  // UECFG0X = UECFG0XData;
66  // UECFG1X = UECFG1XData;
67 
68  return Endpoint_IsConfigured();
69 #else
70  for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++) {
71  // uint8_t UECFG0XTemp;
72  // uint8_t UECFG1XTemp;
73  // uint8_t UEIENXTemp;
74 
76 
77  if (EPNum == Number) {
78  // UECFG0XTemp = UECFG0XData;
79  // UECFG1XTemp = UECFG1XData;
80  // UEIENXTemp = 0;
81  }
82  else {
83  // UECFG0XTemp = UECFG0X;
84  // UECFG1XTemp = UECFG1X;
85  // UEIENXTemp = UEIENX;
86  }
87 
88  // if (!(UECFG1XTemp & (1 << ALLOC)))
89  // continue;
90 
92  // UECFG1X &= ~(1 << ALLOC);
93 
95  // UECFG0X = UECFG0XTemp;
96  // UECFG1X = UECFG1XTemp;
97  // UEIENX = UEIENXTemp;
98 
99  if (!(Endpoint_IsConfigured())) {
100  return false;
101  }
102  }
103 
104  Endpoint_SelectEndpoint(Number);
105  return true;
106 #endif
107 }
108 
110 {
111  // UEINT = 0;
112 
113  for (uint8_t EPNum = 0; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++) {
115  // UEIENX = 0;
116  // UEINTX = 0;
117  // UECFG1X = 0;
119  }
120 }
121 
123 {
124  if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST) {
126  }
127  else {
129  }
130 }
131 
132 #if !defined(CONTROL_ONLY_DEVICE)
134 {
136 }
137 
138 #endif
139 
140 #endif