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 #pragma systemFile
00036
00037 #ifndef __COMMON_H__
00038 #include "common.h"
00039 #endif
00040
00041 #define HTIRR_I2C_ADDR 0x02
00042 #define HTIRR_OFFSET 0x42
00043
00044
00045 #define HTIRR_MOTOR_1A 0x00
00046 #define HTIRR_MOTOR_1B 0x01
00047 #define HTIRR_MOTOR_2A 0x02
00048 #define HTIRR_MOTOR_2B 0x03
00049 #define HTIRR_MOTOR_3A 0x04
00050 #define HTIRR_MOTOR_3B 0x05
00051 #define HTIRR_MOTOR_4A 0x06
00052 #define HTIRR_MOTOR_4B 0x07
00053
00054
00055 #define MOTOR_BRAKE -128
00056
00057
00058
00059
00060 bool HTIRRreadChannel(tSensors link, byte channel, sbyte &motA, sbyte &motB);
00061 bool HTIRRreadAllChannels(tSensors link, tsByteArray &motorSpeeds);
00062
00063 tByteArray HTIRR_I2CRequest;
00064 tByteArray HTIRR_I2CReply;
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 bool HTIRRreadChannel(tSensors link, byte channel, sbyte &motA, sbyte &motB) {
00076 memset(HTIRR_I2CRequest, 0, sizeof(tByteArray));
00077
00078 HTIRR_I2CRequest[0] = 2;
00079 HTIRR_I2CRequest[1] = HTIRR_I2C_ADDR;
00080 HTIRR_I2CRequest[2] = HTIRR_OFFSET + ((channel - 1) * 2);
00081
00082 if (!writeI2C(link, HTIRR_I2CRequest, 2))
00083 return false;
00084
00085 if (!readI2C(link, HTIRR_I2CReply, 2))
00086 return false;
00087
00088 memcpy(motA, HTIRR_I2CReply[0], 1);
00089 memcpy(motB, HTIRR_I2CReply[1], 1);
00090
00091 return true;
00092 }
00093
00094
00095
00096
00097
00098
00099
00100
00101 bool HTIRRreadAllChannels(tSensors link, tsByteArray &motorSpeeds){
00102 memset(motorSpeeds, 0, sizeof(tsByteArray));
00103 memset(HTIRR_I2CRequest, 0, sizeof(tByteArray));
00104
00105 HTIRR_I2CRequest[0] = 2;
00106 HTIRR_I2CRequest[1] = HTIRR_I2C_ADDR;
00107 HTIRR_I2CRequest[2] = HTIRR_OFFSET;
00108
00109 if (!writeI2C(link, HTIRR_I2CRequest, 8))
00110 return false;
00111
00112 if (!readI2C(link, HTIRR_I2CReply, 8))
00113 return false;
00114
00115 memcpy(motorSpeeds, HTIRR_I2CReply, 8);
00116 return true;
00117 }
00118
00119 #endif // __HTIRR_H__
00120
00121
00122
00123
00124