四輪オムニの足回りを動かすプログラム

Dependencies:   mbed

Committer:
m_smt
Date:
Sat Oct 08 11:13:31 2022 +0000
Revision:
0:39c2bb18192b
move four wheel omni

Who changed what in which revision?

UserRevisionLine numberNew contents of line
m_smt 0:39c2bb18192b 1 #ifndef BNO055_H
m_smt 0:39c2bb18192b 2 #define BNO055_H
m_smt 0:39c2bb18192b 3
m_smt 0:39c2bb18192b 4 #include "mbed.h"
m_smt 0:39c2bb18192b 5
m_smt 0:39c2bb18192b 6 #define BNOAddress (0x28 << 1)
m_smt 0:39c2bb18192b 7 //Register definitions
m_smt 0:39c2bb18192b 8 #define pi 3.141592653589793238
m_smt 0:39c2bb18192b 9 /* Page id register definition */
m_smt 0:39c2bb18192b 10 #define BNO055_PAGE_ID_ADDR 0x07
m_smt 0:39c2bb18192b 11 /* PAGE0 REGISTER DEFINITION START*/
m_smt 0:39c2bb18192b 12 #define BNO055_CHIP_ID_ADDR 0x00
m_smt 0:39c2bb18192b 13 #define BNO055_ACCEL_REV_ID_ADDR 0x01
m_smt 0:39c2bb18192b 14 #define BNO055_MAG_REV_ID_ADDR 0x02
m_smt 0:39c2bb18192b 15 #define BNO055_GYRO_REV_ID_ADDR 0x03
m_smt 0:39c2bb18192b 16 #define BNO055_SW_REV_ID_LSB_ADDR 0x04
m_smt 0:39c2bb18192b 17 #define BNO055_SW_REV_ID_MSB_ADDR 0x05
m_smt 0:39c2bb18192b 18 #define BNO055_BL_REV_ID_ADDR 0x06
m_smt 0:39c2bb18192b 19 /* Accel data register */
m_smt 0:39c2bb18192b 20 #define BNO055_ACCEL_DATA_X_LSB_ADDR 0x08
m_smt 0:39c2bb18192b 21 #define BNO055_ACCEL_DATA_X_MSB_ADDR 0x09
m_smt 0:39c2bb18192b 22 #define BNO055_ACCEL_DATA_Y_LSB_ADDR 0x0A
m_smt 0:39c2bb18192b 23 #define BNO055_ACCEL_DATA_Y_MSB_ADDR 0x0B
m_smt 0:39c2bb18192b 24 #define BNO055_ACCEL_DATA_Z_LSB_ADDR 0x0C
m_smt 0:39c2bb18192b 25 #define BNO055_ACCEL_DATA_Z_MSB_ADDR 0x0D
m_smt 0:39c2bb18192b 26 /* Mag data register */
m_smt 0:39c2bb18192b 27 #define BNO055_MAG_DATA_X_LSB_ADDR 0x0E
m_smt 0:39c2bb18192b 28 #define BNO055_MAG_DATA_X_MSB_ADDR 0x0F
m_smt 0:39c2bb18192b 29 #define BNO055_MAG_DATA_Y_LSB_ADDR 0x10
m_smt 0:39c2bb18192b 30 #define BNO055_MAG_DATA_Y_MSB_ADDR 0x11
m_smt 0:39c2bb18192b 31 #define BNO055_MAG_DATA_Z_LSB_ADDR 0x12
m_smt 0:39c2bb18192b 32 #define BNO055_MAG_DATA_Z_MSB_ADDR 0x13
m_smt 0:39c2bb18192b 33 /* Gyro data registers */
m_smt 0:39c2bb18192b 34 #define BNO055_GYRO_DATA_X_LSB_ADDR 0x14
m_smt 0:39c2bb18192b 35 #define BNO055_GYRO_DATA_X_MSB_ADDR 0x15
m_smt 0:39c2bb18192b 36 #define BNO055_GYRO_DATA_Y_LSB_ADDR 0x16
m_smt 0:39c2bb18192b 37 #define BNO055_GYRO_DATA_Y_MSB_ADDR 0x17
m_smt 0:39c2bb18192b 38 #define BNO055_GYRO_DATA_Z_LSB_ADDR 0x18
m_smt 0:39c2bb18192b 39 #define BNO055_GYRO_DATA_Z_MSB_ADDR 0x19
m_smt 0:39c2bb18192b 40 /* Euler data registers */
m_smt 0:39c2bb18192b 41 #define BNO055_EULER_H_LSB_ADDR 0x1A
m_smt 0:39c2bb18192b 42 #define BNO055_EULER_H_MSB_ADDR 0x1B
m_smt 0:39c2bb18192b 43 #define BNO055_EULER_R_LSB_ADDR 0x1C
m_smt 0:39c2bb18192b 44 #define BNO055_EULER_R_MSB_ADDR 0x1D
m_smt 0:39c2bb18192b 45 #define BNO055_EULER_P_LSB_ADDR 0x1E
m_smt 0:39c2bb18192b 46 #define BNO055_EULER_P_MSB_ADDR 0x1F
m_smt 0:39c2bb18192b 47 /* Quaternion data registers */
m_smt 0:39c2bb18192b 48 #define BNO055_QUATERNION_DATA_W_LSB_ADDR 0x20
m_smt 0:39c2bb18192b 49 #define BNO055_QUATERNION_DATA_W_MSB_ADDR 0x21
m_smt 0:39c2bb18192b 50 #define BNO055_QUATERNION_DATA_X_LSB_ADDR 0x22
m_smt 0:39c2bb18192b 51 #define BNO055_QUATERNION_DATA_X_MSB_ADDR 0x23
m_smt 0:39c2bb18192b 52 #define BNO055_QUATERNION_DATA_Y_LSB_ADDR 0x24
m_smt 0:39c2bb18192b 53 #define BNO055_QUATERNION_DATA_Y_MSB_ADDR 0x25
m_smt 0:39c2bb18192b 54 #define BNO055_QUATERNION_DATA_Z_LSB_ADDR 0x26
m_smt 0:39c2bb18192b 55 #define BNO055_QUATERNION_DATA_Z_MSB_ADDR 0x27
m_smt 0:39c2bb18192b 56 /* Linear acceleration data registers */
m_smt 0:39c2bb18192b 57 #define BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR 0x28
m_smt 0:39c2bb18192b 58 #define BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR 0x29
m_smt 0:39c2bb18192b 59 #define BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR 0x2A
m_smt 0:39c2bb18192b 60 #define BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR 0x2B
m_smt 0:39c2bb18192b 61 #define BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR 0x2C
m_smt 0:39c2bb18192b 62 #define BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR 0x2D
m_smt 0:39c2bb18192b 63 /* Gravity data registers */
m_smt 0:39c2bb18192b 64 #define BNO055_GRAVITY_DATA_X_LSB_ADDR 0x2E
m_smt 0:39c2bb18192b 65 #define BNO055_GRAVITY_DATA_X_MSB_ADDR 0x2F
m_smt 0:39c2bb18192b 66 #define BNO055_GRAVITY_DATA_Y_LSB_ADDR 0x30
m_smt 0:39c2bb18192b 67 #define BNO055_GRAVITY_DATA_Y_MSB_ADDR 0x31
m_smt 0:39c2bb18192b 68 #define BNO055_GRAVITY_DATA_Z_LSB_ADDR 0x32
m_smt 0:39c2bb18192b 69 #define BNO055_GRAVITY_DATA_Z_MSB_ADDR 0x33
m_smt 0:39c2bb18192b 70 /* Temperature data register */
m_smt 0:39c2bb18192b 71 #define BNO055_TEMP_ADDR 0x34
m_smt 0:39c2bb18192b 72 /* Status registers */
m_smt 0:39c2bb18192b 73 #define BNO055_CALIB_STAT_ADDR 0x35
m_smt 0:39c2bb18192b 74 #define BNO055_SELFTEST_RESULT_ADDR 0x36
m_smt 0:39c2bb18192b 75 #define BNO055_INTR_STAT_ADDR 0x37
m_smt 0:39c2bb18192b 76 #define BNO055_SYS_CLK_STAT_ADDR 0x38
m_smt 0:39c2bb18192b 77 #define BNO055_SYS_STAT_ADDR 0x39
m_smt 0:39c2bb18192b 78 #define BNO055_SYS_ERR_ADDR 0x3A
m_smt 0:39c2bb18192b 79 /* Unit selection register */
m_smt 0:39c2bb18192b 80 #define BNO055_UNIT_SEL_ADDR 0x3B
m_smt 0:39c2bb18192b 81 #define BNO055_DATA_SELECT_ADDR 0x3C
m_smt 0:39c2bb18192b 82 /* Mode registers */
m_smt 0:39c2bb18192b 83 #define BNO055_OPR_MODE_ADDR 0x3D
m_smt 0:39c2bb18192b 84 #define BNO055_PWR_MODE_ADDR 0x3E
m_smt 0:39c2bb18192b 85 #define BNO055_SYS_TRIGGER_ADDR 0x3F
m_smt 0:39c2bb18192b 86 #define BNO055_TEMP_SOURCE_ADDR 0x40
m_smt 0:39c2bb18192b 87 /* Axis remap registers */
m_smt 0:39c2bb18192b 88 #define BNO055_AXIS_MAP_CONFIG_ADDR 0x41
m_smt 0:39c2bb18192b 89 #define BNO055_AXIS_MAP_SIGN_ADDR 0x42
m_smt 0:39c2bb18192b 90 /* Accelerometer Offset registers */
m_smt 0:39c2bb18192b 91 #define ACCEL_OFFSET_X_LSB_ADDR 0x55
m_smt 0:39c2bb18192b 92 #define ACCEL_OFFSET_X_MSB_ADDR 0x56
m_smt 0:39c2bb18192b 93 #define ACCEL_OFFSET_Y_LSB_ADDR 0x57
m_smt 0:39c2bb18192b 94 #define ACCEL_OFFSET_Y_MSB_ADDR 0x58
m_smt 0:39c2bb18192b 95 #define ACCEL_OFFSET_Z_LSB_ADDR 0x59
m_smt 0:39c2bb18192b 96 #define ACCEL_OFFSET_Z_MSB_ADDR 0x5A
m_smt 0:39c2bb18192b 97 /* Magnetometer Offset registers */
m_smt 0:39c2bb18192b 98 #define MAG_OFFSET_X_LSB_ADDR 0x5B
m_smt 0:39c2bb18192b 99 #define MAG_OFFSET_X_MSB_ADDR 0x5C
m_smt 0:39c2bb18192b 100 #define MAG_OFFSET_Y_LSB_ADDR 0x5D
m_smt 0:39c2bb18192b 101 #define MAG_OFFSET_Y_MSB_ADDR 0x5E
m_smt 0:39c2bb18192b 102 #define MAG_OFFSET_Z_LSB_ADDR 0x5F
m_smt 0:39c2bb18192b 103 #define MAG_OFFSET_Z_MSB_ADDR 0x60
m_smt 0:39c2bb18192b 104 /* Gyroscope Offset registers*/
m_smt 0:39c2bb18192b 105 #define GYRO_OFFSET_X_LSB_ADDR 0x61
m_smt 0:39c2bb18192b 106 #define GYRO_OFFSET_X_MSB_ADDR 0x62
m_smt 0:39c2bb18192b 107 #define GYRO_OFFSET_Y_LSB_ADDR 0x63
m_smt 0:39c2bb18192b 108 #define GYRO_OFFSET_Y_MSB_ADDR 0x64
m_smt 0:39c2bb18192b 109 #define GYRO_OFFSET_Z_LSB_ADDR 0x65
m_smt 0:39c2bb18192b 110 #define GYRO_OFFSET_Z_MSB_ADDR 0x66
m_smt 0:39c2bb18192b 111 /* Radius registers */
m_smt 0:39c2bb18192b 112 #define ACCEL_RADIUS_LSB_ADDR 0x67
m_smt 0:39c2bb18192b 113 #define ACCEL_RADIUS_MSB_ADDR 0x68
m_smt 0:39c2bb18192b 114 #define MAG_RADIUS_LSB_ADDR 0x69
m_smt 0:39c2bb18192b 115 #define MAG_RADIUS_MSB_ADDR 0x6A
m_smt 0:39c2bb18192b 116
m_smt 0:39c2bb18192b 117 /* Page 1 registers */
m_smt 0:39c2bb18192b 118 #define BNO055_UNIQUE_ID_ADDR 0x50
m_smt 0:39c2bb18192b 119
m_smt 0:39c2bb18192b 120 //Definitions for unit selection
m_smt 0:39c2bb18192b 121 #define MPERSPERS 0x00
m_smt 0:39c2bb18192b 122 #define MILLIG 0x01
m_smt 0:39c2bb18192b 123 #define DEG_PER_SEC 0x00
m_smt 0:39c2bb18192b 124 #define RAD_PER_SEC 0x02
m_smt 0:39c2bb18192b 125 #define DEGREES 0x00
m_smt 0:39c2bb18192b 126 #define RADIANS 0x04
m_smt 0:39c2bb18192b 127 #define CENTIGRADE 0x00
m_smt 0:39c2bb18192b 128 #define FAHRENHEIT 0x10
m_smt 0:39c2bb18192b 129 #define WINDOWS 0x00
m_smt 0:39c2bb18192b 130 #define ANDROID 0x80
m_smt 0:39c2bb18192b 131
m_smt 0:39c2bb18192b 132 //Definitions for power mode
m_smt 0:39c2bb18192b 133 #define POWER_MODE_NORMAL 0x00
m_smt 0:39c2bb18192b 134 #define POWER_MODE_LOWPOWER 0x01
m_smt 0:39c2bb18192b 135 #define POWER_MODE_SUSPEND 0x02
m_smt 0:39c2bb18192b 136
m_smt 0:39c2bb18192b 137 //Definitions for operating mode
m_smt 0:39c2bb18192b 138 #define OPERATION_MODE_CONFIG 0x00
m_smt 0:39c2bb18192b 139 #define OPERATION_MODE_ACCONLY 0x01
m_smt 0:39c2bb18192b 140 #define OPERATION_MODE_MAGONLY 0x02
m_smt 0:39c2bb18192b 141 #define OPERATION_MODE_GYRONLY 0x03
m_smt 0:39c2bb18192b 142 #define OPERATION_MODE_ACCMAG 0x04
m_smt 0:39c2bb18192b 143 #define OPERATION_MODE_ACCGYRO 0x05
m_smt 0:39c2bb18192b 144 #define OPERATION_MODE_MAGGYRO 0x06
m_smt 0:39c2bb18192b 145 #define OPERATION_MODE_AMG 0x07
m_smt 0:39c2bb18192b 146 #define OPERATION_MODE_IMUPLUS 0x08
m_smt 0:39c2bb18192b 147 #define OPERATION_MODE_COMPASS 0x09
m_smt 0:39c2bb18192b 148 #define OPERATION_MODE_M4G 0x0A
m_smt 0:39c2bb18192b 149 #define OPERATION_MODE_NDOF_FMC_OFF 0x0B
m_smt 0:39c2bb18192b 150 #define OPERATION_MODE_NDOF 0x0C
m_smt 0:39c2bb18192b 151
m_smt 0:39c2bb18192b 152 typedef struct values{
m_smt 0:39c2bb18192b 153 int16_t rawx,rawy,rawz;
m_smt 0:39c2bb18192b 154 float x,y,z;
m_smt 0:39c2bb18192b 155 }values;
m_smt 0:39c2bb18192b 156
m_smt 0:39c2bb18192b 157 typedef struct angles{
m_smt 0:39c2bb18192b 158 int16_t rawroll,rawpitch,rawyaw;
m_smt 0:39c2bb18192b 159 float roll, pitch, yaw;
m_smt 0:39c2bb18192b 160 } angles;
m_smt 0:39c2bb18192b 161
m_smt 0:39c2bb18192b 162 typedef struct quaternion{
m_smt 0:39c2bb18192b 163 int16_t raww,rawx,rawy,rawz;
m_smt 0:39c2bb18192b 164 float w,x,y,z;
m_smt 0:39c2bb18192b 165 }quaternion;
m_smt 0:39c2bb18192b 166
m_smt 0:39c2bb18192b 167 typedef struct chip{
m_smt 0:39c2bb18192b 168 char id;
m_smt 0:39c2bb18192b 169 char accel;
m_smt 0:39c2bb18192b 170 char gyro;
m_smt 0:39c2bb18192b 171 char mag;
m_smt 0:39c2bb18192b 172 char sw[2];
m_smt 0:39c2bb18192b 173 char bootload;
m_smt 0:39c2bb18192b 174 char serial[16];
m_smt 0:39c2bb18192b 175 }chip;
m_smt 0:39c2bb18192b 176
m_smt 0:39c2bb18192b 177 /** Class for operating Bosch BNO055 sensor over I2C **/
m_smt 0:39c2bb18192b 178 class BNO055
m_smt 0:39c2bb18192b 179 {
m_smt 0:39c2bb18192b 180 public:
m_smt 0:39c2bb18192b 181
m_smt 0:39c2bb18192b 182 /** Create BNO055 instance **/
m_smt 0:39c2bb18192b 183 BNO055(PinName SDA, PinName SCL);
m_smt 0:39c2bb18192b 184
m_smt 0:39c2bb18192b 185 /** Perform a power-on reset of the BNO055 **/
m_smt 0:39c2bb18192b 186 void reset();
m_smt 0:39c2bb18192b 187 /** Check that the BNO055 is connected and download the software details
m_smt 0:39c2bb18192b 188 and serial number of chip and store in ID structure **/
m_smt 0:39c2bb18192b 189 bool check();
m_smt 0:39c2bb18192b 190 /** Turn the external timing crystal on/off **/
m_smt 0:39c2bb18192b 191 void SetExternalCrystal(bool yn);
m_smt 0:39c2bb18192b 192 /** Set the operation mode of the sensor **/
m_smt 0:39c2bb18192b 193 void setmode(char mode);
m_smt 0:39c2bb18192b 194 /** Set the power mode of the sensor **/
m_smt 0:39c2bb18192b 195 void setpowermode(char mode);
m_smt 0:39c2bb18192b 196
m_smt 0:39c2bb18192b 197 /** Set the output units from the accelerometer, either MPERSPERS or MILLIG **/
m_smt 0:39c2bb18192b 198 void set_accel_units(char units);
m_smt 0:39c2bb18192b 199 /** Set the output units from the gyroscope, either DEG_PER_SEC or RAD_PER_SEC **/
m_smt 0:39c2bb18192b 200 void set_anglerate_units(char units);
m_smt 0:39c2bb18192b 201 /** Set the output units from the IMU, either DEGREES or RADIANS **/
m_smt 0:39c2bb18192b 202 void set_angle_units(char units);
m_smt 0:39c2bb18192b 203 /** Set the output units from the temperature sensor, either CENTIGRADE or FAHRENHEIT **/
m_smt 0:39c2bb18192b 204 void set_temp_units(char units);
m_smt 0:39c2bb18192b 205 /** Set the data output format to either WINDOWS or ANDROID **/
m_smt 0:39c2bb18192b 206 void set_orientation(char units);
m_smt 0:39c2bb18192b 207 /** Set the mapping of the exes/directions as per page 25 of datasheet
m_smt 0:39c2bb18192b 208 range 0-7, any value outside this will set the orientation to P1 (default at power up) **/
m_smt 0:39c2bb18192b 209 void set_mapping(char orient);
m_smt 0:39c2bb18192b 210
m_smt 0:39c2bb18192b 211 /** Get the current values from the accelerometer **/
m_smt 0:39c2bb18192b 212 void get_accel(void);
m_smt 0:39c2bb18192b 213 /** Get the current values from the gyroscope **/
m_smt 0:39c2bb18192b 214 void get_gyro(void);
m_smt 0:39c2bb18192b 215 /** Get the current values from the magnetometer **/
m_smt 0:39c2bb18192b 216 void get_mag(void);
m_smt 0:39c2bb18192b 217 /** Get the corrected linear acceleration **/
m_smt 0:39c2bb18192b 218 void get_lia(void);
m_smt 0:39c2bb18192b 219 /** Get the current gravity vector **/
m_smt 0:39c2bb18192b 220 void get_grv(void);
m_smt 0:39c2bb18192b 221 /** Get the output quaternion **/
m_smt 0:39c2bb18192b 222 void get_quat(void);
m_smt 0:39c2bb18192b 223 /** Get the current Euler angles **/
m_smt 0:39c2bb18192b 224 void get_angles(void);
m_smt 0:39c2bb18192b 225 /** Get the current temperature **/
m_smt 0:39c2bb18192b 226 void get_temp(void);
m_smt 0:39c2bb18192b 227
m_smt 0:39c2bb18192b 228 /** Read the calibration status register and store the result in the calib variable **/
m_smt 0:39c2bb18192b 229 void get_calib(void);
m_smt 0:39c2bb18192b 230 /** Read the offset and radius values into the calibration array**/
m_smt 0:39c2bb18192b 231 void read_calibration_data(void);
m_smt 0:39c2bb18192b 232 /** Write the contents of the calibration array into the registers **/
m_smt 0:39c2bb18192b 233 void write_calibration_data(void);
m_smt 0:39c2bb18192b 234
m_smt 0:39c2bb18192b 235 /** Structures containing 3-axis data for acceleration, rate of turn and magnetic field.
m_smt 0:39c2bb18192b 236 x,y,z are the scale floating point values and
m_smt 0:39c2bb18192b 237 rawx, rawy, rawz are the int16_t values read from the sensors **/
m_smt 0:39c2bb18192b 238 values accel,gyro,mag,lia,gravity;
m_smt 0:39c2bb18192b 239 /** Stucture containing the Euler angles as yaw, pitch, roll as scaled floating point
m_smt 0:39c2bb18192b 240 and rawyaw, rawroll & rollpitch as the int16_t values loaded from the registers **/
m_smt 0:39c2bb18192b 241 angles euler;
m_smt 0:39c2bb18192b 242 /** Quaternion values as w,x,y,z (scaled floating point) and raww etc... as int16_t loaded from the
m_smt 0:39c2bb18192b 243 registers **/
m_smt 0:39c2bb18192b 244 quaternion quat;
m_smt 0:39c2bb18192b 245
m_smt 0:39c2bb18192b 246 /** Current contents of calibration status register **/
m_smt 0:39c2bb18192b 247 char calib;
m_smt 0:39c2bb18192b 248 /** Contents of the 22 registers containing offset and radius values used as calibration by the sensor **/
m_smt 0:39c2bb18192b 249 char calibration[22];
m_smt 0:39c2bb18192b 250 /** Structure containing sensor numbers, software version and chip UID **/
m_smt 0:39c2bb18192b 251 chip ID;
m_smt 0:39c2bb18192b 252 /** Current temperature **/
m_smt 0:39c2bb18192b 253 int temperature;
m_smt 0:39c2bb18192b 254
m_smt 0:39c2bb18192b 255 double gyroo;
m_smt 0:39c2bb18192b 256
m_smt 0:39c2bb18192b 257 private:
m_smt 0:39c2bb18192b 258
m_smt 0:39c2bb18192b 259 I2C _i2c;
m_smt 0:39c2bb18192b 260 char rx,tx[2],address; //I2C variables
m_smt 0:39c2bb18192b 261 char rawdata[22]; //Temporary array for input data values
m_smt 0:39c2bb18192b 262 char op_mode;
m_smt 0:39c2bb18192b 263 char pwr_mode;
m_smt 0:39c2bb18192b 264 float accel_scale,rate_scale,angle_scale;
m_smt 0:39c2bb18192b 265 int temp_scale;
m_smt 0:39c2bb18192b 266
m_smt 0:39c2bb18192b 267 void readchar(char location){
m_smt 0:39c2bb18192b 268 tx[0] = location;
m_smt 0:39c2bb18192b 269 _i2c.write(address,tx,1,true);
m_smt 0:39c2bb18192b 270 _i2c.read(address,&rx,1,false);
m_smt 0:39c2bb18192b 271 }
m_smt 0:39c2bb18192b 272
m_smt 0:39c2bb18192b 273 void writechar(char location, char value){
m_smt 0:39c2bb18192b 274 tx[0] = location;
m_smt 0:39c2bb18192b 275 tx[1] = value;
m_smt 0:39c2bb18192b 276 _i2c.write(address,tx,2);
m_smt 0:39c2bb18192b 277 }
m_smt 0:39c2bb18192b 278
m_smt 0:39c2bb18192b 279 void setpage(char value){
m_smt 0:39c2bb18192b 280 writechar(BNO055_PAGE_ID_ADDR,value);
m_smt 0:39c2bb18192b 281 }
m_smt 0:39c2bb18192b 282 };
m_smt 0:39c2bb18192b 283 #endif