@@ -1834,6 +1834,20 @@ DxlError Dynamixel::SetDxlValueToSyncWrite()
18341834 int16_t goal_current = dxl_info_.ConvertEffortToCurrent (ID, data);
18351835 param_write_value[added_byte + 0 ] = DXL_LOBYTE (goal_current);
18361836 param_write_value[added_byte + 1 ] = DXL_HIBYTE (goal_current);
1837+ } else {
1838+ if (indirect_info_write_[comm_id].item_size .at (item_index) == 4 ) {
1839+ int32_t value = static_cast <int32_t >(data);
1840+ param_write_value[added_byte + 0 ] = DXL_LOBYTE (DXL_LOWORD (value));
1841+ param_write_value[added_byte + 1 ] = DXL_HIBYTE (DXL_LOWORD (value));
1842+ param_write_value[added_byte + 2 ] = DXL_LOBYTE (DXL_HIWORD (value));
1843+ param_write_value[added_byte + 3 ] = DXL_HIBYTE (DXL_HIWORD (value));
1844+ } else if (indirect_info_write_[comm_id].item_size .at (item_index) == 2 ) {
1845+ int16_t value = static_cast <int16_t >(data);
1846+ param_write_value[added_byte + 0 ] = DXL_LOBYTE (value);
1847+ param_write_value[added_byte + 1 ] = DXL_HIBYTE (value);
1848+ } else if (indirect_info_write_[comm_id].item_size .at (item_index) == 1 ) {
1849+ param_write_value[added_byte] = static_cast <uint8_t >(data);
1850+ }
18371851 }
18381852 added_byte += indirect_info_write_[comm_id].item_size .at (item_index);
18391853 }
@@ -2053,6 +2067,20 @@ DxlError Dynamixel::SetDxlValueToBulkWrite()
20532067 int16_t goal_current = dxl_info_.ConvertEffortToCurrent (ID, data);
20542068 param_write_value[added_byte + 0 ] = DXL_LOBYTE (goal_current);
20552069 param_write_value[added_byte + 1 ] = DXL_HIBYTE (goal_current);
2070+ } else {
2071+ if (indirect_info_write_[comm_id].item_size .at (item_index) == 4 ) {
2072+ int32_t value = static_cast <int32_t >(data);
2073+ param_write_value[added_byte + 0 ] = DXL_LOBYTE (DXL_LOWORD (value));
2074+ param_write_value[added_byte + 1 ] = DXL_HIBYTE (DXL_LOWORD (value));
2075+ param_write_value[added_byte + 2 ] = DXL_LOBYTE (DXL_HIWORD (value));
2076+ param_write_value[added_byte + 3 ] = DXL_HIBYTE (DXL_HIWORD (value));
2077+ } else if (indirect_info_write_[comm_id].item_size .at (item_index) == 2 ) {
2078+ int16_t value = static_cast <int16_t >(data);
2079+ param_write_value[added_byte + 0 ] = DXL_LOBYTE (value);
2080+ param_write_value[added_byte + 1 ] = DXL_HIBYTE (value);
2081+ } else if (indirect_info_write_[comm_id].item_size .at (item_index) == 1 ) {
2082+ param_write_value[added_byte] = static_cast <uint8_t >(data);
2083+ }
20562084 }
20572085 added_byte += indirect_info_write_[comm_id].item_size .at (item_index);
20582086 }
0 commit comments