smartdrive: extended writeArray() function to use proper array length

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
Mihai Tudor Panu 2016-10-28 16:00:24 -07:00
parent 4e48481a07
commit 8f7ff29b1f
2 changed files with 14 additions and 14 deletions

View File

@ -65,9 +65,9 @@ SmartDrive::readByte(uint8_t addr) {
} }
void void
SmartDrive::writeArray(uint8_t* array) { SmartDrive::writeArray(uint8_t* array, uint8_t len) {
try { try {
m_i2c_smartdrive_control.write(array, sizeof(array)/sizeof(uint8_t)); m_i2c_smartdrive_control.write(array, len);
} catch (int e) { } catch (int e) {
std::cout << "Failed to write array values to address " << array[0] << " --> " << e << std::endl; std::cout << "Failed to write array values to address " << array[0] << " --> " << e << std::endl;
} }
@ -144,11 +144,11 @@ SmartDrive::Run_Unlimited(int motor_id, int direction, uint8_t speed) {
speed = speed * -1; speed = speed * -1;
if ( motor_id != SmartDrive_Motor_ID_2) { if ( motor_id != SmartDrive_Motor_ID_2) {
uint8_t array [5] = {SmartDrive_SPEED_M1, speed, 0, 0, ctrl}; uint8_t array [5] = {SmartDrive_SPEED_M1, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id != SmartDrive_Motor_ID_1) { if ( motor_id != SmartDrive_Motor_ID_1) {
uint8_t array [5] = {SmartDrive_SPEED_M2, speed, 0, 0, ctrl}; uint8_t array [5] = {SmartDrive_SPEED_M2, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id == SmartDrive_Motor_ID_BOTH ) if ( motor_id == SmartDrive_Motor_ID_BOTH )
writeByte(SmartDrive_COMMAND, CMD_S); writeByte(SmartDrive_COMMAND, CMD_S);
@ -181,11 +181,11 @@ SmartDrive::Run_Seconds(int motor_id, int direction, uint8_t speed, uint8_t dura
speed = speed * -1; speed = speed * -1;
if ( motor_id != SmartDrive_Motor_ID_2) { if ( motor_id != SmartDrive_Motor_ID_2) {
uint8_t array[5] = {SmartDrive_SPEED_M1, speed, duration, 0, ctrl}; uint8_t array[5] = {SmartDrive_SPEED_M1, speed, duration, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id != SmartDrive_Motor_ID_1) { if ( motor_id != SmartDrive_Motor_ID_1) {
uint8_t array[5] = {SmartDrive_SPEED_M2, speed, duration, 0, ctrl}; uint8_t array[5] = {SmartDrive_SPEED_M2, speed, duration, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id == SmartDrive_Motor_ID_BOTH ) if ( motor_id == SmartDrive_Motor_ID_BOTH )
writeByte(SmartDrive_COMMAND, CMD_S); writeByte(SmartDrive_COMMAND, CMD_S);
@ -240,11 +240,11 @@ SmartDrive::Run_Degrees(int motor_id, int direction, uint8_t speed, uint32_t deg
ctrl |= SmartDrive_CONTROL_GO; ctrl |= SmartDrive_CONTROL_GO;
if ( motor_id != SmartDrive_Motor_ID_2) { if ( motor_id != SmartDrive_Motor_ID_2) {
uint8_t array[9] = {SmartDrive_SETPT_M1, t1, t2, t3, t4, speed, 0, 0, ctrl}; uint8_t array[9] = {SmartDrive_SETPT_M1, t1, t2, t3, t4, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id != SmartDrive_Motor_ID_1){ if ( motor_id != SmartDrive_Motor_ID_1){
uint8_t array[9] = {SmartDrive_SETPT_M2, t1, t2, t3, t4, speed, 0, 0, ctrl}; uint8_t array[9] = {SmartDrive_SETPT_M2, t1, t2, t3, t4, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id == SmartDrive_Motor_ID_BOTH ) if ( motor_id == SmartDrive_Motor_ID_BOTH )
writeByte(SmartDrive_COMMAND, CMD_S); writeByte(SmartDrive_COMMAND, CMD_S);
@ -281,11 +281,11 @@ SmartDrive::Run_Rotations(int motor_id, int direction, uint8_t speed, uint32_t r
ctrl |= SmartDrive_CONTROL_GO; ctrl |= SmartDrive_CONTROL_GO;
if ( motor_id != SmartDrive_Motor_ID_2) { if ( motor_id != SmartDrive_Motor_ID_2) {
uint8_t array[9] = {SmartDrive_SETPT_M1, t1, t2, t3, t4, speed, 0, 0, ctrl}; uint8_t array[9] = {SmartDrive_SETPT_M1, t1, t2, t3, t4, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id != SmartDrive_Motor_ID_1) { if ( motor_id != SmartDrive_Motor_ID_1) {
uint8_t array[9] = {SmartDrive_SETPT_M2, t1, t2, t3, t4, speed, 0, 0, ctrl}; uint8_t array[9] = {SmartDrive_SETPT_M2, t1, t2, t3, t4, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id == SmartDrive_Motor_ID_BOTH ) if ( motor_id == SmartDrive_Motor_ID_BOTH )
writeByte(SmartDrive_COMMAND, CMD_S); writeByte(SmartDrive_COMMAND, CMD_S);
@ -319,11 +319,11 @@ SmartDrive::Run_Tacho(int motor_id, uint8_t speed, uint32_t tacho_count, bool wa
ctrl |= SmartDrive_CONTROL_GO; ctrl |= SmartDrive_CONTROL_GO;
if ( motor_id != SmartDrive_Motor_ID_2){ if ( motor_id != SmartDrive_Motor_ID_2){
uint8_t array[9]= {SmartDrive_SETPT_M1, t1, t2, t3, t4, speed, 0, 0, ctrl}; uint8_t array[9]= {SmartDrive_SETPT_M1, t1, t2, t3, t4, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id != SmartDrive_Motor_ID_1){ if ( motor_id != SmartDrive_Motor_ID_1){
uint8_t array[9]= {SmartDrive_SETPT_M2, t1, t2, t3, t4, speed, 0, 0, ctrl}; uint8_t array[9]= {SmartDrive_SETPT_M2, t1, t2, t3, t4, speed, 0, 0, ctrl};
writeArray(array); writeArray(array, sizeof(array));
} }
if ( motor_id == SmartDrive_Motor_ID_BOTH ) if ( motor_id == SmartDrive_Motor_ID_BOTH )
writeByte(SmartDrive_COMMAND, CMD_S); writeByte(SmartDrive_COMMAND, CMD_S);
@ -369,7 +369,7 @@ SmartDrive::SetPerformanceParameters( uint16_t Kp_tacho, uint16_t Ki_tacho, uint
uint8_t Kd_s2 = Kd_speed/0x100; uint8_t Kd_s2 = Kd_speed/0x100;
uint8_t array[15] = {SmartDrive_P_Kp, Kp_t1 , Kp_t2 , Ki_t1, Ki_t2, Kd_t1, Kd_t2, Kp_s1, Kp_s2, Ki_s1, Ki_s2, Kd_s1, Kd_s2, passcount, tolerance}; uint8_t array[15] = {SmartDrive_P_Kp, Kp_t1 , Kp_t2 , Ki_t1, Ki_t2, Kd_t1, Kd_t2, Kp_s1, Kp_s2, Ki_s1, Ki_s2, Kd_s1, Kd_s2, passcount, tolerance};
writeArray(array); writeArray(array, sizeof(array));
} }

View File

@ -288,7 +288,7 @@ public:
private: private:
void writeByte(uint8_t addr, uint8_t value); void writeByte(uint8_t addr, uint8_t value);
void writeArray(uint8_t* array); void writeArray(uint8_t* array, uint8_t len);
uint8_t readByte(uint8_t addr); uint8_t readByte(uint8_t addr);
uint16_t readInteger(uint8_t addr); uint16_t readInteger(uint8_t addr);
uint32_t readLongSigned(uint8_t addr); uint32_t readLongSigned(uint8_t addr);