Esempio n. 1
0
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);
  
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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; }
}
Esempio n. 5
0
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);
}