Пример #1
0
void FDTD2D::updateE(){
  int ii,jj;
  double CFL2 = CFL;///2.;
  // Bulk update, Ex
  for( jj=1; jj<Ny-1; jj++){
    for( ii=0; ii<Nx-1; ii++){
      Ex(ii,jj) += ExC(ii,jj)*(Hz(ii,jj) - Hz(ii,jj-1));
    }
  }
  // Bulk update, Ey
  for( jj=0; jj<Ny-1; jj++){
    for( ii=1; ii<Nx-1; ii++){
      Ey(ii,jj) -= EyC(ii,jj)*(Hz(ii,jj) - Hz(ii-1,jj));
    }
  }
  // Boundary update, Ex
  for( ii=0; ii<Nx-1; ii++){
    Ex(ii,0)    = (1.-CFL2)*Ex(ii,0)    + CFL2*Ex(ii,1);
    Ex(ii,Ny-1) = (1.-CFL2)*Ex(ii,Ny-1) + CFL2*Ex(ii,Ny-2);
  }
  // Boundary update, Ey
  for( jj=0; jj<Ny-1; jj++){
    Ey(0,jj)    = (1.-CFL2)*Ey(0,jj)    + CFL2*Ey(1,jj);
    Ey(Nx-1,jj) = (1.-CFL2)*Ey(Nx-1,jj) + CFL2*Ey(Nx-2,jj);
  }
  return;
}
Пример #2
0
int ft100_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) {

    struct ft100_priv_data *priv = (struct ft100_priv_data*)rig->state.priv;
    int ret;

    if( !mode || !width )  return -RIG_EINVAL;

    ret = ft100_read_status(rig);
    if (ret < 0)
	return ret;

    switch( priv->status.mode & 0x0f ) {
    case 0x00:
      *mode = RIG_MODE_LSB;
      break;
    case 0x01:
      *mode = RIG_MODE_USB;
      break;
    case 0x02:
      *mode = RIG_MODE_CW;
      break;
    case 0x03:
      *mode = RIG_MODE_CWR;
      break;
    case 0x04:
      *mode = RIG_MODE_AM;
      break;
    case 0x05:
      *mode = RIG_MODE_RTTY;
      break;
    case 0x06:
      *mode = RIG_MODE_FM;
      break;
    case 0x07:
      *mode = RIG_MODE_WFM;
      break;
    default:
      *mode = RIG_MODE_NONE;
    };

    switch( priv->status.mode >> 4 ) {
    case 0x00:
      *width = Hz(6000);
      break;
    case 0x01:
      *width = Hz(2400);
      break;
    case 0x02:
      *width = Hz(500);
      break;
    case 0x03:
      *width = Hz(300);
      break;
    default:
      *width = RIG_PASSBAND_NORMAL;
    };

    return RIG_OK;
}
Пример #3
0
void KneeJointR::checkInitPos( SP::SiconosVector x1 ,  SP::SiconosVector x2 )
{

  //x1->display();
  double X1 = x1->getValue(0);
  double Y1 = x1->getValue(1);
  double Z1 = x1->getValue(2);
  double q10 = x1->getValue(3);
  double q11 = x1->getValue(4);
  double q12 = x1->getValue(5);
  double q13 = x1->getValue(6);
  double X2 = 0;
  double Y2 = 0;
  double Z2 = 0;
  double q20 = 1;
  double q21 = 0;
  double q22 = 0;
  double q23 = 0;
  if(x2)
  {
    //printf("checkInitPos x2:\n");
    //x2->display();
    X2 = x2->getValue(0);
    Y2 = x2->getValue(1);
    Z2 = x2->getValue(2);
    q20 = x2->getValue(3);
    q21 = x2->getValue(4);
    q22 = x2->getValue(5);
    q23 = x2->getValue(6);
  }

  if (Hx(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23) > DBL_EPSILON )
  {
    std::cout << "KneeJointR::checkInitPos( SP::SiconosVector x1 ,  SP::SiconosVector x2 )" << std::endl;
    std::cout << " Hx is large :" << Hx(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23) << std::endl;
  }
  if (Hy(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23) > DBL_EPSILON )
  {
    std::cout << "KneeJointR::checkInitPos( SP::SiconosVector x1 ,  SP::SiconosVector x2 )" << std::endl;
    std::cout << " Hy is large :" << Hy(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23) << std::endl;
  }
  if (Hz(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23) > DBL_EPSILON )
  {
    std::cout << "KneeJointR::checkInitPos( SP::SiconosVector x1 ,  SP::SiconosVector x2 )" << std::endl;
    std::cout << " Hz is large :" << Hz(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23) << std::endl;
  }
     
  
  // printf("checkInitPos Hx : %e\n", Hx(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23));
  // printf("checkInitPos Hy : %e\n", Hy(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23));
  // printf("checkInitPos Hz : %e\n", Hz(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23));


}
Пример #4
0
void FDTD2D::correctFieldsH(){
  // Left partition at Lx+0.5. Right at Nx-Lx+0.5.
  // As incident wave is Ey/Bz polarised, no need to mess with top or bottom partitions.
  double l_source = gauss_der_source(t-(Lx)*ds/c, sigma, mean);
  double r_source = gauss_der_source(t-(Nx-Lx+1)*ds/c, sigma, mean);
  for( int jj = Ly; jj <= Ny-Ly; jj++){
    // Ey to the left is scattered
    Hz(Lx,jj)    += HzC(Lx,jj)    * l_source;
    Hz(Nx-Lx,jj) -= HzC(Nx-Lx,jj) * r_source;
  }
  // Corner points need additional attention
  return;
}
Пример #5
0
/*
 * Tuning Factor Calculations
 * assumes rig!=NULL, rig->state.priv!=NULL
 * assumes priv->mode in supported modes.
 */
static void tentec_tuning_factor_calc(RIG *rig)
{
    struct tentec_priv_data *priv;
    freq_t tfreq;
    int adjtfreq, mcor, fcor, cwbfo;

    priv = (struct tentec_priv_data *)rig->state.priv;
    cwbfo = 0;

    /* computed fcor only used if mode is not CW */
    fcor = (int)floor((double)priv->width / 2.0) + 200;

    switch (priv->mode) {
    case RIG_MODE_AM:
    case RIG_MODE_FM:
        mcor=0; break;
	case RIG_MODE_CW:
	    mcor=-1; cwbfo = priv->cwbfo; fcor = 0; break;
    case RIG_MODE_LSB:
		mcor=-1; break;
    case RIG_MODE_USB:
        mcor=1; break;
    default:
        rig_debug(RIG_DEBUG_BUG, "tentec_tuning_factor_calc: invalid mode!\n");
        mcor=1; break;
    }
    tfreq = priv->freq / (freq_t)Hz(1);

    adjtfreq = (int)tfreq - 1250 + (int)(mcor * (fcor + priv->pbt));

    priv->ctf = (adjtfreq / 2500) + 18000;
    priv->ftf = (int)floor((double)(adjtfreq % 2500) * 5.46);
    priv->btf = (int)floor((double)(fcor + priv->pbt + cwbfo + 8000) * 2.73);
}
Пример #6
0
void FDTD2D::print_heatmap( std::ofstream& outFile){
  // Prints data in a format compatible for heatmap plots 
  for( int jj=0; jj<Ny-1; jj++){
    for( int ii=0; ii<Nx-1; ii++){
      outFile << Hz(ii,jj) << ' ';
    }
    outFile << std::endl;
  }
  return;
}
Пример #7
0
void FDTD2D::updateH(){
  // Bulk update, Hz
  for( int ii=0; ii<Nx-1; ii++){
    for( int jj=0; jj<Ny-1; jj++){
      Hz(ii,jj) += HzC(ii,jj)*(Ex(ii,jj+1) - Ex(ii,jj)
                             - Ey(ii+1,jj) + Ey(ii,jj));
    }
  }
  // No need to account for boundary conditions here; they are included in the E update equations.
  return;
}
Пример #8
0
/* update magnetic field */
void updateH2d(Grid *g) {
  int mm, nn;

  if (Type == oneDGrid) {

    for (mm = 0; mm < SizeX - 1; mm++)
      Hz1(mm) = Chzh1(mm) * Hz1(mm) 
	- Chze1(mm) * (Ey1(mm + 1) - Ey1(mm));

  } else { 

    for (mm = 0; mm < SizeX - 1; mm++)    /*@ \label{updatetezA} @*/
      for (nn = 0; nn < SizeY - 1; nn++)
	Hz(mm, nn) = Chzh(mm, nn) * Hz(mm, nn) +
	  Chze(mm, nn) * ((Ex(mm, nn + 1) - Ex(mm, nn))
			  - (Ey(mm + 1, nn) - Ey(mm, nn)));
  }

  return;
}
Пример #9
0
double DiskSCFPotentialPlanarRforce(double R,double phi,
				    double t,
				    struct potentialArg * potentialArgs){
  //Supposed to be zero (bc H(0) supposed to be zero), but just to make sure
  double * args= potentialArgs->args;
  //Get args
  int nsigma_args= (int) *args;
  double * Sigma_args= args+1;
  double * hz_args= args+1+nsigma_args;
  //Calculate Rforce
  return -dSigmadR(R,Sigma_args) * Hz(0.,hz_args);
}
Пример #10
0
double DiskSCFPotentialRforce(double R,double Z, double phi,
			      double t,
			      struct potentialArg * potentialArgs){
  double * args= potentialArgs->args;
  //Get args
  int nsigma_args= (int) *args;
  double * Sigma_args= args+1;
  double * hz_args= args+1+nsigma_args;
  //Calculate Rforce
  double r= sqrt( R * R + Z * Z );
  return -dSigmadR(r,Sigma_args) * Hz(Z,hz_args) * R / r;
}
Пример #11
0
/* update electric field */
void updateE2d(Grid *g) {
  int mm, nn;

  if (Type == oneDGrid) {

    for (mm = 1; mm < SizeX - 1; mm++)
      Ey1(mm) = Ceye1(mm) * Ey1(mm) 
	- Ceyh1(mm) * (Hz1(mm) - Hz1(mm - 1));

  } else { 

    for (mm = 0; mm < SizeX - 1; mm++)    /*@ \label{updatetezB} @*/
      for (nn = 1; nn < SizeY - 1; nn++)
	Ex(mm, nn) = Cexe(mm, nn) * Ex(mm, nn) +
	  Cexh(mm, nn) * (Hz(mm, nn) - Hz(mm, nn - 1));

    for (mm = 1; mm < SizeX - 1; mm++)
      for (nn = 0; nn < SizeY - 1; nn++)
	Ey(mm, nn) = Ceye(mm, nn) * Ey(mm, nn) -
	  Ceyh(mm, nn) * (Hz(mm, nn) - Hz(mm - 1, nn));
  }

  return;
}
Пример #12
0
/**
 * Print an EDID monitor descriptor block
 *
 * @param monitor	The EDID monitor descriptor block
 * @have_timing		Modifies to 1 if the desciptor contains timing info
 */
static void edid_print_dtd(struct edid_monitor_descriptor *monitor,
			   unsigned int *have_timing)
{
	unsigned char *bytes = (unsigned char *)monitor;
	struct edid_detailed_timing *timing =
			(struct edid_detailed_timing *)monitor;

	if (bytes[0] == 0 && bytes[1] == 0) {
		if (monitor->type == EDID_MONITOR_DESCRIPTOR_SERIAL)
			printf("Monitor serial number: %s\n",
			       snip(monitor->data.string));
		else if (monitor->type == EDID_MONITOR_DESCRIPTOR_ASCII)
			printf("Monitor ID: %s\n",
			       snip(monitor->data.string));
		else if (monitor->type == EDID_MONITOR_DESCRIPTOR_NAME)
			printf("Monitor name: %s\n",
			       snip(monitor->data.string));
		else if (monitor->type == EDID_MONITOR_DESCRIPTOR_RANGE)
			printf("Monitor range limits, horizontal sync: "
			       "%d-%d kHz, vertical refresh: "
			       "%d-%d Hz, max pixel clock: "
			       "%d MHz\n",
			       monitor->data.range_data.horizontal_min,
			       monitor->data.range_data.horizontal_max,
			       monitor->data.range_data.vertical_min,
			       monitor->data.range_data.vertical_max,
			       monitor->data.range_data.pixel_clock_max * 10);
	} else {
		uint32_t pixclock, h_active, h_blanking, v_active, v_blanking;
		uint32_t h_total, v_total, vfreq;

		pixclock = EDID_DETAILED_TIMING_PIXEL_CLOCK(*timing);
		h_active = EDID_DETAILED_TIMING_HORIZONTAL_ACTIVE(*timing);
		h_blanking = EDID_DETAILED_TIMING_HORIZONTAL_BLANKING(*timing);
		v_active = EDID_DETAILED_TIMING_VERTICAL_ACTIVE(*timing);
		v_blanking = EDID_DETAILED_TIMING_VERTICAL_BLANKING(*timing);

		h_total = h_active + h_blanking;
		v_total = v_active + v_blanking;
		if (v_total * h_total)
			vfreq = pixclock / (v_total * h_total);
		else
			vfreq = 1; /* Error case */
		printf("\t%dx%d\%c\t%d Hz (detailed)\n", h_active,
		       v_active, h_active > 1000 ? ' ' : '\t', vfreq);
		*have_timing = 1;
	}
}
Пример #13
0
MHz calculate_cpu_frequency(){
  
  // We expect the cpu_sampling_irq_handler to push in samples;
  while (_cpu_timestamps.size() < do_samples_)
    OS::halt();
      
  debug("_cpu_sampling_freq_divider_ : %i \n",_cpu_sampling_freq_divider_);
  
  #ifdef DEBUG
  for (auto t : _cpu_timestamps) debug("%lu \n",(uint32_t)t);
  #endif
  
  // Subtract the time it takes to measure time :-)
  auto t1 = OS::cycles_since_boot();
  OS::cycles_since_boot();
  auto t3 = OS::cycles_since_boot();
  auto overhead = (t3 - t1) * 2;
  
  debug ("Overhead: %lu \n", (uint32_t)overhead);
  
  for (size_t i = 1; i < _cpu_timestamps.size(); i++){
    // Compute delta in cycles
    auto cycles = _cpu_timestamps[i] - _cpu_timestamps[i-1] + overhead;
    // Cycles pr. second == Hertz
    auto freq = cycles / (1 / test_frequency().count());
    _cpu_freq_samples.push_back(freq);    
    debug("%lu - %lu = Delta: %lu Current PIT-Freq: %f Hz CPU Freq: %f MHz \n",
	  (uint32_t)_cpu_timestamps[i], (uint32_t)_cpu_timestamps[i-1],
	  (uint32_t)cycles, Hz(test_frequency()), freq);        
  }
  
  
#ifdef DEBUG
  double sum = 0;  
  for (auto freq : _cpu_freq_samples)
    sum += freq;  
  double mean = sum / _cpu_freq_samples.size();
#endif
  
  std::sort(_cpu_freq_samples.begin(), _cpu_freq_samples.end());
  double median = _cpu_freq_samples[_cpu_freq_samples.size() / 2];
  
  debug("<cpu_freq> MEAN: %f MEDIAN: %f \n",mean, median);
  _CPUFreq_ = median;
  
  return MHz(median);
  
}
Пример #14
0
void FDTD2D::zeroICs(){
  for(int jj=0; jj<Ny; jj++){
    for(int ii=0; ii<Nx; ii++){
      if(ii<Nx-1){ 
        Ex(ii,jj)  = 0.;
        ExC(ii,jj) = dt / (eps*ds);
      }
      if(jj<Ny-1){
        Ey(ii,jj)  = 0.;
        EyC(ii,jj) = dt / (eps*ds);
      }
      if(ii<Nx-1 && jj<Ny-1){
        Hz(ii,jj)   = 0.;
        HzC(ii,jj)  = dt / (mu*ds);
      }
    }
  }
  return;
}
Пример #15
0
void KneeJointR::computeh(double time, BlockVector& q0, SiconosVector& y)
{
  DEBUG_BEGIN("KneeJointR::computeh(double time, BlockVector& q0, SiconosVector& y)\n");
  DEBUG_EXPR(q0.display());

  double X1 = q0.getValue(0);
  double Y1 = q0.getValue(1);
  double Z1 = q0.getValue(2);
  double q10 = q0.getValue(3);
  double q11 = q0.getValue(4);
  double q12 = q0.getValue(5);
  double q13 = q0.getValue(6);
  DEBUG_PRINTF("X1 = %12.8e,\t Y1 = %12.8e,\t Z1 = %12.8e,\n",X1,Y1,Z1);
  DEBUG_PRINTF("q10 = %12.8e,\t q11 = %12.8e,\t q12 = %12.8e,\t q13 = %12.8e,\n",q10,q11,q12,q13);
  double X2 = 0;
  double Y2 = 0;
  double Z2 = 0;
  double q20 = 1;
  double q21 = 0;
  double q22 = 0;
  double q23 = 0;
  if(q0.getNumberOfBlocks()>1)
  {
    // SP::SiconosVector x2 = _d2->q();
    // DEBUG_EXPR( _d2->q()->display(););
    X2 = q0.getValue(7);
    Y2 = q0.getValue(8);
    Z2 = q0.getValue(9);
    q20 = q0.getValue(10);
    q21 = q0.getValue(11);
    q22 = q0.getValue(12);
    q23 = q0.getValue(13);
  }
  y.setValue(0, Hx(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23));
  y.setValue(1, Hy(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23));
  y.setValue(2, Hz(X1, Y1, Z1, q10, q11, q12, q13, X2, Y2, Z2, q20, q21, q22, q23));
  DEBUG_EXPR(y.display());
  DEBUG_END("KneeJointR::computeh(double time, BlockVector& q0, SiconosVector& y)\n");
    
}
Пример #16
0
 .write_delay =        FT1000D_WRITE_DELAY,
 .post_write_delay =   FT1000D_POST_WRITE_DELAY,
 .timeout =            2000,
 .retry =              0,
 .has_get_func =       RIG_FUNC_LOCK | RIG_FUNC_TUNER | RIG_FUNC_MON,
 .has_set_func =       RIG_FUNC_LOCK | RIG_FUNC_TUNER,
 .has_get_level =      RIG_LEVEL_STRENGTH | RIG_LEVEL_SWR | RIG_LEVEL_ALC | \
                       RIG_LEVEL_ALC | RIG_LEVEL_RFPOWER,
 .has_set_level =      RIG_LEVEL_NONE,
 .has_get_parm =       RIG_PARM_NONE,
 .has_set_parm =       RIG_PARM_BACKLIGHT,
 .ctcss_list =         NULL,
 .dcs_list =           NULL,
 .preamp =             { RIG_DBLST_END, },
 .attenuator =         { RIG_DBLST_END, },
 .max_rit =            Hz(9999),
 .max_xit =            Hz(9999),
 .max_ifshift =        Hz(1200),
 .vfo_ops =            RIG_OP_CPY | RIG_OP_FROM_VFO | RIG_OP_TO_VFO |
                       RIG_OP_UP | RIG_OP_DOWN | RIG_OP_TUNE | RIG_OP_TOGGLE,
 .targetable_vfo =     RIG_TARGETABLE_ALL,
 .transceive =         RIG_TRN_OFF,        /* Yaesus have to be polled, sigh */
 .bank_qty =           0,
 .chan_desc_sz =       0,
 .chan_list =          {
                         {1, 99, RIG_MTYPE_MEM, FT1000D_MEM_CAP},
                          RIG_CHAN_END,
                       },
 .rx_range_list1 =     {
   {kHz(100), MHz(30), FT1000D_ALL_RX_MODES, -1, -1, FT1000D_VFO_ALL, FT1000D_ANTS},   /* General coverage + ham */
   RIG_FRNG_END,
Пример #17
0
    .retry =              3,
    .has_get_func =       FT950_FUNCS,
    .has_set_func =       FT950_FUNCS,
    .has_get_level =      FT950_LEVELS,
    .has_set_level =      RIG_LEVEL_SET(FT950_LEVELS),
    .has_get_parm =       RIG_PARM_NONE,
    .has_set_parm =       RIG_PARM_NONE,
    .level_gran = {
	[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
	[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
    },
    .ctcss_list =         common_ctcss_list,
    .dcs_list =           NULL,
    .preamp =             { 10, 20, RIG_DBLST_END, }, /* TBC */
    .attenuator =         { 6, 12, 18, RIG_DBLST_END, },
    .max_rit =            Hz(9999),
    .max_xit =            Hz(9999),
    .max_ifshift =        Hz(1000),
    .vfo_ops =            FT950_VFO_OPS,
    .targetable_vfo =     RIG_TARGETABLE_FREQ,
    .transceive =         RIG_TRN_OFF,        /* May enable later as the 950 has an Auto Info command */
    .bank_qty =           0,
    .chan_desc_sz =       0,
    .str_cal =            FT950_STR_CAL,
    .chan_list =          {
               {   1,  99, RIG_MTYPE_MEM,  NEWCAT_MEM_CAP },
               { 100, 117, RIG_MTYPE_EDGE, NEWCAT_MEM_CAP },    /* two by two */
               { 125, 128, RIG_MTYPE_BAND, NEWCAT_MEM_CAP },    /* 60M Channels U51-U54 or US1-US4, if available */
               { 130, 130, RIG_MTYPE_BAND, NEWCAT_MEM_CAP },    /* 60M Channel U55 or US5, if available */
               { 131, 131, RIG_MTYPE_BAND, NEWCAT_MEM_CAP },    /* EU5, 5167.5 KHz Alaska Emergency Freq, if available */
Пример #18
0
    .retry =  3,
    .has_get_func =  IC7000_FUNCS,
    .has_set_func =  IC7000_FUNCS,
    .has_get_level =  IC7000_LEVELS,
    .has_set_level =  RIG_LEVEL_SET(IC7000_LEVELS),
    .has_get_parm =  IC7000_PARMS,
    .has_set_parm =  RIG_PARM_SET(IC7000_PARMS),
    .level_gran = {
        [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
    },
    .parm_gran =  {},
    .ctcss_list =  common_ctcss_list,
    .dcs_list =  common_dcs_list,
    .preamp =   { 10, RIG_DBLST_END, },	/* FIXME: TBC it's a guess*/
    .attenuator =   { 12, RIG_DBLST_END, },
    .max_rit =  Hz(9999),
    .max_xit =  Hz(9999),
    .max_ifshift =  Hz(0), /* TODO */
    .targetable_vfo =  0,
    .vfo_ops =  IC7000_VFO_OPS,
    .scan_ops =  IC7000_SCAN_OPS,
    .transceive =  RIG_TRN_RIG,
    .bank_qty =   5,
    .chan_desc_sz =  0, /* TODO */

    .chan_list =  {
        {   1,  99, RIG_MTYPE_MEM,  IC7000_MEM_CAP },
        { 100, 105, RIG_MTYPE_EDGE, IC7000_MEM_CAP },    /* two by two */
        { 106, 107, RIG_MTYPE_CALL, IC7000_MEM_CAP },
        RIG_CHAN_END,
    },
Пример #19
0
	.has_get_parm		= RIG_PARM_NONE,
	.has_set_parm		= RIG_PARM_NONE,

	.level_gran = {
		[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
		/* XXX check this */
		[LVL_IF] = { .min = { .i = -1270 }, .max = { .i = 1270 }, .step = { .i = 10 } },
        },
	.parm_gran	= { },

	.ctcss_list	= pcr_ctcss_list,
	.dcs_list	= NULL,
	.preamp		= { RIG_DBLST_END },
	.attenuator	= { 20, RIG_DBLST_END },

	.max_rit	= Hz(0),
	.max_xit	= Hz(0),
	.max_ifshift	= Hz(0),

	.targetable_vfo	= 0,
	.transceive	= RIG_TRN_RIG,
	.bank_qty	= 0,
	.chan_desc_sz	= 0,
	.chan_list	= { RIG_CHAN_END },

	.rx_range_list1 = {
		{ kHz(10), GHz(1.3), PCR100_MODES, -1, -1, RIG_VFO_A },
		 RIG_FRNG_END,
	},
	.tx_range_list1 = { RIG_FRNG_END },
	.rx_range_list2 = {
Пример #20
0
    .post_write_delay =  0,
    .timeout =  1000,
    .retry =  3,
    .has_get_func =  RIG_FUNC_NONE,
    .has_set_func =  RIG_FUNC_NONE,
    .has_get_level =  RIG_LEVEL_NONE,
    .has_set_level =  RIG_LEVEL_NONE,
    .has_get_parm =  RIG_PARM_NONE,
    .has_set_parm =  RIG_PARM_NONE,
    .level_gran =  {},
    .parm_gran =  {},
    .ctcss_list =  NULL,
    .dcs_list =  NULL,
    .preamp =   { RIG_DBLST_END, },
    .attenuator =   { RIG_DBLST_END, },
    .max_rit =  Hz(0),
    .max_xit =  Hz(0),
    .max_ifshift =  Hz(0),
    .targetable_vfo =  0,
    .vfo_ops =  IC1275_VFO_OPS,
    .scan_ops =  RIG_SCAN_NONE,
    .transceive =  RIG_TRN_RIG,
    .bank_qty =   0,
    .chan_desc_sz =  0,

    .chan_list =  {
        {   1,  99, RIG_MTYPE_MEM, IC_MIN_MEM_CAP  },
        { 100, 101, RIG_MTYPE_EDGE, IC_MIN_MEM_CAP },
        { 102, 102, RIG_MTYPE_CALL, IC_MIN_MEM_CAP },
        RIG_CHAN_END,
    },
Пример #21
0
.has_get_func =  TS870S_FUNC_ALL,
.has_set_func =  TS870S_FUNC_ALL,
.has_get_level =  TS870S_LEVEL_GET,
.has_set_level =  TS870S_LEVEL_SET,
.has_get_parm =  RIG_PARM_NONE,
.has_set_parm =  RIG_PARM_NONE,    /* FIXME: parms */
.level_gran =  {},                 /* FIXME: granularity */
.parm_gran =  {},
.ctcss_list =  kenwood38_ctcss_list,
.dcs_list =  NULL,
.preamp =   { RIG_DBLST_END, },	/* FIXME: preamp list */
.attenuator =   { 6, 12, 18, RIG_DBLST_END, },
.max_rit =  kHz(9.99),
.max_xit =  kHz(9.99),
.max_ifshift =  Hz(0),
.targetable_vfo =  RIG_TARGETABLE_FREQ,
.transceive =  RIG_TRN_RIG,
.bank_qty =   0,
.chan_desc_sz =  0,


.chan_list =  {
			{  0, 89, RIG_MTYPE_MEM  },	/* TBC */
			{ 90, 99, RIG_MTYPE_EDGE },
			RIG_CHAN_END,
		},

.rx_range_list1 =  {
	{kHz(100),MHz(30),TS870S_ALL_MODES,-1,-1,TS870S_VFO,TS870S_ANTS},
	RIG_FRNG_END,
Пример #22
0
    .retry =              3,
    .has_get_func =       FT1200_FUNCS,
    .has_set_func =       FT1200_FUNCS,
    .has_get_level =      FT1200_LEVELS,
    .has_set_level =      RIG_LEVEL_SET(FT1200_LEVELS),
    .has_get_parm =       RIG_PARM_NONE,
    .has_set_parm =       RIG_PARM_NONE,
    .level_gran = {
	[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
	[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
    },
    .ctcss_list =         common_ctcss_list,
    .dcs_list =           NULL,
    .preamp =             { 10, 20, RIG_DBLST_END, }, /* TBC */
    .attenuator =         { 6, 12, 18, RIG_DBLST_END, },
    .max_rit =            Hz(9999),
    .max_xit =            Hz(9999),
    .max_ifshift =        Hz(1000),
    .vfo_ops =            FT1200_VFO_OPS,
    .targetable_vfo =     RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE,
    .transceive =         RIG_TRN_OFF,        /* May enable later as the 1200 has an Auto Info command */
    .bank_qty =           0,
    .chan_desc_sz =       0,
    .str_cal =            FT1200_STR_CAL,
    .chan_list =          {
               {   1,  99, RIG_MTYPE_MEM,  NEWCAT_MEM_CAP },
               { 100, 117, RIG_MTYPE_EDGE, NEWCAT_MEM_CAP },    /* two by two */
               RIG_CHAN_END,
                          },

    .rx_range_list1 =     {
Пример #23
0
// .scan_ops =    DUMMY_SCAN,
// .vfo_ops =     DUMMY_VFO_OP,
    .transceive =       RIG_TRN_RIG,
    .rx_range_list1 = {{
            .start = kHz(1600), .end = MHz(30), .modes = BARRETT_MODES,
            .low_power = -1, .high_power = -1, BARRETT_VFOS, RIG_ANT_1
        },
        RIG_FRNG_END,
    },
    .rx_range_list2 = {RIG_FRNG_END,},
    .tx_range_list1 = {RIG_FRNG_END,},
    .tx_range_list2 = {RIG_FRNG_END,},
    .tuning_steps =  { {BARRETT_MODES, 1}, {BARRETT_MODES, RIG_TS_ANY}, RIG_TS_END, },
    .filters = {
        {RIG_MODE_SSB | RIG_MODE_CW | RIG_MODE_RTTY, kHz(2.4)},
        {RIG_MODE_CW, Hz(500)},
        {RIG_MODE_AM, kHz(8)},
        {RIG_MODE_AM, kHz(2.4)},
        RIG_FLT_END,
    },
    .priv = NULL,

//  .extlevels =    dummy_ext_levels,
//  .extparms =     dummy_ext_parms,
//  .cfgparams =    dummy_cfg_params,

    .rig_init =     barrett_init,
    .rig_cleanup =  barrett_cleanup,

//  .set_conf =     dummy_set_conf,
//  .get_conf =     dummy_get_conf,
Пример #24
0
	.retry			= 10,

	.has_get_func		= TS450S_FUNC_ALL,
	.has_set_func		= TS450S_FUNC_ALL,
	.has_get_level		= TS450S_LEVEL_ALL | RIG_LEVEL_RFPOWER,
	.has_set_level		= RIG_LEVEL_SET(TS450S_LEVEL_ALL),
	.has_get_parm 		= 0,
	.has_set_parm		= 0,
	.level_gran		= {},     /* FIXME: granularity */
	.parm_gran		= {},
	.extparms		= ts450_ext_parms,
	.ctcss_list		= NULL, /* hw dip-switch */
	.dcs_list		= NULL,
	.preamp			= { RIG_DBLST_END, },
	.attenuator		= { RIG_DBLST_END, }, /* can't be controlled */
	.max_rit		= Hz(9999),
	.max_xit		= Hz(9999),
	.max_ifshift		= Hz(0),
	.targetable_vfo		= RIG_TARGETABLE_FREQ,
	.transceive		= RIG_TRN_RIG,
	.bank_qty		= 0,
	.chan_desc_sz		= 0,
	.vfo_ops		= TS450S_VFO_OPS,
	.scan_ops		= TS450S_SCAN_OPS,

	.chan_list = {
			{ 0, 89, RIG_MTYPE_MEM, TS450S_CHANNEL_CAPS },	/* TBC */
			{ 90, 99, RIG_MTYPE_EDGE, TS450S_CHANNEL_CAPS },
			RIG_CHAN_END,
	},
Пример #25
0
.timeout =  2000,
.retry =  3,

.has_get_func =  BCD996T_FUNC,
.has_set_func =  BCD996T_FUNC,
.has_get_level =  BCD996T_LEVEL_ALL,
.has_set_level =  RIG_LEVEL_SET(BCD996T_LEVEL_ALL),
.has_get_parm =  BCD996T_PARM_ALL,
.has_set_parm =  RIG_PARM_SET(BCD996T_PARM_ALL),
.level_gran =  {},                 /* FIXME: granularity */
.parm_gran =  {},
.ctcss_list =  NULL,	/* FIXME: CTCSS list? */
.dcs_list =  NULL,
.preamp =   { RIG_DBLST_END },
.attenuator =   { RIG_DBLST_END },
.max_rit =  Hz(0),
.max_xit =  Hz(0),
.max_ifshift =  Hz(0),
.targetable_vfo =  0,
.transceive =  RIG_TRN_OFF,
.bank_qty =   0,
.chan_desc_sz =  0,

.chan_list =  {
		{ 0, 5999, RIG_MTYPE_MEM, {BCD996T_CHANNEL_CAPS} }, /* Really 6000 channels? */
		RIG_CHAN_END,
	},

.rx_range_list1 =  { RIG_FRNG_END, },    /* FIXME: enter region 1 setting */
.tx_range_list1 =  { RIG_FRNG_END, },
.rx_range_list2 =  {
Пример #26
0
.has_set_func =  IC9100_FUNC_ALL | RIG_FUNC_RESUME,
.has_get_level =  IC9100_LEVEL_ALL | RIG_LEVEL_RAWSTR| RIG_LEVEL_SWR,
.has_set_level =  IC9100_LEVEL_ALL,
.has_get_parm =  IC9100_PARM_ALL,
.has_set_parm =  IC9100_PARM_ALL,
.level_gran = {
	[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},
.parm_gran =  {},
.ctcss_list =  common_ctcss_list,
.dcs_list =  common_dcs_list,
.preamp =   {20, RIG_DBLST_END, },
.attenuator =   {20, RIG_DBLST_END, },
.max_rit =  kHz(9.999),
.max_xit =  kHz(9.999),
.max_ifshift =  Hz(0),
.targetable_vfo =  0,
.vfo_ops =  IC9100_VFO_OPS,
.scan_ops =  IC9100_SCAN_OPS,
.transceive =  RIG_TRN_RIG,
.bank_qty =   0,
.chan_desc_sz =  9, /* TODO */

.chan_list =  { /* TBC */
    {   1, 396, RIG_MTYPE_MEM  },
    { 397, 400, RIG_MTYPE_CALL },
    { 401, 424, RIG_MTYPE_EDGE },
    RIG_CHAN_END, },

.rx_range_list1 =   { /* Europe */
    {kHz(30),MHz(60),IC9100_MODES,-1,-1,IC9100_VFO_ALL,IC9100_HF_ANTS},
Пример #27
0
	.has_get_parm =		RIG_PARM_NONE,
	.has_set_parm =		RIG_PARM_NONE,
	.level_gran =		{},
	.parm_gran =		{},
	.ctcss_list =		/* 38 according to doc, are they all correct? */
	                        (tone_t[])
				{  670,  719,  744,  770,  797,  825,  854,
	                           885,  915,  948,  974, 1000, 1035, 1072,
				  1109, 1148, 1188, 1230, 1273, 1318, 1365,
				  1413, 1462, 1514, 1567, 1622, 1679, 1738,
				  1799, 1862, 1928, 2035, 2107, 2181, 2257,
				  2336, 2418, 2503, 0 },
	.dcs_list =		common_dcs_list,
	.preamp =		{ RIG_DBLST_END, },
	.attenuator =		{ RIG_DBLST_END, },
	.max_rit =		Hz(0),
	.max_xit =		Hz(0),
	.max_ifshift =		Hz(0),
	.targetable_vfo =	0,
	.transceive =		RIG_TRN_OFF,
	.bank_qty =		0,
	.chan_desc_sz =		0,

	.chan_list =		{ RIG_CHAN_END, },

	.rx_range_list1 = {
		{MHz(400), MHz(480), RIG_MODE_FM, -1, -1, RIG_VFO_RX },
		RIG_FRNG_END,
	},
	.rx_range_list2 = {
		{MHz(400), MHz(480), RIG_MODE_FM, -1, -1, RIG_VFO_RX },
Пример #28
0
.timeout =  1000,
.retry =  0,

.has_get_func =  RIG_FUNC_NONE,
.has_set_func =  FT847_FUNC_ALL,
.has_get_level =  FT847_LEVEL_ALL,
.has_set_level =  RIG_LEVEL_NONE,
.has_get_parm =  RIG_PARM_NONE,
.has_set_parm =  RIG_PARM_NONE,
.level_gran =  {}, 		/* granularity */
.parm_gran =  {},
.ctcss_list =  ft847_ctcss_list,
.dcs_list =  common_dcs_list,
.preamp =   { RIG_DBLST_END, },	/* no preamp/att in CAT */
.attenuator =   { RIG_DBLST_END, },
.max_rit =  Hz(0),
.max_xit =  Hz(0),
.max_ifshift =  Hz(0),
.targetable_vfo =  RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE|RIG_TARGETABLE_TONE|RIG_TARGETABLE_FUNC,
.transceive =  RIG_TRN_OFF,
.bank_qty =   0,
.chan_desc_sz =  0,
.str_cal = FT847_STR_CAL,

.chan_list =  { RIG_CHAN_END, }, /* FIXME: memory chan list: 78, but only in clonable mode? */

.rx_range_list1 =  {
    {kHz(100),MHz(30),FT847_ALL_RX_MODES,-1,-1}, /* rx range begin */
    {MHz(36),MHz(76),FT847_ALL_RX_MODES,-1,-1},
    {MHz(108),MHz(174),FT847_ALL_RX_MODES,-1,-1},
    {MHz(420),MHz(512),FT847_ALL_RX_MODES,-1,-1},
Пример #29
0
.retry =  3,
.has_get_func =  IC7600_FUNCS,
.has_set_func =  IC7600_FUNCS,
.has_get_level =  IC7600_LEVELS,
.has_set_level =  RIG_LEVEL_SET(IC7600_LEVELS),
.has_get_parm =  IC7600_PARMS,
.has_set_parm =  RIG_PARM_SET(IC7600_PARMS),	/* FIXME: parms */
.level_gran = {
	[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},
.parm_gran =  {},
.ctcss_list =  common_ctcss_list,
.dcs_list =  NULL,
.preamp =   { 10, 20, RIG_DBLST_END, },	/* FIXME: TBC */
.attenuator =   { 6, 12, 18, RIG_DBLST_END, },
.max_rit =  Hz(9999),
.max_xit =  Hz(9999),
.max_ifshift =  Hz(0),
.targetable_vfo =  0,
.vfo_ops =  IC7600_VFO_OPS,
.scan_ops =  IC7600_SCAN_OPS,
.transceive =  RIG_TRN_RIG,
.bank_qty =   0,
.chan_desc_sz =  0,

.chan_list =  {
	   {   1,  99, RIG_MTYPE_MEM  },
	   { 100, 101, RIG_MTYPE_EDGE },    /* two by two */
	   RIG_CHAN_END,
	},
Пример #30
0
  .post_write_delay = 	FT100_POST_WRITE_DELAY,
  .timeout = 		100,
  .retry = 		0,
  .has_get_func = 	RIG_FUNC_NONE,
  .has_set_func = 	FT100_FUNC_ALL,
  .has_get_level = 	FT100_GET_RIG_LEVELS,
  .has_set_level = 	RIG_LEVEL_NONE,
  .has_get_parm = 	RIG_PARM_NONE,
  .has_set_parm = 	RIG_PARM_NONE,	/* FIXME: parms */
  .level_gran =		{},		/* granularity */
  .parm_gran = 		{},
  .ctcss_list = 	ft100_ctcss_list,
  .dcs_list = 		ft100_dcs_list,
  .preamp = 		{ RIG_DBLST_END, },
  .attenuator = 	{ RIG_DBLST_END, },
  .max_rit = 		Hz(0),
  .max_xit = 		Hz(0),
  .max_ifshift = 	Hz(0),
  .targetable_vfo = 	RIG_TARGETABLE_NONE,
  .transceive = 	RIG_TRN_OFF,
  .bank_qty = 		0,
  .chan_desc_sz = 	0,

  .chan_list =  { RIG_CHAN_END, },	/* FIXME: memory chan .list =  78 */

  .rx_range_list1 =  {
    {kHz(100),MHz(56), FT100_ALL_RX_MODES,-1,-1,FT100_VFO_ALL},
    {MHz(76), MHz(108),RIG_MODE_WFM,      -1,-1,FT100_VFO_ALL},
    {MHz(108),MHz(154),FT100_ALL_RX_MODES,-1,-1,FT100_VFO_ALL},
    {MHz(420),MHz(470),FT100_ALL_RX_MODES,-1,-1,FT100_VFO_ALL},
    RIG_FRNG_END,