void OGNRadio::StartReceive(uint8_t Freq, uint8_t *Sync) { uint8_t i; uint8_t SyncValueRegister = REG_SYNCVALUE1; SetTxPower(0); SetFrequency(Freq); for(i=0;i<8;i++) { WriteRegister(SyncValueRegister++,Sync[i]); } WriteRegister(REG_SYNCCONFIG,RF_SYNC_ON | RF_SYNC_SIZE_8 | RF_SYNC_TOL_0); WriteRegister(REG_PAYLOADLENGTH, 56); WriteRegister(REG_LNA,RF_LNA_ZIN_50 | RF_LNA_GAINSELECT_AUTO | RF_LNA_LOWPOWER_OFF | RF_LNA_CURRENTGAIN ); WriteRegister(REG_RXBW,RF_RXBW_DCCFREQ_101 | RF_RXBW_MANT_20 | RF_RXBW_EXP_2); WriteRegister(REG_AFCBW,RF_AFCBW_DCCFREQAFC_100 | RF_AFCBW_MANTAFC_20 | RF_AFCBW_EXPAFC_2); WriteRegister(REG_AFCCTRL,RF_AFCCTRL_LOWBETA_ON); WriteRegister(REG_AFCFEI,RF_AFCFEI_AFCAUTO_ON); WriteRegister(REG_RSSITHRESH, 220); WriteRegister(REG_TESTLNA,RF_TESTLNA_HIGH_SENSITIVITY); WriteRegister(REG_TESTDAGC,RF_DAGC_IMPROVED_LOWBETA0); WriteRegister(REG_AFCFEI,RF_AFCFEI_AFCAUTOCLEAR_OFF); ClearIRQFlags(); WriteRegister(REG_OPMODE , RF_DATAMODUL_MODULATIONTYPE_FSK | RF_OPMODE_LISTEN_OFF | RF_OPMODE_RECEIVER); }
void OGNRadio::SendPacket(uint8_t *Packet, uint16_t Size, uint16_t Freq, uint8_t TxPower) { uint8_t i; SetTxPower(TxPower); SetFrequency(Freq); WriteRegister(REG_PAYLOADLENGTH, Size); WriteRegister(REG_SYNCCONFIG,RF_SYNC_OFF); WriteRegister(REG_PREAMBLEMSB, 0x00); WriteRegister(REG_PREAMBLELSB, 0x80); ClearIRQFlags(); for(i=0;i<Size;i++) { WriteRegister(REG_FIFO,Packet[i]); } WriteRegister(REG_OPMODE , RF_DATAMODUL_MODULATIONTYPE_FSK | RF_OPMODE_LISTEN_OFF | RF_OPMODE_TRANSMITTER); do {} while( (ReadRegister(REG_IRQFLAGS2) & RF_IRQFLAGS2_PACKETSENT ) != RF_IRQFLAGS2_PACKETSENT); WriteRegister(REG_OPMODE, RF_DATAMODUL_MODULATIONTYPE_FSK | RF_OPMODE_LISTEN_OFF | RF_OPMODE_STANDBY); }
bool SrSetTxPower(HANDLE hCom, unsigned char cData, unsigned char cRead, unsigned char cWrite, unsigned int *pdwErr) { unsigned char txpower[4] = { 0 }; txpower[0] = cData & 0x01; txpower[1] = cRead; txpower[2] = cWrite; int ret = SetTxPower(hCom, txpower, pdwErr); if (ret == -1) { *pdwErr = ERR_CODE_SET_TX_POWER; return false; } return true; }
void SetOption(option_types opt_code, void* value) { switch (opt_code) { case OPT_CONS_SPEED: { SetConsSpeed(*(uint32_t *) value); break; } case OPT_GPS_SPEED: { SetGPSSpeed (*(uint32_t *) value); break; } case OPT_ACFT_ID: { SetAcftID (*(uint32_t *) value); break; } case OPT_TX_POWER: { SetTxPower (*(float *) value); break; } case OPT_XTAL_CORR: { SetXtalCorr (*(int16_t *) value); break; } case OPT_FREQ_OFS: { SetFreqOfs (*(int32_t *) value); break; } case OPT_IWDG: { SetIWDGDis (*(uint8_t *) value); break; } case OPT_OPER_MODE: { SetOperMode (*(uint8_t *) value); break; } case OPT_CHANNEL: { SetChannel (*(uint8_t *) value); break; } case OPT_GPSDUMP: { SetGPSDump (*(uint8_t *) value); break; } case OPT_MAX_TX_PWR: { SetMaxTxPower (*(float *) value); break; } case OPT_GPS_ALW_ON: { SetGPSAlwON (*(uint8_t *) value); break; } case OPT_GPS_ANT: { SetGPSAnt (*(uint8_t *) value); break; } case OPT_JAM_RATIO: { SetJamRatio (*(uint8_t *) value); break; } case OPT_MIN_BAT_LVL:{ SetMinBatLvl(*(uint16_t *) value); break; } case OPT_GPS_WDG_TIME:{SetGPSWdgTime(*(uint16_t *) value); break;} default: break; } }
void OGNRadio::Initialise(uint8_t Power) { WriteRegister(REG_OPMODE, RF_DATAMODUL_MODULATIONTYPE_FSK | RF_OPMODE_LISTEN_OFF | RF_OPMODE_STANDBY); WriteRegister(REG_DATAMODUL, RF_DATAMODUL_DATAMODE_PACKET | RF_DATAMODUL_MODULATIONSHAPING_10 | RF_DATAMODUL_MODULATIONTYPE_FSK ); ClearIRQFlags(); WriteRegister(REG_BITRATEMSB, RF_BITRATEMSB_100000); WriteRegister(REG_BITRATELSB, RF_BITRATELSB_100000); WriteRegister(REG_FDEVMSB,RF_FDEVMSB_50000); WriteRegister(REG_FDEVLSB,RF_FDEVLSB_50000); SetFrequency(F8684); WriteRegister(REG_PACKETCONFIG1, RF_PACKET1_FORMAT_FIXED | RF_PACKET1_DCFREE_OFF | RF_PACKET1_CRC_OFF | RF_PACKET1_CRCAUTOCLEAR_ON | RF_PACKET1_ADRSFILTERING_OFF); WriteRegister(REG_FIFOTHRESH, RF_FIFOTHRESH_TXSTART_FIFONOTEMPTY | 63); WriteRegister(REG_PACKETCONFIG2, RF_PACKET2_RXRESTARTDELAY_1BIT | RF_PACKET2_AUTORXRESTART_ON | RF_PACKET2_AES_OFF); WriteRegister(REG_AUTOMODES, 0); SetTxPower(Power); }