From 01d0543e0ac98be8eaab9bb59bdbe873f563a856 Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Wed, 20 Jan 2016 21:09:37 -0800 Subject: [PATCH] Provide impelmentation of px4muorb_KraitRpcWrapper The Terminate function is not properly implemented yet. Signed-off-by: Mark Charlebois --- cmake/configs/posix_eagle_release.cmake | 15 +-- .../Toolchain-arm-linux-gnueabihf.cmake | 6 -- src/firmware/posix/CMakeLists.txt | 3 + src/modules/commander/commander.cpp | 2 +- src/modules/muorb/krait/CMakeLists.txt | 3 + .../px4muorb_KraitRpcWrapper.cpp} | 100 ++++++++++++------ .../muorb/krait/px4muorb_KraitRpcWrapper.hpp | 71 +++++++++++++ 7 files changed, 144 insertions(+), 56 deletions(-) rename src/modules/muorb/{krait-stubs/px4muorb_KraitRpcWrapper.hpp => krait/px4muorb_KraitRpcWrapper.cpp} (51%) create mode 100644 src/modules/muorb/krait/px4muorb_KraitRpcWrapper.hpp diff --git a/cmake/configs/posix_eagle_release.cmake b/cmake/configs/posix_eagle_release.cmake index cb1a005ed0..e8cc2141fd 100644 --- a/cmake/configs/posix_eagle_release.cmake +++ b/cmake/configs/posix_eagle_release.cmake @@ -1,24 +1,11 @@ include(posix/px4_impl_posix) -# Use build stubs unless explicitly set not to -if("${DSPAL_STUBS_ENABLE}" STREQUAL "") - set(DSPAL_STUBS_ENABLE "1") -endif() - -if ("${QRL_SDK_DIR}" STREQUAL "") - set(QRL_SDK_DIR /opt/qrlsdk) -endif() - -set(CMAKE_PROGRAM_PATH - "${QRL_SDK_DIR}/gcc-linaro-4.8-2015.06-x86_64_arm-linux-gnueabihf/bin" - ${CMAKE_PROGRAM_PATH} - ) - set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake) set(CONFIG_SHMEM "1") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_SHMEM") +include(${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/qurt_app.cmake) set(config_module_list drivers/device diff --git a/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake b/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake index f302ce8c3d..578a9cb433 100644 --- a/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake +++ b/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake @@ -37,8 +37,6 @@ set(CMAKE_SYSTEM_VERSION 1) # specify the cross compiler find_program(C_COMPILER arm-linux-gnueabihf-gcc - PATHS ${HEXAGON_SDK_ROOT}/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin - NO_DEFAULT_PATH ) if(NOT C_COMPILER) message(FATAL_ERROR "could not find arm-linux-gnueabihf-gcc compiler") @@ -46,8 +44,6 @@ endif() cmake_force_c_compiler(${C_COMPILER} GNU) find_program(CXX_COMPILER arm-linux-gnueabihf-g++ - PATHS ${HEXAGON_SDK_ROOT}/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin - NO_DEFAULT_PATH ) if(NOT CXX_COMPILER) message(FATAL_ERROR "could not find arm-linux-gnueabihf-g++ compiler") @@ -58,8 +54,6 @@ cmake_force_cxx_compiler(${CXX_COMPILER} GNU) foreach(tool objcopy nm ld) string(TOUPPER ${tool} TOOL) find_program(${TOOL} arm-linux-gnueabihf-${tool} - PATHS ${HEXAGON_SDK_ROOT}/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin - NO_DEFAULT_PATH ) if(NOT ${TOOL}) message(FATAL_ERROR "could not find arm-linux-gnueabihf-${tool}") diff --git a/src/firmware/posix/CMakeLists.txt b/src/firmware/posix/CMakeLists.txt index f6678092b7..a16731e4d3 100644 --- a/src/firmware/posix/CMakeLists.txt +++ b/src/firmware/posix/CMakeLists.txt @@ -7,11 +7,13 @@ px4_posix_generate_builtin_commands( if ("${BOARD}" STREQUAL "eagle") FASTRPC_STUB_GEN(../qurt/px4muorb.idl) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-prototypes -Wno-missing-declarations") QURT_APP( APP_NAME mainapp IDL_NAME px4muorb APPS_DEST "/home/linaro" SOURCES + px4muorb_stub.c ${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp apps.h LINK_LIBS @@ -19,6 +21,7 @@ if ("${BOARD}" STREQUAL "eagle") ${module_libraries} df_driver_framework ${df_driver_libraries} + ${FASTRPC_ARM_LIBS} pthread m rt -Wl,--end-group ) diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp index 7661b6daee..a6dfd46456 100644 --- a/src/modules/commander/commander.cpp +++ b/src/modules/commander/commander.cpp @@ -2982,7 +2982,7 @@ set_control_mode() /* set vehicle_control_mode according to set_navigation_state */ control_mode.flag_armed = armed.armed; control_mode.flag_external_manual_override_ok = (!status.is_rotary_wing && !status.is_vtol); - control_mode.flag_system_hil_enabled = status.hil_state == vehicle_status_s::HIL_STATE_ON; + //control_mode.flag_system_hil_enabled = status.hil_state == vehicle_status_s::HIL_STATE_ON; control_mode.flag_control_offboard_enabled = false; switch (status.nav_state) { diff --git a/src/modules/muorb/krait/CMakeLists.txt b/src/modules/muorb/krait/CMakeLists.txt index 1b8cfb4c84..3c003e1742 100644 --- a/src/modules/muorb/krait/CMakeLists.txt +++ b/src/modules/muorb/krait/CMakeLists.txt @@ -30,12 +30,15 @@ # POSSIBILITY OF SUCH DAMAGE. # ############################################################################ +include_directories(${CMAKE_BINARY_DIR}/src/firmware/posix) +include_directories(${HEXAGON_SDK_ROOT}/inc/stddef) px4_add_module( MODULE modules__muorb__krait MAIN muorb SRCS uORBKraitFastRpcChannel.cpp + px4muorb_KraitRpcWrapper.cpp muorb_main.cpp DEPENDS platforms__common diff --git a/src/modules/muorb/krait-stubs/px4muorb_KraitRpcWrapper.hpp b/src/modules/muorb/krait/px4muorb_KraitRpcWrapper.cpp similarity index 51% rename from src/modules/muorb/krait-stubs/px4muorb_KraitRpcWrapper.hpp rename to src/modules/muorb/krait/px4muorb_KraitRpcWrapper.cpp index f6b64b8e54..51e7125a7f 100644 --- a/src/modules/muorb/krait-stubs/px4muorb_KraitRpcWrapper.hpp +++ b/src/modules/muorb/krait/px4muorb_KraitRpcWrapper.cpp @@ -30,47 +30,77 @@ * POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************/ -#ifndef _px4muorb_KraitRpcWrapper_hpp_ -#define _px4muorb_KraitRpcWrapper_hpp_ #include +#include "px4muorb_KraitRpcWrapper.hpp" +#include "px4muorb.h" -namespace px4muorb -{ -class KraitRpcWrapper; +using namespace px4muorb; + +/** + * Constructor + */ +KraitRpcWrapper::KraitRpcWrapper() {} + +/** + * destructor + */ +KraitRpcWrapper::~KraitRpcWrapper() {} + +/** + * Initiatizes the rpc channel px4 muorb + */ +bool KraitRpcWrapper::Initialize() +{ + return (px4muorb_orb_initialize() == 0); } -class px4muorb::KraitRpcWrapper +/** + * Terminate to clean up the resources. This should be called at program exit + */ +bool KraitRpcWrapper::Terminate() { -public: - /** - * Constructor - */ - KraitRpcWrapper() {} + // FIXME - TBD + return true; +} - /** - * destructor - */ - ~KraitRpcWrapper() {} +/** + * Muorb related functions to pub/sub of orb topic from krait to adsp + */ +int32_t KraitRpcWrapper::AddSubscriber(const char *topic) +{ + return px4muorb_add_subscriber(topic); +} - /** - * Initiatizes the rpc channel px4 muorb - */ - bool Initialize() { return true; } +int32_t KraitRpcWrapper::RemoveSubscriber(const char *topic) +{ + return px4muorb_remove_subscriber(topic); +} - /** - * Terminate to clean up the resources. This should be called at program exit - */ - bool Terminate() { return true; } +int32_t KraitRpcWrapper::SendData(const char *topic, int32_t length_in_bytes, const uint8_t *data) +{ + return px4muorb_send_topic_data(topic, data, length_in_bytes); +} + +int32_t KraitRpcWrapper::ReceiveData(int32_t *msg_type, char **topic, int32_t *length_in_bytes, uint8_t **data) +{ + // FIXME ?? + int topic_nameLen = 0; + int rv = px4muorb_receive_msg(msg_type, *topic, topic_nameLen, *data, *length_in_bytes, length_in_bytes); + return rv; +} + +int32_t KraitRpcWrapper::IsSubscriberPresent(const char *topic, int32_t *status) +{ + return px4muorb_is_subscriber_present(topic, status); +} + +int32_t KraitRpcWrapper::ReceiveBulkData(uint8_t **bulk_data, int32_t *length_in_bytes, int32_t *topic_count) +{ + return px4muorb_receive_bulk_data(*bulk_data, *length_in_bytes, length_in_bytes, topic_count); +} + +int32_t KraitRpcWrapper::UnblockReceiveData() +{ + return px4muorb_unblock_recieve_msg(); +} - /** - * Muorb related functions to pub/sub of orb topic from krait to adsp - */ - int32_t AddSubscriber(const char *topic) { return 1; } - int32_t RemoveSubscriber(const char *topic) { return 1; } - int32_t SendData(const char *topic, int32_t length_in_bytes, const uint8_t *data) { return 1; } - int32_t ReceiveData(int32_t *msg_type, char **topic, int32_t *length_in_bytes, uint8_t **data) { return 1; } - int32_t IsSubscriberPresent(const char *topic, int32_t *status) { return 1; } - int32_t ReceiveBulkData(uint8_t **bulk_data, int32_t *length_in_bytes, int32_t *topic_count) { return 1; } - int32_t UnblockReceiveData() { return 1; } -}; -#endif // _px4muorb_KraitWrapper_hpp_ diff --git a/src/modules/muorb/krait/px4muorb_KraitRpcWrapper.hpp b/src/modules/muorb/krait/px4muorb_KraitRpcWrapper.hpp new file mode 100644 index 0000000000..fa1ad36e17 --- /dev/null +++ b/src/modules/muorb/krait/px4muorb_KraitRpcWrapper.hpp @@ -0,0 +1,71 @@ +//============================================================================= +// File: px4muorb_KraitRpcWrapper.hpp +// +// @@-COPYRIGHT-START-@@ +// +// Copyright 2015 Qualcomm Technologies, Inc. All rights reserved. +// Confidential & Proprietary - Qualcomm Technologies, Inc. ("QTI") +// +// The party receiving this software directly from QTI (the "Recipient") +// may use this software as reasonably necessary solely for the purposes +// set forth in the agreement between the Recipient and QTI (the +// "Agreement"). The software may be used in source code form solely by +// the Recipient's employees (if any) authorized by the Agreement. Unless +// expressly authorized in the Agreement, the Recipient may not sublicense, +// assign, transfer or otherwise provide the source code to any third +// party. Qualcomm Technologies, Inc. retains all ownership rights in and +// to the software +// +// This notice supersedes any other QTI notices contained within the software +// except copyright notices indicating different years of publication for +// different portions of the software. This notice does not supersede the +// application of any third party copyright notice to that third party's +// code. +// +// @@-COPYRIGHT-END-@@ +// +//============================================================================= +#ifndef _px4muorb_KraitRpcWrapper_hpp_ +#define _px4muorb_KraitRpcWrapper_hpp_ +#include + +namespace px4muorb +{ + class KraitRpcWrapper; +} + +class px4muorb::KraitRpcWrapper +{ +public: + /** + * Constructor + */ + KraitRpcWrapper(); + + /** + * destructor + */ + ~KraitRpcWrapper(); + + /** + * Initiatizes the rpc channel px4 muorb + */ + bool Initialize(); + + /** + * Terminate to clean up the resources. This should be called at program exit + */ + bool Terminate(); + + /** + * Muorb related functions to pub/sub of orb topic from krait to adsp + */ + int32_t AddSubscriber( const char* topic ); + int32_t RemoveSubscriber( const char* topic ); + int32_t SendData( const char* topic, int32_t length_in_bytes, const uint8_t* data ); + int32_t ReceiveData( int32_t* msg_type, char** topic, int32_t* length_in_bytes, uint8_t** data ); + int32_t IsSubscriberPresent( const char* topic, int32_t* status ); + int32_t ReceiveBulkData( uint8_t** bulk_data, int32_t* length_in_bytes, int32_t* topic_count ); + int32_t UnblockReceiveData(); +}; +#endif // _px4muorb_KraitWrapper_hpp_