static void max21100SetReg(uint8_t reg, uint8_t val) { ((uint8_t *)&max21100TxBuf)[0] = MAX21100_WRITE_BIT | reg; ((uint8_t *)&max21100TxBuf)[1] = val; max21100Data.spiFlag = 0; spiTransaction(max21100Data.spi, &max21100RxBuf, &max21100TxBuf, 2); while (!max21100Data.spiFlag) ; }
static uint8_t max21100GetReg(uint8_t reg) { ((uint8_t *)&max21100TxBuf)[0] = MAX21100_READ_BIT | reg; max21100Data.spiFlag = 0; spiTransaction(max21100Data.spi, &max21100RxBuf, &max21100TxBuf, 2); while (!max21100Data.spiFlag) ; return ((uint8_t *)&max21100RxBuf)[1]; }
static void hmc5983SetReg(uint8_t reg, uint8_t val) { static uint8_t rxBuf[2]; static uint8_t txBuf[2]; txBuf[0] = HMC5983_WRITE_BIT | reg; txBuf[1] = val; hmc5983Data.spiFlag = 0; spiTransaction(hmc5983Data.spi, rxBuf, txBuf, 2); while (!hmc5983Data.spiFlag) ; }
static uint8_t hmc5983GetReg(uint8_t reg) { static uint8_t rxBuf[2]; static uint8_t txBuf[2]; txBuf[0] = HMC5983_READ_BIT | reg; hmc5983Data.spiFlag = 0; spiTransaction(hmc5983Data.spi, rxBuf, txBuf, 2); while (!hmc5983Data.spiFlag) ; return rxBuf[1]; }
/* * Class: edu_wpi_first_wpilibj_hal_SPIJNI * Method: spiTransaction * Signature: (BLjava/nio/ByteBuffer;Ljava/nio/ByteBuffer;B)I */ JNIEXPORT jint JNICALL Java_edu_wpi_first_wpilibj_hal_SPIJNI_spiTransaction (JNIEnv * env, jclass, jbyte port, jobject dataToSend, jobject dataReceived, jbyte size) { SPIJNI_LOG(logDEBUG) << "Calling SPIJNI spiTransaction"; SPIJNI_LOG(logDEBUG) << "Port = " << (jint) port; uint8_t* dataToSendPtr = nullptr; if (dataToSend != 0) { dataToSendPtr = (uint8_t*)env->GetDirectBufferAddress(dataToSend); } uint8_t* dataReceivedPtr = (uint8_t*)env->GetDirectBufferAddress(dataReceived); SPIJNI_LOG(logDEBUG) << "Size = " << (jint)size; SPIJNI_LOG(logDEBUG) << "DataToSendPtr = " << dataToSendPtr; SPIJNI_LOG(logDEBUG) << "DataReceivedPtr = " << dataReceivedPtr; jint retVal = spiTransaction(port, dataToSendPtr, dataReceivedPtr, size); SPIJNI_LOG(logDEBUG) << "ReturnValue = " << (jint)retVal; return retVal; }
void max21100IntHandler(void) { if (max21100Data.enabled) spiTransaction(max21100Data.spi, &max21100Data.rxBuf[max21100Data.slot*MAX21100_SLOT_SIZE], &max21100Data.readReg, MAX21100_BYTES); }
static void mpu6000IntHandler(void) { if (mpu6000Data.enabled) spiTransaction(mpu6000Data.spi, &mpu6000Data.rxBuf[mpu6000Data.slot*MPU6000_SLOT_SIZE], &mpu6000Data.readReg, MPU6000_BYTES); }
void hmc5983IntHandler(void) { if (hmc5983Data.enabled) spiTransaction(hmc5983Data.spi, &hmc5983Data.rxBuf[hmc5983Data.slot*HMC5983_SLOT_SIZE], &hmc5983Data.readCmd, HMC5983_BYTES); }