From 88aeb865effc650acb82e29e0f6bb84789a9dc96 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Mon, 20 Jan 2020 21:48:36 +0100
Subject: [PATCH] Added the static modifier to the inline functions ot avoid
 undefined reference errors.

---
 comm/include/comm.h                           |  4 +--
 dynamixel_base/include/dynamixel.h            | 22 ++++++-------
 dynamixel_base/include/dynamixel2.h           | 22 ++++++-------
 dynamixel_base/include/dynamixel_master.h     |  6 ++--
 dynamixel_base/include/dynamixel_slave.h      | 10 +++---
 .../include/dynamixel_slave_device.h          | 14 ++++----
 dynamixel_manager/include/dyn_manager.h       | 20 +++++++++---
 dynamixel_manager/include/dyn_module.h        | 30 +++++++++++++----
 .../include/modules/motion_manager.h          | 27 +++++++++++++---
 dynamixel_manager/src/dyn_module.c            | 32 -------------------
 .../src/modules/motion_manager.c              | 27 ----------------
 memory/include/ram.h                          |  6 ++--
 utils/include/buffer.h                        |  6 ++--
 utils/include/stm32_time.h                    |  2 +-
 14 files changed, 108 insertions(+), 120 deletions(-)

diff --git a/comm/include/comm.h b/comm/include/comm.h
index 65c8ade..d8dd28a 100644
--- a/comm/include/comm.h
+++ b/comm/include/comm.h
@@ -712,7 +712,7 @@ comm_error comm_is_receive_done(TComm *dev);
  * \return the error of the last operation or COMM_BUSY if the operation
  *         is still in progress.
  */
-inline unsigned char comm_get_error(TComm *dev)
+static inline unsigned char comm_get_error(TComm *dev)
 {
   return dev->error;
 }
@@ -729,7 +729,7 @@ inline unsigned char comm_get_error(TComm *dev)
  *        behavior is unpredictable. 
  * \param error identifier of the error to be set
  */
-inline void comm_set_error(TComm *dev, unsigned char error)
+static inline void comm_set_error(TComm *dev, unsigned char error)
 {
   dev->error=error;
 }
diff --git a/dynamixel_base/include/dynamixel.h b/dynamixel_base/include/dynamixel.h
index 29b35c0..2b06e60 100755
--- a/dynamixel_base/include/dynamixel.h
+++ b/dynamixel_base/include/dynamixel.h
@@ -23,7 +23,7 @@ void dyn_copy_packet(unsigned char *source, unsigned char *destination);
  * \brief
  *
  */
-inline unsigned char dyn_get_id(unsigned char *packet)
+static inline unsigned char dyn_get_id(unsigned char *packet)
 {
   return packet[DYN_ID_OFF];
 }
@@ -31,7 +31,7 @@ inline unsigned char dyn_get_id(unsigned char *packet)
  * \brief
  *
  */
-inline unsigned char dyn_get_length(unsigned char *packet)
+static inline unsigned char dyn_get_length(unsigned char *packet)
 {
   return packet[DYN_LENGTH_OFF];
 }
@@ -39,7 +39,7 @@ inline unsigned char dyn_get_length(unsigned char *packet)
  * \brief
  *
  */
-inline TDynInstruction dyn_get_instruction(unsigned char *packet)
+static inline TDynInstruction dyn_get_instruction(unsigned char *packet)
 {
   return (TDynInstruction)packet[DYN_INST_OFF];
 }
@@ -81,7 +81,7 @@ void dyn_init_read_packet(unsigned char *packet,unsigned char id,unsigned char a
  * \brief
  *
  */
-inline unsigned char dyn_get_read_length(unsigned char *packet)
+static inline unsigned char dyn_get_read_length(unsigned char *packet)
 {
   return packet[DYN_DATA_OFF+1];
 }
@@ -89,7 +89,7 @@ inline unsigned char dyn_get_read_length(unsigned char *packet)
  * \brief
  *
  */
-inline unsigned char dyn_get_read_address(unsigned char *packet)
+static inline unsigned char dyn_get_read_address(unsigned char *packet)
 {
   return packet[DYN_DATA_OFF];
 }
@@ -103,7 +103,7 @@ void dyn_init_write_packet(unsigned char *packet,unsigned char id,unsigned char
  * \brief
  *
  */
-inline unsigned char dyn_get_write_address(unsigned char *packet)
+static inline unsigned char dyn_get_write_address(unsigned char *packet)
 {
   return packet[DYN_DATA_OFF];
 }
@@ -111,7 +111,7 @@ inline unsigned char dyn_get_write_address(unsigned char *packet)
  * \brief
  *
  */
-inline unsigned char dyn_get_write_length(unsigned char *packet)
+static inline unsigned char dyn_get_write_length(unsigned char *packet)
 {
   return packet[DYN_LENGTH_OFF]-3;
 }
@@ -130,7 +130,7 @@ void dyn_init_reg_write_packet(unsigned char *packet,unsigned char id,unsigned c
  * \brief
  *
  */
-inline unsigned char dyn_get_reg_write_address(unsigned char *packet)
+static inline unsigned char dyn_get_reg_write_address(unsigned char *packet)
 {
   return packet[DYN_DATA_OFF];
 }
@@ -138,7 +138,7 @@ inline unsigned char dyn_get_reg_write_address(unsigned char *packet)
  * \brief
  *
  */
-inline unsigned char dyn_get_reg_write_length(unsigned char *packet)
+static inline unsigned char dyn_get_reg_write_length(unsigned char *packet)
 {
   return packet[DYN_LENGTH_OFF]-3;
 }
@@ -208,7 +208,7 @@ void dyn_init_status_packet(unsigned char *packet,unsigned char id,TDynError err
  * \brief
  *
  */
-inline TDynError dyn_get_status_error(unsigned char *packet)
+static inline TDynError dyn_get_status_error(unsigned char *packet)
 {
   return (TDynError)packet[DYN_ERROR_OFF];
 }
@@ -222,7 +222,7 @@ unsigned char dyn_get_read_status_data(unsigned char *packet,unsigned char *data
  * \brief
  *
  */
-inline unsigned char dyn_get_read_status_id(unsigned char *packet)
+static inline unsigned char dyn_get_read_status_id(unsigned char *packet)
 {
   return packet[DYN_ID_OFF];
 }
diff --git a/dynamixel_base/include/dynamixel2.h b/dynamixel_base/include/dynamixel2.h
index f430306..8b6b3d4 100644
--- a/dynamixel_base/include/dynamixel2.h
+++ b/dynamixel_base/include/dynamixel2.h
@@ -24,7 +24,7 @@ void dyn2_copy_packet(unsigned char *source, unsigned char *destination);
  * \brief
  * 
  */
-inline unsigned char dyn2_get_id(unsigned char *packet)
+static inline unsigned char dyn2_get_id(unsigned char *packet)
 {
   return packet[DYN2_ID_OFF];
 }
@@ -32,7 +32,7 @@ inline unsigned char dyn2_get_id(unsigned char *packet)
  * \brief
  * 
  */
-inline unsigned short int dyn2_get_length(unsigned char *packet)
+static inline unsigned short int dyn2_get_length(unsigned char *packet)
 {
   return (packet[DYN2_LENGTH_OFF]+packet[DYN2_LENGTH_OFF+1]*256);
 }
@@ -40,7 +40,7 @@ inline unsigned short int dyn2_get_length(unsigned char *packet)
  * \brief
  * 
  */
-inline TDynInstruction dyn2_get_instruction(unsigned char *packet)
+static inline TDynInstruction dyn2_get_instruction(unsigned char *packet)
 {
   return (TDynInstruction)packet[DYN2_INST_OFF];
 }
@@ -82,7 +82,7 @@ void dyn2_init_read_packet(unsigned char *packet,unsigned char id,unsigned short
  * \brief
  * 
  */
-inline unsigned short int dyn2_get_read_length(unsigned char *packet)
+static inline unsigned short int dyn2_get_read_length(unsigned char *packet)
 {
   return (packet[DYN2_DATA_OFF+2]+packet[DYN2_DATA_OFF+3]*256);
 }
@@ -90,7 +90,7 @@ inline unsigned short int dyn2_get_read_length(unsigned char *packet)
  * \brief
  * 
  */
-inline unsigned short int dyn2_get_read_address(unsigned char *packet)
+static inline unsigned short int dyn2_get_read_address(unsigned char *packet)
 {
   return (packet[DYN2_DATA_OFF]+packet[DYN2_DATA_OFF+1]*256);
 }
@@ -104,7 +104,7 @@ void dyn2_init_write_packet(unsigned char *packet,unsigned char id,unsigned shor
  * \brief
  * 
  */
-inline unsigned short int dyn2_get_write_address(unsigned char *packet)
+static inline unsigned short int dyn2_get_write_address(unsigned char *packet)
 {
   return (packet[DYN2_DATA_OFF]+packet[DYN2_DATA_OFF+1]*256);
 }
@@ -112,7 +112,7 @@ inline unsigned short int dyn2_get_write_address(unsigned char *packet)
  * \brief
  * 
  */
-inline unsigned short int dyn2_get_write_length(unsigned char *packet)
+static inline unsigned short int dyn2_get_write_length(unsigned char *packet)
 {
   return (packet[DYN2_LENGTH_OFF]+packet[DYN2_LENGTH_OFF+1]*256)-5;
 }
@@ -131,7 +131,7 @@ void dyn2_init_reg_write_packet(unsigned char *packet,unsigned char id,unsigned
  * \brief
  * 
  */
-inline unsigned short int dyn2_get_reg_write_address(unsigned char *packet)
+static inline unsigned short int dyn2_get_reg_write_address(unsigned char *packet)
 {
   return (packet[DYN2_DATA_OFF]+packet[DYN2_DATA_OFF+1]*256);
 }
@@ -139,7 +139,7 @@ inline unsigned short int dyn2_get_reg_write_address(unsigned char *packet)
  * \brief
  * 
  */
-inline unsigned short int dyn2_get_reg_write_length(unsigned char *packet)
+static inline unsigned short int dyn2_get_reg_write_length(unsigned char *packet)
 {
   return (packet[DYN2_LENGTH_OFF]+packet[DYN2_LENGTH_OFF+1]*256)-5;
 }
@@ -231,7 +231,7 @@ void dyn2_init_status_packet(unsigned char *packet,unsigned char id,TDynError er
  * \brief
  * 
  */
-inline TDynError dyn2_get_status_error(unsigned char *packet)
+static inline TDynError dyn2_get_status_error(unsigned char *packet)
 {
   return (TDynError)packet[DYN2_DATA_OFF];
 }
@@ -245,7 +245,7 @@ unsigned short int dyn2_get_read_status_data(unsigned char *packet,unsigned char
  * \brief
  * 
  */
-inline unsigned char dyn2_get_read_status_id(unsigned char *packet)
+static inline unsigned char dyn2_get_read_status_id(unsigned char *packet)
 {
   return packet[DYN2_ID_OFF];
 }
diff --git a/dynamixel_base/include/dynamixel_master.h b/dynamixel_base/include/dynamixel_master.h
index f1fdf2e..3c7f047 100644
--- a/dynamixel_base/include/dynamixel_master.h
+++ b/dynamixel_base/include/dynamixel_master.h
@@ -100,7 +100,7 @@ void dyn_master_init(TDynamixelMaster *master,TComm *dev,TDynVersion version);
  * \brief
  *
  */
-inline void dyn_master_set_rx_timeout(TDynamixelMaster *master,unsigned short int timeout_ms)
+static inline void dyn_master_set_rx_timeout(TDynamixelMaster *master,unsigned short int timeout_ms)
 {
   if(master!=0x00000000)
     master->rx_timeout_ms=timeout_ms;
@@ -109,7 +109,7 @@ inline void dyn_master_set_rx_timeout(TDynamixelMaster *master,unsigned short in
  * \brief
  *
  */
-inline void dyn_master_set_return_level(TDynamixelMaster *master,return_level_t level)
+static inline void dyn_master_set_return_level(TDynamixelMaster *master,return_level_t level)
 {
   if(master!=0x00000000)
     master->return_level=level;
@@ -118,7 +118,7 @@ inline void dyn_master_set_return_level(TDynamixelMaster *master,return_level_t
  * \brief
  *
  */
-inline return_level_t dyn_master_get_return_level(TDynamixelMaster *master)
+static inline return_level_t dyn_master_get_return_level(TDynamixelMaster *master)
 {
   if(master!=0x00000000)
     return master->return_level;
diff --git a/dynamixel_base/include/dynamixel_slave.h b/dynamixel_base/include/dynamixel_slave.h
index 067ad7e..c680e17 100644
--- a/dynamixel_base/include/dynamixel_slave.h
+++ b/dynamixel_base/include/dynamixel_slave.h
@@ -126,7 +126,7 @@ unsigned char dyn_slave_add_device(TDynamixelSlave *slave, TDynamixelSlaveDevice
  * \brief
  *
  */
-inline void dyn_slave_set_baudrate(TDynamixelSlave *slave,unsigned int baudrate)
+static inline void dyn_slave_set_baudrate(TDynamixelSlave *slave,unsigned int baudrate)
 {
   if(slave!=0x00000000)
     slave->set_baudrate(slave->comm_dev,baudrate);
@@ -135,7 +135,7 @@ inline void dyn_slave_set_baudrate(TDynamixelSlave *slave,unsigned int baudrate)
  * \brief
  *
  */
-inline void dyn_slave_set_rx_timeout(TDynamixelSlave *slave,unsigned short int timeout_ms)
+static inline void dyn_slave_set_rx_timeout(TDynamixelSlave *slave,unsigned short int timeout_ms)
 {
   if(slave!=0x00000000)
     slave->rx_timeout_ms=timeout_ms;
@@ -144,7 +144,7 @@ inline void dyn_slave_set_rx_timeout(TDynamixelSlave *slave,unsigned short int t
  * \brief
  *
  */
-inline TDynVersion dyn_slave_get_version(TDynamixelSlave *slave)
+static inline TDynVersion dyn_slave_get_version(TDynamixelSlave *slave)
 {
   if(slave!=0x00000000)
     return slave->version;
@@ -155,7 +155,7 @@ inline TDynVersion dyn_slave_get_version(TDynamixelSlave *slave)
  * \brief
  *
  */
-inline void dyn_slave_start(TDynamixelSlave *slave)
+static inline void dyn_slave_start(TDynamixelSlave *slave)
 {
   scheduler_enable_channel(slave->scheduler,slave->sch_channel);
 }
@@ -163,7 +163,7 @@ inline void dyn_slave_start(TDynamixelSlave *slave)
  * \brief
  *
  */
-inline void dyn_slave_stop(TDynamixelSlave *slave)
+static inline void dyn_slave_stop(TDynamixelSlave *slave)
 {
   scheduler_disable_channel(slave->scheduler,slave->sch_channel);
 }
diff --git a/dynamixel_base/include/dynamixel_slave_device.h b/dynamixel_base/include/dynamixel_slave_device.h
index 34b28e1..aa7617b 100644
--- a/dynamixel_base/include/dynamixel_slave_device.h
+++ b/dynamixel_base/include/dynamixel_slave_device.h
@@ -132,7 +132,7 @@ unsigned char dyn_slave_device_init(TDynamixelSlaveDevice *device,unsigned char
  * \brief
  *
  */
-inline void dyn_slave_device_set_address(TDynamixelSlaveDevice *device,unsigned char address)
+static inline void dyn_slave_device_set_address(TDynamixelSlaveDevice *device,unsigned char address)
 {
   if(device!=0x00000000)
     device->address=address;
@@ -141,7 +141,7 @@ inline void dyn_slave_device_set_address(TDynamixelSlaveDevice *device,unsigned
  * \brief
  *
  */
-inline unsigned char dyn_slave_device_get_address(TDynamixelSlaveDevice *device)
+static inline unsigned char dyn_slave_device_get_address(TDynamixelSlaveDevice *device)
 {
   if(device!=0x00000000)
     return device->address;
@@ -152,7 +152,7 @@ inline unsigned char dyn_slave_device_get_address(TDynamixelSlaveDevice *device)
  * \brief
  *
  */
-inline void dyn_slave_device_set_return_delay(TDynamixelSlaveDevice *device,unsigned char delay)
+static inline void dyn_slave_device_set_return_delay(TDynamixelSlaveDevice *device,unsigned char delay)
 {
   if(device!=0x00000000)
     device->return_delay=delay;
@@ -161,7 +161,7 @@ inline void dyn_slave_device_set_return_delay(TDynamixelSlaveDevice *device,unsi
  * \brief
  *
  */
-inline unsigned char dyn_slave_device_get_return_delay(TDynamixelSlaveDevice *device)
+static inline unsigned char dyn_slave_device_get_return_delay(TDynamixelSlaveDevice *device)
 {
   if(device!=0x00000000)
     return device->return_delay;
@@ -172,7 +172,7 @@ inline unsigned char dyn_slave_device_get_return_delay(TDynamixelSlaveDevice *de
  * \brief
  *
  */
-inline void dyn_slave_device_set_return_level(TDynamixelSlaveDevice *device,return_level_t level)
+static inline void dyn_slave_device_set_return_level(TDynamixelSlaveDevice *device,return_level_t level)
 {
   if(device!=0x00000000)
     device->return_level=level;
@@ -181,7 +181,7 @@ inline void dyn_slave_device_set_return_level(TDynamixelSlaveDevice *device,retu
  * \brief
  *
  */
-inline return_level_t dyn_slave_device_get_return_level(TDynamixelSlaveDevice *device)
+static inline return_level_t dyn_slave_device_get_return_level(TDynamixelSlaveDevice *device)
 {
   if(device!=0x00000000)
     return device->return_level;
@@ -202,7 +202,7 @@ unsigned char dyn_v2_slave_loop(TDynamixelSlaveDevice *device,unsigned char *rx_
  * \brief
  *
  */
-inline TMemory *dyn_slave_device_get_memory(TDynamixelSlaveDevice *device)
+static inline TMemory *dyn_slave_device_get_memory(TDynamixelSlaveDevice *device)
 {
   return &device->memory;
 }
diff --git a/dynamixel_manager/include/dyn_manager.h b/dynamixel_manager/include/dyn_manager.h
index 948c040..24f7793 100644
--- a/dynamixel_manager/include/dyn_manager.h
+++ b/dynamixel_manager/include/dyn_manager.h
@@ -126,14 +126,26 @@ typedef struct{
 // public functions
 unsigned char dyn_manager_init(TDynManager *manager,TMemory *memory,unsigned short int eeprom_base_address,unsigned short int ram_base_address);
 void dyn_manager_set_period(TDynManager *manager,unsigned short int period_us);
-unsigned short int dyn_manager_get_period(TDynManager *manager);
+static inline unsigned short int dyn_manager_get_period(TDynManager *manager)
+{
+  return manager->period_us;
+}
 void dyn_manager_scan(TDynManager *manager);
 void dyn_manager_add_master(TDynManager *manager,TDynamixelMaster *master);
-unsigned char dyn_manager_get_num_masters(TDynManager *manager);
+static inline unsigned char dyn_manager_get_num_masters(TDynManager *manager)
+{
+  return manager->num_masters;
+}
 TDynamixelMaster *dyn_manager_get_device_master(TDynManager *manager,unsigned char device_id);
-unsigned short int dyn_manager_get_device_model(TDynManager *manager,unsigned char device_id);
+static inline unsigned short int dyn_manager_get_device_model(TDynManager *manager,unsigned char device_id)
+{
+  return manager->devices[device_id].model;
+}
 void dyn_manager_add_module(TDynManager *manager,struct TDynModule *module);
-unsigned char dyn_manager_get_num_modules(TDynManager *manager);
+static inline unsigned char dyn_manager_get_num_modules(TDynManager *manager)
+{
+  return manager->num_modules;
+}
 void dyn_manager_delete_op(TDynManager *manager,OP_HANDLE *op);
 void dyn_manager_set_op_period(TDynManager *manager,OP_HANDLE *op,unsigned char period_count);
 unsigned char dyn_manager_get_op_period(TDynManager *manager,OP_HANDLE *op);
diff --git a/dynamixel_manager/include/dyn_module.h b/dynamixel_manager/include/dyn_module.h
index 979b248..8620ebe 100644
--- a/dynamixel_manager/include/dyn_module.h
+++ b/dynamixel_manager/include/dyn_module.h
@@ -33,16 +33,34 @@ typedef struct TDynModule{
 
 //public functions
 unsigned char dyn_module_init(TDynModule *module);
-inline void dyn_module_enable(TDynModule *module);
-inline void dyn_module_disable(TDynModule *module);
-inline unsigned char dyn_module_is_enabled(TDynModule *module);
+static inline void dyn_module_enable(TDynModule *module)
+{
+  module->enabled=0x01;
+}
+static inline void dyn_module_disable(TDynModule *module)
+{
+  module->enabled=0x00;
+}
+static inline unsigned char dyn_module_is_enabled(TDynModule *module)
+{
+  return module->enabled;
+}
 void dyn_module_add_model(TDynModule *module,unsigned short int model);
-inline unsigned char dyn_module_get_num_models(TDynModule *module);
+static inline unsigned char dyn_module_get_num_models(TDynModule *module)
+{
+  return module->num_models;
+}
 void dyn_module_add_device(TDynModule *module,unsigned char id, unsigned short int model);
-inline unsigned char dyn_module_get_num_assigned_devices(TDynModule *module);
+static inline unsigned char dyn_module_get_num_assigned_devices(TDynModule *module)
+{
+  return module->num_assigned_ids;
+}
 unsigned char dyn_module_device_is_assigned(TDynModule *module,unsigned char id);
 void dyn_module_set_period(TDynModule *module,unsigned char period);
-inline unsigned char dyn_module_get_period(TDynModule *module);
+static inline unsigned char dyn_module_get_period(TDynModule *module)
+{
+  return module->period_count;
+}
 
 #ifdef __cplusplus
   }
diff --git a/dynamixel_manager/include/modules/motion_manager.h b/dynamixel_manager/include/modules/motion_manager.h
index 0fb7618..cc92077 100644
--- a/dynamixel_manager/include/modules/motion_manager.h
+++ b/dynamixel_manager/include/modules/motion_manager.h
@@ -56,16 +56,33 @@ typedef struct {
 }TMotionManager;  
 
 unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory,unsigned short int ram_base_address,unsigned short int eeprom_base_address);
-TDynModule *mmanager_get_dyn_module(TMotionManager *mmanager);
-void mmanager_enable_balance(TMotionManager *mmanager);
-void mmanager_disable_balance(TMotionManager *mmanager);
-unsigned char mmanager_is_balance_enabled(TMotionManager *mmanager);
+static inline TDynModule *mmanager_get_dyn_module(TMotionManager *mmanager)
+{
+  return &mmanager->dyn_module;
+}
+static inline void mmanager_enable_balance(TMotionManager *mmanager)
+{
+  if(mmanager->balance!=0x00000000)
+    mmanager->balance_enabled=0x01;
+}
+static inline void mmanager_disable_balance(TMotionManager *mmanager)
+{
+  mmanager->balance_enabled=0x00;
+}
+static inline unsigned char mmanager_is_balance_enabled(TMotionManager *mmanager)
+{
+  return mmanager->balance_enabled;
+}
 void mmanager_set_module(TMotionManager *mmanager,unsigned char servo_id,TModules module);
 TModules mmanager_get_module(TMotionManager *mmanager,unsigned char servo_id);
 void mmanager_enable_servo(TMotionManager *mmanager,unsigned char servo_id);
 void mmanager_disable_servo(TMotionManager *mmanager,unsigned char servo_id);
 unsigned char mmanager_is_servo_enabled(TMotionManager *mmanager,unsigned char servo_id);
-void mmanager_set_offset(TMotionManager *mmanager,unsigned char servo_id,char offset);
+static inline void mmanager_set_offset(TMotionManager *mmanager,unsigned char servo_id,char offset)
+{
+  if(servo_id<DYN_MANAGER_MAX_NUM_DEVICES)
+    mmanager->servo_values[servo_id].offset=offset;
+}
 void mmanager_add_module(TMotionManager *mmanager,struct TMotionModule *module);
 
 #ifdef __cplusplus
diff --git a/dynamixel_manager/src/dyn_module.c b/dynamixel_manager/src/dyn_module.c
index e63ddca..e61cd7c 100644
--- a/dynamixel_manager/src/dyn_module.c
+++ b/dynamixel_manager/src/dyn_module.c
@@ -23,21 +23,6 @@ unsigned char dyn_module_init(TDynModule *module)
   return 0x01;
 }
 
-void dyn_module_enable(TDynModule *module)
-{
-  module->enabled=0x01;
-}
-
-void dyn_module_disable(TDynModule *module)
-{
-  module->enabled=0x00;
-}
-
-unsigned char dyn_module_is_enabled(TDynModule *module)
-{
-  return module->enabled;
-}
-
 void dyn_module_add_model(TDynModule *module,unsigned short int model)
 {
   unsigned char i;
@@ -52,11 +37,6 @@ void dyn_module_add_model(TDynModule *module,unsigned short int model)
   }
 }
 
-unsigned char dyn_module_get_num_models(TDynModule *module)
-{
-  return module->num_models;
-}
-
 void dyn_module_add_device(TDynModule *module,unsigned char id, unsigned short int model)
 {
   unsigned char i;
@@ -74,11 +54,6 @@ void dyn_module_add_device(TDynModule *module,unsigned char id, unsigned short i
   }
 }
 
-unsigned char dyn_module_get_num_assigned_devices(TDynModule *module)
-{
-  return module->num_assigned_ids;
-}
-
 unsigned char dyn_moudle_device_is_assigned(TDynModule *module,unsigned char id)
 {
   if(id<DYN_MANAGER_MAX_NUM_DEVICES)
@@ -94,10 +69,3 @@ void dyn_module_set_period(TDynModule *module,unsigned char period)
   else
     module->period_count=period;
 }
-
-unsigned char dyn_module_get_period(TDynModule *module)
-{
-  return module->period_count;
-}
-
-
diff --git a/dynamixel_manager/src/modules/motion_manager.c b/dynamixel_manager/src/modules/motion_manager.c
index e786862..1a4363b 100644
--- a/dynamixel_manager/src/modules/motion_manager.c
+++ b/dynamixel_manager/src/modules/motion_manager.c
@@ -343,27 +343,6 @@ unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory,unsigned sh
   return 0x01;
 }
 
-TDynModule *mmanager_get_dyn_module(TMotionManager *mmanager)
-{
-  return &mmanager->dyn_module;
-}
-
-void mmanager_enable_balance(TMotionManager *mmanager)
-{
-  if(mmanager->balance!=0x00000000)
-    mmanager->balance_enabled=0x01;
-}
-
-void mmanager_disable_balance(TMotionManager *mmanager)
-{
-  mmanager->balance_enabled=0x00;
-}
-
-unsigned char mmanager_is_balance_enabled(TMotionManager *mmanager)
-{
-  return mmanager->balance_enabled;
-}
-
 void mmanager_set_module(TMotionManager *mmanager,unsigned char servo_id,TModules module)
 {
   if(servo_id<DYN_MANAGER_MAX_NUM_DEVICES)
@@ -429,12 +408,6 @@ unsigned char mmanager_is_servo_enabled(TMotionManager *mmanager,unsigned char s
     return 0x00;
 }
 
-void mmanager_set_offset(TMotionManager *mmanager,unsigned char servo_id,char offset)
-{
-  if(servo_id<DYN_MANAGER_MAX_NUM_DEVICES)
-    mmanager->servo_values[servo_id].offset=offset;
-}
-
 void mmanager_add_module(TMotionManager *mmanager,TMotionModule *module)
 {
   if(module->id!=MM_NONE)
diff --git a/memory/include/ram.h b/memory/include/ram.h
index ef2325b..2b6696a 100644
--- a/memory/include/ram.h
+++ b/memory/include/ram.h
@@ -14,11 +14,11 @@ extern "C" {
 #define      RAM_BAD_ACCESS   -4
 
 unsigned char ram_init(TMemory *memory);
-inline void ram_read_byte(TMemory *memory,unsigned short int address, unsigned char *data)
+static inline void ram_read_byte(TMemory *memory,unsigned short int address, unsigned char *data)
 {
   (*data)=memory->data[address];
 }
-inline void ram_read_word(TMemory *memory,unsigned short int address, unsigned short int *data)
+static inline void ram_read_word(TMemory *memory,unsigned short int address, unsigned short int *data)
 {
   (*data)=memory->data[address];
   (*data)+=memory->data[address+1]*256;
@@ -29,7 +29,7 @@ unsigned char ram_clear_bit(TMemory *memory,unsigned short int address, unsigned
 unsigned char ram_write_byte(TMemory *memory,unsigned short int address, unsigned char data);
 unsigned char ram_write_word(TMemory *memory,unsigned short int address, unsigned short int data);
 unsigned char ram_write_table(TMemory *memory,unsigned short int address, unsigned short int length,unsigned char *data);
-inline unsigned char ram_in_range(unsigned short int reg,unsigned short int address,unsigned short int length)
+static inline unsigned char ram_in_range(unsigned short int reg,unsigned short int address,unsigned short int length)
 {
   if(reg>=address && reg<(address+length))
     return 0x01;
diff --git a/utils/include/buffer.h b/utils/include/buffer.h
index f5ab293..ab6a770 100644
--- a/utils/include/buffer.h
+++ b/utils/include/buffer.h
@@ -98,7 +98,7 @@ typedef struct
  *        memory is not pre-allocated before calling this function, its 
  *        behavior is unpredictable.
  */
-inline void buffer_init(TBuffer *buffer)
+static inline void buffer_init(TBuffer *buffer)
 {
   buffer->wr_ptr=0x00000000;
   buffer->rd_ptr=0x00000000;
@@ -116,7 +116,7 @@ inline void buffer_init(TBuffer *buffer)
  *        memory is not pre-allocated before calling this function, its 
  *        behavior is unpredictable.
  */
-inline void buffer_flush(TBuffer *buffer)
+static inline void buffer_flush(TBuffer *buffer)
 {
   buffer->wr_ptr=buffer->rd_ptr;
   buffer->num_data=0;
@@ -136,7 +136,7 @@ inline void buffer_flush(TBuffer *buffer)
  * \return the number of bytes in the buffer. This is a number between 0 and
  *         MAX_BUFFER_LENGTH.
  */
-inline unsigned short int buffer_get_num_data(TBuffer *buffer)
+static inline unsigned short int buffer_get_num_data(TBuffer *buffer)
 {
   return buffer->num_data;
 }
diff --git a/utils/include/stm32_time.h b/utils/include/stm32_time.h
index f45ac7b..1947809 100644
--- a/utils/include/stm32_time.h
+++ b/utils/include/stm32_time.h
@@ -129,7 +129,7 @@ unsigned char time_is_timeout(TTime *time);
  *        memory is not pre-allocated before calling this function, its 
  *        behavior is unpredictable.
  */
-inline void time_cancel_timeout(TTime *time)
+static inline void time_cancel_timeout(TTime *time)
 {
   time->target_time=(unsigned long long int)-1;
 }
-- 
GitLab