From c1171ae0ccbafd859e7bfa32e2634d0b73f8b183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergi=20Hern=C3=A1ndez?= <shernand@iri.upc.edu> Date: Tue, 4 Aug 2015 20:25:10 +0000 Subject: [PATCH] Added the extern C clause to all header to be able to use them in a C++ application. --- include/ADXL345_accel.h | 8 ++++++++ include/HMC5843_compass.h | 7 +++++++ include/ITG3200_gyro.h | 8 ++++++++ include/action.h | 8 ++++++++ include/adc_dma.h | 8 ++++++++ include/comm.h | 8 ++++++++ include/dyn_servos.h | 8 ++++++++ include/dynamixel_master_uart_dma.h | 8 ++++++++ include/dynamixel_slave_uart_dma.h | 13 +++++++++++-- include/eeprom.h | 8 ++++++++ include/gpio.h | 8 ++++++++ include/imu_9dof_dma.h | 8 ++++++++ include/imu_int.h | 8 ++++++++ include/motion_manager.h | 18 ++++++++++++++++++ include/motion_pages.h | 8 ++++++++ include/ram.h | 8 ++++++++ include/stm32_time.h | 8 ++++++++ 17 files changed, 148 insertions(+), 2 deletions(-) diff --git a/include/ADXL345_accel.h b/include/ADXL345_accel.h index f2e2ebc..d9a2ba1 100644 --- a/include/ADXL345_accel.h +++ b/include/ADXL345_accel.h @@ -1,6 +1,10 @@ #ifndef ADXL345_ACCEL_H #define ADXL345_ACCEL_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" // public functions @@ -12,4 +16,8 @@ void imu_accel_set_config(void); uint8_t imu_accel_detect(void); void imu_accel_process_data(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/HMC5843_compass.h b/include/HMC5843_compass.h index eac9dda..2a24978 100644 --- a/include/HMC5843_compass.h +++ b/include/HMC5843_compass.h @@ -1,6 +1,10 @@ #ifndef _HMC5843_compass_h #define _HMC5843_compass_h +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" uint8_t imu_compass_detect(void); @@ -11,5 +15,8 @@ void imu_compass_get_data(void); void imu_compass_set_config(void); void imu_compass_process_data(void); +#ifdef __cplusplus +} +#endif #endif diff --git a/include/ITG3200_gyro.h b/include/ITG3200_gyro.h index f2efc4c..6540e77 100644 --- a/include/ITG3200_gyro.h +++ b/include/ITG3200_gyro.h @@ -1,6 +1,10 @@ #ifndef _ITG3200_GYRO_H #define _ITG3200_GYRO_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" // public functions @@ -12,4 +16,8 @@ void imu_gyro_get_data(void); void imu_gyro_set_config(void); void imu_gyro_process_data(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/action.h b/include/action.h index 6270491..74ec9fc 100644 --- a/include/action.h +++ b/include/action.h @@ -1,6 +1,10 @@ #ifndef _ACTION_H #define _ACTION_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" #include "motion_pages.h" @@ -19,4 +23,8 @@ uint8_t action_is_running(void); // motion manager interface void action_process(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/adc_dma.h b/include/adc_dma.h index 5a67f14..05699e4 100644 --- a/include/adc_dma.h +++ b/include/adc_dma.h @@ -1,9 +1,17 @@ #ifndef _ADC_DMA_H #define _ADC_DMA_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" void adc_init(void); uint16_t adc_get_temperature(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/comm.h b/include/comm.h index 1e8c7b8..41b57ce 100644 --- a/include/comm.h +++ b/include/comm.h @@ -1,10 +1,18 @@ #ifndef _COMM_H #define _COMM_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" // public functions void comm_init(void); void comm_start(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/dyn_servos.h b/include/dyn_servos.h index 775f26d..0ed9a2b 100644 --- a/include/dyn_servos.h +++ b/include/dyn_servos.h @@ -1,6 +1,10 @@ #ifndef _DYN_SERVOS_H #define _DYN_SERVOS_H +#ifdef __cplusplus +extern "C" { +#endif + // servo models #define SERVO_AX12A 0x000C #define SERVO_AX12W 0x012C @@ -88,4 +92,8 @@ typedef enum{ P_D_ERROR_OUT_L = 66, P_D_ERROR_OUT_H = 67}TDynServo; +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/dynamixel_master_uart_dma.h b/include/dynamixel_master_uart_dma.h index 74763f7..e07789e 100755 --- a/include/dynamixel_master_uart_dma.h +++ b/include/dynamixel_master_uart_dma.h @@ -1,6 +1,10 @@ #ifndef _DYNAMIXEL_MASTER_DMA_H #define _DYNAMIXEL_MASTER_DMA_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" #include "dynamixel.h" #include "dynamixel2.h" @@ -38,4 +42,8 @@ uint8_t dyn_master_bulk_read(uint8_t num,uint8_t *ids,uint8_t *address, uint8_t // repeater functions uint8_t dyn_master_resend_inst_packet(uint8_t *inst_packet, uint8_t *status_packet); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/dynamixel_slave_uart_dma.h b/include/dynamixel_slave_uart_dma.h index 4652a1b..65cb4be 100644 --- a/include/dynamixel_slave_uart_dma.h +++ b/include/dynamixel_slave_uart_dma.h @@ -1,7 +1,12 @@ #ifndef _DYNAMIXEL_SLAVE_UART_DMA_H #define _DYNAXIXEL_SLAVE_UART_DMA_H +#ifdef __cplusplus +extern "C" { +#endif + #include "dynamixel.h" +#include "dynamixel2.h" #include "stm32f4xx.h" // public functions @@ -12,9 +17,13 @@ inline void dyn_slave_set_return_delay(uint8_t delay); inline void dyn_slave_set_return_level(uint8_t level); inline uint8_t dyn_slave_get_return_level(void); uint8_t dyn_slave_is_packet_ready(void); -void dyn_slave_get_inst_packet(uint8_t *packet); -void dyn_slave_send_status_packet(uint8_t error,uint8_t length, uint8_t *data); +TDynVersion dyn_slave_get_inst_packet(uint8_t *packet); +void dyn_slave_send_status_packet(uint8_t error,uint16_t length, uint8_t *data); void dyn_slave_resend_status_packet(uint8_t *packet); void dyn_slave_reset(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/eeprom.h b/include/eeprom.h index 21d2595..7b389a5 100755 --- a/include/eeprom.h +++ b/include/eeprom.h @@ -24,6 +24,10 @@ #ifndef __EEPROM_H #define __EEPROM_H +#ifdef __cplusplus +extern "C" { +#endif + /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx.h" @@ -86,6 +90,10 @@ uint16_t EE_Init(void); uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data); uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data); +#ifdef __cplusplus +} +#endif + #endif /* __EEPROM_H */ /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ diff --git a/include/gpio.h b/include/gpio.h index 544b727..25be95a 100644 --- a/include/gpio.h +++ b/include/gpio.h @@ -1,6 +1,10 @@ #ifndef _GPIO_H #define _GPIO_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx_hal.h" typedef enum {USER1_LED,USER2_LED,RXD_LED,TXD_LED} led_t; @@ -17,4 +21,8 @@ void gpio_blink_led(led_t led_id, int16_t period_ms); uint8_t gpio_is_pushbutton_pressed(pushbutton_t pb_id); void gpio_set_pushbutton_callback(pushbutton_t pb_id,void (*callback)(void)); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/imu_9dof_dma.h b/include/imu_9dof_dma.h index 41db3c0..6b22fb6 100644 --- a/include/imu_9dof_dma.h +++ b/include/imu_9dof_dma.h @@ -1,6 +1,10 @@ #ifndef _IMU_9DOF_DMA_H #define _IMU_9DOF_DMA_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" // general IMU public functions @@ -8,4 +12,8 @@ void imu_init(void); void imu_start(void); void imu_stop(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/imu_int.h b/include/imu_int.h index 9dc552e..32b7783 100644 --- a/include/imu_int.h +++ b/include/imu_int.h @@ -1,6 +1,10 @@ #ifndef _IMU_INT_H #define _IMU_INT_H +#ifdef __cplusplus +extern "C" { +#endif + #define I2C_IMU_DMA DMA1 #define I2C_IMU_DMA_CHANNEL DMA_Channel_3 #define I2C_IMU_DR_ADDRESS ((uint32_t)I2C3+0x10) @@ -64,4 +68,8 @@ extern DMA_InitTypeDef IMU_DMA_RX_InitStructure; void imu_wait_op_done(void); uint8_t imu_is_op_done(void); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/motion_manager.h b/include/motion_manager.h index 47aee89..fcc07e6 100644 --- a/include/motion_manager.h +++ b/include/motion_manager.h @@ -1,6 +1,10 @@ #ifndef _MOTION_MANAGER_H #define _MOTION_MANAGER_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" #define MANAGER_MAX_NUM_SERVOS 31 @@ -23,8 +27,14 @@ typedef struct{ uint16_t current_value; TModules module; uint8_t enabled; + int16_t cw_angle_limit; + int16_t ccw_angle_limit; + uint8_t dyn_version; }TServoInfo; +// public variables +extern int64_t current_angles[MANAGER_MAX_NUM_SERVOS]; + // public functions void manager_init(uint16_t period_us); inline uint16_t manager_get_period(void); @@ -32,6 +42,8 @@ inline void manager_set_period(uint16_t period_us); inline void manager_enable(void); inline void manager_disable(void); inline uint8_t manager_is_enabled(void); +void manager_enable_balance(void); +void manager_disable_balance(void); inline uint8_t manager_get_num_servos(void); inline void manager_set_module(uint8_t servo_id,TModules module); inline TModules manager_get_module(uint8_t servo_id); @@ -39,5 +51,11 @@ inline void manager_enable_servo(uint8_t servo_id); inline void manager_disable_servo(uint8_t servo_id); void manager_disable_servos(void); inline uint8_t manager_is_servo_enabled(uint8_t servo_id); +inline int16_t manager_get_cw_angle_limit(uint8_t servo_id); +inline int16_t manager_get_ccw_angle_limit(uint8_t servo_id); + +#ifdef __cplusplus +} +#endif #endif diff --git a/include/motion_pages.h b/include/motion_pages.h index cac9f75..a195e17 100644 --- a/include/motion_pages.h +++ b/include/motion_pages.h @@ -1,6 +1,10 @@ #ifndef _MOTION_PAGES_H #define _MOTION_PAGES_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" #define MAX_PAGES 256 @@ -49,4 +53,8 @@ void pages_clear_page(TPage *page); void pages_copy_page(TPage *src,TPage *dst); inline uint8_t pages_get_slope(TPage *page,uint8_t servo_id); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/ram.h b/include/ram.h index b0fb2f3..a1d31eb 100644 --- a/include/ram.h +++ b/include/ram.h @@ -1,6 +1,10 @@ #ifndef _RAM_H #define _RAM_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" #include "eeprom.h" @@ -153,4 +157,8 @@ uint8_t ram_write_word(uint8_t address, uint16_t data); uint8_t ram_write_table(uint8_t address, uint8_t length,uint8_t *data); inline uint8_t ram_in_range(uint8_t start_reg,uint8_t end_reg,uint8_t address,uint8_t length); +#ifdef __cplusplus +} +#endif + #endif diff --git a/include/stm32_time.h b/include/stm32_time.h index 9595bec..6b47829 100755 --- a/include/stm32_time.h +++ b/include/stm32_time.h @@ -1,6 +1,10 @@ #ifndef _STM32_TIME_H #define _STM32_TIME_H +#ifdef __cplusplus +extern "C" { +#endif + #include "stm32f4xx.h" #include "system_stm32f4xx.h" @@ -8,4 +12,8 @@ void time_init(void); void delay_ms(__IO uint32_t time); void delay_us(uint32_t us); +#ifdef __cplusplus +} +#endif + #endif -- GitLab