@@ -1834,6 +1834,20 @@ DxlError Dynamixel::SetDxlValueToSyncWrite()
1834
1834
int16_t goal_current = dxl_info_.ConvertEffortToCurrent (ID, data);
1835
1835
param_write_value[added_byte + 0 ] = DXL_LOBYTE (goal_current);
1836
1836
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
+ }
1837
1851
}
1838
1852
added_byte += indirect_info_write_[comm_id].item_size .at (item_index);
1839
1853
}
@@ -2053,6 +2067,20 @@ DxlError Dynamixel::SetDxlValueToBulkWrite()
2053
2067
int16_t goal_current = dxl_info_.ConvertEffortToCurrent (ID, data);
2054
2068
param_write_value[added_byte + 0 ] = DXL_LOBYTE (goal_current);
2055
2069
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
+ }
2056
2084
}
2057
2085
added_byte += indirect_info_write_[comm_id].item_size .at (item_index);
2058
2086
}
0 commit comments