Esempio n. 1
0
// add a new parameter
void net_add_param(u32 idx, const ParamDesc * pdesc) {
  s32 val;
  // copy descriptor, hm
  memcpy( &(net->params[net->numParams].desc), (const void*)pdesc, sizeof(ParamDesc) );

  ///////////////
  // initialize scaler
  scaler_init(&(net->params[net->numParams].scaler), 
	      &(net->params[net->numParams].desc));
  ////////////
  print_dbg("\r\n finished initializing param scaler.");

  //// TEST: don't
  //  net->params[net->numParams].idx = idx; 
  /////

  net->params[net->numParams].play = 1;

  //  net->params[net->numParams].preset = 0; 
  net->numParams += 1;

  // query initial value
  val = bfin_get_param(idx);

  net->params[net->numParams - 1].data.value = 
    scaler_get_in( &(net->params[net->numParams - 1].scaler), val);

  net->params[net->numParams - 1].data.changed = 0; 
}
Esempio n. 2
0
// query the blackfin for parameter list and populate pnodes
u8 net_report_params(void) {
  volatile char buf[64];
  volatile ParamDesc pdesc;
  volatile u32 numParams;
  s32 val;
  u8 i;
 
  bfin_get_num_params(&numParams);
  
  print_dbg("\r\nnumparams: ");
  print_dbg_ulong(numParams);

  if(numParams == 255) {
    print_dbg("\r\n report_params fail (255)");
    return 0;
  }
  
  if(numParams > 0) {

    net_clear_params();

    for(i=0; i<numParams; i++) {

      
      ///////
      ///////
      // TODO: offline param descriptor
      bfin_get_param_desc(i, &pdesc);
      ///////
      /////


      print_dbg("\r\n received descriptor for param, index : ");
      print_dbg_ulong(i);
      print_dbg(" , label : ");
      print_dbg((const char* )pdesc.label);

      print_dbg(" ; \t initial value: 0x");
      val = bfin_get_param(i);
      print_dbg_hex(val);

      net_add_param(i, (const ParamDesc*)&pdesc);
      print_dbg("\r\n finished adding parameter.");

      //      net->params[net->numParams - 1].data.value = val; 
      //// use reverse-lookup method from scaler      
      net->params[net->numParams - 1].data.value = 
	scaler_get_in( &(net->params[net->numParams - 1].scaler), val);

      net->params[net->numParams - 1].data.changed = 0; 

    }
  } else {
    print_dbg("\r\n bfin: no parameters reported");
    return 0;
  }
  
  delay_ms(100);

  print_dbg("\r\n checking module label ");
  bfin_get_module_name(buf);

  delay_ms(10);

  print_dbg("\r\n bfin module name: ");
  print_dbg((const char*)buf);


  //  if(numParams > 0 && numParams != 255) {
    /// test bfin_get_param on initial values
    //    print_dbg("\r\n reporting inital param values: ");
    //    for(i=0; i<numParams; ++i) {
    //  print_dbg("\r\n 0x");
  //      val = bfin_get_param(i);
  //      print_dbg_hex(val);
      //    }
      //  }
  return (u8)numParams;

}