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(); }
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; }
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; }
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; }
void Server::clientBlockNewSensor(Sensor* sensor_obj) { emit new_sensor(sensor_obj); }