@@ -254,10 +254,7 @@ void mag_rd(int addr, unsigned char *data, int cnt) {
254
254
wr (MAG_PIN_SDA , 1 );
255
255
wr (MAG_PIN_SCL , 1 );
256
256
} else {
257
- unsigned char buf [1 ];
258
- buf [0 ] = addr ;
259
- jsi2cWrite (& i2cMag , iaddr , 1 , buf , false);
260
- jsi2cRead (& i2cMag , iaddr , cnt , data , true);
257
+ jsi2cReadReg (& i2cMag , iaddr , addr , cnt , data );
261
258
}
262
259
}
263
260
@@ -559,9 +556,7 @@ bool accel_on(int milliHz) {
559
556
void accel_read () {
560
557
unsigned char buf [12 ];
561
558
// FIXME: If just the accelerometer is on, we could avoid reading the gyro and read only 6 bytes
562
- buf [0 ] = 0x22 ; // OUTX_L_G
563
- jsi2cWrite (& i2cAccel , ACCEL_ADDR , 1 , buf , false);
564
- jsi2cRead (& i2cAccel , ACCEL_ADDR , 12 , buf , true);
559
+ jsi2cReadReg (& i2cAccel , ACCEL_ADDR , 0x22 , 12 , buf ); // OUTX_L_G
565
560
gyro_reading [0 ] = (buf [1 ]<<8 ) | buf [0 ];
566
561
gyro_reading [1 ] = (buf [3 ]<<8 ) | buf [2 ];
567
562
gyro_reading [2 ] = (buf [5 ]<<8 ) | buf [4 ];
@@ -575,9 +570,7 @@ void accel_wait() {
575
570
unsigned char buf [1 ];
576
571
timeout = 400 ;
577
572
do {
578
- buf [0 ] = 0x1E ; // STATUS_REG
579
- jsi2cWrite (& i2cAccel , ACCEL_ADDR , 1 , buf , false);
580
- jsi2cRead (& i2cAccel , ACCEL_ADDR , 1 , buf , true);
573
+ jsi2cReadReg (& i2cAccel , ACCEL_ADDR , 0x1E , 1 , buf ); // STATUS_REG
581
574
//jsiConsolePrintf("M %d\n", buf[0]);
582
575
} while (!(buf [0 ]& 3 ) && -- timeout ); // ZYXDA
583
576
if (!timeout ) jsExceptionHere (JSET_INTERNALERROR , "Timeout (Accelerometer)" );
@@ -950,9 +943,7 @@ JsVarFloat jswrap_puck_getTemperature() {
950
943
//buf[1] = 1; // CONF
951
944
//buf[0] = 0; // on
952
945
//jsi2cWrite(&i2cTemp,TEMP_ADDR, 1, buf, false);
953
- buf [0 ] = 0 ; // TEMP
954
- jsi2cWrite (& i2cTemp ,TEMP_ADDR , 1 , buf , false);
955
- jsi2cRead (& i2cTemp , TEMP_ADDR , 2 , buf , true);
946
+ jsi2cReadReg (& i2cTemp , TEMP_ADDR , 0 , 2 , buf ); // TEMP
956
947
int t = (buf [0 ]<<3 ) | (buf [1 ]>>5 );
957
948
if (t & 1024 ) t -= 2048 ; // negative
958
949
temp_off ();
@@ -1153,9 +1144,7 @@ int jswrap_puck_accelRd(JsVarInt reg) {
1153
1144
return -1 ;
1154
1145
}
1155
1146
unsigned char buf [1 ];
1156
- buf [0 ] = (unsigned char )reg ;
1157
- jsi2cWrite (& i2cAccel , ACCEL_ADDR , 1 , buf , false);
1158
- jsi2cRead (& i2cAccel , ACCEL_ADDR , 1 , buf , true);
1147
+ jsi2cReadReg (& i2cAccel , ACCEL_ADDR , reg , 1 , buf );
1159
1148
return buf [0 ];
1160
1149
}
1161
1150
@@ -1555,9 +1544,7 @@ bool _jswrap_puck_selfTest(bool advertisePassOrFail) {
1555
1544
if (PUCKJS_HAS_ACCEL ) {
1556
1545
accel_on (1660000 );
1557
1546
unsigned char buf [1 ];
1558
- buf [0 ] = 0x0F ; // WHOAMI
1559
- jsi2cWrite (& i2cAccel , ACCEL_ADDR , 1 , buf , false);
1560
- jsi2cRead (& i2cAccel , ACCEL_ADDR , 1 , buf , true);
1547
+ jsi2cReadReg (& i2cAccel , ACCEL_ADDR , 0x0F , 1 , buf ); // WHOAMI
1561
1548
accel_off ();
1562
1549
if (buf [0 ]!= 106 ) {
1563
1550
if (!err [0 ]) strcpy (err ,"ACC" );
0 commit comments