mirror of
https://github.com/cesanta/mongoose.git
synced 2025-01-10 22:27:49 +08:00
165 lines
3.8 KiB
C
165 lines
3.8 KiB
C
/*
|
|
* Copyright (c) 2022 Raspberry Pi (Trading) Ltd.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
// This header is included by cyw43_driver to setup its environment
|
|
|
|
// THIS FILE HAS BEEN EDITED, ORIGINAL FILE IN PICO-SDK
|
|
|
|
#ifndef _CYW43_CONFIGPORT_H
|
|
#define _CYW43_CONFIGPORT_H
|
|
|
|
#include "boards/pico_w.h"
|
|
#include "hardware/gpio.h"
|
|
#include "pico/error.h"
|
|
#include "pico/time.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Use our own TCP/IP stack
|
|
#define CYW43_LWIP 0
|
|
|
|
#ifndef CYW43_HOST_NAME
|
|
#define CYW43_HOST_NAME "Mongoose"
|
|
#endif
|
|
|
|
#ifndef CYW43_GPIO
|
|
#define CYW43_GPIO 1
|
|
#endif
|
|
|
|
#ifndef CYW43_LOGIC_DEBUG
|
|
#define CYW43_LOGIC_DEBUG 0
|
|
#endif
|
|
|
|
#ifndef CYW43_USE_OTP_MAC
|
|
#define CYW43_USE_OTP_MAC 1
|
|
#endif
|
|
|
|
#ifndef CYW43_NO_NETUTILS
|
|
#define CYW43_NO_NETUTILS 1
|
|
#endif
|
|
|
|
#ifndef CYW43_IOCTL_TIMEOUT_US
|
|
#define CYW43_IOCTL_TIMEOUT_US 1000000
|
|
#endif
|
|
|
|
#ifndef CYW43_USE_STATS
|
|
#define CYW43_USE_STATS 0
|
|
#endif
|
|
|
|
// todo should this be user settable?
|
|
#ifndef CYW43_HAL_MAC_WLAN0
|
|
#define CYW43_HAL_MAC_WLAN0 0
|
|
#endif
|
|
|
|
#ifndef STATIC
|
|
#define STATIC static
|
|
#endif
|
|
|
|
#ifndef CYW43_USE_SPI
|
|
#define CYW43_USE_SPI 1
|
|
#endif
|
|
|
|
#ifndef CYW43_SPI_PIO
|
|
#define CYW43_SPI_PIO 1
|
|
#endif
|
|
|
|
#ifndef CYW43_CHIPSET_FIRMWARE_INCLUDE_FILE
|
|
#if CYW43_ENABLE_BLUETOOTH
|
|
#define CYW43_CHIPSET_FIRMWARE_INCLUDE_FILE "wb43439A0_7_95_49_00_combined.h"
|
|
#else
|
|
#define CYW43_CHIPSET_FIRMWARE_INCLUDE_FILE "w43439A0_7_95_49_00_combined.h"
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef CYW43_WIFI_NVRAM_INCLUDE_FILE
|
|
#define CYW43_WIFI_NVRAM_INCLUDE_FILE "wifi_nvram_43439.h"
|
|
#endif
|
|
|
|
// Note, these are negated, because cyw43_driver negates them before returning!
|
|
#define CYW43_EPERM (-PICO_ERROR_NOT_PERMITTED) // Operation not permitted
|
|
#define CYW43_EIO (-PICO_ERROR_IO) // I/O error
|
|
#define CYW43_EINVAL (-PICO_ERROR_INVALID_ARG) // Invalid argument
|
|
#define CYW43_ETIMEDOUT (-PICO_ERROR_TIMEOUT) // Connection timed out
|
|
|
|
#define CYW43_NUM_GPIOS CYW43_WL_GPIO_COUNT
|
|
|
|
#define cyw43_hal_pin_obj_t uint
|
|
|
|
// get the number of elements in a fixed-size array
|
|
#define CYW43_ARRAY_SIZE(a) count_of(a)
|
|
|
|
static inline uint32_t cyw43_hal_ticks_us(void) {
|
|
return time_us_32();
|
|
}
|
|
|
|
static inline uint32_t cyw43_hal_ticks_ms(void) {
|
|
return to_ms_since_boot(get_absolute_time());
|
|
}
|
|
|
|
static inline int cyw43_hal_pin_read(cyw43_hal_pin_obj_t pin) {
|
|
return gpio_get(pin);
|
|
}
|
|
|
|
static inline void cyw43_hal_pin_low(cyw43_hal_pin_obj_t pin) {
|
|
gpio_clr_mask(1 << pin);
|
|
}
|
|
|
|
static inline void cyw43_hal_pin_high(cyw43_hal_pin_obj_t pin) {
|
|
gpio_set_mask(1 << pin);
|
|
}
|
|
|
|
#define CYW43_HAL_PIN_MODE_INPUT (GPIO_IN)
|
|
#define CYW43_HAL_PIN_MODE_OUTPUT (GPIO_OUT)
|
|
|
|
#define CYW43_HAL_PIN_PULL_NONE (0)
|
|
#define CYW43_HAL_PIN_PULL_UP (1)
|
|
#define CYW43_HAL_PIN_PULL_DOWN (2)
|
|
|
|
static inline void cyw43_hal_pin_config(cyw43_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, __unused uint32_t alt) {
|
|
assert((mode == CYW43_HAL_PIN_MODE_INPUT || mode == CYW43_HAL_PIN_MODE_OUTPUT) && alt == 0);
|
|
gpio_set_dir(pin, mode);
|
|
gpio_set_pulls(pin, pull == CYW43_HAL_PIN_PULL_UP, pull == CYW43_HAL_PIN_PULL_DOWN);
|
|
}
|
|
|
|
void cyw43_hal_get_mac(int idx, uint8_t buf[6]);
|
|
|
|
void cyw43_hal_generate_laa_mac(int idx, uint8_t buf[6]);
|
|
|
|
|
|
// documentation is king
|
|
#define CYW43_THREAD_ENTER
|
|
#define CYW43_THREAD_EXIT
|
|
#define CYW43_THREAD_LOCK_CHECK
|
|
|
|
// ??? and the ';' at the end is needed
|
|
#define CYW43_SDPCM_SEND_COMMON_WAIT (void) 0;
|
|
#define CYW43_DO_IOCTL_WAIT (void) 0;
|
|
|
|
#define cyw43_delay_ms sleep_ms
|
|
#define cyw43_delay_us sleep_us
|
|
static inline void cyw43_schedule_internal_poll_dispatch(void (*func)(void)){
|
|
(void)func; // do nothing, we'll call it anyway
|
|
}
|
|
|
|
#define CYW43_POST_POLL_HOOK
|
|
|
|
// Allow malloc and free to be changed
|
|
#ifndef cyw43_malloc
|
|
#define cyw43_malloc malloc
|
|
#endif
|
|
#ifndef cyw43_free
|
|
#define cyw43_free free
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif
|