Example #1
0
void new_bma222_sensor(sensor_t *sensor, uint8_t address){
	new_sensor(sensor, SENSOR_TYPE, address);
	sensor->data_len = strlen(bma222_read_data) + 10;
	sensor->data = calloc(sensor->data_len, sizeof(char));
  sensor->write_sensor_data_fp = &bma222_write_sensor_data;
  sensor->read_sensor_data_fp = &bma222_read_sensor_data;
	bma222_read_sensor_config(sensor);
	BMA222Open();
}
Example #2
0
static int sensor_add_exec(bContext *C, wmOperator *op)
{
    Object *ob;
    bSensor *sens;
    PointerRNA sens_ptr;
    PropertyRNA *prop;
    const char *sens_name;
    char name[MAX_NAME];
    int type = RNA_enum_get(op->ptr, "type");

    ob = edit_object_property_get(C, op);
    if (!ob)
        return OPERATOR_CANCELLED;

    sens = new_sensor(type);
    BLI_addtail(&(ob->sensors), sens);

    /* set the sensor name based on rna type enum */
    RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &sens_ptr);
    prop = RNA_struct_find_property(&sens_ptr, "type");

    RNA_string_get(op->ptr, "name", name);
    if (*name) {
        BLI_strncpy(sens->name, name, sizeof(sens->name));
    }
    else {
        RNA_property_enum_name(C, &sens_ptr, prop, RNA_property_enum_get(&sens_ptr, prop), &sens_name);
        BLI_strncpy(sens->name, sens_name, sizeof(sens->name));
    }

    make_unique_prop_names(C, sens->name);
    ob->scaflag |= OB_SHOWSENS;

    WM_event_add_notifier(C, NC_LOGIC, NULL);

    return OPERATOR_FINISHED;
}
sensor_ref create_temperature_sensor(uint8_t loc, time_ref period, uint16_t size) {
	sensor_ref * temperature_sensor;
	uint8_t (*delete_func)();
	uint8_t (*enable_func)();
	uint8_t (*disable_func)();
	uint8_t channel;

	if(loc == 'I') {
		temperature_sensor = &internal_temperature_sensor;
		delete_func = &delete_internal_temperature_sensor;
		enable_func = &enable_internal_temperature_sensor;
		disable_func = &disable_internal_temperature_sensor;
		channel = TEMPERATURE_ADC;
	} else if (loc == 'A') {
		temperature_sensor = &external_temperature_sensor_A;
		delete_func = &delete_external_temperature_sensor_A;
		enable_func = &enable_external_temperature_sensor_A;
		disable_func = &disable_external_temperature_sensor_A;
		channel = PORT_A_ADC;
	} else if (loc == 'B') {
		temperature_sensor = &external_temperature_sensor_B;
		delete_func = &delete_external_temperature_sensor_B;
		enable_func = &enable_external_temperature_sensor_B;
		disable_func = &disable_external_temperature_sensor_B;
		channel = PORT_B_ADC;
	} else {
		return FAILURE;
	}

	if(*temperature_sensor) {
		// We already have one there
		if((time_cmp(period, sensor_get_period(*temperature_sensor)) == 0) && size == sensor_get_size(*temperature_sensor)) {
			// If they are the same...do nothing
			return *temperature_sensor;
		} else {
			// They are different, so delete the old one
			delete_func();
		}
	}


	action_ref transmit_action = 0;
	action_ref lookup_temp_action = 0;

	node_ref temperature_node = 0;

	for(;;) {

		*temperature_sensor = new_sensor('T', channel, period, size);
		if(!*temperature_sensor) break;

		// Create the lookup_temp_action
		lookup_temp_action = new_action();
		if(!lookup_temp_action) break;
		action_set_func(lookup_temp_action, &fix_temperature);

		temperature_node = new_node(*temperature_sensor, 0);
		if(!temperature_node) break;
		action_set_args(lookup_temp_action, temperature_node);

		sensor_add_action_on_data_full(*temperature_sensor, lookup_temp_action);




		// Create the transmit action
		transmit_action = new_transmit_action(*temperature_sensor);
		if(!transmit_action) break;
		sensor_add_action_on_data_full(*temperature_sensor, transmit_action);

		sensor_set_delete_func(*temperature_sensor, delete_func);
		sensor_set_enable_func(*temperature_sensor, enable_func);
		sensor_set_disable_func(*temperature_sensor, disable_func);

		return *temperature_sensor;
	}

	delete_func();
	node_delete(&temperature_node);
	action_delete(&lookup_temp_action);
	action_delete(&transmit_action);

	return FAILURE;


}
Example #4
0
sensor_ref create_light_sensor(uint8_t loc, time_ref period, uint16_t size) {
	sensor_ref * light_sensor;
	uint8_t (*delete_func)();
	uint8_t (*enable_func)();
	uint8_t (*disable_func)();
	uint8_t channel;

	// Based on the location, change the functions
	if (loc == 'A') {
		light_sensor = &light_sensor_A;
		delete_func = &delete_light_sensor_A;
		enable_func = &enable_light_sensor_A;
		disable_func = &disable_light_sensor_A;
		channel = PORT_A_ADC;
	} else if (loc == 'B') {
		light_sensor = &light_sensor_B;
		delete_func = &delete_light_sensor_B;
		enable_func = &enable_light_sensor_B;
		disable_func = &disable_light_sensor_B;
		channel = PORT_B_ADC;
	} else {
		return FAILURE;
	}

	// Check to see if we already have a light sensor there
	if(*light_sensor) {
		// We already have one there
		if((time_cmp(period, sensor_get_period(*light_sensor)) == 0) && size == sensor_get_size(*light_sensor)) {
			// If they are the same...do nothing
			return *light_sensor;
		} else {
			// They are different, so delete the old one
			delete_func();
		}
	}


	action_ref transmit_action = 0;

	// Create the sensor, the transmit action, and set the functions
	for(;;) {

		*light_sensor = new_sensor('L', channel, period, size);
		if(!*light_sensor) break;

		// Create the transmit action
		transmit_action = new_transmit_action(*light_sensor);
		if(!transmit_action) break;
		sensor_add_action_on_data_full(*light_sensor, transmit_action);

		sensor_set_delete_func(*light_sensor, delete_func);
		sensor_set_enable_func(*light_sensor, enable_func);
		sensor_set_disable_func(*light_sensor, disable_func);

		return *light_sensor;
	}

	delete_func();
	action_delete(&transmit_action);

	return FAILURE;

}
Example #5
0
SaErrorT sim_discover_sensors(RPTable *rpt)
{
         SaHpiRptEntryT res;

        /* add to first resource */
        memcpy(&res, &dummy_rpt_array[1], sizeof(SaHpiRptEntryT));
        SaHpiResourceIdT rid = oh_uid_from_entity_path(&res.ResourceEntity);
        new_sensor(rpt, rid, 1); /* add #1 ... */
        new_sensor(rpt, rid, 5); /* add #5 ... */

        /* add to second resource */
        memcpy(&res, &dummy_rpt_array[2], sizeof(SaHpiRptEntryT));
        SaHpiResourceIdT rid2 = oh_uid_from_entity_path(&res.ResourceEntity);
        new_sensor(rpt, rid2, 1);
        new_sensor(rpt, rid2, 2);
        new_sensor(rpt, rid2, 4);

        /* add to third resource */
        memcpy(&res, &dummy_rpt_array[3], sizeof(SaHpiRptEntryT));
        SaHpiResourceIdT rid3 = oh_uid_from_entity_path(&res.ResourceEntity);
        new_sensor(rpt, rid3, 2); 
        new_sensor(rpt, rid3, 7);

        /* add to fourth resource */
        memcpy(&res, &dummy_rpt_array[4], sizeof(SaHpiRptEntryT));
        SaHpiResourceIdT rid4 = oh_uid_from_entity_path(&res.ResourceEntity);
        new_sensor(rpt, rid4, 3); 
        new_sensor(rpt, rid4, 5);

        /* add to fifth resource */
        memcpy(&res, &dummy_rpt_array[5], sizeof(SaHpiRptEntryT));
        SaHpiResourceIdT rid5 = oh_uid_from_entity_path(&res.ResourceEntity);
        new_sensor(rpt, rid5, 2); 
     
        /* add to sixth resource */
        memcpy(&res, &dummy_rpt_array[6], sizeof(SaHpiRptEntryT));
        SaHpiResourceIdT rid6 = oh_uid_from_entity_path(&res.ResourceEntity);
        new_sensor(rpt, rid6, 1); 
        new_sensor(rpt, rid6, 2);
        new_sensor(rpt, rid6, 6);
        new_sensor(rpt, rid6, 7);

        /* add to seventh resource */
        memcpy(&res, &dummy_rpt_array[7], sizeof(SaHpiRptEntryT));
        SaHpiResourceIdT rid7 = oh_uid_from_entity_path(&res.ResourceEntity);
        new_sensor(rpt, rid7, 4); 
        new_sensor(rpt, rid7, 2);


        return 0; 

}
Example #6
0
void Server::clientBlockNewSensor(Sensor* sensor_obj)
{
    emit new_sensor(sensor_obj);
}