Compare commits
No commits in common. "2e9c3df2e269621bb20ed056a83a54b88d9e57d7" and "d752ef5b4417fafdef37bd82cde78ca7cf9e254f" have entirely different histories.
2e9c3df2e2
...
d752ef5b44
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,4 +3,3 @@
|
||||
/profinet_test/sample_app/build
|
||||
/profinet_test/sample_app_echo/build
|
||||
*.bin
|
||||
/src/out
|
||||
|
||||
4
.gitmodules
vendored
4
.gitmodules
vendored
@ -1,4 +0,0 @@
|
||||
[submodule "sitara_depot"]
|
||||
path = sitara_depot
|
||||
url = http://server_gorbunov:3000/SmartForce4.0/sitara_depot.git
|
||||
branch = master
|
||||
32
README.md
32
README.md
@ -187,38 +187,6 @@ echo_submod_ptr->inp_data.Write(0, Echo_inpCycData.mem, echo_submod_ptr->cyc_ind
|
||||
|
||||
Обмен происходит с помощью json rpc, протокол описан в файле `src/interprocess/pipes/json_rpc_protocol.txt`.
|
||||
|
||||
## Инструкция по сборке
|
||||
ПО кроссплатформенное, настройка окружения сборки осущетсвляется в файле `CMakePresets.json`.
|
||||
|
||||
### Сборка под x86_64
|
||||
|
||||
Выбрать конфигурацию "x86_64 Debug" или "x86_64 Release"
|
||||
|
||||
### Сборка под arm cortex-a15 (sitara)
|
||||
|
||||
Перед сборкой отредактировать значения переменных окружения:
|
||||
* ENV_TARGET_CROSS_COMPILE_PREFIX - префикс компилятора с полным путем к нему. Например:
|
||||
`/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-none-linux-gnueabihf-`
|
||||
|
||||
* ENV_TARGET_SYSTOOT_PATH - путь к библиотекам целефой платформы.
|
||||
Для платы am571x-idk - это:
|
||||
`/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi`
|
||||
|
||||
SYSROOT можно выкачать из платы напрямую. Например для BeagleBoardAI есть скрипт `../sitara_depot/scripts/beagleboard/host/create_sysroot.sh`
|
||||
|
||||
## Зависимости
|
||||
Две библиотеки:
|
||||
* osal `http://server_gorbunov:3000/SmartForce4.0/profinet_io_dev/src/branch/master/profinet_stack/osal`
|
||||
* pnet `http://server_gorbunov:3000/SmartForce4.0/profinet_io_dev/src/branch/master/profinet_stack/p-net`
|
||||
|
||||
Библиотеки уже собраны под две архитектуры cortex-a15 и x86_64. Сбори лежат тут:
|
||||
* `http://server_gorbunov:3000/SmartForce4.0/profinet_io_dev/src/branch/master/libs/lib/arm_a15`
|
||||
* `http://server_gorbunov:3000/SmartForce4.0/profinet_io_dev/src/branch/master/libs/lib/x86_64`
|
||||
|
||||
В названии файла d - значит дебажная версия библиотеки, например libosal.a - Release, а libosald.a - Debug.
|
||||
|
||||
Сборка библиоитек реализована аналогично.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
#ifndef PNET_VERSION_H
|
||||
#define PNET_VERSION_H
|
||||
|
||||
#define PROFINET_GIT_REVISION "da63bec-dirty"
|
||||
/* #undef PROFINET_GIT_REVISION */
|
||||
|
||||
#if !defined(PNET_VERSION_BUILD) && defined(PROFINET_GIT_REVISION)
|
||||
#define PNET_VERSION_BUILD PROFINET_GIT_REVISION
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
70
profinet_stack/osal/.vscode/settings.json
vendored
70
profinet_stack/osal/.vscode/settings.json
vendored
@ -1,70 +0,0 @@
|
||||
{
|
||||
"cmake.useCMakePresets": "always",
|
||||
"files.associations": {
|
||||
"typeinfo": "c",
|
||||
"cctype": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"bit": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"deque": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"random": "cpp",
|
||||
"string": "cpp",
|
||||
"string_view": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"fstream": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"iostream": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"new": "cpp",
|
||||
"ostream": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"cstring": "cpp",
|
||||
"thread": "cpp",
|
||||
"ctime": "cpp",
|
||||
"chrono": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"map": "cpp",
|
||||
"ratio": "cpp",
|
||||
"mutex": "cpp",
|
||||
"any": "cpp",
|
||||
"codecvt": "cpp",
|
||||
"forward_list": "cpp",
|
||||
"list": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"valarray": "cpp",
|
||||
"bitset": "cpp",
|
||||
"complex": "cpp",
|
||||
"set": "cpp",
|
||||
"typeindex": "cpp",
|
||||
"variant": "cpp",
|
||||
"cfenv": "cpp"
|
||||
}
|
||||
}
|
||||
@ -18,19 +18,6 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/tools")
|
||||
project (OSAL VERSION 0.1.0)
|
||||
|
||||
message("CMakeList.txt: Starting...")
|
||||
|
||||
if (DEFINED BOARD)
|
||||
if ( (NOT (${BOARD} STREQUAL "am5718-idk")) AND (NOT (${BOARD} STREQUAL "BeagleBoneAI")))
|
||||
message(FATAL_ERROR "BOARD ${BOARD} unsupported!\n"
|
||||
"BOARD can take the following values:\n"
|
||||
" -- am5718-idk\n"
|
||||
" -- BeagleBoneAI")
|
||||
else()
|
||||
message(STATUS "BOARD = " ${BOARD})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(GetGitRevision)
|
||||
|
||||
# Default settings if this is the main project
|
||||
@ -64,60 +51,32 @@ configure_file (
|
||||
version.h.in
|
||||
${OSAL_BINARY_DIR}/src/version.h
|
||||
)
|
||||
#------------------------------------------------------------------------
|
||||
# Ïóòü ê ïàïêå ñ áèáëèîòåêàìè
|
||||
set(INSTALL_PATH ${CMAKE_SOURCE_DIR}/../../libs)
|
||||
# Ïóòü êóäà áóäóò êîïèðîâàòüñÿ ñîáðàííàÿ áèáëèîòåêà
|
||||
set(INSTALL_PATH_LIB ${INSTALL_PATH}/lib)
|
||||
|
||||
#BOARD çàäàåòñÿ â ïàðàìåòðàõ çàïóñêà cmake, ïðîïèñàíî â .vscode/settings.json
|
||||
if (DEFINED BOARD)
|
||||
set(SITARA_DEPOT ${CMAKE_SOURCE_DIR}/../../sitara_depot)
|
||||
set(INSTALL_PATH_LIB ${INSTALL_PATH_LIB}/arm_a15/${BOARD})
|
||||
include(${SITARA_DEPOT}/compile/sitara_compile_flags.cmake)
|
||||
message(STATUS "Building for ${BOARD}")
|
||||
else()
|
||||
set(INSTALL_PATH_LIB ${INSTALL_PATH_LIB}/x86_64)
|
||||
message(STATUS "Building for x86")
|
||||
endif()
|
||||
# Ïóòü êóäà áóäóò êîïèðîâàòüñÿ h-ôàéëû
|
||||
set(INSTALL_PATH_INC ${INSTALL_PATH}/include)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
# Add platform-dependent targets early, so they can be configured by
|
||||
# platform
|
||||
|
||||
# Èìÿ áèáëèîòåêè
|
||||
set(LIB_NAME osal)
|
||||
# Äëÿ îòëàäî÷íîé âåðñèè â êîíöå äîáàâëÿåì d: osald
|
||||
if (CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
set(LIB_NAME ${LIB_NAME}d)
|
||||
endif()
|
||||
|
||||
add_library(${LIB_NAME} "")
|
||||
add_library(osal "")
|
||||
|
||||
# Use position independent code if platform supports shared libraries
|
||||
get_property(SUPPORTS_SHARED GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS)
|
||||
if (SUPPORTS_SHARED)
|
||||
set_property(TARGET ${LIB_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
set_property(TARGET osal PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
#if (CMAKE_PROJECT_NAME STREQUAL OSAL AND BUILD_TESTING)
|
||||
# add_executable(osal_test "")
|
||||
#endif()
|
||||
if (CMAKE_PROJECT_NAME STREQUAL OSAL AND BUILD_TESTING)
|
||||
add_executable(osal_test "")
|
||||
endif()
|
||||
|
||||
# Platform configuration
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${CMAKE_SYSTEM_NAME}.cmake)
|
||||
|
||||
set_target_properties (${LIB_NAME}
|
||||
set_target_properties (osal
|
||||
PROPERTIES
|
||||
C_STANDARD 99
|
||||
)
|
||||
|
||||
target_compile_features(${LIB_NAME} PUBLIC c_std_99)
|
||||
target_compile_features(osal PUBLIC c_std_99)
|
||||
|
||||
target_include_directories(${LIB_NAME}
|
||||
target_include_directories(osal
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${OSAL_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
@ -127,9 +86,8 @@ target_include_directories(${LIB_NAME}
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS ${LIB_NAME}
|
||||
TARGETS osal
|
||||
EXPORT OsalTargets
|
||||
DESTINATION ${INSTALL_PATH_LIB}
|
||||
)
|
||||
|
||||
install(
|
||||
@ -154,14 +112,14 @@ install(FILES
|
||||
install(FILES
|
||||
include/osal.h
|
||||
include/osal_log.h
|
||||
DESTINATION ${INSTALL_PATH_INC}
|
||||
DESTINATION include
|
||||
)
|
||||
|
||||
#if (CMAKE_PROJECT_NAME STREQUAL OSAL AND BUILD_TESTING)
|
||||
# add_subdirectory (test)
|
||||
# include(AddGoogleTest)
|
||||
# add_gtest(osal_test)
|
||||
#endif()
|
||||
if (CMAKE_PROJECT_NAME STREQUAL OSAL AND BUILD_TESTING)
|
||||
add_subdirectory (test)
|
||||
include(AddGoogleTest)
|
||||
add_gtest(osal_test)
|
||||
endif()
|
||||
|
||||
# Doxygen configuration
|
||||
cmake_policy(SET CMP0057 NEW)
|
||||
|
||||
@ -1,110 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"displayName": "default",
|
||||
"description": "Default build using Ninja generator",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x86_64_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "x86_64 Debug",
|
||||
"description": "Degub build for x86_64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_C_COMPILER": "gcc",
|
||||
"CMAKE_CXX_COMPILER": "g++"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x86_64_Release",
|
||||
"inherits": "x86_64_Debug",
|
||||
"displayName": "x86_64 Release",
|
||||
"description": "Release build for x86_64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "am571x_idk_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "am571x-idk Debug",
|
||||
"description": "Degub build for AM571x-IDK board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_TOOLCHAIN_FILE": "${workspaceFolder}/../../sitara_depot/compile/toolchain.cmake",
|
||||
"BOARD": "am5718-idk"
|
||||
},
|
||||
"environment": {
|
||||
"ENV_TARGET_CROSS_COMPILE_PREFIX": "/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-none-linux-gnueabihf-",
|
||||
"ENV_TARGET_SYSTOOT_PATH": "/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "am571x_idk_Release",
|
||||
"inherits": "am571x_idk_Debug",
|
||||
"displayName": "am571x-idk Release",
|
||||
"description": "Release build for AM571x-IDK board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "BeagleBoneAI Debug",
|
||||
"description": "Degub build for BeagleBoneAI board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_TOOLCHAIN_FILE": "${workspaceFolder}/../../sitara_depot/compile/toolchain.cmake",
|
||||
"BOARD": "BeagleBoneAI"
|
||||
},
|
||||
"environment": {
|
||||
"ENV_TARGET_CROSS_COMPILE_PREFIX": "/home/svad/armdev/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-",
|
||||
"ENV_TARGET_SYSTOOT_PATH": "/home/svad/armdev/beagle_board/sysroot"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI_Release",
|
||||
"inherits": "BeagleBoneAI_Debug",
|
||||
"displayName": "BeagleBoneAI Release",
|
||||
"description": "Release build for BeagleBoneAI board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "x86_64 Debug",
|
||||
"configurePreset": "x86_64_Debug"
|
||||
},
|
||||
{
|
||||
"name": "x86_64 Release",
|
||||
"configurePreset": "x86_64_Release"
|
||||
},
|
||||
{
|
||||
"name": "am571x-idk Debug",
|
||||
"configurePreset": "am571x_idk_Debug"
|
||||
},
|
||||
{
|
||||
"name": "am571x-idk Release",
|
||||
"configurePreset": "am571x_idk_Release"
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI Debug",
|
||||
"configurePreset": "BeagleBoneAI_Debug"
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI Release",
|
||||
"configurePreset": "BeagleBoneAI_Release"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -19,12 +19,12 @@ option (USE_SCHED_FIFO
|
||||
"Use SCHED_FIFO policy. May require extra privileges to run"
|
||||
OFF)
|
||||
|
||||
target_sources(${LIB_NAME} PRIVATE
|
||||
target_sources(osal PRIVATE
|
||||
src/linux/osal.c
|
||||
src/linux/osal_log.c
|
||||
)
|
||||
|
||||
target_compile_options(${LIB_NAME}
|
||||
target_compile_options(osal
|
||||
PRIVATE
|
||||
-Wall
|
||||
-Wextra
|
||||
@ -35,11 +35,11 @@ target_compile_options(${LIB_NAME}
|
||||
$<$<CONFIG:Coverage>:--coverage>
|
||||
)
|
||||
|
||||
target_include_directories(${LIB_NAME} PUBLIC
|
||||
target_include_directories(osal PUBLIC
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/linux>
|
||||
)
|
||||
|
||||
target_link_libraries(${LIB_NAME} PUBLIC
|
||||
target_link_libraries(osal PUBLIC
|
||||
Threads::Threads
|
||||
rt
|
||||
INTERFACE
|
||||
@ -49,7 +49,7 @@ target_link_libraries(${LIB_NAME} PUBLIC
|
||||
install(FILES
|
||||
src/linux/sys/osal_cc.h
|
||||
src/linux/sys/osal_sys.h
|
||||
DESTINATION ${INSTALL_PATH_INC}/sys
|
||||
DESTINATION include/sys
|
||||
)
|
||||
|
||||
if (BUILD_TESTING)
|
||||
|
||||
3
profinet_stack/p-net/.gitignore
vendored
3
profinet_stack/p-net/.gitignore
vendored
@ -40,6 +40,9 @@ doc/_copied
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Editor files
|
||||
.vscode/
|
||||
|
||||
# Sampleapp dummy LED files
|
||||
pnet_led*.txt
|
||||
|
||||
|
||||
70
profinet_stack/p-net/.vscode/settings.json
vendored
70
profinet_stack/p-net/.vscode/settings.json
vendored
@ -1,70 +0,0 @@
|
||||
{
|
||||
"cmake.useCMakePresets": "always",
|
||||
"files.associations": {
|
||||
"typeinfo": "c",
|
||||
"cctype": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"bit": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"deque": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"random": "cpp",
|
||||
"string": "cpp",
|
||||
"string_view": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"fstream": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"iostream": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"new": "cpp",
|
||||
"ostream": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"cstring": "cpp",
|
||||
"thread": "cpp",
|
||||
"ctime": "cpp",
|
||||
"chrono": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"map": "cpp",
|
||||
"ratio": "cpp",
|
||||
"mutex": "cpp",
|
||||
"any": "cpp",
|
||||
"codecvt": "cpp",
|
||||
"forward_list": "cpp",
|
||||
"list": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"valarray": "cpp",
|
||||
"bitset": "cpp",
|
||||
"complex": "cpp",
|
||||
"set": "cpp",
|
||||
"typeindex": "cpp",
|
||||
"variant": "cpp",
|
||||
"cfenv": "cpp"
|
||||
}
|
||||
}
|
||||
@ -18,19 +18,6 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/tools")
|
||||
project (PROFINET VERSION 0.2.0)
|
||||
|
||||
message("CMakeList.txt: Starting...")
|
||||
|
||||
if (DEFINED BOARD)
|
||||
if ( (NOT (${BOARD} STREQUAL "am5718-idk")) AND (NOT (${BOARD} STREQUAL "BeagleBoneAI")))
|
||||
message(FATAL_ERROR "BOARD ${BOARD} unsupported!\n"
|
||||
"BOARD can take the following values:\n"
|
||||
" -- am5718-idk\n"
|
||||
" -- BeagleBoneAI")
|
||||
else()
|
||||
message(STATUS "BOARD = " ${BOARD})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Default settings if this is the main project
|
||||
if (CMAKE_PROJECT_NAME STREQUAL PROFINET)
|
||||
include(CTest)
|
||||
@ -56,7 +43,7 @@ if (CMAKE_PROJECT_NAME STREQUAL PROFINET)
|
||||
message(STATUS "Building for ${CMAKE_SYSTEM_NAME}")
|
||||
endif()
|
||||
|
||||
#include(AddOsal)
|
||||
include(AddOsal)
|
||||
include(GenerateExportHeader)
|
||||
include(CMakeDependentOption)
|
||||
include(GetGitRevision)
|
||||
@ -178,74 +165,35 @@ configure_file (
|
||||
${PROFINET_BINARY_DIR}/include/pnet_options.h
|
||||
)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# Ïóòü ê ïàïêå ñ áèáëèîòåêàìè
|
||||
set(INSTALL_PATH ${CMAKE_SOURCE_DIR}/../../libs)
|
||||
# Ïóòü êóäà áóäóò êîïèîðîâàòüñÿ ñîáðàííàÿ áèáëèîòåêà
|
||||
set(INSTALL_PATH_LIB ${INSTALL_PATH}/lib)
|
||||
|
||||
#BOARD çàäàåòñÿ â ïàðàìåòðàõ çàïóñêà cmake, ïðîïèñàíî â .vscode/settings.json
|
||||
if (DEFINED BOARD)
|
||||
set(SITARA_DEPOT ${CMAKE_SOURCE_DIR}/../../sitara_depot)
|
||||
set(INSTALL_PATH_LIB ${INSTALL_PATH_LIB}/arm_a15/${BOARD})
|
||||
include(${SITARA_DEPOT}/compile/sitara_compile_flags.cmake)
|
||||
message(STATUS "Building for ${BOARD}")
|
||||
else()
|
||||
set(INSTALL_PATH_LIB ${INSTALL_PATH_LIB}/x86_64)
|
||||
message(STATUS "Building for x86")
|
||||
endif()
|
||||
|
||||
# Ïóòü êóäà áóäóò êîïèðîâàòüñÿ h-ôàéëû
|
||||
set(INSTALL_PATH_INC ${INSTALL_PATH}/include)
|
||||
|
||||
set(OSAL_NAME osal)
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
set(OSAL_NAME ${OSAL_NAME}d)
|
||||
endif()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
|
||||
# Add platform-dependent targets early, so they can be configured by
|
||||
# platform
|
||||
|
||||
# Èìÿ áèáëèîòåêè
|
||||
set(LIB_NAME profinet)
|
||||
# Äëÿ îòëàäî÷íîé âåðñèè â êîíöå äîáàâëÿåì d: osald
|
||||
if (CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
set(LIB_NAME ${LIB_NAME}d)
|
||||
endif()
|
||||
|
||||
add_library(${LIB_NAME} "")
|
||||
|
||||
#add_library(profinet "")
|
||||
#add_executable(pn_dev "")
|
||||
add_library(profinet "")
|
||||
add_executable(pn_dev "")
|
||||
|
||||
if (PNET_OPTION_DRIVER_ENABLE)
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/src/drivers/drivers.cmake)
|
||||
endif ()
|
||||
|
||||
#if (CMAKE_PROJECT_NAME STREQUAL PROFINET AND BUILD_TESTING)
|
||||
# add_executable(pf_test "")
|
||||
#endif()
|
||||
if (CMAKE_PROJECT_NAME STREQUAL PROFINET AND BUILD_TESTING)
|
||||
add_executable(pf_test "")
|
||||
endif()
|
||||
|
||||
# Platform configuration
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${CMAKE_SYSTEM_NAME}.cmake)
|
||||
|
||||
generate_export_header(${LIB_NAME}
|
||||
generate_export_header(profinet
|
||||
BASE_NAME pnet
|
||||
EXPORT_FILE_NAME ${PROFINET_BINARY_DIR}/include/pnet_export.h
|
||||
)
|
||||
|
||||
set_target_properties (${LIB_NAME}
|
||||
set_target_properties (profinet pn_dev
|
||||
PROPERTIES
|
||||
C_STANDARD 11
|
||||
)
|
||||
|
||||
target_compile_features(${LIB_NAME} PUBLIC c_std_99)
|
||||
target_compile_features(profinet PUBLIC c_std_99)
|
||||
|
||||
target_include_directories(${LIB_NAME}
|
||||
target_include_directories(profinet
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${PROFINET_SOURCE_DIR}/include>
|
||||
$<BUILD_INTERFACE:${PROFINET_BINARY_DIR}/include>
|
||||
@ -255,19 +203,14 @@ target_include_directories(${LIB_NAME}
|
||||
src
|
||||
src/common
|
||||
src/device
|
||||
${INSTALL_PATH_INC}
|
||||
${INSTALL_PATH_INC}/sys
|
||||
${INSTALL_PATH_INC}/x86_64
|
||||
)
|
||||
|
||||
target_link_directories(${LIB_NAME} PRIVATE ${INSTALL_PATH_LIB})
|
||||
|
||||
target_link_libraries(${LIB_NAME} PUBLIC ${OSAL_NAME})
|
||||
target_link_libraries(profinet PUBLIC osal)
|
||||
|
||||
install (
|
||||
TARGETS ${LIB_NAME}
|
||||
TARGETS profinet
|
||||
EXPORT ProfinetConfig
|
||||
DESTINATION ${INSTALL_PATH_LIB}
|
||||
DESTINATION lib
|
||||
)
|
||||
|
||||
install(
|
||||
@ -280,17 +223,17 @@ install (FILES
|
||||
${PROFINET_BINARY_DIR}/include/pnet_export.h
|
||||
${PROFINET_BINARY_DIR}/include/pnet_options.h
|
||||
${PROFINET_BINARY_DIR}/include/pnet_version.h
|
||||
DESTINATION ${INSTALL_PATH_INC}
|
||||
DESTINATION include
|
||||
)
|
||||
|
||||
add_subdirectory (src)
|
||||
#add_subdirectory (samples/pn_dev)
|
||||
add_subdirectory (samples/pn_dev)
|
||||
|
||||
#if (CMAKE_PROJECT_NAME STREQUAL PROFINET AND BUILD_TESTING)
|
||||
# add_subdirectory (test)
|
||||
# include(AddGoogleTest)
|
||||
# add_gtest(pf_test)
|
||||
#endif()
|
||||
if (CMAKE_PROJECT_NAME STREQUAL PROFINET AND BUILD_TESTING)
|
||||
add_subdirectory (test)
|
||||
include(AddGoogleTest)
|
||||
add_gtest(pf_test)
|
||||
endif()
|
||||
|
||||
# Doxygen configuration
|
||||
cmake_policy(SET CMP0057 NEW)
|
||||
|
||||
@ -1,110 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"displayName": "default",
|
||||
"description": "Default build using Ninja generator",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x86_64_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "x86_64 Debug",
|
||||
"description": "Degub build for x86_64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_C_COMPILER": "gcc",
|
||||
"CMAKE_CXX_COMPILER": "g++"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x86_64_Release",
|
||||
"inherits": "x86_64_Debug",
|
||||
"displayName": "x86_64 Release",
|
||||
"description": "Release build for x86_64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "am571x_idk_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "am571x-idk Debug",
|
||||
"description": "Degub build for AM571x-IDK board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_TOOLCHAIN_FILE": "${workspaceFolder}/../../sitara_depot/compile/toolchain.cmake",
|
||||
"BOARD": "am5718-idk"
|
||||
},
|
||||
"environment": {
|
||||
"ENV_TARGET_CROSS_COMPILE_PREFIX": "/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-none-linux-gnueabihf-",
|
||||
"ENV_TARGET_SYSTOOT_PATH": "/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "am571x_idk_Release",
|
||||
"inherits": "am571x_idk_Debug",
|
||||
"displayName": "am571x-idk Release",
|
||||
"description": "Release build for AM571x-IDK board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "BeagleBoneAI Debug",
|
||||
"description": "Degub build for BeagleBoneAI board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_TOOLCHAIN_FILE": "${workspaceFolder}/../../sitara_depot/compile/toolchain.cmake",
|
||||
"BOARD": "BeagleBoneAI"
|
||||
},
|
||||
"environment": {
|
||||
"ENV_TARGET_CROSS_COMPILE_PREFIX": "/home/svad/armdev/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-",
|
||||
"ENV_TARGET_SYSTOOT_PATH": "/home/svad/armdev/beagle_board/sysroot"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI_Release",
|
||||
"inherits": "BeagleBoneAI_Debug",
|
||||
"displayName": "BeagleBoneAI Release",
|
||||
"description": "Release build for BeagleBoneAI board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "x86_64 Debug",
|
||||
"configurePreset": "x86_64_Debug"
|
||||
},
|
||||
{
|
||||
"name": "x86_64 Release",
|
||||
"configurePreset": "x86_64_Release"
|
||||
},
|
||||
{
|
||||
"name": "am571x-idk Debug",
|
||||
"configurePreset": "am571x_idk_Debug"
|
||||
},
|
||||
{
|
||||
"name": "am571x-idk Release",
|
||||
"configurePreset": "am571x_idk_Release"
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI Debug",
|
||||
"configurePreset": "BeagleBoneAI_Debug"
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI Release",
|
||||
"configurePreset": "BeagleBoneAI_Release"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -18,12 +18,12 @@ if (PNET_OPTION_SNMP)
|
||||
find_package(NetSNMPAgent REQUIRED)
|
||||
endif()
|
||||
|
||||
target_include_directories(${LIB_NAME}
|
||||
target_include_directories(profinet
|
||||
PRIVATE
|
||||
src/ports/linux
|
||||
)
|
||||
|
||||
target_sources(${LIB_NAME}
|
||||
target_sources(profinet
|
||||
PRIVATE
|
||||
src/ports/linux/pnal.c
|
||||
src/ports/linux/pnal_eth.c
|
||||
@ -43,7 +43,7 @@ target_sources(${LIB_NAME}
|
||||
$<$<BOOL:${PNET_OPTION_SNMP}>:src/ports/linux/mib/lldpXPnoRemTable.c>
|
||||
)
|
||||
|
||||
target_compile_options(${LIB_NAME}
|
||||
target_compile_options(profinet
|
||||
PRIVATE
|
||||
-Wall
|
||||
-Wextra
|
||||
@ -54,7 +54,7 @@ target_compile_options(${LIB_NAME}
|
||||
$<$<CONFIG:Coverage>:--coverage>
|
||||
)
|
||||
|
||||
target_link_libraries(${LIB_NAME}
|
||||
target_link_libraries(profinet
|
||||
PUBLIC
|
||||
$<$<BOOL:${PNET_OPTION_SNMP}>:NetSNMP::NetSNMPAgent>
|
||||
$<$<BOOL:${PNET_OPTION_SNMP}>:NetSNMP::NetSNMP>
|
||||
@ -62,35 +62,35 @@ target_link_libraries(${LIB_NAME}
|
||||
$<$<CONFIG:Coverage>:--coverage>
|
||||
)
|
||||
|
||||
#target_include_directories(pn_dev
|
||||
# PRIVATE
|
||||
# samples/pn_dev
|
||||
# src/ports/linux
|
||||
# )
|
||||
target_include_directories(pn_dev
|
||||
PRIVATE
|
||||
samples/pn_dev
|
||||
src/ports/linux
|
||||
)
|
||||
|
||||
#target_sources(pn_dev
|
||||
# PRIVATE
|
||||
# samples/pn_dev/sampleapp_common.c
|
||||
# samples/pn_dev/app_utils.c
|
||||
# samples/pn_dev/app_log.c
|
||||
# samples/pn_dev/app_gsdml.c
|
||||
# samples/pn_dev/app_data.c
|
||||
# src/ports/linux/sampleapp_main.c
|
||||
# )
|
||||
target_sources(pn_dev
|
||||
PRIVATE
|
||||
samples/pn_dev/sampleapp_common.c
|
||||
samples/pn_dev/app_utils.c
|
||||
samples/pn_dev/app_log.c
|
||||
samples/pn_dev/app_gsdml.c
|
||||
samples/pn_dev/app_data.c
|
||||
src/ports/linux/sampleapp_main.c
|
||||
)
|
||||
|
||||
#target_compile_options(pn_dev
|
||||
# PRIVATE
|
||||
# -Wall
|
||||
# -Wextra
|
||||
# -Wno-unused-parameter
|
||||
# -ffunction-sections
|
||||
# -fdata-sections
|
||||
# )
|
||||
target_compile_options(pn_dev
|
||||
PRIVATE
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wno-unused-parameter
|
||||
-ffunction-sections
|
||||
-fdata-sections
|
||||
)
|
||||
|
||||
#target_link_options(pn_dev
|
||||
# PRIVATE
|
||||
# -Wl,--gc-sections
|
||||
#)
|
||||
target_link_options(pn_dev
|
||||
PRIVATE
|
||||
-Wl,--gc-sections
|
||||
)
|
||||
|
||||
install (FILES
|
||||
src/ports/linux/pnal_config.h
|
||||
@ -105,10 +105,10 @@ file(COPY
|
||||
${PROFINET_BINARY_DIR}/
|
||||
)
|
||||
|
||||
#if (BUILD_TESTING)
|
||||
# set(GOOGLE_TEST_INDIVIDUAL TRUE)
|
||||
# target_include_directories(pf_test
|
||||
# PRIVATE
|
||||
# src/ports/linux
|
||||
# )
|
||||
#endif()
|
||||
if (BUILD_TESTING)
|
||||
set(GOOGLE_TEST_INDIVIDUAL TRUE)
|
||||
target_include_directories(pf_test
|
||||
PRIVATE
|
||||
src/ports/linux
|
||||
)
|
||||
endif()
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
# NOTE: add headers to make them show up in an IDE
|
||||
# NOTE: Use full path for the <$<BOOL:${PNET_OPTION_SNMP}> expression
|
||||
# to work with certain cmake versions
|
||||
target_sources (${LIB_NAME} PRIVATE
|
||||
target_sources (profinet PRIVATE
|
||||
${PROFINET_SOURCE_DIR}/include/pnet_api.h
|
||||
pf_includes.h
|
||||
pf_types.h
|
||||
|
||||
@ -2,9 +2,7 @@ cmake_minimum_required (VERSION 3.0)
|
||||
|
||||
project (PN_ECHO_TEST VERSION 0.0.1)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
set(TARGET_NAME pn_echo_test)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
|
||||
set(INC_DIRS ${INC_DIRS} ../../src/profinet)
|
||||
set(INC_DIRS ${INC_DIRS} ../../src/nlohmann_json)
|
||||
@ -21,15 +19,8 @@ set(SRC_FILES ${SRC_FILES} ./CreatePipes.cpp)
|
||||
set(SRC_FILES ${SRC_FILES} ../../src/file_api/file_api.cpp)
|
||||
set(SRC_FILES ${SRC_FILES} ./main.cpp)
|
||||
|
||||
set(SITARA_DEPOT ${CMAKE_SOURCE_DIR}/../../sitara_depot)
|
||||
|
||||
include(${SITARA_DEPOT}/compile/sitara_compile_flags.cmake)
|
||||
|
||||
# óáèðàåò ïðåäóïðåæäåíèÿ nlohman json î GCC7.1
|
||||
add_compile_options(-Wno-psabi)
|
||||
|
||||
#set(Boost_USE_STATIC_LIBS ON)
|
||||
#set(Boost_USE_STATIC_RUNTIME ON)
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
set(Boost_USE_STATIC_RUNTIME ON)
|
||||
|
||||
find_package(Boost 1.74.0)
|
||||
if(Boost_FOUND)
|
||||
@ -41,21 +32,13 @@ endif()
|
||||
message("Boost dir: " ${Boost_INCLUDE_DIRS})
|
||||
message("Boost libs:" ${Boost_LIBRARIES})
|
||||
|
||||
add_executable(${TARGET_NAME} ./main.cpp ${SRC_FILES})
|
||||
#Копирование тестового файла конфигурации устройства Profinet
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/sample_app_echo_config.json
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
target_include_directories(${TARGET_NAME} PRIVATE
|
||||
add_executable(pn_echo_test ./main.cpp ${SRC_FILES})
|
||||
|
||||
target_include_directories(pn_echo_test PRIVATE
|
||||
./
|
||||
${INC_DIRS}
|
||||
)
|
||||
|
||||
target_link_libraries (${TARGET_NAME} PUBLIC ${Boost_LIBRARIES} pthread c rt)
|
||||
|
||||
install(
|
||||
TARGETS ${TARGET_NAME}
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin
|
||||
)
|
||||
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/sample_app_echo_config.json
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin
|
||||
)
|
||||
|
||||
@ -160,7 +160,7 @@ int main(int argc, char * argv[])
|
||||
{
|
||||
answer_str.clear();
|
||||
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||
std::string request{j_get_flags.dump()};
|
||||
///Запрос:
|
||||
*p_output_stream_ << request << std::endl;
|
||||
@ -409,22 +409,13 @@ int main(int argc, char * argv[])
|
||||
j_set_data["submodule_id"] = submodule_id;
|
||||
|
||||
auto& data = j_set_data["data"]["I808InpBits"];
|
||||
static bool init = true;
|
||||
if (init)
|
||||
{
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
//bits[i] = (~bits[i]) & 0x01;
|
||||
std::string bit_name = "in_bit_" + std::to_string(i);
|
||||
data[bit_name] = value_bits[i];
|
||||
}
|
||||
init = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
data["in_bit_1"] = 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
bits[i] = (~bits[i]) & 0x01;
|
||||
std::string bit_name = "in_bit_" + std::to_string(i);
|
||||
data[bit_name] = bits[i];
|
||||
}
|
||||
j_set_echo_data["params"].push_back(j_set_data);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"app_settings":
|
||||
{
|
||||
"app_out_pipe_name": "/home/root/pnet/profinet_io_dev_inp",
|
||||
"app_inp_pipe_name": "/home/root/pnet/profinet_io_dev_out"
|
||||
"app_out_pipe_name": "/home/svad/Projects/profinet_io_dev/profinet_io_dev_inp",
|
||||
"app_inp_pipe_name": "/home/svad/Projects/profinet_io_dev/profinet_io_dev_out"
|
||||
}
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
Subproject commit beec7da14ed48a18e73812e4120a52f2fc057049
|
||||
76
src/.vscode/launch.json
vendored
76
src/.vscode/launch.json
vendored
@ -1,76 +0,0 @@
|
||||
{
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"name": "pn_dev: start debug",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/build/profinet_io_dev",
|
||||
"args": [],
|
||||
"stopAtEntry": true,
|
||||
"cwd": "${workspaceFolder}",
|
||||
/*"cwd": "${fileDirname}",*/
|
||||
"environment": [],
|
||||
"externalConsole": false,
|
||||
"miDebuggerPath": "/home/svad/Projects/profinet_io_dev/debug_support/gdb",
|
||||
"MIMode": "gdb",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Включить автоматическое форматирование для gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
},
|
||||
/*{
|
||||
"description": "Enable break on all exceptions",
|
||||
"text": "catch throw",
|
||||
"ignoreFailures": true
|
||||
},*/
|
||||
{
|
||||
"description": "Задать для варианта приложения дизассемблирования значение Intel",
|
||||
"text": "-gdb-set disassembly-flavor intel",
|
||||
"ignoreFailures": true
|
||||
},
|
||||
/*{
|
||||
"text": "set target-async on"
|
||||
}*/
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
// "processId": "${command:pickProcess}",
|
||||
"name": "(gdb) Remote debug",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "PreDebug",
|
||||
"program": "./build/profinet_io_dev",
|
||||
"additionalSOLibSearchPath": "/home/svad/armdev/beagle_board/sysroot/lib",
|
||||
// "processId": "${command:pickProcess}",
|
||||
"MIMode": "gdb",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"miDebuggerPath": "/usr/bin/gdb-multiarch",
|
||||
"miDebuggerServerAddress": "192.168.6.2:2345",
|
||||
"miDebuggerArgs": "",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Включить автоматическое форматирование для gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
},
|
||||
/*{
|
||||
"description": "Enable break on all exceptions",
|
||||
"text": "catch throw",
|
||||
"ignoreFailures": true
|
||||
},*/
|
||||
{
|
||||
"description": "Задать для варианта приложения дизассемблирования значение Intel",
|
||||
"text": "-gdb-set disassembly-flavor intel",
|
||||
"ignoreFailures": true
|
||||
},
|
||||
/*{
|
||||
"text": "set target-async on"
|
||||
}*/
|
||||
]
|
||||
},
|
||||
],
|
||||
"version": "2.0.0"
|
||||
}
|
||||
77
src/.vscode/settings.json
vendored
77
src/.vscode/settings.json
vendored
@ -1,77 +0,0 @@
|
||||
{
|
||||
"cmake.useCMakePresets": "always",
|
||||
"files.associations": {
|
||||
"string_view": "cpp",
|
||||
"cctype": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cstring": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"any": "cpp",
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"bit": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"bitset": "cpp",
|
||||
"chrono": "cpp",
|
||||
"codecvt": "cpp",
|
||||
"compare": "cpp",
|
||||
"complex": "cpp",
|
||||
"concepts": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"deque": "cpp",
|
||||
"forward_list": "cpp",
|
||||
"list": "cpp",
|
||||
"map": "cpp",
|
||||
"set": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"random": "cpp",
|
||||
"ratio": "cpp",
|
||||
"string": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"fstream": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"iostream": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"mutex": "cpp",
|
||||
"new": "cpp",
|
||||
"numbers": "cpp",
|
||||
"ostream": "cpp",
|
||||
"ranges": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"stop_token": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"thread": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"typeindex": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"valarray": "cpp",
|
||||
"variant": "cpp",
|
||||
"semaphore": "cpp",
|
||||
"filesystem": "cpp",
|
||||
"shared_mutex": "cpp"
|
||||
}
|
||||
}
|
||||
@ -1,22 +1,8 @@
|
||||
cmake_minimum_required (VERSION 3.0)
|
||||
|
||||
project (PROFINET_IO_DEV VERSION 0.0.1)
|
||||
|
||||
message("CMakeList.txt: Starting...")
|
||||
|
||||
if (DEFINED BOARD)
|
||||
if ( (NOT (${BOARD} STREQUAL "am5718-idk")) AND (NOT (${BOARD} STREQUAL "BeagleBoneAI")))
|
||||
message(FATAL_ERROR "BOARD ${BOARD} unsupported!\n"
|
||||
"BOARD can take the following values:\n"
|
||||
" -- am5718-idk\n"
|
||||
" -- BeagleBoneAI")
|
||||
else()
|
||||
message(STATUS "BOARD = " ${BOARD})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
project (PN_DEV_TEST VERSION 0.0.1)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(LIBS_INSTALL_PATH ../libs)
|
||||
set(PNET_PATH ../profinet_stack/p-net)
|
||||
set(TARGET_NAME profinet_io_dev)
|
||||
@ -33,16 +19,21 @@ include (./user_data/user_data.cmake)
|
||||
|
||||
set(SRC_FILES ${SRC_FILES} ./app.cpp)
|
||||
|
||||
set(SITARA_DEPOT ${CMAKE_SOURCE_DIR}/../sitara_depot)
|
||||
# Копирование заглушки скрипта установки параметров сети.
|
||||
# Если не копировать, то в недрах pnet после fork вызовется exit и
|
||||
# вызовутся деструкторы объектов, что может привести к непредвиденным последствиям.
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/set_network_parameters
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
if(DEFINED BOARD)
|
||||
include(${SITARA_DEPOT}/compile/sitara_compile_flags.cmake)
|
||||
endif()
|
||||
#Копирование файла конфигурации
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/program_configure.json
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# óáèðàåò ïðåäóïðåæäåíèÿ nlohman json î GCC7.1
|
||||
add_compile_options(-Wno-psabi)
|
||||
#Копирование тестового файла конфигурации устройства Profinet
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/profinet_device_configure.json
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
#Åñëè íå ñîáèðàåòñÿ ñ îøèáêîé ëèíêåðà undefined reference pthread, òî äîáàâèòü ôëàã ëèíêåðà:
|
||||
#Если не собирается с ошибкой линкера undefined reference pthread, то добавить флаг линкера:
|
||||
#add_link_options(-lrt)
|
||||
add_executable(${TARGET_NAME} ./main.cpp ${SRC_FILES})
|
||||
|
||||
@ -52,54 +43,12 @@ target_include_directories(${TARGET_NAME} PRIVATE
|
||||
${LIBS_INSTALL_PATH}/include
|
||||
${LIBS_INSTALL_PATH}/include/sys
|
||||
${LIBS_INSTALL_PATH}/include/x86_64
|
||||
|
||||
)
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
set(LIB_LIST profinetd osald ${Boost_LIBRARIES})
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL Release)
|
||||
set(LIB_LIST profinet osal ${Boost_LIBRARIES})
|
||||
endif()
|
||||
target_link_directories(${TARGET_NAME} PUBLIC ${LIBS_INSTALL_PATH}/lib/x86_64)
|
||||
|
||||
# óáèðàåò ïðåäóïðåæäåíèÿ nlohman json î GCC7.1
|
||||
add_compile_options(-Wno-psabi)
|
||||
|
||||
set(LIB_ARCH_DIR x86_64)
|
||||
|
||||
if(DEFINED BOARD)
|
||||
set(LIB_ARCH_DIR arm_a15)
|
||||
endif()
|
||||
|
||||
set(LINK_PATH ${LIBS_INSTALL_PATH}/lib/${LIB_ARCH_DIR})
|
||||
|
||||
if (DEFINED BOARD)
|
||||
set(LINK_PATH ${LINK_PATH}/${BOARD})
|
||||
endif()
|
||||
|
||||
target_link_directories(${TARGET_NAME} PUBLIC ${LINK_PATH})
|
||||
|
||||
#Åñëè íå ñîáèðàåòñÿ ñ îøèáêîé ëèíêåðà undefined reference pthread, òî ïîñëå ${Boost_LIBRARIES} äîáàâèòü pthread èëè -lpthread:
|
||||
#Если не собирается с ошибкой линкера undefined reference pthread, то после ${Boost_LIBRARIES} добавить pthread или -lpthread:
|
||||
#target_link_libraries (${TARGET_NAME} PUBLIC profinet osal ${Boost_LIBRARIES} pthread)
|
||||
target_link_libraries (${TARGET_NAME} PUBLIC profinetd osald ${Boost_LIBRARIES})
|
||||
|
||||
# Äëÿ BeagleBoneAI: âåðñèÿ GCC8 íóæíî óêàçûâàòü stdc++fs(áèáëèîòåêà <filesystem>)
|
||||
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
|
||||
set(LIB_LIST ${LIB_LIST} stdc++fs)
|
||||
endif()
|
||||
|
||||
target_link_libraries (${TARGET_NAME} PUBLIC ${LIB_LIST} pthread c rt)
|
||||
|
||||
install(
|
||||
TARGETS ${TARGET_NAME}
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin
|
||||
)
|
||||
|
||||
install(FILES
|
||||
# Êîïèðîâàíèå çàãëóøêè ñêðèïòà óñòàíîâêè ïàðàìåòðîâ ñåòè.
|
||||
# Åñëè íå êîïèðîâàòü, òî â íåäðàõ pnet ïîñëå fork âûçîâåòñÿ exit è
|
||||
# âûçîâóòñÿ äåñòðóêòîðû îáúåêòîâ, ÷òî ìîæåò ïðèâåñòè ê íåïðåäâèäåííûì ïîñëåäñòâèÿì.
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/set_network_parameters
|
||||
#Êîïèðîâàíèå ôàéëà êîíôèãóðàöèè
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/program_configure.json
|
||||
#Êîïèðîâàíèå òåñòîâîãî ôàéëà êîíôèãóðàöèè óñòðîéñòâà Profinet
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/profinet_device_configure.json
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin
|
||||
)
|
||||
@ -1,110 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"displayName": "default",
|
||||
"description": "Default build using Ninja generator",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x86_64_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "x86_64 Debug",
|
||||
"description": "Degub build for x86_64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_C_COMPILER": "gcc",
|
||||
"CMAKE_CXX_COMPILER": "g++"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x86_64_Release",
|
||||
"inherits": "x86_64_Debug",
|
||||
"displayName": "x86_64 Release",
|
||||
"description": "Release build for x86_64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "am571x_idk_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "am571x-idk Debug",
|
||||
"description": "Degub build for AM571x-IDK board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_TOOLCHAIN_FILE": "${workspaceFolder}/../sitara_depot/compile/toolchain.cmake",
|
||||
"BOARD": "am5718-idk"
|
||||
},
|
||||
"environment": {
|
||||
"ENV_TARGET_CROSS_COMPILE_PREFIX": "/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-none-linux-gnueabihf-",
|
||||
"ENV_TARGET_SYSTOOT_PATH": "/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "am571x_idk_Release",
|
||||
"inherits": "am571x_idk_Debug",
|
||||
"displayName": "am571x-idk Release",
|
||||
"description": "Release build for AM571x-IDK board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI_Debug",
|
||||
"inherits": "default",
|
||||
"displayName": "BeagleBoneAI Debug",
|
||||
"description": "Degub build for BeagleBoneAI board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_TOOLCHAIN_FILE": "${workspaceFolder}/../sitara_depot/compile/toolchain.cmake",
|
||||
"BOARD": "BeagleBoneAI"
|
||||
},
|
||||
"environment": {
|
||||
"ENV_TARGET_CROSS_COMPILE_PREFIX": "/home/svad/armdev/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-",
|
||||
"ENV_TARGET_SYSTOOT_PATH": "/home/svad/armdev/beagle_board/sysroot"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI_Release",
|
||||
"inherits": "BeagleBoneAI_Debug",
|
||||
"displayName": "BeagleBoneAI Release",
|
||||
"description": "Release build for BeagleBoneAI board(arm cortex-a15)",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "x86_64 Debug",
|
||||
"configurePreset": "x86_64_Debug"
|
||||
},
|
||||
{
|
||||
"name": "x86_64 Release",
|
||||
"configurePreset": "x86_64_Release"
|
||||
},
|
||||
{
|
||||
"name": "am571x-idk Debug",
|
||||
"configurePreset": "am571x_idk_Debug"
|
||||
},
|
||||
{
|
||||
"name": "am571x-idk Release",
|
||||
"configurePreset": "am571x_idk_Release"
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI Debug",
|
||||
"configurePreset": "BeagleBoneAI_Debug"
|
||||
},
|
||||
{
|
||||
"name": "BeagleBoneAI Release",
|
||||
"configurePreset": "BeagleBoneAI_Release"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -8,7 +8,7 @@ bool App::Init(std::string profinet_config_file)
|
||||
ProfinetPipesSettings profinet_pipe_settings;
|
||||
|
||||
/// Читаем настройки из файла
|
||||
if (!programconf_getProfinetSettings(profinet_config_file, profinet_settings, profinet_pipe_settings))
|
||||
if (!programconf_getProfinetSettings("program_configure.json", profinet_settings, profinet_pipe_settings))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -234,7 +234,7 @@ static bool programconf_getCyclycDataDir(json& j_cyclic_data, uint8_t& dir)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool programconf_getCyclicDataSettings(const json& j_cyc_data, std::map<std::string, UserData>& user_data, uint16_t& cyc_data_len, bool swap)
|
||||
static bool programconf_getCyclicDataSettings(const json& j_cyc_data, std::map<std::string, UserData>& user_data, uint16_t& cyc_data_len)
|
||||
{
|
||||
uint16_t data_lengh = 0;
|
||||
|
||||
@ -256,7 +256,7 @@ static bool programconf_getCyclicDataSettings(const json& j_cyc_data, std::map<s
|
||||
auto name = j.at("name").get<std::string>();
|
||||
auto Type = j.at("DataType").get<std::string>();
|
||||
|
||||
user_data.emplace(std::make_pair(std::string(name), UserData{name, Type, data_lengh, swap}));
|
||||
user_data.emplace(std::make_pair(std::string(name), UserData{name, Type, data_lengh}));
|
||||
|
||||
data_lengh+= user_data.at(name).size;
|
||||
|
||||
@ -285,7 +285,7 @@ static bool programconf_getCyclicDataSettings(const json& j_cyc_data, std::map<s
|
||||
static bool programconf_getParamsSettings(const json& j_sett,
|
||||
ProfinetData_Submodule& submod,
|
||||
ProfinetSharedData& shared_data,
|
||||
std::map<std::uint32_t, UserData>& user_data, bool swap)
|
||||
std::map<std::uint32_t, UserData>& user_data)
|
||||
{
|
||||
if (!j_sett.contains("parameters"))
|
||||
return false;
|
||||
@ -319,7 +319,7 @@ static bool programconf_getParamsSettings(const json& j_sett,
|
||||
param.index = static_cast<uint32_t>(parm_sett.at("index").get<int>());
|
||||
param.name = parm_sett.at("name").get<string>();
|
||||
|
||||
user_data.emplace(std::make_pair(param.index, UserData{param.name, data_type, 0, swap}));
|
||||
user_data.emplace(std::make_pair(param.index, UserData{param.name, data_type, 0}));
|
||||
|
||||
param.length = static_cast<uint16_t>(user_data.at(param.index).size);
|
||||
|
||||
@ -378,14 +378,6 @@ static bool programconf_getProfinetModulesSettings(json& j, ProfinetData_Map * p
|
||||
|
||||
uint32_t module_index = 0;
|
||||
|
||||
/// Необходимость изменять порядок байт в датаграмме(мастер - bigendian)
|
||||
bool swap = true;
|
||||
if (j.contains("SwapData"))
|
||||
{
|
||||
swap = j.at("SwapData").get<bool>();
|
||||
}
|
||||
|
||||
|
||||
for (auto& mod_set : modules_sett)
|
||||
{
|
||||
uint32_t mod_id = hexstring_to_int(mod_set["id"].get<string>());
|
||||
@ -442,7 +434,7 @@ static bool programconf_getProfinetModulesSettings(json& j, ProfinetData_Map * p
|
||||
if (j_cycdata_sett.contains("Inputs"))
|
||||
{
|
||||
/// Конструируем поля пользовательских данных в датаграмме циклических данных
|
||||
if (!programconf_getCyclicDataSettings(j_cycdata_sett.at("Inputs"), submod_user_data.inp_data_map, submod.cyc_indata_len, swap))
|
||||
if (!programconf_getCyclicDataSettings(j_cycdata_sett.at("Inputs"), submod_user_data.inp_data_map, submod.cyc_indata_len))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -455,7 +447,7 @@ static bool programconf_getProfinetModulesSettings(json& j, ProfinetData_Map * p
|
||||
|
||||
if (j_cycdata_sett.contains("Outputs"))
|
||||
{
|
||||
if (!programconf_getCyclicDataSettings(j_cycdata_sett.at("Outputs"), submod_user_data.out_data_map, submod.cyc_outdata_len, swap))
|
||||
if (!programconf_getCyclicDataSettings(j_cycdata_sett.at("Outputs"), submod_user_data.out_data_map, submod.cyc_outdata_len))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -489,7 +481,7 @@ static bool programconf_getProfinetModulesSettings(json& j, ProfinetData_Map * p
|
||||
}
|
||||
|
||||
/// Читаем конфигурацию параметров
|
||||
programconf_getParamsSettings(submod_sett, submod, shared_data, submod_user_data.params_map, swap);
|
||||
programconf_getParamsSettings(submod_sett, submod, shared_data, submod_user_data.params_map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,81 +0,0 @@
|
||||
#!/bin/sh
|
||||
COPY_SCRIPT=/home/svad/Projects/pipe_msgq_translator/host_scripts/copy.sh
|
||||
FS_PATH=/home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/targetNFS
|
||||
|
||||
$COPY_SCRIPT "-r ${FS_PATH}/etc/snmp" /etc
|
||||
$COPY_SCRIPT "-r ${FS_PATH}/usr/share/snmp" /usr/share
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmptop /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpinform /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/rc0.d/K60snmpd /etc/rc0.d
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/rc1.d/K60snmpd /etc/rc1.d
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/rc2.d/S90snmpd /etc/rc2.d
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/rc3.d/S90snmpd /etc/rc3.d
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/rc4.d/S90snmpd /etc/rc4.d
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/rc5.d/S90snmpd /etc/rc5.d
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/rc6.d/K60snmpd /etc/rc6.d
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmp.so.35 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmpmibs.so.35 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmpagent.so.35 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmphelpers.so.35 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/init.d/snmpd /etc/init.d
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/sbin/snmpd /usr/sbin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpdf /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpps /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpget /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpset /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpusm /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpconf /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpping /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmptest /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmptrap /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpvacm /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpwalk /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpcheck /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpdelta /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmptable /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpstatus /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpbulkget /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpgetnext /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpnetstat /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmpbulkwalk /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmptranslate /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/snmp-bridge-mib /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/bin/net-snmp-cert /usr/bin
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmp.so.35.0.0 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmpmibs.so.35.0.0 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmpagent.so.35.0.0 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/lib/libnetsnmphelpers.so.35.0.0 /usr/lib
|
||||
$COPY_SCRIPT ${FS_PATH}/usr/include/linux/snmp.h /usr/include/linux
|
||||
$COPY_SCRIPT ${FS_PATH}/lib/systemd/system/snmpd.service /lib/systemd/system
|
||||
$COPY_SCRIPT ${FS_PATH}/lib/systemd/system-preset/98-net-snmp-server-snmpd.preset /lib/systemd/system-preset
|
||||
$COPY_SCRIPT ${FS_PATH}/etc/systemd/system/multi-user.target.wants/snmpd.service /etc/systemd/system/multi-user.target.wants
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-libs.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-mibs.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-client.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-libs.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-mibs.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-client.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-server-snmpd.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-server-snmpd.prerm /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-server-snmpd.postrm /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-server-snmpd.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-server-snmpd.postinst /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/net-snmp-server-snmpd.conffiles /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmp35.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmp35.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmp35.postinst /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmpmibs35.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmpagent35.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmphelpers35.list /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmpmibs35.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmpagent35.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmphelpers35.control /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmpmibs35.postinst /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmpagent35.postinst /var/lib/opkg/info
|
||||
$COPY_SCRIPT ${FS_PATH}/var/lib/opkg/info/libnetsnmphelpers35.postinst /var/lib/opkg/info
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,13 +1,12 @@
|
||||
find_package(Boost 1.67.0)
|
||||
|
||||
find_package(Boost 1.74.0)
|
||||
if(Boost_FOUND)
|
||||
set(INC_DIRS ${INC_DIRS} ${Boost_INCLUDE_DIRS})
|
||||
else()
|
||||
message(FATAL_ERROR "interprocess.cmake: BOOST not found")
|
||||
message(BOOST NOT FOUND)
|
||||
endif()
|
||||
|
||||
message(STATUS "Boost dir: " ${Boost_INCLUDE_DIRS})
|
||||
message(STATUS "Boost libs:" ${Boost_LIBRARIES})
|
||||
message("Boost dir: " ${Boost_INCLUDE_DIRS})
|
||||
message("Boost libs:" ${Boost_LIBRARIES})
|
||||
|
||||
include(./interprocess/shared_memory/shared_memory.cmake)
|
||||
include(./interprocess/pipes/pipes.cmake)
|
||||
@ -48,7 +48,7 @@ void ProfinetPipes::listen_pipe(ProfinetIface * p_profinet, UserDataMap * p_User
|
||||
//std::cout << "Request: " << request_str << std::endl;
|
||||
if (json_rpc_handler(request_str, answer_str, p_profinet, p_UserDataMap))
|
||||
{
|
||||
//std::cout << "Answer: " << answer_str << std::endl;
|
||||
//std::cout << "Answer: " << answer_str << std::endl;
|
||||
*p_output_stream_ << answer_str << std::endl;
|
||||
}
|
||||
else
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
message(STATUS "profinet log enable")
|
||||
message("log enable")
|
||||
add_definitions(-DLOG_ENABLE)
|
||||
endif()
|
||||
|
||||
|
||||
@ -663,12 +663,9 @@ int Profinet::getOutputCyclicData(uint32_t module_id,
|
||||
uint32_t submodule_id,
|
||||
std::vector<uint8_t>& data)
|
||||
{
|
||||
if (m_modules.find(module_id) == m_modules.end())
|
||||
if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;
|
||||
|
||||
/*if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;*/
|
||||
|
||||
auto submodule = m_modules[module_id]->getSubmodulePtr(submodule_id);
|
||||
|
||||
if (submodule == nullptr)
|
||||
@ -683,10 +680,8 @@ int Profinet::putInputCyclicData(uint32_t module_id,
|
||||
uint32_t submodule_id,
|
||||
std::vector<uint8_t>& data)
|
||||
{
|
||||
if (m_modules.find(module_id) == m_modules.end())
|
||||
if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;
|
||||
/*if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;*/
|
||||
|
||||
auto submodule = m_modules[module_id]->getSubmodulePtr(submodule_id);
|
||||
|
||||
@ -708,11 +703,8 @@ int Profinet::getSubmoduleParam(uint32_t module_id,
|
||||
uint32_t param_id,
|
||||
std::vector<uint8_t>& data)
|
||||
{
|
||||
if (m_modules.find(module_id) == m_modules.end())
|
||||
if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;
|
||||
|
||||
/*if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;*/
|
||||
|
||||
auto submodule = m_modules[module_id]->getSubmodulePtr(submodule_id);
|
||||
|
||||
@ -746,10 +738,8 @@ Profinet::~Profinet()
|
||||
|
||||
int Profinet::getSubmoduleCyclicInpDataLen(uint32_t module_id, uint32_t submodule_id) const
|
||||
{
|
||||
if (m_modules.find(module_id) == m_modules.end())
|
||||
if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;
|
||||
/*if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;*/
|
||||
|
||||
auto submodule = m_modules.at(module_id)->getSubmodulePtr(submodule_id);
|
||||
|
||||
@ -761,10 +751,8 @@ int Profinet::getSubmoduleCyclicInpDataLen(uint32_t module_id, uint32_t submodul
|
||||
|
||||
int Profinet::getSubmoduleCyclicOutDataLen(uint32_t module_id, uint32_t submodule_id) const
|
||||
{
|
||||
if (m_modules.find(module_id) == m_modules.end())
|
||||
if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;
|
||||
/*if (!m_modules.contains(module_id))
|
||||
return ErrorCode::ERR_MODULE_DOES_NOT_EXIST;*/
|
||||
|
||||
auto submodule = m_modules.at(module_id)->getSubmodulePtr(submodule_id);
|
||||
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"SwapData": false,
|
||||
"ProfinetDeviceSettings":
|
||||
{
|
||||
"product_name": "P-Net Sample Application",
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
{
|
||||
"ticks_us": 1000,
|
||||
"cyclic_ms": 100,
|
||||
"eth_dev_name": "eth0",
|
||||
"eth_dev_name": "enp6s1",
|
||||
"profinet_device_config": "profinet_device_configure.json",
|
||||
"enable_pipes": true,
|
||||
"out_pipe_name": "/home/root/pnet/profinet_io_dev_out",
|
||||
"inp_pipe_name": "/home/root/pnet/profinet_io_dev_inp"
|
||||
"out_pipe_name": "/home/svad/Projects/profinet_io_dev/profinet_io_dev_out",
|
||||
"inp_pipe_name": "/home/svad/Projects/profinet_io_dev/profinet_io_dev_inp"
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
#include "user_data.hpp"
|
||||
#include <bit>
|
||||
#include "../endian/endian.hpp"
|
||||
#include <iostream>
|
||||
|
||||
@ -254,10 +255,7 @@ void UserData::extractData(std::vector<uint8_t>& vect)
|
||||
std::copy(&data_.uint8[0], &data_.uint8[size], buf);
|
||||
/// Данные в профинет передаются в формате BigEndian
|
||||
/// преобразуем из Little в Big
|
||||
if (swap_)
|
||||
{
|
||||
endian_swapbytes(&buf[0], size);
|
||||
}
|
||||
endian_swapbytes(&buf[0], size);
|
||||
/// Вставляем данные в вектор по офсету
|
||||
std::copy(buf, &buf[size], vect.begin() + data_offset_);
|
||||
}
|
||||
@ -268,7 +266,7 @@ void UserData::insertData(const std::vector<uint8_t>& vect)
|
||||
std::copy(&vect[data_offset_], &vect[data_offset_ + size], data_.uint8);
|
||||
/// Конвертим
|
||||
if ((type >= UserDataTypes::UINT16) &&
|
||||
(type <= UserDataTypes::FLOAT64) && swap_)
|
||||
(type <= UserDataTypes::FLOAT64))
|
||||
{
|
||||
/// Данные в профинет передаются в формате BigEndian
|
||||
/// преобразуем из Big в Little
|
||||
@ -298,11 +296,8 @@ SubmoduleUserData& UserData_getSubmod(uint32_t mod_id, uint32_t submod_id, UserD
|
||||
|
||||
int UserData::getDataSize(const std::string& type_name)
|
||||
{
|
||||
if (data_corr.find(type_name) == data_corr.end())
|
||||
if (!data_corr.contains(type_name))
|
||||
return 0;
|
||||
|
||||
/*if (!data_corr.contains(type_name))
|
||||
return 0;*/
|
||||
|
||||
return data_size.at(data_corr.at(type_name));
|
||||
}
|
||||
|
||||
@ -36,12 +36,11 @@ public:
|
||||
FLOAT64,
|
||||
};
|
||||
|
||||
UserData(std::string& Name, std::string& DataType, uint16_t offset, bool swap) :
|
||||
UserData(std::string& Name, std::string& DataType, uint16_t offset) :
|
||||
name{Name},
|
||||
type{data_corr.at(DataType)},
|
||||
size{data_size.at(type)},
|
||||
data_offset_{offset},
|
||||
swap_{swap}
|
||||
data_offset_{offset}
|
||||
{
|
||||
data_.uint64 = 0;
|
||||
};
|
||||
@ -116,7 +115,6 @@ private:
|
||||
AnyData data_; /// Данные
|
||||
std::vector<UserDataBit> bits_; ///
|
||||
const uint16_t data_offset_; /// Офсет от начала датаграммы откуда начинаются данные
|
||||
const bool swap_; /// Перобразование порядка байт
|
||||
};
|
||||
|
||||
struct SubmoduleUserData
|
||||
|
||||
Loading…
Reference in New Issue
Block a user