Initial Release
This commit is contained in:
40
src/common/pico_base/CMakeLists.txt
Normal file
40
src/common/pico_base/CMakeLists.txt
Normal file
@ -0,0 +1,40 @@
|
||||
if (NOT TARGET pico_base_headers)
|
||||
# build the auto gen config headers
|
||||
|
||||
set(header_content "// AUTOGENERATED FROM PICO_CONFIG_HEADER_FILES and then PICO_<PLATFORM>_CONFIG_HEADER_FILES\n// DO NOT EDIT!\n")
|
||||
string(TOUPPER ${PICO_PLATFORM} PICO_PLATFORM_UPPER)
|
||||
|
||||
macro(add_header_content_from_var VAR)
|
||||
set(header_content "${header_content}\n\n// based on ${VAR}:\n")
|
||||
foreach(var IN LISTS ${VAR})
|
||||
set(header_content "${header_content}\n#include \"${var}\"")
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_CONFIG_HEADER_FILES, List of extra header files to include from pico/config.h for all platforms, type=list, default="", group=pico_base
|
||||
add_header_content_from_var(PICO_CONFIG_HEADER_FILES)
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_CONFIG_RP2040_HEADER_FILES, List of extra header files to include from pico/config.h for rp2040 platform, type=list, default="", group=pico_base
|
||||
# PICO_CMAKE_CONFIG: PICO_CONFIG_HOST_HEADER_FILES, List of extra header files to include from pico/config.h for host platform, type=list, default="", group=pico_base
|
||||
add_header_content_from_var(PICO_${PICO_PLATFORM_UPPER}_CONFIG_HEADER_FILES)
|
||||
|
||||
file(GENERATE
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/generated/pico_base/pico/config_autogen.h
|
||||
CONTENT "${header_content}"
|
||||
)
|
||||
|
||||
configure_file( include/pico/version.h.in ${CMAKE_BINARY_DIR}/generated/pico_base/pico/version.h)
|
||||
|
||||
add_library(pico_base_headers INTERFACE)
|
||||
target_include_directories(pico_base_headers INTERFACE include ${CMAKE_BINARY_DIR}/generated/pico_base)
|
||||
|
||||
foreach(DIR IN LISTS PICO_INCLUDE_DIRS)
|
||||
target_include_directories(pico_base_headers INTERFACE ${DIR})
|
||||
endforeach()
|
||||
|
||||
# PICO_BUILD_DEFINE: PICO_BOARD, Name of board, type=string, default=CMake PICO_BOARD variable, group=pico_base
|
||||
target_compile_definitions(pico_base_headers INTERFACE
|
||||
PICO_BOARD="${PICO_BOARD}")
|
||||
|
||||
target_link_libraries(pico_base_headers INTERFACE pico_platform_headers)
|
||||
endif()
|
23
src/common/pico_base/include/pico.h
Normal file
23
src/common/pico_base/include/pico.h
Normal file
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef PICO_H_
|
||||
#define PICO_H_
|
||||
|
||||
/** \file pico.h
|
||||
* \defgroup pico_base pico_base
|
||||
*
|
||||
* Core types and macros for the Pico SDK. This header is intended to be included by all source code
|
||||
*/
|
||||
|
||||
#include "pico/types.h"
|
||||
#include "pico/version.h"
|
||||
#include "pico/config.h"
|
||||
#include "pico/platform.h"
|
||||
#include "pico/assert.h"
|
||||
#include "pico/error.h"
|
||||
|
||||
#endif
|
51
src/common/pico_base/include/pico/assert.h
Normal file
51
src/common/pico_base/include/pico/assert.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _PICO_ASSERT_H
|
||||
#define _PICO_ASSERT_H
|
||||
|
||||
#include "pico/types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <cassert>
|
||||
|
||||
extern "C" {
|
||||
#else
|
||||
#include <assert.h>
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PARAM_ASSERTIONS_ENABLE_ALL, Global assert enable, type=bool, default=0, group=pico_base
|
||||
// PICO_CONFIG: PARAM_ASSERTIONS_DISABLE_ALL, Global assert disable, type=bool, default=0, group=pico_base
|
||||
|
||||
#ifndef PARAM_ASSERTIONS_ENABLE_ALL
|
||||
#define PARAM_ASSERTIONS_ENABLE_ALL 0
|
||||
#endif
|
||||
|
||||
#ifndef PARAM_ASSERTIONS_DISABLE_ALL
|
||||
#define PARAM_ASSERTIONS_DISABLE_ALL 0
|
||||
#endif
|
||||
|
||||
#define PARAM_ASSERTIONS_ENABLED(x) ((PARAM_ASSERTIONS_ENABLED_ ## x || PARAM_ASSERTIONS_ENABLE_ALL) && !PARAM_ASSERTIONS_DISABLE_ALL)
|
||||
|
||||
#define invalid_params_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) assert(!(test));})
|
||||
#define valid_params_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) assert(test);})
|
||||
#define hard_assert_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) hard_assert(!(test));})
|
||||
|
||||
#ifdef NDEBUG
|
||||
extern void hard_assertion_failure();
|
||||
static inline void hard_assert(bool condition, ...) {
|
||||
if (!condition)
|
||||
hard_assertion_failure();
|
||||
}
|
||||
#else
|
||||
#define hard_assert assert
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
21
src/common/pico_base/include/pico/config.h
Normal file
21
src/common/pico_base/include/pico/config.h
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef PICO_CONFIG_H_
|
||||
#define PICO_CONFIG_H_
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// OR USE #ifndef __ASSEMBLER__ guards
|
||||
// -------------
|
||||
|
||||
// PICO_CONFIG_HEADER_FILES and then PICO_SDK_<PLATFORM>_CONFIG_INCLUDE_FILES
|
||||
// entries are dumped in order at build time into this generated header
|
||||
|
||||
#include "pico/config_autogen.h"
|
||||
|
||||
#endif
|
21
src/common/pico_base/include/pico/error.h
Normal file
21
src/common/pico_base/include/pico/error.h
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _PICO_ERROR_H
|
||||
#define _PICO_ERROR_H
|
||||
|
||||
/*!
|
||||
* Common return codes from pico_sdk methods that return a status
|
||||
*/
|
||||
enum {
|
||||
PICO_OK = 0,
|
||||
PICO_ERROR_NONE = 0,
|
||||
PICO_ERROR_TIMEOUT = -1,
|
||||
PICO_ERROR_GENERIC = -2,
|
||||
PICO_ERROR_NO_DATA = -3,
|
||||
};
|
||||
|
||||
#endif
|
79
src/common/pico_base/include/pico/types.h
Normal file
79
src/common/pico_base/include/pico/types.h
Normal file
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _PICO_TYPES_H
|
||||
#define _PICO_TYPES_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
typedef unsigned int uint;
|
||||
|
||||
#ifdef NDEBUG
|
||||
/*! \typedef absolute_time_t
|
||||
\brief An opaque 64 bit timestamp in microseconds
|
||||
|
||||
The type is used instead of a raw uint64_t to prevent accidentally passing relative times or times in the wrong
|
||||
time units where an absolute time is required. It is equivalent to uint64_t in release builds.
|
||||
|
||||
\see to_us_since_boot
|
||||
\see update_us_since_boot
|
||||
*/
|
||||
typedef uint64_t absolute_time_t;
|
||||
|
||||
/*! fn to_us_since_boot
|
||||
* \brief convert an absolute_time_t into a number of microseconds since boot.
|
||||
* \param t the number of microseconds since boot
|
||||
* \return an absolute_time_t value equivalent to t
|
||||
*/
|
||||
static inline uint64_t to_us_since_boot(absolute_time_t t) {
|
||||
return t;
|
||||
}
|
||||
|
||||
/*! fn update_us_since_boot
|
||||
* \brief update an absolute_time_t value to represent a given number of microseconds since boot
|
||||
* \param t the absolute time value to update
|
||||
* \param us_since_boot the number of microseconds since boot to represent
|
||||
*/
|
||||
static inline void update_us_since_boot(absolute_time_t *t, uint64_t us_since_boot) {
|
||||
*t = us_since_boot;
|
||||
}
|
||||
|
||||
#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = value
|
||||
#else
|
||||
typedef struct {
|
||||
uint64_t _private_us_since_boot;
|
||||
} absolute_time_t;
|
||||
|
||||
static inline uint64_t to_us_since_boot(absolute_time_t t) {
|
||||
return t._private_us_since_boot;
|
||||
}
|
||||
|
||||
static inline void update_us_since_boot(absolute_time_t *t, uint64_t us_since_boot) {
|
||||
t->_private_us_since_boot = us_since_boot;
|
||||
}
|
||||
#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = {value}
|
||||
#endif
|
||||
|
||||
/** \struct datetime_t
|
||||
* \ingroup util_datetime
|
||||
* \brief Structure containing date and time information
|
||||
*
|
||||
* When setting an RTC alarm, set a field to -1 tells
|
||||
* the RTC to not match on this field
|
||||
*/
|
||||
typedef struct {
|
||||
int16_t year; ///< 0..4095
|
||||
int8_t month; ///< 1..12, 1 is January
|
||||
int8_t day; ///< 1..28,29,30,31 depending on month
|
||||
int8_t dotw; ///< 0..6, 0 is Sunday
|
||||
int8_t hour; ///< 0..23
|
||||
int8_t min; ///< 0..59
|
||||
int8_t sec; ///< 0..59
|
||||
} datetime_t;
|
||||
|
||||
#endif
|
19
src/common/pico_base/include/pico/version.h.in
Normal file
19
src/common/pico_base/include/pico/version.h.in
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// ---------------------------------------
|
||||
// THIS FILE IS AUTOGENERATED; DO NOT EDIT
|
||||
// ---------------------------------------
|
||||
|
||||
#ifndef _PICO_VERSION_H
|
||||
#define _PICO_VERSION_H
|
||||
|
||||
#define PICO_SDK_VERSION_MAJOR ${PICO_SDK_VERSION_MAJOR}
|
||||
#define PICO_SDK_VERSION_MINOR ${PICO_SDK_VERSION_MINOR}
|
||||
#define PICO_SDK_VERSION_REVISION ${PICO_SDK_VERSION_REVISION}
|
||||
#define PICO_SDK_VERSION_STRING "${PICO_SDK_VERSION_STRING}"
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user