Пример #1
0
int GetPhyRegData(uint8_t type, uint8_t dev_id, void *buffer, int buf_len)
{
	int mark = 0, ret = 0;
	sensor_handle_t *phy_sensor = GetPollSensStruct(type, dev_id);

	if (phy_sensor == NULL)
		return -1;

	if ((phy_sensor->stat_flag & ON) == 0) {
		int length = sizeof(struct sensor_data) +
			     phy_sensor->sensor_data_frame_size;
		struct sensor_data *temp_ptr = NULL;
		temp_ptr = (struct sensor_data *)balloc(length, NULL);
		temp_ptr->data_length = phy_sensor->sensor_data_frame_size;
		phy_sensor->buffer = (void *)temp_ptr->data;
		phy_sensor_enable(phy_sensor->ptr, 1);
		mark++;
	}

	void *temp_ptr = phy_sensor->buffer - offsetof(struct sensor_data, data);
	if (0 ==
	    phy_sensor_data_read(phy_sensor->ptr,
				 (struct sensor_data *)temp_ptr)) {
		ret = -1;
		goto out;
	}

	memcpy(buffer, phy_sensor->buffer, buf_len);
out:
	if (mark != 0)
		phy_sensor_enable(phy_sensor->ptr, 0);
	return ret;
}
Пример #2
0
static int motion_det_init(struct phy_driver *phy_drv){
    int ret;
    uint8_t  device_id;
    phy_sensor_type_t sensor_type;
    sensor_t my_sensor;

    ret = get_sensor_list((1 << SENSOR_MOTION_DETECTOR), sensor_list,1);
    if(ret <= 0){
        psh_err2(PSH_ITSELF,"NO really sensor_list was got\n");
        return 0;
    }

    device_id = sensor_list[0].dev_id;
    sensor_type = sensor_list[0].sensor_type;


    my_sensor = phy_sensor_open(sensor_type, device_id);
    real_sensor = my_sensor;
    if(my_sensor == NULL){
        psh_err2(PSH_ITSELF,"NO really sensor was found,open failed\n");
        return 0;
    }
    phy_sensor_enable(real_sensor, 1);
    phy_sensor_data_register_callback(real_sensor, motion_detect_test_callback, NULL, 0);

    return 0;
}
Пример #3
0
static void ClosePhySensor(sensor_handle_t* phy_sensor)
{
	//	if(phy_sensor->fifo_length > 0 && phy_sensor->fifo_use_flag != 0){
		if(phy_sensor->buffer_length / phy_sensor->sensor_data_frame_size > 1){
			phy_sensor_enable_hwfifo(phy_sensor->ptr, 0, 0);
			if(phy_sensor->buffer != NULL)
				bfree(phy_sensor->buffer);
		}else{
			phy_sensor_enable(phy_sensor->ptr, 0);
			if(phy_sensor->buffer != NULL){
				void* temp_ptr = phy_sensor->buffer - offsetof(struct sensor_data, data);
				bfree(temp_ptr);
			}
		}