Skip to content

Commit a372992

Browse files
committed
PSOC6: USB device implementation
1 parent 2f136b9 commit a372992

File tree

3 files changed

+452
-0
lines changed

3 files changed

+452
-0
lines changed

targets/targets.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8381,6 +8381,7 @@
83818381
"SPISLAVE",
83828382
"STDIO_MESSAGES",
83838383
"TRNG",
8384+
"USBDEVICE",
83848385
"USTICKER"
83858386
],
83868387
"release_versions": ["5"],
@@ -8457,6 +8458,7 @@
84578458
},
84588459
"CY8CKIT_062_BLE": {
84598460
"inherits": ["MCU_PSOC6_M4"],
8461+
"device_has_remove": ["USBDEVICE"],
84608462
"supported_form_factors": ["ARDUINO"],
84618463
"extra_labels_add": [
84628464
"PSOC6_01",
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* Copyright (c) 2019, Arm Limited and affiliates.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
#ifndef USBPHYHW_H
19+
#define USBPHYHW_H
20+
21+
#include "USBPhy.h"
22+
#include "cyhal_usb_dev.h"
23+
24+
class USBPhyHw : public USBPhy {
25+
public:
26+
USBPhyHw();
27+
virtual ~USBPhyHw();
28+
virtual void init(USBPhyEvents *events);
29+
virtual void deinit();
30+
virtual bool powered();
31+
virtual void connect();
32+
virtual void disconnect();
33+
virtual void configure();
34+
virtual void unconfigure();
35+
virtual void sof_enable();
36+
virtual void sof_disable();
37+
virtual void set_address(uint8_t address);
38+
virtual void remote_wakeup();
39+
virtual const usb_ep_table_t *endpoint_table();
40+
virtual void suspend(bool suspended);
41+
42+
virtual uint32_t ep0_set_max_packet(uint32_t max_packet);
43+
virtual void ep0_setup_read_result(uint8_t *buffer, uint32_t size);
44+
virtual void ep0_read(uint8_t *data, uint32_t size);
45+
virtual uint32_t ep0_read_result();
46+
virtual void ep0_write(uint8_t *buffer, uint32_t size);
47+
virtual void ep0_stall();
48+
49+
virtual bool endpoint_add(usb_ep_t endpoint, uint32_t max_packet, usb_ep_type_t type);
50+
virtual void endpoint_remove(usb_ep_t endpoint);
51+
virtual void endpoint_stall(usb_ep_t endpoint);
52+
virtual void endpoint_unstall(usb_ep_t endpoint);
53+
54+
virtual bool endpoint_read(usb_ep_t endpoint, uint8_t *data, uint32_t size);
55+
virtual uint32_t endpoint_read_result(usb_ep_t endpoint);
56+
virtual bool endpoint_write(usb_ep_t endpoint, uint8_t *data, uint32_t size);
57+
virtual void endpoint_abort(usb_ep_t endpoint);
58+
59+
virtual void process();
60+
61+
USBPhyEvents *events;
62+
63+
uint8_t in_event_mask;
64+
uint8_t out_event_mask;
65+
66+
private:
67+
virtual void usb_dev_execute_ep_callbacks(void);
68+
static void _usbisr(void);
69+
cyhal_usb_dev_t obj;
70+
};
71+
72+
#endif

0 commit comments

Comments
 (0)