common cmake files moved to example_common
This commit is contained in:
parent
ff569dd02c
commit
c564fa37fd
45
cmake/BuildType.cmake
Normal file
45
cmake/BuildType.cmake
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
function(set_build_type)
|
||||||
|
|
||||||
|
message(STATUS "Used build generator: ${CMAKE_GENERATOR}")
|
||||||
|
|
||||||
|
# Set a default build type if none was specified
|
||||||
|
set(DEFAULT_BUILD_TYPE "RelWithDebInfo")
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||||
|
set(DEFAULT_BUILD_TYPE "Debug")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
|
message(STATUS
|
||||||
|
"Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified."
|
||||||
|
)
|
||||||
|
set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE
|
||||||
|
STRING "Choose the type of build." FORCE
|
||||||
|
)
|
||||||
|
# Set the possible values of build type for cmake-gui
|
||||||
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
|
||||||
|
"Debug" "Release" "MinSizeRel" "RelWithDebInfo"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
||||||
|
message(STATUS
|
||||||
|
"Building Debug application with flags: ${CMAKE_C_FLAGS_DEBUG}"
|
||||||
|
)
|
||||||
|
elseif(${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo")
|
||||||
|
message(STATUS
|
||||||
|
"Building Release (Debug) application with "
|
||||||
|
"flags: ${CMAKE_C_FLAGS_RELWITHDEBINFO}"
|
||||||
|
)
|
||||||
|
elseif(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel")
|
||||||
|
message(STATUS
|
||||||
|
"Building Release (Size) application with "
|
||||||
|
"flags: ${CMAKE_C_FLAGS_MINSIZEREL}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message(STATUS
|
||||||
|
"Building Release (Speed) application with "
|
||||||
|
"flags: ${CMAKE_C_FLAGS_RELEASE}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction()
|
42
cmake/common.cmake
Normal file
42
cmake/common.cmake
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
function(get_common_build_flags TGT_NAME)
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
set(COMMON_COMPILE_OPTS
|
||||||
|
-ffunction-sections
|
||||||
|
-fdata-sections
|
||||||
|
PARENT_SCOPE)
|
||||||
|
set(COMMON_LINK_OPTS
|
||||||
|
-Wl,--gc-sections
|
||||||
|
-Wl,-Map=${TARGET_NAME}.map
|
||||||
|
PARENT_SCOPE)
|
||||||
|
set(COMMON_WARNING_FLAGS
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wimplicit-fallthrough=1
|
||||||
|
-Wno-unused-parameter
|
||||||
|
-Wno-psabi
|
||||||
|
-Wduplicated-cond # check for duplicate conditions
|
||||||
|
-Wduplicated-branches # check for duplicate branches
|
||||||
|
-Wlogical-op # Search for bitwise operations instead of logical
|
||||||
|
-Wnull-dereference # Search for NULL dereference
|
||||||
|
-Wundef # Warn if undefind marcos are used
|
||||||
|
-Wformat=2 # Format string problem detection
|
||||||
|
-Wformat-overflow=2 # Formatting issues in printf
|
||||||
|
-Wformat-truncation=2 # Formatting issues in printf
|
||||||
|
-Wformat-security # Search for dangerous printf operations
|
||||||
|
-Wstrict-overflow=3 # Warn if integer overflows might happen
|
||||||
|
-Warray-bounds=2 # Some array bounds violations will be found
|
||||||
|
-Wshift-overflow=2 # Search for bit left shift overflows (<c++14)
|
||||||
|
-Wcast-qual # Warn if the constness is cast away
|
||||||
|
-Wstringop-overflow=4
|
||||||
|
# -Wstack-protector # Emits a few false positives for low level access
|
||||||
|
# -Wconversion # Creates many false positives -Warith-conversion # Use
|
||||||
|
# with Wconversion to find more implicit conversions -fanalyzer # Should
|
||||||
|
# be used to look through problems
|
||||||
|
PARENT_SCOPE)
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||||
|
add_compile_options(/permissive- /d2SSAOptimizer-)
|
||||||
|
# To avoid nameclashes with min and max macro
|
||||||
|
add_compile_definitions(NOMINMAX)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction()
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
//! Specify the debug output verbose level
|
//! Specify the debug output verbose level
|
||||||
#define OBSW_VERBOSE_LEVEL 1
|
#define OBSW_VERBOSE_LEVEL 1
|
||||||
|
#define OBSW_TCPIP_UDP_WIRETAPPING 0
|
||||||
#define OBSW_PRINT_MISSED_DEADLINES 0
|
#define OBSW_PRINT_MISSED_DEADLINES 0
|
||||||
|
|
||||||
//! Perform internal unit testd at application startup
|
//! Perform internal unit testd at application startup
|
||||||
|
@ -21,7 +21,7 @@ ReturnValue_t STM32TestTask::initialize() {
|
|||||||
|
|
||||||
ReturnValue_t STM32TestTask::performPeriodicAction() {
|
ReturnValue_t STM32TestTask::performPeriodicAction() {
|
||||||
if (blinkyLed) {
|
if (blinkyLed) {
|
||||||
#if OBSW_ETHERNET_USE_LEDS == 0
|
#if OBSW_ETHERNET_USE_LED1_LED2 == 0
|
||||||
BSP_LED_Toggle(LED1);
|
BSP_LED_Toggle(LED1);
|
||||||
BSP_LED_Toggle(LED2);
|
BSP_LED_Toggle(LED2);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
#include "TmTcLwIpUdpBridge.h"
|
#include "TmTcLwIpUdpBridge.h"
|
||||||
|
|
||||||
#include <OBSWConfig.h>
|
|
||||||
#include <fsfw/ipc/MutexGuard.h>
|
#include <fsfw/ipc/MutexGuard.h>
|
||||||
#include <fsfw/serialize/EndianConverter.h>
|
#include <fsfw/serialize/EndianConverter.h>
|
||||||
#include <fsfw/serviceinterface/ServiceInterface.h>
|
#include <fsfw/serviceinterface/ServiceInterface.h>
|
||||||
|
|
||||||
#include "app_ethernet.h"
|
#include "app_ethernet.h"
|
||||||
#include "ethernetif.h"
|
|
||||||
#include "udp_config.h"
|
#include "udp_config.h"
|
||||||
|
|
||||||
TmTcLwIpUdpBridge::TmTcLwIpUdpBridge(object_id_t objectId,
|
TmTcLwIpUdpBridge::TmTcLwIpUdpBridge(object_id_t objectId,
|
||||||
@ -56,7 +55,7 @@ ReturnValue_t TmTcLwIpUdpBridge::udp_server_init() {
|
|||||||
ReturnValue_t TmTcLwIpUdpBridge::performOperation(uint8_t operationCode) {
|
ReturnValue_t TmTcLwIpUdpBridge::performOperation(uint8_t operationCode) {
|
||||||
TmTcBridge::performOperation();
|
TmTcBridge::performOperation();
|
||||||
|
|
||||||
#if TCPIP_RECV_WIRETAPPING == 1
|
#if OBSW_TCPIP_UDP_WIRETAPPING == 1
|
||||||
if (connectFlag) {
|
if (connectFlag) {
|
||||||
uint32_t ipAddress = ((ip4_addr *)&lastAdd)->addr;
|
uint32_t ipAddress = ((ip4_addr *)&lastAdd)->addr;
|
||||||
int ipAddress1 = (ipAddress & 0xFF000000) >> 24;
|
int ipAddress1 = (ipAddress & 0xFF000000) >> 24;
|
||||||
@ -90,7 +89,7 @@ ReturnValue_t TmTcLwIpUdpBridge::sendTm(const uint8_t *data, size_t dataLen) {
|
|||||||
if ((p_tx != nullptr) && (lastAdd.addr != IPADDR_TYPE_ANY) &&
|
if ((p_tx != nullptr) && (lastAdd.addr != IPADDR_TYPE_ANY) &&
|
||||||
(upcb != nullptr)) {
|
(upcb != nullptr)) {
|
||||||
/* copy data to pbuf */
|
/* copy data to pbuf */
|
||||||
err_t err = pbuf_take(p_tx, (char *)data, dataLen);
|
err_t err = pbuf_take(p_tx, (const char *)data, dataLen);
|
||||||
if (err != ERR_OK) {
|
if (err != ERR_OK) {
|
||||||
pbuf_free(p_tx);
|
pbuf_free(p_tx);
|
||||||
return err;
|
return err;
|
||||||
@ -143,7 +142,7 @@ void TmTcLwIpUdpBridge::udp_server_receive_callback(void *arg,
|
|||||||
udpBridge->lastPort = port;
|
udpBridge->lastPort = port;
|
||||||
if (not udpBridge->comLinkUp()) {
|
if (not udpBridge->comLinkUp()) {
|
||||||
udpBridge->registerCommConnect();
|
udpBridge->registerCommConnect();
|
||||||
#if TCPIP_RECV_WIRETAPPING == 1
|
#if OBSW_TCPIP_UDP_WIRETAPPING == 1
|
||||||
udpBridge->connectFlag = true;
|
udpBridge->connectFlag = true;
|
||||||
#endif
|
#endif
|
||||||
/* This should have already been done, but we will still do it */
|
/* This should have already been done, but we will still do it */
|
||||||
@ -155,8 +154,8 @@ void TmTcLwIpUdpBridge::udp_server_receive_callback(void *arg,
|
|||||||
char *data = reinterpret_cast<char *>(p_tx->payload);
|
char *data = reinterpret_cast<char *>(p_tx->payload);
|
||||||
*(data + p_tx->len) = '\0';
|
*(data + p_tx->len) = '\0';
|
||||||
|
|
||||||
#if TCPIP_RECV_WIRETAPPING == 1
|
#if OBSW_TCPIP_UDP_WIRETAPPING == 1
|
||||||
udpBridge->printData(p, data);
|
udpBridge->printData(reinterpret_cast<uint8_t *>(p->payload), p->len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
store_address_t storeId;
|
store_address_t storeId;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
#ifndef BSP_STM32_RTEMS_NETWORKING_TMTCUDPBRIDGE_H_
|
#ifndef BSP_STM32_RTEMS_NETWORKING_TMTCUDPBRIDGE_H_
|
||||||
#define BSP_STM32_RTEMS_NETWORKING_TMTCUDPBRIDGE_H_
|
#define BSP_STM32_RTEMS_NETWORKING_TMTCUDPBRIDGE_H_
|
||||||
|
|
||||||
#include <fsfw/tmtcservices/TmTcBridge.h>
|
#include "fsfw/tmtcservices/TmTcBridge.h"
|
||||||
|
#include "commonConfig.h"
|
||||||
|
|
||||||
#include <lwip/ip_addr.h>
|
#include <lwip/ip_addr.h>
|
||||||
#include <lwip/udp.h>
|
#include <lwip/udp.h>
|
||||||
|
|
||||||
#define TCPIP_RECV_WIRETAPPING 0
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This bridge is used to forward TMTC packets received via LwIP UDP to the
|
* This bridge is used to forward TMTC packets received via LwIP UDP to the
|
||||||
* internal software bus.
|
* internal software bus.
|
||||||
@ -63,7 +63,7 @@ private:
|
|||||||
bool physicalConnection = false;
|
bool physicalConnection = false;
|
||||||
MutexIF *bridgeLock = nullptr;
|
MutexIF *bridgeLock = nullptr;
|
||||||
|
|
||||||
#if TCPIP_RECV_WIRETAPPING == 1
|
#if OBSW_TCPIP_UDP_WIRETAPPING == 1
|
||||||
bool connectFlag = false;
|
bool connectFlag = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#include "UdpTcLwIpPollingTask.h"
|
#include "UdpTcLwIpPollingTask.h"
|
||||||
|
|
||||||
#include <hardware_init.h>
|
|
||||||
|
|
||||||
#include "TmTcLwIpUdpBridge.h"
|
#include "TmTcLwIpUdpBridge.h"
|
||||||
#include "app_dhcp.h"
|
#include "app_dhcp.h"
|
||||||
#include "app_ethernet.h"
|
#include "app_ethernet.h"
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#ifndef BSP_STM32_RTEMS_EMACPOLLINGTASK_H_
|
#pragma once
|
||||||
#define BSP_STM32_RTEMS_EMACPOLLINGTASK_H_
|
|
||||||
|
|
||||||
#include <fsfw/objectmanager/SystemObject.h>
|
#include <fsfw/objectmanager/SystemObject.h>
|
||||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||||
@ -36,5 +35,3 @@ private:
|
|||||||
TmTcLwIpUdpBridge *udpBridge = nullptr;
|
TmTcLwIpUdpBridge *udpBridge = nullptr;
|
||||||
struct netif *gnetif = nullptr;
|
struct netif *gnetif = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* BSP_STM32_RTEMS_EMACPOLLINGTASK_H_ */
|
|
||||||
|
@ -597,6 +597,67 @@ void ethernet_link_check_state(struct netif *netif) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HAL_ETH_RxAllocateCallback(uint8_t **buff)
|
||||||
|
{
|
||||||
|
struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL);
|
||||||
|
if (p)
|
||||||
|
{
|
||||||
|
/* Get the buff from the struct pbuf address. */
|
||||||
|
*buff = (uint8_t *)p + offsetof(RxBuff_t, buff);
|
||||||
|
p->custom_free_function = pbuf_free_custom;
|
||||||
|
/* Initialize the struct pbuf.
|
||||||
|
* This must be performed whenever a buffer's allocated because it may be
|
||||||
|
* changed by lwIP or the app, e.g., pbuf_free decrements ref. */
|
||||||
|
pbuf_alloced_custom(PBUF_RAW, 0, PBUF_REF, p, *buff, ETH_RX_BUFFER_SIZE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RxAllocStatus = RX_ALLOC_ERROR;
|
||||||
|
*buff = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
|
||||||
|
{
|
||||||
|
struct pbuf **ppStart = (struct pbuf **)pStart;
|
||||||
|
struct pbuf **ppEnd = (struct pbuf **)pEnd;
|
||||||
|
struct pbuf *p = NULL;
|
||||||
|
|
||||||
|
/* Get the struct pbuf from the buff address. */
|
||||||
|
p = (struct pbuf *)(buff - offsetof(RxBuff_t, buff));
|
||||||
|
p->next = NULL;
|
||||||
|
p->tot_len = 0;
|
||||||
|
p->len = Length;
|
||||||
|
|
||||||
|
/* Chain the buffer. */
|
||||||
|
if (!*ppStart)
|
||||||
|
{
|
||||||
|
/* The first buffer of the packet. */
|
||||||
|
*ppStart = p;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Chain the buffer to the end of the packet. */
|
||||||
|
(*ppEnd)->next = p;
|
||||||
|
}
|
||||||
|
*ppEnd = p;
|
||||||
|
|
||||||
|
/* Update the total length of all the buffers of the chain. Each pbuf in the chain should have its tot_len
|
||||||
|
* set to its own length, plus the length of all the following pbufs in the chain. */
|
||||||
|
for (p = *ppStart; p != NULL; p = p->next)
|
||||||
|
{
|
||||||
|
p->tot_len += Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Invalidate data cache because Rx DMA's writing to physical memory makes it stale. */
|
||||||
|
SCB_InvalidateDCache_by_Addr((uint32_t *)buff, Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_ETH_TxFreeCallback(uint32_t * buff)
|
||||||
|
{
|
||||||
|
pbuf_free((struct pbuf *)buff);
|
||||||
|
}
|
||||||
|
|
||||||
ETH_HandleTypeDef *getEthernetHandle() { return &EthHandle; }
|
ETH_HandleTypeDef *getEthernetHandle() { return &EthHandle; }
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user