这篇教程C++ GYRO_LOG函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GYRO_LOG函数的典型用法代码示例。如果您正苦于以下问题:C++ GYRO_LOG函数的具体用法?C++ GYRO_LOG怎么用?C++ GYRO_LOG使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GYRO_LOG函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: gyro_probestatic int gyro_probe(struct platform_device *pdev){ int err; GYRO_LOG("+++++++++++++gyro_probe!!/n"); gyro_context_obj = gyro_context_alloc_object(); if (!gyro_context_obj) { err = -ENOMEM; GYRO_ERR("unable to allocate devobj!/n"); goto exit_alloc_data_failed; } //init real gyroeleration driver err = gyro_real_driver_init(); if(err) { GYRO_ERR("gyro real driver init fail/n"); goto real_driver_init_fail; } //init input dev err = gyro_input_init(gyro_context_obj); if(err) { GYRO_ERR("unable to register gyro input device!/n"); goto exit_alloc_input_dev_failed; } atomic_set(&(gyro_context_obj->early_suspend), 0); gyro_context_obj->early_drv.level = EARLY_SUSPEND_LEVEL_STOP_DRAWING - 1, gyro_context_obj->early_drv.suspend = gyro_early_suspend, gyro_context_obj->early_drv.resume = gyro_late_resume, register_early_suspend(&gyro_context_obj->early_drv); GYRO_LOG("----gyro_probe OK !!/n"); return 0; //exit_hwmsen_create_attr_failed: //exit_misc_register_failed: //exit_err_sysfs: if (err) { GYRO_ERR("sysfs node creation error /n"); gyro_input_destroy(gyro_context_obj); } real_driver_init_fail: exit_alloc_input_dev_failed: kfree(gyro_context_obj); exit_alloc_data_failed: GYRO_LOG("----gyro_probe fail !!!/n"); return err;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:60,
示例2: gyro_real_driver_initstatic int gyro_real_driver_init(void){ int i =0; int err=0; GYRO_LOG(" gyro_real_driver_init +/n"); for(i = 0; i < MAX_CHOOSE_GYRO_NUM; i++) { GYRO_LOG(" i=%d/n",i); if(0 != gyroscope_init_list[i]) { GYRO_LOG(" gyro try to init driver %s/n", gyroscope_init_list[i]->name); err = gyroscope_init_list[i]->init(); if(0 == err) { GYRO_LOG(" gyro real driver %s probe ok/n", gyroscope_init_list[i]->name); break; } } } if(i == MAX_CHOOSE_GYRO_NUM) { GYRO_LOG(" gyro_real_driver_init fail/n"); err=-1; } return err;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:27,
示例3: gyro_store_delaystatic ssize_t gyro_store_delay(struct device* dev, struct device_attribute *attr, const char *buf, size_t count){ // struct gyro_context *devobj = (struct gyro_context*)dev_get_drvdata(dev); int delay; int mdelay=0; struct gyro_context *cxt = NULL; //int err =0; mutex_lock(&gyro_context_obj->gyro_op_mutex); cxt = gyro_context_obj; if(NULL == cxt->gyro_ctl.set_delay) { GYRO_LOG("gyro_ctl set_delay NULL/n"); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count; } if (1 != sscanf(buf, "%d", &delay)) { GYRO_ERR("invalid format!!/n"); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count; } if(false == cxt->gyro_ctl.is_report_input_direct) { mdelay = (int)delay/1000/1000; atomic_set(&gyro_context_obj->delay, mdelay); } cxt->gyro_ctl.set_delay(delay); GYRO_LOG(" gyro_delay %d ns/n",delay); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:33,
示例4: gyro_store_enable_nodatastatic ssize_t gyro_store_enable_nodata(struct device* dev, struct device_attribute *attr, const char *buf, size_t count){ GYRO_LOG("gyro_store_enable nodata buf=%s/n",buf); mutex_lock(&gyro_context_obj->gyro_op_mutex); struct gyro_context *cxt = NULL; int err =0; cxt = gyro_context_obj; if(NULL == cxt->gyro_ctl.enable_nodata) { GYRO_LOG("gyro_ctl enable nodata NULL/n"); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count; } if (!strncmp(buf, "1", 1)) { gyro_enable_nodata(1); } else if (!strncmp(buf, "0", 1)) { gyro_enable_nodata(0); } else { GYRO_ERR(" gyro_store enable nodata cmd error !!/n"); } mutex_unlock(&gyro_context_obj->gyro_op_mutex);}
开发者ID:4Fwolf,项目名称:motorola-hawk-kernel-3.4.67,代码行数:28,
示例5: kzallocstatic struct gyro_context *gyro_context_alloc_object(void){ struct gyro_context *obj = kzalloc(sizeof(*obj), GFP_KERNEL); GYRO_LOG("gyro_context_alloc_object++++/n"); if(!obj) { GYRO_ERR("Alloc gyro object error!/n"); return NULL; } atomic_set(&obj->delay, 200); /*5Hz*/// set work queue delay time 200ms atomic_set(&obj->wake, 0); INIT_WORK(&obj->report, gyro_work_func); init_timer(&obj->timer); obj->timer.expires = jiffies + atomic_read(&obj->delay)/(1000/HZ); obj->timer.function = gyro_poll; obj->timer.data = (unsigned long)obj; obj->is_first_data_after_enable = false; obj->is_polling_run = false; obj->is_batch_enable = false; obj->cali_sw[GYRO_AXIS_X]=0; obj->cali_sw[GYRO_AXIS_Y]=0; obj->cali_sw[GYRO_AXIS_Z]=0; mutex_init(&obj->gyro_op_mutex); GYRO_LOG("gyro_context_alloc_object----/n"); return obj;}
开发者ID:Jlsmily,项目名称:android_kernel_meilan2,代码行数:27,
示例6: gyro_store_delaystatic ssize_t gyro_store_delay(struct device *dev, struct device_attribute *attr, const char *buf, size_t count){ int64_t delay; int64_t mdelay = 0; int ret = 0; struct gyro_context *cxt = NULL; mutex_lock(&gyro_context_obj->gyro_op_mutex); cxt = gyro_context_obj; if (NULL == cxt->gyro_ctl.set_delay) { GYRO_LOG("gyro_ctl set_delay NULL/n"); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count; } ret = kstrtoll(buf, 10, &delay); if (ret != 0) { GYRO_ERR("invalid format!!/n"); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count; } if (false == cxt->gyro_ctl.is_report_input_direct) { mdelay = delay; do_div(mdelay, 1000000); atomic_set(&gyro_context_obj->delay, mdelay); } cxt->gyro_ctl.set_delay(delay); GYRO_LOG(" gyro_delay %lld ns/n", delay); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count;}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:33,
示例7: gyro_store_batchstatic ssize_t gyro_store_batch(struct device* dev, struct device_attribute *attr, const char *buf, size_t count){ struct gyro_context *cxt = NULL; //int err =0; GYRO_LOG("gyro_store_batch buf=%s/n",buf); mutex_lock(&gyro_context_obj->gyro_op_mutex); cxt = gyro_context_obj; if(cxt->gyro_ctl.is_support_batch){ if (!strncmp(buf, "1", 1)) { cxt->is_batch_enable = true; } else if (!strncmp(buf, "0", 1)) { cxt->is_batch_enable = false; } else { GYRO_ERR(" gyro_store_batch error !!/n"); } }else{ GYRO_LOG(" gyro_store_batch not support/n"); } mutex_unlock(&gyro_context_obj->gyro_op_mutex); GYRO_LOG(" gyro_store_batch done: %d/n", cxt->is_batch_enable); return count;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:30,
示例8: gyro_store_activestatic ssize_t gyro_store_active(struct device* dev, struct device_attribute *attr, const char *buf, size_t count){ struct gyro_context *cxt = NULL; //int err =0; GYRO_LOG("gyro_store_active buf=%s/n",buf); mutex_lock(&gyro_context_obj->gyro_op_mutex); cxt = gyro_context_obj; if(NULL == cxt->gyro_ctl.open_report_data) { GYRO_LOG("gyro_ctl enable NULL/n"); mutex_unlock(&gyro_context_obj->gyro_op_mutex); return count; } if (!strncmp(buf, "1", 1)) { // cxt->gyro_ctl.enable(1); gyro_enable_data(1); } else if (!strncmp(buf, "0", 1)) { //cxt->gyro_ctl.enable(0); gyro_enable_data(0); } else { GYRO_ERR(" gyro_store_active error !!/n"); } mutex_unlock(&gyro_context_obj->gyro_op_mutex); GYRO_LOG(" gyro_store_active done/n"); return count;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:34,
示例9: gyro_real_enablestatic int gyro_real_enable(int enable){ int err = 0; struct gyro_context *cxt = NULL; cxt = gyro_context_obj; if (1 == enable) { if (true == cxt->is_active_data || true == cxt->is_active_nodata) { err = cxt->gyro_ctl.enable_nodata(1); if (err) { err = cxt->gyro_ctl.enable_nodata(1); if (err) { err = cxt->gyro_ctl.enable_nodata(1); if (err) GYRO_ERR("gyro enable(%d) err 3 timers = %d/n", enable, err); } } GYRO_LOG("gyro real enable/n"); } } if (0 == enable) { if (false == cxt->is_active_data && false == cxt->is_active_nodata) { err = cxt->gyro_ctl.enable_nodata(0); if (err) GYRO_ERR("gyro enable(%d) err = %d/n", enable, err); GYRO_LOG("gyro real disable/n"); } } return err;}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:34,
示例10: kzallocstatic struct gyro_context *gyro_context_alloc_object(void){ struct gyro_context *obj = kzalloc(sizeof(*obj), GFP_KERNEL); GYRO_LOG("gyro_context_alloc_object++++/n"); if (!obj) { GYRO_ERR("Alloc gyro object error!/n"); return NULL; } atomic_set(&obj->delay, 200); /*5Hz, set work queue delay time 200ms */ atomic_set(&obj->wake, 0); INIT_WORK(&obj->report, gyro_work_func); obj->gyro_workqueue = NULL; obj->gyro_workqueue = create_workqueue("gyro_polling"); if (!obj->gyro_workqueue) { kfree(obj); return NULL; } initTimer(&obj->hrTimer, gyro_poll); obj->is_first_data_after_enable = false; obj->is_polling_run = false; obj->is_batch_enable = false; obj->cali_sw[GYRO_AXIS_X] = 0; obj->cali_sw[GYRO_AXIS_Y] = 0; obj->cali_sw[GYRO_AXIS_Z] = 0; mutex_init(&obj->gyro_op_mutex); GYRO_LOG("gyro_context_alloc_object----/n"); return obj;}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:30,
示例11: gyro_set_calistatic int gyro_set_cali(int data[GYRO_AXES_NUM]){ struct gyro_context *cxt = gyro_context_obj; GYRO_LOG(" factory gyro cali %d,%d,%d /n",data[GYRO_AXIS_X],data[GYRO_AXIS_Y],data[GYRO_AXIS_Z] ); GYRO_LOG(" original gyro cali %d,%d,%d /n",cxt->cali_sw[GYRO_AXIS_X],cxt->cali_sw[GYRO_AXIS_Y],cxt->cali_sw[GYRO_AXIS_Z]); cxt->cali_sw[GYRO_AXIS_X] += data[GYRO_AXIS_X]; cxt->cali_sw[GYRO_AXIS_Y] += data[GYRO_AXIS_Y]; cxt->cali_sw[GYRO_AXIS_Z] += data[GYRO_AXIS_Z]; GYRO_LOG(" GYRO new cali %d,%d,%d /n",cxt->cali_sw[GYRO_AXIS_X],cxt->cali_sw[GYRO_AXIS_Y],cxt->cali_sw[GYRO_AXIS_Z]); return 0;}
开发者ID:AudioGod,项目名称:MediaTek-HelioX10-Kernel,代码行数:12,
示例12: gyro_show_active/*----------------------------------------------------------------------------*/static ssize_t gyro_show_active(struct device *dev, struct device_attribute *attr, char *buf){ struct gyro_context *cxt = NULL; int div = 0; cxt = gyro_context_obj; GYRO_LOG("gyro show active not support now/n"); div = cxt->gyro_data.vender_div; GYRO_LOG("gyro vender_div value: %d/n", div); return snprintf(buf, PAGE_SIZE, "%d/n", div);}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:14,
示例13: gyro_enable_datastatic int gyro_enable_data(int enable){ struct gyro_context *cxt = NULL; //int err =0; cxt = gyro_context_obj; if(NULL == cxt->gyro_ctl.open_report_data) { GYRO_ERR("no gyro control path/n"); return -1; } if(1 == enable) { GYRO_LOG("gyro enable data/n"); cxt->is_active_data =true; cxt->is_first_data_after_enable = true; cxt->gyro_ctl.open_report_data(1); gyro_real_enable(enable); if(false == cxt->is_polling_run && cxt->is_batch_enable == false) { if(false == cxt->gyro_ctl.is_report_input_direct) { mod_timer(&cxt->timer, jiffies + atomic_read(&cxt->delay)/(1000/HZ)); cxt->is_polling_run = true; } } } if(0 == enable) { GYRO_LOG("gyro disable /n"); cxt->is_active_data =false; cxt->gyro_ctl.open_report_data(0); if(true == cxt->is_polling_run) { if(false == cxt->gyro_ctl.is_report_input_direct) { cxt->is_polling_run = false; smp_mb(); del_timer_sync(&cxt->timer); smp_mb(); cancel_work_sync(&cxt->report); cxt->drv_data.gyro_data.values[0] = GYRO_INVALID_VALUE; cxt->drv_data.gyro_data.values[1] = GYRO_INVALID_VALUE; cxt->drv_data.gyro_data.values[2] = GYRO_INVALID_VALUE; } } gyro_real_enable(enable); } return 0;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:51,
示例14: gyro_register_data_pathint gyro_register_data_path(struct gyro_data_path *data){ struct gyro_context *cxt = NULL; //int err =0; cxt = gyro_context_obj; cxt->gyro_data.get_data = data->get_data; cxt->gyro_data.vender_div = data->vender_div; GYRO_LOG("gyro register data path vender_div: %d/n", cxt->gyro_data.vender_div); if(NULL == cxt->gyro_data.get_data) { GYRO_LOG("gyro register data path fail /n"); return -1; } return 0;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:15,
示例15: gyro_probestatic int gyro_probe(void){ int err; GYRO_LOG("+++++++++++++gyro_probe!!/n"); gyro_context_obj = gyro_context_alloc_object(); if (!gyro_context_obj) { err = -ENOMEM; GYRO_ERR("unable to allocate devobj!/n"); goto exit_alloc_data_failed; } /* init real gyroeleration driver */ err = gyro_real_driver_init(pltfm_dev); if (err) { GYRO_ERR("gyro real driver init fail/n"); goto real_driver_init_fail; } err = gyro_factory_device_init(); if (err) GYRO_ERR("gyro_factory_device_init fail/n"); /* init input dev */ err = gyro_input_init(gyro_context_obj); if (err) { GYRO_ERR("unable to register gyro input device!/n"); goto exit_alloc_input_dev_failed; } GYRO_LOG("----gyro_probe OK !!/n"); return 0; if (err) { GYRO_ERR("sysfs node creation error/n"); gyro_input_destroy(gyro_context_obj); }real_driver_init_fail:exit_alloc_input_dev_failed: kfree(gyro_context_obj);exit_alloc_data_failed: GYRO_ERR("----gyro_probe fail !!!/n"); return err;}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:48,
示例16: gyro_show_delaystatic ssize_t gyro_show_delay(struct device* dev, struct device_attribute *attr, char *buf){ int len = 0; GYRO_LOG(" not support now/n"); return len;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:7,
示例17: gyro_factory_device_initint gyro_factory_device_init(){ int error = 0; struct gyro_context *cxt = gyro_context_obj; if (!cxt->gyro_ctl.is_use_common_factory) { GYRO_LOG("Node of '/dev/gyroscope' has already existed!/n"); return -1; } if ((error = misc_register(&gyro_factory_device))) { GYRO_LOG("gyro_factory_device register failed/n"); error = -1; } return error;}
开发者ID:AudioGod,项目名称:MediaTek-HelioX10-Kernel,代码行数:16,
示例18: gyro_driver_add int gyro_driver_add(struct gyro_init_info* obj){ int err=0; int i =0; GYRO_FUN(f); for(i =0; i < MAX_CHOOSE_GYRO_NUM; i++ ) { if((i == 0) && (NULL == gyroscope_init_list[0])){ GYRO_LOG("register gyro driver for the first time/n"); if(platform_driver_register(&gyroscope_driver)) { GYRO_ERR("failed to register gyro driver already exist/n"); } } if(NULL == gyroscope_init_list[i]) { obj->platform_diver_addr = &gyroscope_driver; gyroscope_init_list[i] = obj; break; } } if(NULL==gyroscope_init_list[i]) { GYRO_ERR("gyro driver add err /n"); err=-1; } return err;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:32,
示例19: gyro_store_batchstatic ssize_t gyro_store_batch(struct device* dev, struct device_attribute *attr, const char *buf, size_t count){ struct gyro_context *cxt = NULL; //int err =0; GYRO_LOG("gyro_store_batch buf=%s/n",buf); mutex_lock(&gyro_context_obj->gyro_op_mutex); cxt = gyro_context_obj; if(cxt->gyro_ctl.is_support_batch){ if (!strncmp(buf, "1", 1)) { cxt->is_batch_enable = true; if(true == cxt->is_polling_run) { cxt->is_polling_run = false; del_timer_sync(&cxt->timer); cancel_work_sync(&cxt->report); cxt->drv_data.gyro_data.values[0] = GYRO_INVALID_VALUE; cxt->drv_data.gyro_data.values[1] = GYRO_INVALID_VALUE; cxt->drv_data.gyro_data.values[2] = GYRO_INVALID_VALUE; } } else if (!strncmp(buf, "0", 1)) { cxt->is_batch_enable = false; if(false == cxt->is_polling_run) { if(false == cxt->gyro_ctl.is_report_input_direct) { mod_timer(&cxt->timer, jiffies + atomic_read(&cxt->delay)/(1000/HZ)); cxt->is_polling_run = true; } } } else { GYRO_ERR(" gyro_store_batch error !!/n"); } }else{ GYRO_LOG(" gyro_store_batch not support/n"); } mutex_unlock(&gyro_context_obj->gyro_op_mutex); GYRO_LOG(" gyro_store_batch done: %d/n", cxt->is_batch_enable); return count;}
开发者ID:Jlsmily,项目名称:android_kernel_meilan2,代码行数:47,
示例20: gyro_clear_calistatic int gyro_clear_cali(void){ struct gyro_context *cxt = gyro_context_obj; cxt->cali_sw[GYRO_AXIS_X] = 0; cxt->cali_sw[GYRO_AXIS_Y] = 0; cxt->cali_sw[GYRO_AXIS_Z] = 0; GYRO_LOG(" GYRO after clear cali %d,%d,%d /n",cxt->cali_sw[GYRO_AXIS_X],cxt->cali_sw[GYRO_AXIS_Y],cxt->cali_sw[GYRO_AXIS_Z] ); return 0;}
开发者ID:AudioGod,项目名称:MediaTek-HelioX10-Kernel,代码行数:9,
示例21: gyro_initstatic int __init gyro_init(void){ GYRO_LOG("gyro_init/n"); if (gyro_probe()) { GYRO_ERR("failed to register gyro driver/n"); return -ENODEV; } return 0;}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:11,
示例22: gyro_store_batchstatic ssize_t gyro_store_batch(struct device *dev, struct device_attribute *attr, const char *buf, size_t count){ struct gyro_context *cxt = NULL; GYRO_LOG("gyro_store_batch buf=%s/n", buf); mutex_lock(&gyro_context_obj->gyro_op_mutex); cxt = gyro_context_obj; if (cxt->gyro_ctl.is_support_batch) { if (!strncmp(buf, "1", 1)) { cxt->is_batch_enable = true; if (true == cxt->is_polling_run) { cxt->is_polling_run = false; smp_mb(); /* for memory barrier */ stopTimer(&cxt->hrTimer); smp_mb(); /* for memory barrier */ cancel_work_sync(&cxt->report); cxt->drv_data.gyro_data.values[0] = GYRO_INVALID_VALUE; cxt->drv_data.gyro_data.values[1] = GYRO_INVALID_VALUE; cxt->drv_data.gyro_data.values[2] = GYRO_INVALID_VALUE; } } else if (!strncmp(buf, "0", 1)) { cxt->is_batch_enable = false; if (false == cxt->is_polling_run) { if (false == cxt->gyro_ctl.is_report_input_direct) { startTimer(&cxt->hrTimer, atomic_read(&cxt->delay), true); cxt->is_polling_run = true; } } } else GYRO_ERR(" gyro_store_batch error !!/n"); } else GYRO_LOG(" gyro_store_batch not support/n"); mutex_unlock(&gyro_context_obj->gyro_op_mutex); GYRO_LOG(" gyro_store_batch done: %d/n", cxt->is_batch_enable); return count;}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:39,
示例23: gyro_register_control_pathint gyro_register_control_path(struct gyro_control_path *ctl){ struct gyro_context *cxt = NULL; int err =0; cxt = gyro_context_obj; cxt->gyro_ctl.set_delay = ctl->set_delay; cxt->gyro_ctl.open_report_data= ctl->open_report_data; cxt->gyro_ctl.enable_nodata = ctl->enable_nodata; cxt->gyro_ctl.is_support_batch = ctl->is_support_batch; cxt->gyro_ctl.gyro_calibration = ctl->gyro_calibration; cxt->gyro_ctl.is_use_common_factory = ctl->is_use_common_factory; if(NULL==cxt->gyro_ctl.set_delay || NULL==cxt->gyro_ctl.open_report_data || NULL==cxt->gyro_ctl.enable_nodata) { GYRO_LOG("gyro register control path fail /n"); return -1; } //add misc dev for sensor hal control cmd err = gyro_misc_init(gyro_context_obj); if(err) { GYRO_ERR("unable to register gyro misc device!!/n"); return -2; } err = sysfs_create_group(&gyro_context_obj->mdev.this_device->kobj, &gyro_attribute_group); if (err < 0) { GYRO_ERR("unable to create gyro attribute file/n"); return -3; } kobject_uevent(&gyro_context_obj->mdev.this_device->kobj, KOBJ_ADD); return 0; }
开发者ID:Jlsmily,项目名称:android_kernel_meilan2,代码行数:38,
示例24: gyro_late_resume/*----------------------------------------------------------------------------*/static void gyro_late_resume(struct early_suspend *h){ atomic_set(&(gyro_context_obj->early_suspend), 0); GYRO_LOG(" gyro_late_resume ok------->hwm_obj->early_suspend=%d /n",atomic_read(&(gyro_context_obj->early_suspend))); return ;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:7,
示例25: gyro_factory_unlocked_ioctlstatic long gyro_factory_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg){ void __user *data; long err = 0; struct gyro_context *cxt = gyro_context_obj; int x,y,z,status; char strbuf[256]; int cali[3] = {0}; SENSOR_DATA sensor_data = {0}; int smtRes; if (_IOC_DIR(cmd) & _IOC_READ) { err = !access_ok(VERIFY_WRITE, (void __user *)arg, _IOC_SIZE(cmd)); } else if (_IOC_DIR(cmd) & _IOC_WRITE) { err = !access_ok(VERIFY_READ, (void __user *)arg, _IOC_SIZE(cmd)); } if (err) { GYRO_ERR("access error: %08X, (%2d, %2d)/n", cmd, _IOC_DIR(cmd), _IOC_SIZE(cmd)); return -EFAULT; } switch (cmd) { case GYROSCOPE_IOCTL_INIT: if(cxt->gyro_ctl.enable_nodata!= NULL){ err = cxt->gyro_ctl.enable_nodata(1); if(err < 0) { GYRO_LOG("GYROSCOPE_IOCTL_READ_SENSORDATA read data fail!/n"); break; } GYRO_LOG("GYROSCOPE_IOCTL_INIT/n"); }else{ GYRO_LOG("GYROSCOPE_IOCTL_READ_SENSORDATA "); } break; case GYROSCOPE_IOCTL_SMT_DATA: data = (void __user *) arg; if (data == NULL) { err = -EINVAL; break; } smtRes = 1; err = copy_to_user(data, &smtRes, sizeof(smtRes)); if (err) { err = -EINVAL; GYRO_ERR("copy gyro data to user failed!/n"); } break; case GYROSCOPE_IOCTL_READ_SENSORDATA: data = (void __user *) arg; if (data == NULL) { err = -EINVAL; break; } if(cxt->gyro_data.get_data != NULL){ err = cxt->gyro_data.get_data(&x, &y, &z, &status); if(err < 0) { GYRO_LOG("GYROSCOPE_IOCTL_READ_SENSORDATA read data fail!/n"); break; } x+=cxt->cali_sw[0]; y+=cxt->cali_sw[1]; z+=cxt->cali_sw[2]; sprintf(strbuf, "%x %x %x", x, y, z); GYRO_LOG("GYROSCOPE_IOCTL_READ_SENSORDATA read data : (%d, %d, %d)!/n", x, y, z); GYRO_LOG("GYROSCOPE_IOCTL_READ_SENSORDATA read strbuf : (%s)!/n", strbuf); if (copy_to_user(data, strbuf, strlen(strbuf)+1)) { err = -EFAULT; break; } }else{ GYRO_LOG("GYROSCOPE_IOCTL_READ_SENSORDATA "); } break; case GYROSCOPE_IOCTL_READ_SENSORDATA_RAW: data = (void __user *) arg; if (data == NULL) { err = -EINVAL; break; } if(cxt->gyro_data.get_raw_data != NULL){ err = cxt->gyro_data.get_raw_data(&x, &y, &z); if(err < 0) {//.........这里部分代码省略.........
开发者ID:AudioGod,项目名称:MediaTek-HelioX10-Kernel,代码行数:101,
示例26: gyro_work_funcstatic void gyro_work_func(struct work_struct *work){ struct gyro_context *cxt = NULL; int x, y, z, status; int64_t pre_ns, cur_ns; int64_t delay_ms; int err = 0; cxt = gyro_context_obj; delay_ms = atomic_read(&cxt->delay); if (NULL == cxt->gyro_data.get_data) GYRO_ERR("gyro driver not register data path/n"); cur_ns = getCurNS(); /* add wake lock to make sure data can be read before system suspend */ cxt->gyro_data.get_data(&x, &y, &z, &status); if (err) { GYRO_ERR("get gyro data fails!!/n"); goto gyro_loop; } else { cxt->drv_data.gyro_data.values[0] = x+cxt->cali_sw[0]; cxt->drv_data.gyro_data.values[1] = y+cxt->cali_sw[1]; cxt->drv_data.gyro_data.values[2] = z+cxt->cali_sw[2]; cxt->drv_data.gyro_data.status = status; pre_ns = cxt->drv_data.gyro_data.time; cxt->drv_data.gyro_data.time = cur_ns; } if (true == cxt->is_first_data_after_enable) { pre_ns = cur_ns; cxt->is_first_data_after_enable = false; /* filter -1 value */ if (GYRO_INVALID_VALUE == cxt->drv_data.gyro_data.values[0] || GYRO_INVALID_VALUE == cxt->drv_data.gyro_data.values[1] || GYRO_INVALID_VALUE == cxt->drv_data.gyro_data.values[2]) { GYRO_LOG(" read invalid data/n"); goto gyro_loop; } } /* GYRO_LOG("gyro data[%d,%d,%d]/n" ,cxt->drv_data.gyro_data.values[0], */ /* cxt->drv_data.gyro_data.values[1],cxt->drv_data.gyro_data.values[2]); */ while ((cur_ns - pre_ns) >= delay_ms*1800000LL) { pre_ns += delay_ms*1000000LL; gyro_data_report(cxt->drv_data.gyro_data.values[0], cxt->drv_data.gyro_data.values[1], cxt->drv_data.gyro_data.values[2], cxt->drv_data.gyro_data.status, pre_ns); } gyro_data_report(cxt->drv_data.gyro_data.values[0], cxt->drv_data.gyro_data.values[1], cxt->drv_data.gyro_data.values[2], cxt->drv_data.gyro_data.status, cxt->drv_data.gyro_data.time);gyro_loop: if (true == cxt->is_polling_run) startTimer(&cxt->hrTimer, atomic_read(&cxt->delay), false);}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:63,
示例27: gyroscope_probestatic int gyroscope_probe(struct platform_device *pdev){ GYRO_LOG("gyroscope_probe/n"); return 0;}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:5,
示例28: gyro_work_funcstatic void gyro_work_func(struct work_struct *work){ struct gyro_context *cxt = NULL; //int out_size; //hwm_sensor_data sensor_data; int x,y,z,status; int64_t nt; struct timespec time; int err = 0; cxt = gyro_context_obj; if(NULL == cxt->gyro_data.get_data) { GYRO_ERR("gyro driver not register data path/n"); } time.tv_sec = time.tv_nsec = 0; time = get_monotonic_coarse(); nt = time.tv_sec*1000000000LL+time.tv_nsec; //add wake lock to make sure data can be read before system suspend cxt->gyro_data.get_data(&x,&y,&z,&status); if(err) { GYRO_ERR("get gyro data fails!!/n" ); goto gyro_loop; } else { if((x != cxt->drv_data.gyro_data.values[0]) || (y != cxt->drv_data.gyro_data.values[1]) || (z != cxt->drv_data.gyro_data.values[2])) { if( 0 == x && 0==y && 0 == z) { goto gyro_loop; } cxt->drv_data.gyro_data.values[0] = x; cxt->drv_data.gyro_data.values[1] = y; cxt->drv_data.gyro_data.values[2] = z; cxt->drv_data.gyro_data.status = status; cxt->drv_data.gyro_data.time = nt; } } if(true == cxt->is_first_data_after_enable) { cxt->is_first_data_after_enable = false; //filter -1 value if(GYRO_INVALID_VALUE == cxt->drv_data.gyro_data.values[0] || GYRO_INVALID_VALUE == cxt->drv_data.gyro_data.values[1] || GYRO_INVALID_VALUE == cxt->drv_data.gyro_data.values[2]) { GYRO_LOG(" read invalid data /n"); goto gyro_loop; } } //report data to input device //printk("new gyro work run..../n"); //GYRO_LOG("gyro data[%d,%d,%d] /n" ,cxt->drv_data.gyro_data.values[0], //cxt->drv_data.gyro_data.values[1],cxt->drv_data.gyro_data.values[2]); gyro_data_report(cxt->drv_data.gyro_data.values[0], cxt->drv_data.gyro_data.values[1],cxt->drv_data.gyro_data.values[2], cxt->drv_data.gyro_data.status); gyro_loop: if(true == cxt->is_polling_run) { { mod_timer(&cxt->timer, jiffies + atomic_read(&cxt->delay)/(1000/HZ)); } }}
开发者ID:Swapnil133609,项目名称:Zeus_exp,代码行数:83,
注:本文中的GYRO_LOG函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ G_函数代码示例 C++ GXV_TRACE函数代码示例 |