Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __HTIRR_H__
00013 #define __HTIRR_H__
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #pragma systemFile
00037
00038 #ifndef __COMMON_H__
00039 #include "common.h"
00040 #endif
00041
00042 #define HTIRR_I2C_ADDR 0x02
00043 #define HTIRR_OFFSET 0x42
00044
00045
00046 #define HTIRR_MOTOR_1A 0x00
00047 #define HTIRR_MOTOR_1B 0x01
00048 #define HTIRR_MOTOR_2A 0x02
00049 #define HTIRR_MOTOR_2B 0x03
00050 #define HTIRR_MOTOR_3A 0x04
00051 #define HTIRR_MOTOR_3B 0x05
00052 #define HTIRR_MOTOR_4A 0x06
00053 #define HTIRR_MOTOR_4B 0x07
00054
00055
00056 #define MOTOR_BRAKE -128
00057
00058
00059
00060
00061 bool HTIRRreadChannel(tSensors link, byte channel, sbyte &motA, sbyte &motB);
00062 bool HTIRRreadAllChannels(tSensors link, tsByteArray &motorSpeeds);
00063
00064 tByteArray HTIRR_I2CRequest;
00065 tByteArray HTIRR_I2CReply;
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076 bool HTIRRreadChannel(tSensors link, byte channel, sbyte &motA, sbyte &motB) {
00077 memset(HTIRR_I2CRequest, 0, sizeof(tByteArray));
00078
00079 HTIRR_I2CRequest[0] = 2;
00080 HTIRR_I2CRequest[1] = HTIRR_I2C_ADDR;
00081 HTIRR_I2CRequest[2] = HTIRR_OFFSET + ((channel - 1) * 2);
00082
00083 if (!writeI2C(link, HTIRR_I2CRequest, HTIRR_I2CReply, 2))
00084 return false;
00085
00086 motA = (HTIRR_I2CReply[0] >= 128) ? (int)HTIRR_I2CReply[0] - 256 : (int)HTIRR_I2CReply[0];
00087 motB = (HTIRR_I2CReply[1] >= 128) ? (int)HTIRR_I2CReply[1] - 256 : (int)HTIRR_I2CReply[1];
00088
00089 return true;
00090 }
00091
00092
00093
00094
00095
00096
00097
00098
00099 bool HTIRRreadAllChannels(tSensors link, tsByteArray &motorSpeeds){
00100 memset(motorSpeeds, 0, sizeof(tsByteArray));
00101 memset(HTIRR_I2CRequest, 0, sizeof(tByteArray));
00102
00103 HTIRR_I2CRequest[0] = 2;
00104 HTIRR_I2CRequest[1] = HTIRR_I2C_ADDR;
00105 HTIRR_I2CRequest[2] = HTIRR_OFFSET;
00106
00107 if (!writeI2C(link, HTIRR_I2CRequest, HTIRR_I2CReply, 8))
00108 return false;
00109
00110 memcpy(motorSpeeds, HTIRR_I2CReply, 8);
00111 return true;
00112 }
00113
00114 #endif // __HTIRR_H__
00115
00116
00117
00118
00119