7 #ifndef _PICO_UTIL_BUFFER_H 
    8 #define _PICO_UTIL_BUFFER_H 
   10 #include "pico/types.h" 
   18 #ifdef PICO_BUFFER_USB_ALLOC_HACK 
   19 #include "hardware/address_mapped.h" 
   46 #ifdef PICO_BUFFER_USB_ALLOC_HACK 
   47 #if !defined(USB_DPRAM_MAX) || (USB_DPRAM_MAX > 0) 
   48 #include "hardware/structs/usb.h" 
   50 #define USB_DPRAM_SIZE 4096 
   54 inline static bool pico_buffer_alloc_in_place(
mem_buffer_t *buffer, 
size_t size) {
 
   55 #ifdef PICO_BUFFER_USB_ALLOC_HACK 
   56     extern uint8_t *usb_ram_alloc_ptr;
 
   57     if ((usb_ram_alloc_ptr + size) <= (uint8_t *)USBCTRL_DPRAM_BASE + USB_DPRAM_SIZE) {
 
   58         buffer->bytes = usb_ram_alloc_ptr;
 
   61         printf(
"balloc %d %p->%p\n", size, buffer->bytes, ((uint8_t *)buffer->bytes) + size);
 
   63         usb_ram_alloc_ptr += size;
 
   66 #endif    // inline for now 
   67     buffer->bytes = (uint8_t *) calloc(1, size);
 
   76 inline static mem_buffer_t *pico_buffer_wrap(uint8_t *bytes, 
size_t size) {
 
   79         buffer->bytes = bytes;
 
   85 inline static mem_buffer_t *pico_buffer_alloc(
size_t size) {
 
   88         if (!pico_buffer_alloc_in_place(b, size)) {