From 987f8bc9490c86a395e6ea4a96fcf544f6b9247d Mon Sep 17 00:00:00 2001 From: cpq Date: Sat, 21 Jan 2023 13:42:25 +0000 Subject: [PATCH] Prep for msc --- .../pico-rndis-dashboard/CMakeLists.txt | 65 +++------- examples/rp2040/pico-rndis-dashboard/main.c | 26 ++-- .../rp2040/pico-rndis-dashboard/mongoose.c | 1 - .../rp2040/pico-rndis-dashboard/mongoose.h | 1 - examples/rp2040/pico-rndis-dashboard/net.c | 1 - .../rp2040/pico-rndis-dashboard/packed_fs.c | 1 - .../rp2040/pico-rndis-dashboard/tusb_config.h | 118 ++---------------- 7 files changed, 43 insertions(+), 170 deletions(-) delete mode 120000 examples/rp2040/pico-rndis-dashboard/mongoose.c delete mode 120000 examples/rp2040/pico-rndis-dashboard/mongoose.h delete mode 120000 examples/rp2040/pico-rndis-dashboard/net.c delete mode 120000 examples/rp2040/pico-rndis-dashboard/packed_fs.c diff --git a/examples/rp2040/pico-rndis-dashboard/CMakeLists.txt b/examples/rp2040/pico-rndis-dashboard/CMakeLists.txt index 49d6cfd1..a5d39ce5 100644 --- a/examples/rp2040/pico-rndis-dashboard/CMakeLists.txt +++ b/examples/rp2040/pico-rndis-dashboard/CMakeLists.txt @@ -1,55 +1,30 @@ cmake_minimum_required(VERSION 3.13) include(pico-sdk/pico_sdk_init.cmake) -project(pico_usb_rndis) - -# initialize the Pico SDK +project(firmware) pico_sdk_init() -add_compile_options(-Wall - -Wno-format # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int - -Wno-unused-function # we have some for the docs that aren't called - -Wno-maybe-uninitialized - ) - -add_compile_definitions( - MIP_DEBUG=1 - MG_ENABLE_PACKED_FS=1 - MG_ENABLE_FILE=0 - MG_ENABLE_MIP=1 - DISABLE_ROUTING - ) - -if (TARGET tinyusb_device) - add_executable(firmware - main.c - mongoose.c - net.c - packed_fs.c - usb_descriptors.c - pico-sdk/lib/tinyusb/lib/networking/rndis_reports.c - ) + main.c + ../../../mongoose.c + ../../device-dashboard/net.c + ../../device-dashboard/packed_fs.c + pico-sdk//lib/tinyusb/examples/device/net_lwip_webserver/src/usb_descriptors.c + pico-sdk/lib/tinyusb/lib/networking/rndis_reports.c) -# Make sure TinyUSB can find tusb_config.h and workaround SDK include paths target_include_directories(firmware PUBLIC - ${CMAKE_CURRENT_LIST_DIR} - ${CMAKE_CURRENT_LIST_DIR}/pico-sdk/lib/tinyusb/lib/networking - ) + . + ../../.. + pico-sdk/lib/tinyusb/lib/networking) -# enable uart output -pico_enable_stdio_usb(firmware 0) -pico_enable_stdio_uart(firmware 1) - -else() - message(WARNING "not building because TinyUSB submodule is not initialized in the SDK") -endif() - -target_link_libraries(firmware PUBLIC - pico_stdlib - tinyusb_device - tinyusb_board - ) - -# create map/bin/hex file etc. +target_link_libraries(firmware pico_stdlib hardware_spi tinyusb_device) pico_add_extra_outputs(firmware) + +pico_enable_stdio_usb(firmware 0) # Route stdio +pico_enable_stdio_uart(firmware 1) # to the UART + +# Mongoose build flags +add_definitions(-DMG_ENABLE_MIP=1) +add_definitions(-DMG_ENABLE_PACKED_FS=1) +add_definitions(-DMG_ENABLE_FILE=0) +add_definitions(-DDISABLE_ROUTING=1) diff --git a/examples/rp2040/pico-rndis-dashboard/main.c b/examples/rp2040/pico-rndis-dashboard/main.c index 8b7f7feb..9650040b 100644 --- a/examples/rp2040/pico-rndis-dashboard/main.c +++ b/examples/rp2040/pico-rndis-dashboard/main.c @@ -2,8 +2,8 @@ // All rights reserved #include "mongoose.h" -#include "tusb.h" #include "pico/stdlib.h" +#include "tusb.h" static struct mip_if *s_ifp; @@ -22,8 +22,7 @@ bool tud_network_recv_cb(const uint8_t *buf, uint16_t len) { return true; } -void tud_network_init_cb(void) { -} +void tud_network_init_cb(void) {} uint16_t tud_network_xmit_cb(uint8_t *dst, void *ref, uint16_t arg) { // MG_INFO(("SEND %hu", arg)); @@ -44,15 +43,17 @@ static bool usb_up(struct mip_if *ifp) { return tud_inited() && tud_ready() && tud_connected(); } -void device_dashboard_fn(struct mg_connection *, int, void *, void *); +static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_dta) { + if (ev == MG_EV_HTTP_MSG) return mg_http_reply(c, 200, "", "ok\n"); +} int main(void) { - gpio_init(PICO_DEFAULT_LED_PIN); - gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); - stdio_init_all(); + gpio_init(PICO_DEFAULT_LED_PIN); + gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); + stdio_init_all(); - struct mg_mgr mgr; // Initialise Mongoose event manager - mg_mgr_init(&mgr); // and attach it to the MIP interface + struct mg_mgr mgr; // Initialise Mongoose event manager + mg_mgr_init(&mgr); // and attach it to the MIP interface mg_timer_add(&mgr, 500, MG_TIMER_REPEAT, blink_cb, &mgr); struct mip_driver driver = {.tx = usb_tx, .rx = mip_driver_rx, .up = usb_up}; @@ -64,10 +65,13 @@ int main(void) { .queue.len = 4096}; s_ifp = &mif; mip_init(&mgr, &mif); - mg_http_listen(&mgr, "tcp://0.0.0.0:80", device_dashboard_fn, &mgr); - tusb_init(); + MG_INFO(("Initialising application...")); + extern void device_dashboard_fn(struct mg_connection *, int, void *, void *); + mg_http_listen(&mgr, "http://0.0.0.0", device_dashboard_fn, &mgr); + + MG_INFO(("Starting event loop")); for (;;) { mg_mgr_poll(&mgr, 0); tud_task(); diff --git a/examples/rp2040/pico-rndis-dashboard/mongoose.c b/examples/rp2040/pico-rndis-dashboard/mongoose.c deleted file mode 120000 index 5e522bbc..00000000 --- a/examples/rp2040/pico-rndis-dashboard/mongoose.c +++ /dev/null @@ -1 +0,0 @@ -../../../mongoose.c \ No newline at end of file diff --git a/examples/rp2040/pico-rndis-dashboard/mongoose.h b/examples/rp2040/pico-rndis-dashboard/mongoose.h deleted file mode 120000 index ee4ac823..00000000 --- a/examples/rp2040/pico-rndis-dashboard/mongoose.h +++ /dev/null @@ -1 +0,0 @@ -../../../mongoose.h \ No newline at end of file diff --git a/examples/rp2040/pico-rndis-dashboard/net.c b/examples/rp2040/pico-rndis-dashboard/net.c deleted file mode 120000 index fe0e6f06..00000000 --- a/examples/rp2040/pico-rndis-dashboard/net.c +++ /dev/null @@ -1 +0,0 @@ -../../device-dashboard/net.c \ No newline at end of file diff --git a/examples/rp2040/pico-rndis-dashboard/packed_fs.c b/examples/rp2040/pico-rndis-dashboard/packed_fs.c deleted file mode 120000 index e06bf092..00000000 --- a/examples/rp2040/pico-rndis-dashboard/packed_fs.c +++ /dev/null @@ -1 +0,0 @@ -../../device-dashboard/packed_fs.c \ No newline at end of file diff --git a/examples/rp2040/pico-rndis-dashboard/tusb_config.h b/examples/rp2040/pico-rndis-dashboard/tusb_config.h index 6b7b4917..5fc52c53 100644 --- a/examples/rp2040/pico-rndis-dashboard/tusb_config.h +++ b/examples/rp2040/pico-rndis-dashboard/tusb_config.h @@ -1,113 +1,11 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2019 Ha Thach (tinyusb.org) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ +#pragma once -#ifndef _TUSB_CONFIG_H_ -#define _TUSB_CONFIG_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -//-------------------------------------------------------------------- -// COMMON CONFIGURATION -//-------------------------------------------------------------------- - -// defined by board.mk -#ifndef CFG_TUSB_MCU - #error CFG_TUSB_MCU must be defined -#endif - -// RHPort number used for device can be defined by board.mk, default to port 0 -#ifndef BOARD_DEVICE_RHPORT_NUM - #define BOARD_DEVICE_RHPORT_NUM 0 -#endif - -// RHPort max operational speed can defined by board.mk -// Default to Highspeed for MCU with internal HighSpeed PHY (can be port specific), otherwise FullSpeed -#ifndef BOARD_DEVICE_RHPORT_SPEED - #if (CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX || \ - CFG_TUSB_MCU == OPT_MCU_NUC505 || CFG_TUSB_MCU == OPT_MCU_CXD56 || CFG_TUSB_MCU == OPT_MCU_SAMX7X) - #define BOARD_DEVICE_RHPORT_SPEED OPT_MODE_HIGH_SPEED - #else - #define BOARD_DEVICE_RHPORT_SPEED OPT_MODE_FULL_SPEED - #endif -#endif - -// Device mode with rhport and speed defined by board.mk -#if BOARD_DEVICE_RHPORT_NUM == 0 - #define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED) -#elif BOARD_DEVICE_RHPORT_NUM == 1 - #define CFG_TUSB_RHPORT1_MODE (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED) -#else - #error "Incorrect RHPort configuration" -#endif - -#ifndef CFG_TUSB_OS -#define CFG_TUSB_OS OPT_OS_NONE -#endif - -// CFG_TUSB_DEBUG is defined by compiler in DEBUG build -// #define CFG_TUSB_DEBUG 0 - -/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment. - * Tinyusb use follows macros to declare transferring memory so that they can be put - * into those specific section. - * e.g - * - CFG_TUSB_MEM SECTION : __attribute__ (( section(".usb_ram") )) - * - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4))) - */ -#ifndef CFG_TUSB_MEM_SECTION -#define CFG_TUSB_MEM_SECTION -#endif - -#ifndef CFG_TUSB_MEM_ALIGN -#define CFG_TUSB_MEM_ALIGN __attribute__ ((aligned(4))) -#endif - -//-------------------------------------------------------------------- -// DEVICE CONFIGURATION -//-------------------------------------------------------------------- - -#ifndef CFG_TUD_ENDPOINT0_SIZE -#define CFG_TUD_ENDPOINT0_SIZE 64 -#endif - -//------------- CLASS -------------// -#define CFG_TUD_HID 0 -#define CFG_TUD_CDC 0 -#define CFG_TUD_MSC 0 -#define CFG_TUD_MIDI 0 -#define CFG_TUD_VENDOR 0 #define CFG_TUD_ECM_RNDIS 1 -#define CFG_TUD_NCM 0 - -// HID buffer size Should be sufficient to hold ID (if any) + Data -#define CFG_TUD_HID_EP_BUFSIZE 16 - -#ifdef __cplusplus - } +#if 0 +#define CFG_TUD_MSC 1 // This enables mass storage +#define CFG_TUD_MSC_EP_BUFSIZE 512 // Also Add msc_disk.c and descritprs #endif - -#endif /* _TUSB_CONFIG_H_ */ +#define CFG_TUD_NCM 0 +#define BOARD_DEVICE_RHPORT_NUM 0 +#define BOARD_DEVICE_RHPORT_SPEED OPT_MODE_FULL_SPEED +#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED)