int cthd_topology::check_temperature(int index)
{
	ssize_t retval;
	char pathname[64];
	char temp_str[10];
	int fd;
	unsigned int temperature;
	int current_moving_average;

	if(index >= no_sensors)
		return 0;
	sprintf(pathname, "/sys/devices/platform/coretemp.0/temp%d_input", index);
	fd = open(pathname, O_RDONLY);
	if(fd < 0)
		return  - 1;
	retval = pread(fd, temp_str, sizeof(temp_str), 0);
	temperature = atoi(temp_str);

	current_moving_average = moving_average(temp_data, index, temperature);
	temp_data[index].last_moving_average = current_moving_average;

	thd_log_debug("DTS sensor %d mov average %u \n", index, current_moving_average)
	;
	close(fd);

	return temperature;
}
Exemple #2
0
  LookupTable* SetCounter::to_ruby(VM* state) {
    LookupTable* tbl = LookupTable::create(state);

    tbl->store(state, stats::total(state), Integer::from(state, total_));
    tbl->store(state, stats::max(state), Integer::from(state, max()));
    tbl->store(state, stats::min(state), Integer::from(state, min()));
    tbl->store(state, stats::average(state), Float::create(state, moving_average()));

    return tbl;
  }
Exemple #3
0
	//////////////////////////////////////////////////////////////////////////
	//cross entropy
	float CrossEntropyFunctor::getLoss(const std::shared_ptr<DataBucket> labelDataBucket,
		const std::shared_ptr<DataBucket> outputDataBucket)
	{
		const auto outputSize = outputDataBucket->getSize();
		const float* labelData = labelDataBucket->getData().get();
		const float* outputData = outputDataBucket->getData().get();
		float loss = 0.0f;
		for (size_t i = 0; i < outputSize.totalSize(); i++)
		{
			const float curLoss = -labelData[i] * std::log(outputData[i]);
			loss = moving_average(loss, i+1, curLoss);
		}		
		return loss*outputSize._3DSize();
	}
void localization_node::distCallback(const distance_publisher::IrDistance &dist)
{

    median_lf[0] = median_lf[1]; median_lf[1] = median_lf[2]; median_lf[2] = median_lf[3]; //Shift

    median_lf[3] = dist.left_front_distance;

    median_lb[0] = median_lb[1]; median_lb[1] = median_lb[2]; median_lb[2] = median_lb[3]; //Shift

    median_lb[3] = dist.left_back_distance;

    median_rf[0] = median_rf[1]; median_rf[1] = median_rf[2]; median_rf[2] = median_rf[3]; //Shift

    median_rf[3] = dist.right_front_distance;

    median_rb[0] = median_rb[1]; median_rb[1] = median_rb[2]; median_rb[2] = median_rb[3]; //Shift

    median_rb[3] = dist.right_back_distance;

    median_fr[0] = median_fr[1]; median_fr[1]=median_fr[2]; median_fr[2] = median_fr[3];

    median_fr[3] = dist.front_right_distance;

    median_fl[0] = median_fl[1]; median_fl[1]=median_fl[2]; median_fl[2] = median_fl[3];

    median_fl[3] = dist.front_left_distance;


    calculated_distance_fl_=moving_average(median_fl);
    calculated_distance_fr_=moving_average(median_fr);
    calculated_distance_lf_ = moving_average(median_lf);
    calculated_distance_lb_ = moving_average(median_lb);
    calculated_distance_rf_ = moving_average(median_rf);
    calculated_distance_rb_ = moving_average(median_rb);







    /*
    calculated_distance_fl_= dist.front_left_distance;

    calculated_distance_fr_ = dist.front_right_distance;

    calculated_distance_lf_= dist.left_front_distance;

    calculated_distance_lb_ = dist.left_back_distance;

    calculated_distance_rf_= dist.right_front_distance;

    calculated_distance_rb_ = dist.right_back_distance;

*/

}
Exemple #5
0
/*---------------------------------------------------------------------------*/
void
rpl_process_dio(uip_ipaddr_t *from, rpl_dio_t *dio)
{
  rpl_instance_t *instance;
  rpl_dag_t *dag, *previous_dag;
  rpl_parent_t *p;

  if(dio->mop != RPL_MOP_DEFAULT) {
//    PRINTF("RPL: Ignoring a DIO with an unsupported MOP: %d\n", dio->mop);
    return;
  }

  dag = get_dag(dio->instance_id, &dio->dag_id);
  instance = rpl_get_instance(dio->instance_id);

  if(dag != NULL && instance != NULL) {
    if(lollipop_greater_than(dio->version, dag->version)) {
      if(dag->rank == ROOT_RANK(instance)) {
//	PRINTF("RPL: Root received inconsistent DIO version number\n");
	dag->version = dio->version;
	RPL_LOLLIPOP_INCREMENT(dag->version);
	rpl_reset_dio_timer(instance);
      } else {
//        PRINTF("RPL: Global Repair\n");
        if(dio->prefix_info.length != 0) {
          if(dio->prefix_info.flags & UIP_ND6_RA_FLAG_AUTONOMOUS) {
//            PRINTF("RPL : Prefix announced in DIO\n");
            rpl_set_prefix(dag, &dio->prefix_info.prefix, dio->prefix_info.length);
          }
        }
	global_repair(from, dag, dio);
      }
      return;
    }

    if(lollipop_greater_than(dag->version, dio->version)) {
      /* The DIO sender is on an older version of the DAG. */
//      PRINTF("RPL: old version received => inconsistency detected\n");
      if(dag->joined) {
        rpl_reset_dio_timer(instance);
        return;
      }
    }
  }

  if(instance == NULL) {
//    PRINTF("RPL: New instance detected: Joining...\n");
    rpl_join_instance(from, dio);
    return;
  }

  if(dag == NULL) {
//    PRINTF("RPL: Adding new DAG to known instance.\n");
    rpl_add_dag(from, dio);
    return;
  }


  if(dio->rank < ROOT_RANK(instance)) {
//    PRINTF("RPL: Ignoring DIO with too low rank: %u\n", (unsigned)dio->rank);
    return;
  } else if(dio->rank == INFINITE_RANK && dag->joined) {
    rpl_reset_dio_timer(instance);
  }
  
  /* Prefix Information Option treated to add new prefix */
  if(dio->prefix_info.length != 0) {
    if(dio->prefix_info.flags & UIP_ND6_RA_FLAG_AUTONOMOUS) {
//      PRINTF("RPL : Prefix announced in DIO\n");
      rpl_set_prefix(dag, &dio->prefix_info.prefix, dio->prefix_info.length);
    }
  }

  if(dag->rank == ROOT_RANK(instance)) {
    if(dio->rank != INFINITE_RANK) {
      instance->dio_counter++;
    }
    return;
  }

  /*
   * At this point, we know that this DIO pertains to a DAG that
   * we are already part of. We consider the sender of the DIO to be
   * a candidate parent, and let rpl_process_parent_event decide
   * whether to keep it in the set.
   */

  p = rpl_find_parent(dag, from);

if (p!=NULL)
	{
		p->rssi= moving_average(p->rssi, cc2420_last_rssi-45);
    		p->update_time = clock_seconds();
		if (p->rank < dag->rank && p->flag==NBR)
    			p->flag=PRNT;
		if (p->rank >= dag->rank && p->flag==PRNT)
			p->flag=NBR;
		//PRINTF("process_dio-update prnt: p->update_time=%lu,p->rssi=%d \n",p->update_time, p->rssi);
		//PRINTF("ID=%02x%02x \n",((uint8_t *)from)[14], ((uint8_t *)from)[15]);
	}

  if(p == NULL) {
    previous_dag = find_parent_dag(instance, from);
    if(previous_dag == NULL) {
      /* Add the DIO sender as a candidate parent. */
      p = rpl_add_parent(dag, dio, from);
      if(p == NULL) {
//        PRINTF("RPL: Failed to add a new parent (");
//        PRINT6ADDR(from);
//        PRINTF(")\n");
        return;
      }
//      PRINTF("RPL: New candidate parent with rank %u: ", (unsigned)p->rank);
//      PRINT6ADDR(from);
//      PRINTF("\n");
    } else {
      p = rpl_find_parent(previous_dag, from);
      if(p != NULL) {
        rpl_move_parent(previous_dag, dag, p);
      }
    }
  } else {
    if(p->rank == dio->rank) {
//      PRINTF("RPL: Received consistent DIO\n");
      if(dag->joined) {
        instance->dio_counter++;
      }
    } else {
      p->rank=dio->rank;
    }
  }

//  PRINTF("RPL: preferred DAG ");
//  PRINT6ADDR(&instance->current_dag->dag_id);
//  PRINTF(", rank %u, min_rank %u, ",instance->current_dag->rank, instance->current_dag->min_rank);
//  PRINTF("parent rank %u, parent etx %u, link metric %u, instance etx %u\n",p->rank, -1/*p->mc.obj.etx*/, p->link_metric, instance->mc.obj.etx);

  /* We have allocated a candidate parent; process the DIO further. */

#if RPL_DAG_MC != RPL_DAG_MC_NONE
  memcpy(&p->mc, &dio->mc, sizeof(p->mc));
#endif /* RPL_DAG_MC != RPL_DAG_MC_NONE */
  if(rpl_process_parent_event(instance, p) == 0) {
//    PRINTF("RPL: The candidate parent is rejected\n");
    return;
  }

  /* We don't use route control, so we can have only one official parent. */
  if(dag->joined && p == dag->preferred_parent) {
    if(should_send_dao(instance, dio, p)) {
      RPL_LOLLIPOP_INCREMENT(instance->dtsn_out);
      rpl_schedule_dao(instance);
    }
    /* We received a new DIO from our preferred parent.
     * Call uip_ds6_defrt_add to set a fresh value for the lifetime counter */
    uip_ds6_defrt_add(from, RPL_LIFETIME(instance, instance->default_lifetime));
  }
  p->dtsn = dio->dtsn;
}