123
Diff: sx127x_fsk.cpp
- Revision:
- 27:da6341d9d5b1
- Parent:
- 26:4876e515ff4c
- Child:
- 28:207594d5cf0e
diff -r 4876e515ff4c -r da6341d9d5b1 sx127x_fsk.cpp --- a/sx127x_fsk.cpp Mon Jul 18 21:13:50 2016 +0000 +++ b/sx127x_fsk.cpp Thu Jul 28 00:57:22 2016 +0000 @@ -282,15 +282,17 @@ void SX127x_fsk::config_dio0_for_pktmode_rx() { - if (RegPktConfig1.bits.CrcOn) { - if (m_xcvr.RegDioMapping1.bits.Dio0Mapping != 1) { - m_xcvr.RegDioMapping1.bits.Dio0Mapping = 1; // to CrcOk - m_xcvr.write_reg(REG_DIOMAPPING1, m_xcvr.RegDioMapping1.octet); - } - } else { // Crc Off, use PayloadReady - if (m_xcvr.RegDioMapping1.bits.Dio0Mapping != 0) { - m_xcvr.RegDioMapping1.bits.Dio0Mapping = 0; // to PayloadReady - m_xcvr.write_reg(REG_DIOMAPPING1, m_xcvr.RegDioMapping1.octet); + if (RegPktConfig2.bits.DataModePacket) { + if (RegPktConfig1.bits.CrcOn) { + if (m_xcvr.RegDioMapping1.bits.Dio0Mapping != 1) { + m_xcvr.RegDioMapping1.bits.Dio0Mapping = 1; // to CrcOk + m_xcvr.write_reg(REG_DIOMAPPING1, m_xcvr.RegDioMapping1.octet); + } + } else { // Crc Off, use PayloadReady + if (m_xcvr.RegDioMapping1.bits.Dio0Mapping != 0) { + m_xcvr.RegDioMapping1.bits.Dio0Mapping = 0; // to PayloadReady + m_xcvr.write_reg(REG_DIOMAPPING1, m_xcvr.RegDioMapping1.octet); + } } } } @@ -311,6 +313,33 @@ m_xcvr.set_opmode(RF_OPMODE_RECEIVER); } +uint8_t SX127x_fsk::get_modulation_shaping() +{ + if (m_xcvr.type == SX1276) { + RegPaRamp_t reg_paramp; + reg_paramp.octet = m_xcvr.read_reg(REG_PARAMP); + return reg_paramp.bits.ModulationShaping; + } else if (m_xcvr.type == SX1272) { + m_xcvr.RegOpMode.octet = m_xcvr.read_reg(REG_OPMODE); + return m_xcvr.RegOpMode.bits.ModulationShaping; + } else + return 0xff; +} + +void SX127x_fsk::set_modulation_shaping(uint8_t s) +{ + if (m_xcvr.type == SX1276) { + RegPaRamp_t reg_paramp; + reg_paramp.octet = m_xcvr.read_reg(REG_PARAMP); + reg_paramp.bits.ModulationShaping = s; + m_xcvr.write_reg(REG_PARAMP, reg_paramp.octet); + } else if (m_xcvr.type == SX1272) { + m_xcvr.RegOpMode.octet = m_xcvr.read_reg(REG_OPMODE); + m_xcvr.RegOpMode.bits.ModulationShaping = s; + m_xcvr.write_reg(REG_OPMODE, m_xcvr.RegOpMode.octet); + } +} + service_action_e SX127x_fsk::service() { int i; @@ -325,7 +354,7 @@ m_xcvr.set_opmode(RF_OPMODE_STANDBY); return SERVICE_TX_DONE; } - } else if (m_xcvr.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER && m_xcvr.dio0) { + } else if (RegPktConfig2.bits.DataModePacket && m_xcvr.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER && m_xcvr.dio0) { if (RegRxConfig.bits.AfcAutoOn) RegAfcValue = m_xcvr.read_s16(REG_FSK_AFCMSB);