コード例 #1
0
ファイル: TEA5767.cpp プロジェクト: Dietmar-Franken/Radio
void TEA5767::getRadioInfo(RADIO_INFO *info) {
  RADIO::getRadioInfo(info);

  _readRegisters();
  if (status[STAT_3] & STAT_3_STEREO) info->stereo = true;
  info->rssi = (status[STAT_4] & STAT_4_ADC) >> 4;

} // getRadioInfo()
コード例 #2
0
ファイル: TEA5767.cpp プロジェクト: Dietmar-Franken/Radio
/**
* @brief Retrieve the real frequency from the chip after automatic tuning.
* @return RADIO_FREQ the current frequency.
*/
RADIO_FREQ TEA5767::getFrequency() {
  _readRegisters();

  unsigned long frequencyW = ((status[REG_1] & REG_1_PLL) << 8) | status[REG_2];
  frequencyW = ((frequencyW * QUARTZ / 4) - FILTER) / 10000;

  return ((RADIO_FREQ)frequencyW);
}  // getFrequency
コード例 #3
0
void ModbusRtu::readRegisters(FunctionCode function, quint8 slaveAddress,
							  quint16 startReg, quint16 count)
{
	QMutexLocker lock(&mMutex);
	if (mState == Idle) {
		_readRegisters(function, slaveAddress, startReg, count);
	} else {
		Cmd cmd;
		cmd.function = function;
		cmd.slaveAddress = slaveAddress;
		cmd.reg = startReg;
		cmd.value = count;
		mPendingCommands.append(cmd);
	}
}
コード例 #4
0
void ModbusRtu::processPending()
{
	if (mPendingCommands.isEmpty())
		return;
	const Cmd &cmd = mPendingCommands.first();
	switch (cmd.function) {
	case ReadHoldingRegisters:
	case ReadInputRegisters:
		_readRegisters(cmd.function, cmd.slaveAddress, cmd.reg, cmd.value);
		break;
	case WriteSingleRegister:
		_writeRegister(cmd.function, cmd.slaveAddress, cmd.reg, cmd.value);
		break;
	default:
		break;
	}
	mPendingCommands.removeFirst();
}