kopia lustrzana https://github.com/luigifcruz/pico-stuff
Update SDK version.
rodzic
bfabf02146
commit
d0ac7f0766
|
@ -8,6 +8,17 @@ int main() {
|
||||||
sleep_ms(5000);
|
sleep_ms(5000);
|
||||||
printf("Hello from Pi Pico!\n");
|
printf("Hello from Pi Pico!\n");
|
||||||
|
|
||||||
|
while(!stdio_usb_connected())
|
||||||
|
{
|
||||||
|
sleep_ms(100);
|
||||||
|
}
|
||||||
|
printf("stdio_usb_connected()\n");
|
||||||
|
|
||||||
|
char str[50];
|
||||||
|
printf("Enter a string: ");
|
||||||
|
gets(str);
|
||||||
|
printf("You entered: %s", str);
|
||||||
|
|
||||||
bmp_t bmp;
|
bmp_t bmp;
|
||||||
bmp.oss = 5;
|
bmp.oss = 5;
|
||||||
bmp.i2c.addr = 0x77;
|
bmp.i2c.addr = 0x77;
|
||||||
|
|
|
@ -99,7 +99,7 @@ static err_t linkoutput_fn(struct netif *netif, struct pbuf *p)
|
||||||
return ERR_USE;
|
return ERR_USE;
|
||||||
|
|
||||||
/* if the network driver can accept another packet, we make it happen */
|
/* if the network driver can accept another packet, we make it happen */
|
||||||
if (tud_network_can_xmit())
|
if (tud_network_can_xmit(p->tot_len))
|
||||||
{
|
{
|
||||||
tud_network_xmit(p, 0 /* unused for this example */);
|
tud_network_xmit(p, 0 /* unused for this example */);
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
#define CFG_TUD_HID 0
|
#define CFG_TUD_HID 0
|
||||||
#define CFG_TUD_MIDI 0
|
#define CFG_TUD_MIDI 0
|
||||||
#define CFG_TUD_VENDOR 0
|
#define CFG_TUD_VENDOR 0
|
||||||
#define CFG_TUD_NET 1
|
#define CFG_TUD_ECM_RNDIS 1
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
#define CFG_TUD_HID 0
|
#define CFG_TUD_HID 0
|
||||||
#define CFG_TUD_MIDI 0
|
#define CFG_TUD_MIDI 0
|
||||||
#define CFG_TUD_VENDOR 0
|
#define CFG_TUD_VENDOR 0
|
||||||
#define CFG_TUD_NET 1
|
#define CFG_TUD_ECM_RNDIS 1
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
*/
|
*/
|
||||||
#define _PID_MAP(itf, n) ( (CFG_TUD_##itf) << (n) )
|
#define _PID_MAP(itf, n) ( (CFG_TUD_##itf) << (n) )
|
||||||
#define USB_PID (0x4000 | _PID_MAP(CDC, 0) | _PID_MAP(MSC, 1) | _PID_MAP(HID, 2) | \
|
#define USB_PID (0x4000 | _PID_MAP(CDC, 0) | _PID_MAP(MSC, 1) | _PID_MAP(HID, 2) | \
|
||||||
_PID_MAP(MIDI, 3) | _PID_MAP(VENDOR, 4) | _PID_MAP(NET, 5) )
|
_PID_MAP(MIDI, 3) | _PID_MAP(VENDOR, 4) | _PID_MAP(ECM_RNDIS, 5) | _PID_MAP(NCM, 5) )
|
||||||
|
|
||||||
// String Descriptor Index
|
// String Descriptor Index
|
||||||
enum
|
enum
|
||||||
|
@ -55,8 +55,12 @@ enum
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
#if CFG_TUD_ECM_RNDIS
|
||||||
CONFIG_ID_RNDIS = 0,
|
CONFIG_ID_RNDIS = 0,
|
||||||
CONFIG_ID_ECM = 1,
|
CONFIG_ID_ECM = 1,
|
||||||
|
#else
|
||||||
|
CONFIG_ID_NCM = 0,
|
||||||
|
#endif
|
||||||
CONFIG_ID_COUNT
|
CONFIG_ID_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -99,6 +103,7 @@ uint8_t const * tud_descriptor_device_cb(void)
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
#define MAIN_CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_RNDIS_DESC_LEN)
|
#define MAIN_CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_RNDIS_DESC_LEN)
|
||||||
#define ALT_CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_CDC_ECM_DESC_LEN)
|
#define ALT_CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_CDC_ECM_DESC_LEN)
|
||||||
|
#define NCM_CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_CDC_NCM_DESC_LEN)
|
||||||
|
|
||||||
#if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X || CFG_TUSB_MCU == OPT_MCU_LPC177X_8X || CFG_TUSB_MCU == OPT_MCU_LPC40XX
|
#if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X || CFG_TUSB_MCU == OPT_MCU_LPC177X_8X || CFG_TUSB_MCU == OPT_MCU_LPC40XX
|
||||||
// LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number
|
// LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number
|
||||||
|
@ -107,8 +112,8 @@ uint8_t const * tud_descriptor_device_cb(void)
|
||||||
#define EPNUM_NET_OUT 0x02
|
#define EPNUM_NET_OUT 0x02
|
||||||
#define EPNUM_NET_IN 0x82
|
#define EPNUM_NET_IN 0x82
|
||||||
|
|
||||||
#elif CFG_TUSB_MCU == OPT_MCU_SAMG
|
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X
|
||||||
// SAMG doesn't support a same endpoint number with different direction IN and OUT
|
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT
|
||||||
// e.g EP1 OUT & EP1 IN cannot exist together
|
// e.g EP1 OUT & EP1 IN cannot exist together
|
||||||
#define EPNUM_NET_NOTIF 0x81
|
#define EPNUM_NET_NOTIF 0x81
|
||||||
#define EPNUM_NET_OUT 0x02
|
#define EPNUM_NET_OUT 0x02
|
||||||
|
@ -120,6 +125,8 @@ uint8_t const * tud_descriptor_device_cb(void)
|
||||||
#define EPNUM_NET_IN 0x82
|
#define EPNUM_NET_IN 0x82
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CFG_TUD_ECM_RNDIS
|
||||||
|
|
||||||
static uint8_t const rndis_configuration[] =
|
static uint8_t const rndis_configuration[] =
|
||||||
{
|
{
|
||||||
// Config number (index+1), interface count, string index, total length, attribute, power in mA
|
// Config number (index+1), interface count, string index, total length, attribute, power in mA
|
||||||
|
@ -138,15 +145,31 @@ static uint8_t const ecm_configuration[] =
|
||||||
TUD_CDC_ECM_DESCRIPTOR(ITF_NUM_CDC, STRID_INTERFACE, STRID_MAC, EPNUM_NET_NOTIF, 64, EPNUM_NET_OUT, EPNUM_NET_IN, CFG_TUD_NET_ENDPOINT_SIZE, CFG_TUD_NET_MTU),
|
TUD_CDC_ECM_DESCRIPTOR(ITF_NUM_CDC, STRID_INTERFACE, STRID_MAC, EPNUM_NET_NOTIF, 64, EPNUM_NET_OUT, EPNUM_NET_IN, CFG_TUD_NET_ENDPOINT_SIZE, CFG_TUD_NET_MTU),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static uint8_t const ncm_configuration[] =
|
||||||
|
{
|
||||||
|
// Config number (index+1), interface count, string index, total length, attribute, power in mA
|
||||||
|
TUD_CONFIG_DESCRIPTOR(CONFIG_ID_NCM+1, ITF_NUM_TOTAL, 0, NCM_CONFIG_TOTAL_LEN, 0, 100),
|
||||||
|
|
||||||
|
// Interface number, description string index, MAC address string index, EP notification address and size, EP data address (out, in), and size, max segment size.
|
||||||
|
TUD_CDC_NCM_DESCRIPTOR(ITF_NUM_CDC, STRID_INTERFACE, STRID_MAC, EPNUM_NET_NOTIF, 64, EPNUM_NET_OUT, EPNUM_NET_IN, CFG_TUD_NET_ENDPOINT_SIZE, CFG_TUD_NET_MTU),
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
// Configuration array: RNDIS and CDC-ECM
|
// Configuration array: RNDIS and CDC-ECM
|
||||||
// - Windows only works with RNDIS
|
// - Windows only works with RNDIS
|
||||||
// - MacOS only works with CDC-ECM
|
// - MacOS only works with CDC-ECM
|
||||||
// - Linux will work on both
|
// - Linux will work on both
|
||||||
// Note index is Num-1x
|
|
||||||
static uint8_t const * const configuration_arr[2] =
|
static uint8_t const * const configuration_arr[2] =
|
||||||
{
|
{
|
||||||
|
#if CFG_TUD_ECM_RNDIS
|
||||||
[CONFIG_ID_RNDIS] = rndis_configuration,
|
[CONFIG_ID_RNDIS] = rndis_configuration,
|
||||||
[CONFIG_ID_ECM ] = ecm_configuration
|
[CONFIG_ID_ECM ] = ecm_configuration
|
||||||
|
#else
|
||||||
|
[CONFIG_ID_NCM ] = ncm_configuration
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
// Invoked when received GET CONFIGURATION DESCRIPTOR
|
// Invoked when received GET CONFIGURATION DESCRIPTOR
|
||||||
|
@ -208,7 +231,7 @@ uint16_t const* tud_descriptor_string_cb(uint8_t index, uint16_t langid)
|
||||||
const char* str = string_desc_arr[index];
|
const char* str = string_desc_arr[index];
|
||||||
|
|
||||||
// Cap at max char
|
// Cap at max char
|
||||||
chr_count = strlen(str);
|
chr_count = (uint8_t) strlen(str);
|
||||||
if ( chr_count > (TU_ARRAY_SIZE(_desc_str) - 1)) chr_count = TU_ARRAY_SIZE(_desc_str) - 1;
|
if ( chr_count > (TU_ARRAY_SIZE(_desc_str) - 1)) chr_count = TU_ARRAY_SIZE(_desc_str) - 1;
|
||||||
|
|
||||||
// Convert ASCII string into UTF-16
|
// Convert ASCII string into UTF-16
|
||||||
|
@ -219,7 +242,7 @@ uint16_t const* tud_descriptor_string_cb(uint8_t index, uint16_t langid)
|
||||||
}
|
}
|
||||||
|
|
||||||
// first byte is length (including header), second byte is string type
|
// first byte is length (including header), second byte is string type
|
||||||
_desc_str[0] = (TUSB_DESC_STRING << 8 ) | (2*chr_count + 2);
|
_desc_str[0] = (uint16_t) ((TUSB_DESC_STRING << 8 ) | (2*chr_count + 2));
|
||||||
|
|
||||||
return _desc_str;
|
return _desc_str;
|
||||||
}
|
}
|
|
@ -74,7 +74,7 @@ static err_t linkoutput_fn(struct netif *netif, struct pbuf *p) {
|
||||||
if (!tud_ready()) return ERR_USE;
|
if (!tud_ready()) return ERR_USE;
|
||||||
|
|
||||||
/* if the network driver can accept another packet, we make it happen */
|
/* if the network driver can accept another packet, we make it happen */
|
||||||
if (tud_network_can_xmit()) {
|
if (tud_network_can_xmit(p->tot_len)) {
|
||||||
tud_network_xmit(p, 0 /* unused for this example */);
|
tud_network_xmit(p, 0 /* unused for this example */);
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
2
pico-sdk
2
pico-sdk
|
@ -1 +1 @@
|
||||||
Subproject commit ec9601c151ccce1088100396c5aaa79db25d40cd
|
Subproject commit 8d1c8b9cc369ecd31b6b88984ba660f66d914b4e
|
Ładowanie…
Reference in New Issue