int main(int argc, char **argv) { handle_t handle; error_t ret; int fd, size = 0, cmd_type = -1, data_rate = -1, buffer_delay = -1; char *sensor_name = NULL; int prop_ids[10]; int prop_vals[10]; int prop_count = 0; int i; char buf[512]; struct accel_data *p_accel_data; while (1) { static struct option opts[] = { {"cmd", 1, NULL, 'c'}, {"sensor-type", 1, NULL, 't'}, {"data-rate", 1, NULL, 'r'}, {"buffer-delay", 1, NULL, 'd'}, {"property-set", 2, NULL, 'p'}, {0, 0, NULL, 0} }; int index, o; o = getopt_long(argc, argv, "c:t:r::d::p:", opts, &index); if (o == -1) break; switch (o) { case 'c': cmd_type = strtod(optarg, NULL); break; case 't': sensor_name = strdup(optarg); break; case 'r': data_rate = strtod(optarg, NULL); break; case 'd': buffer_delay = strtod(optarg, NULL); break; case 'p': if (prop_count == sizeof(prop_ids) / sizeof(prop_ids[0])) break; if (parse_prop_set(optarg, prop_ids + prop_count, prop_vals + prop_count)) { usage(); } ++prop_count; break; case 'h': usage(); break; default: ; } } if ((sensor_name == NULL) || (cmd_type != 0 && cmd_type != 1)) { usage(); return 0; } if ((cmd_type == 1) && ((data_rate == -1) || (buffer_delay == -1))) { usage(); return 0; } printf("cmd_type is %d, sensor_name is %s, data_rate is %d Hz, " "buffer_delay is %d ms\n", cmd_type, sensor_name, data_rate, buffer_delay); #undef LOG_TAG #define LOG_TAG "sensorhub_test" ALOGD("sensor_name is %s, data_rate is %d Hz, buffer_delay is %d ms\n", sensor_name, data_rate, buffer_delay); handle = psh_open_session_with_name(sensor_name); if (handle == NULL) { printf("psh_open_session() returned NULL handle. \n"); return -1; } if (cmd_type == 0) { p_accel_data = (struct accel_data *)buf; size = psh_get_single(handle, buf, 128); if (strncmp(sensor_name, "ACCEL", SNR_NAME_MAX_LEN) == 0) { struct accel_data *p_accel_data = (struct accel_data *)buf; printf("get_single returns, x, y, z is %d, %d, %d, " "size is %d \n", p_accel_data->x, p_accel_data->y, p_accel_data->z, size); } else if (strncmp(sensor_name, "GYRO", SNR_NAME_MAX_LEN) == 0) { struct gyro_raw_data *p_gyro_raw_data = (struct gyro_raw_data *)buf; printf("get_single returns, x, y, z is %d, %d, %d, " "size is %d \n", p_gyro_raw_data->x, p_gyro_raw_data->y, p_gyro_raw_data->z, size); } else if (strncmp(sensor_name, "COMPS", SNR_NAME_MAX_LEN) == 0) { struct compass_raw_data *p_compass_raw_data = (struct compass_raw_data *)buf; printf("get_single returns, calibrated--%d\n x, y, z is %d, %d, %d, " "size is %d \n", p_compass_raw_data->accuracy, p_compass_raw_data->x, p_compass_raw_data->y, p_compass_raw_data->z, size); } else if (strncmp(sensor_name, "BARO", SNR_NAME_MAX_LEN) == 0) { struct baro_raw_data *p_baro_raw_data = (struct baro_raw_data *)buf; printf("get_single returns, baro raw data is %d \n", p_baro_raw_data->p); } else if (strncmp(sensor_name, "ALS_P", SNR_NAME_MAX_LEN) == 0) { struct als_raw_data *p_als_raw_data = (struct als_raw_data *)buf; printf("get_single returns, ALS raw data is %d\n", p_als_raw_data->lux); } else if (strncmp(sensor_name, "PS_P", SNR_NAME_MAX_LEN) == 0) { struct ps_phy_data *p_ps_phy_data = (struct ps_phy_data *)buf; printf("get_single returns, near is %d\n", p_ps_phy_data->near); } else if (strncmp(sensor_name, "TERMC", SNR_NAME_MAX_LEN) == 0) { struct tc_data *p_tc_data = (struct tc_data *)buf; printf("get_single returns, orien_xy, " "orien_z is %d, %d size is %d \n", p_tc_data->orien_xy, p_tc_data->orien_z, size); } else if (strncmp(sensor_name, "LPE_P", SNR_NAME_MAX_LEN) == 0) { struct lpe_phy_data *p_lpe_phy_data = (struct lpe_phy_data *)buf; printf("get_single returns, lpe_msg is " "%u\n", p_lpe_phy_data->lpe_msg); } else if (strncmp(sensor_name, "PHYAC", SNR_NAME_MAX_LEN) == 0) { printf("activity doesn't support get_single\n"); } else if (strncmp(sensor_name, "GSSPT", SNR_NAME_MAX_LEN) == 0) { struct gs_data *p_gs_data = (struct gs_data *)buf; printf("get_single returns, size is %d\n", p_gs_data->size); } else if (strncmp(sensor_name, "GSPX", SNR_NAME_MAX_LEN) == 0) { struct gesture_hmm_data *p_gesture_hmm_data = (struct gesture_hmm_data *)buf; printf("get_single returns, size is %d, gesture is %d\n", p_gesture_hmm_data->size, p_gesture_hmm_data->prox_gesture); } else if (strncmp(sensor_name, "GSFLK", SNR_NAME_MAX_LEN) == 0) { struct gesture_flick_data *p_gesture_flick_data = (struct gesture_flick_data *)buf; printf("get_single returns, flick is %d\n", p_gesture_flick_data->flick); } else if (strncmp(sensor_name, "GSETH", SNR_NAME_MAX_LEN) == 0) { struct gesture_eartouch_data *p_gesture_eartouch_data = (struct gesture_eartouch_data *)buf; printf("get_single returns, eartouch is %d\n", p_gesture_eartouch_data->eartouch); } else if (strncmp(sensor_name, "SHAKI", SNR_NAME_MAX_LEN) == 0) { struct shaking_data *p_shaking_data = (struct shaking_data *)buf; printf("get_single returns, shaking is %d\n", p_shaking_data->shaking); } else if (strncmp(sensor_name, "LTVTL", SNR_NAME_MAX_LEN) == 0) { struct lv_data *p_lv_data = (struct lv_data *)buf; printf("get_single returns, lift vertical is %d\n", p_lv_data->state); } else if (strncmp(sensor_name, "STAP", SNR_NAME_MAX_LEN) == 0) { struct stap_data *p_stap_data = (struct stap_data *)buf; printf("get_single returns, stap is %d\n", p_stap_data->stap); } else if (strncmp(sensor_name, "SIGMT", SNR_NAME_MAX_LEN) == 0) { struct sm_data *p_sm_data = (struct sm_data *)buf; printf("get_single returns, significant motion is %d\n", p_sm_data->state); } else if (strncmp(sensor_name, "PTZ", SNR_NAME_MAX_LEN) == 0) { struct ptz_data *p_ptz_data = (struct ptz_data *)buf; printf("get_single returns, ptz is %d %d\n", p_ptz_data->cls_name, p_ptz_data->angle); } else if (strncmp(sensor_name, "DVPOS", SNR_NAME_MAX_LEN) == 0) { struct device_position_data *p_device_position_data = (struct device_position_data *)buf; printf("get_single returns, device position is %d\n", p_device_position_data->pos); } else if (strncmp(sensor_name, "LIFLK", SNR_NAME_MAX_LEN) == 0) { struct lift_look_data *p_lift_look_data = (struct lift_look_data *)buf; printf("get_single returns, lift look is %d\n", p_lift_look_data->liftlook); } else if (strncmp(sensor_name, "DTWGS", SNR_NAME_MAX_LEN) == 0) { struct dtwgs_data *p_dtwgs_data = (struct dtwgs_data *)buf; printf("get_single returns, dtwgs is (%d %d)\n", p_dtwgs_data->gsnum, p_dtwgs_data->score); } else if (strncmp(sensor_name, "RVECT", SNR_NAME_MAX_LEN) == 0) { struct rotation_vector_data *p_rotation_vector_data = (struct rotation_vector_data *)buf; printf("get_single returns, rotation vector is (%d, %d," " %d, %d)\n", p_rotation_vector_data->x, p_rotation_vector_data->y, p_rotation_vector_data->z, p_rotation_vector_data->w); } else if (strncmp(sensor_name, "6AGRV", SNR_NAME_MAX_LEN) == 0) { struct game_rotation_vector_data *p_game_rotation_vector_data = (struct game_rotation_vector_data *)buf; printf("get_single returns, game rotation vector is (%d, %d," " %d, %d)\n", p_game_rotation_vector_data->x, p_game_rotation_vector_data->y, p_game_rotation_vector_data->z, p_game_rotation_vector_data->w); } else if (strncmp(sensor_name, "6AMRV", SNR_NAME_MAX_LEN) == 0) { struct geomagnetic_rotation_vector_data *p_geomagnetic_rotation_vector_data = (struct geomagnetic_rotation_vector_data *)buf; printf("get_single returns, geomagnetic rotation vector is (%d, %d," " %d, %d)\n", p_geomagnetic_rotation_vector_data->x, p_geomagnetic_rotation_vector_data->y, p_geomagnetic_rotation_vector_data->z, p_geomagnetic_rotation_vector_data->w); } else if (strncmp(sensor_name, "GRAVI", SNR_NAME_MAX_LEN) == 0) { struct gravity_data *p_gravity_data = (struct gravity_data *)buf; printf("get_single returns, gravity is (%d, %d, %d)\n", p_gravity_data->x, p_gravity_data->y, p_gravity_data->z); } else if (strncmp(sensor_name, "LACCL", SNR_NAME_MAX_LEN) == 0) { struct linear_accel_data *p_linear_accel_data = (struct linear_accel_data *)buf; printf("get_single returns, linear acceleration is " "(%d, %d, %d)\n", p_linear_accel_data->x, p_linear_accel_data->y, p_linear_accel_data->z); } else if (strncmp(sensor_name, "ORIEN", SNR_NAME_MAX_LEN) == 0) { struct orientation_data *p_orientation_data = (struct orientation_data *)buf; printf("get_single returns, orientation is " "(%d, %d, %d)\n", p_orientation_data->azimuth, p_orientation_data->pitch, p_orientation_data->roll); } else if (strncmp(sensor_name, "MAGHD", SNR_NAME_MAX_LEN) == 0) { struct mag_heading_data *p_mag_heading_data = (struct mag_heading_data *)buf; printf("get_single returns, magnetic north heading is " "%d\n", p_mag_heading_data->heading); } else if (strncmp(sensor_name, "BIST", SNR_NAME_MAX_LEN) == 0) { int i; struct bist_data *p_bist_data = (struct bist_data *)buf; for (i = 0; i < PHY_SENSOR_MAX_NUM; i ++) { printf("get_single returns, bist_result[%d] is %d \n", i, p_bist_data->result[i]); } } } else if (cmd_type == 1) { if (strncmp(sensor_name, "LPE_P", SNR_NAME_MAX_LEN) != 0) { for (i = 0; i < prop_count; ++i) { printf("%d, %d\n", prop_ids[i], prop_vals[i]); ret = psh_set_property(handle, prop_ids[i], &prop_vals[i]); if (ret != ERROR_NONE) { printf("psh_set_property fail for %dth property with code %d\n", i, ret); return -1; } } } if (strncmp(sensor_name, "PEDOM", SNR_NAME_MAX_LEN) == 0 || strncmp(sensor_name, "SCOUN", SNR_NAME_MAX_LEN) == 0 || strncmp(sensor_name, "SDET", SNR_NAME_MAX_LEN) == 0) ret = psh_start_streaming_with_flag(handle, data_rate, buffer_delay, 2); else if (strncmp(sensor_name, "PS_P", SNR_NAME_MAX_LEN) == 0) ret = psh_start_streaming_with_flag(handle, data_rate, buffer_delay, 1); else ret = psh_start_streaming(handle, data_rate, buffer_delay); if (ret != ERROR_NONE) { printf("psh_start_streaming() failed with code %d \n", ret); return -1; } if (strncmp(sensor_name, "LPE_P", SNR_NAME_MAX_LEN) == 0) { for (i = 0; i < prop_count; ++i) { printf("%d, %d\n", prop_ids[i], prop_vals[i]); ret = psh_set_property(handle, prop_ids[i], &prop_vals[i]); if (ret != ERROR_NONE) { printf("psh_set_property fail for %dth property with code %d\n", i, ret); return -1; } } } fd = psh_get_fd(handle); if (strncmp(sensor_name, "ACCEL", SNR_NAME_MAX_LEN) == 0) dump_accel_data(fd); else if (strncmp(sensor_name, "GYRO", SNR_NAME_MAX_LEN) == 0) dump_gyro_data(fd); else if (strncmp(sensor_name, "COMPS", SNR_NAME_MAX_LEN) == 0) dump_comp_data(fd); else if (strncmp(sensor_name, "BARO", SNR_NAME_MAX_LEN) == 0) dump_baro_data(fd); else if (strncmp(sensor_name, "ALS_P", SNR_NAME_MAX_LEN) == 0) dump_als_data(fd); else if (strncmp(sensor_name, "PS_P", SNR_NAME_MAX_LEN) == 0) dump_proximity_data(fd); else if (strncmp(sensor_name, "TERMC", SNR_NAME_MAX_LEN) == 0) dump_tc_data(fd); else if (strncmp(sensor_name, "LPE_P", SNR_NAME_MAX_LEN) == 0) dump_lpe_data(fd); else if (strncmp(sensor_name, "PHYAC", SNR_NAME_MAX_LEN) == 0) dump_activity_data(fd); else if (strncmp(sensor_name, "GSSPT", SNR_NAME_MAX_LEN) == 0) dump_gs_data(fd); else if (strncmp(sensor_name, "GSPX", SNR_NAME_MAX_LEN) == 0) dump_gesture_hmm_data(fd); else if (strncmp(sensor_name, "GSFLK", SNR_NAME_MAX_LEN) == 0) dump_gesture_flick_data(fd); else if (strncmp(sensor_name, "GSETH", SNR_NAME_MAX_LEN) == 0) dump_gesture_eartouch_data(fd); else if (strncmp(sensor_name, "RVECT", SNR_NAME_MAX_LEN) == 0) dump_rotation_vector_data(fd); else if (strncmp(sensor_name, "6AGRV", SNR_NAME_MAX_LEN) == 0) dump_game_rotation_vector_data(fd); else if (strncmp(sensor_name, "6AMRV", SNR_NAME_MAX_LEN) == 0) dump_geomagnetic_rotation_vector_data(fd); else if (strncmp(sensor_name, "GRAVI", SNR_NAME_MAX_LEN) == 0) dump_gravity_data(fd); else if (strncmp(sensor_name, "LACCL", SNR_NAME_MAX_LEN) == 0) dump_linear_accel_data(fd); else if (strncmp(sensor_name, "ORIEN", SNR_NAME_MAX_LEN) == 0) dump_orientation_data(fd); else if (strncmp(sensor_name, "9DOF", SNR_NAME_MAX_LEN) == 0) dump_9dof_data(fd); else if (strncmp(sensor_name, "6DOFG", SNR_NAME_MAX_LEN) == 0) dump_6dofag_data(fd); else if (strncmp(sensor_name, "6DOFM", SNR_NAME_MAX_LEN) == 0) dump_6dofam_data(fd); else if (strncmp(sensor_name, "PEDOM", SNR_NAME_MAX_LEN) == 0) dump_pedometer_data(fd); else if (strncmp(sensor_name, "MAGHD", SNR_NAME_MAX_LEN) == 0) dump_mag_heading_data(fd); else if (strncmp(sensor_name, "SHAKI", SNR_NAME_MAX_LEN) == 0) dump_shaking_data(fd); else if (strncmp(sensor_name, "MOVDT", SNR_NAME_MAX_LEN) == 0) dump_md_data(fd); else if (strncmp(sensor_name, "STAP", SNR_NAME_MAX_LEN) == 0) dump_stap_data(fd); else if (strncmp(sensor_name, "PTZ", SNR_NAME_MAX_LEN) == 0) dump_ptz_data(fd); else if (strncmp(sensor_name, "LTVTL", SNR_NAME_MAX_LEN) == 0) dump_lv_data(fd); else if (strncmp(sensor_name, "DVPOS", SNR_NAME_MAX_LEN) == 0) dump_device_position_data(fd); else if (strncmp(sensor_name, "SCOUN", SNR_NAME_MAX_LEN) == 0) dump_stepcounter_data(fd); else if (strncmp(sensor_name, "SDET", SNR_NAME_MAX_LEN) == 0) dump_stepdetector_data(fd); else if (strncmp(sensor_name, "SIGMT", SNR_NAME_MAX_LEN) == 0) dump_significantmotion_data(fd); else if (strncmp(sensor_name, "LIFLK", SNR_NAME_MAX_LEN) == 0) dump_lift_look_data(fd); else if (strncmp(sensor_name, "DTWGS", SNR_NAME_MAX_LEN) == 0) dump_dtwgs_data(fd); } // sleep(200); psh_stop_streaming(handle); psh_close_session(handle); return 0; }
int main(int argc, char **argv) { handle_t handle; error_t ret; char buf[512]; struct sub_event sub_evt[6]; /* For event number limit test. */ int evt_num, i; char rel; short event_id; int fd; if (argc != 2){ printf ("Usage: event_notification parameter\n"); printf ("\t [Note, only one parameter(a big string)]\n"); return 0; } evt_num = parse_subevt(argv[1], sub_evt, sizeof(sub_evt), &rel); if (evt_num <= 0){ printf ("Failed ot parse parameter:%s\n", argv[1]); return -1; } #undef LOG_TAG #define LOG_TAG "event_notification_test" LOGD("event notification test started \n"); handle = psh_open_session(SENSOR_EVENT); if (handle == NULL) { printf("psh_open_session() returned NULL handle. \n"); return -1; } psh_event_set_relation(handle, rel); for (i = 0; i < evt_num; ++i) { error_t t = psh_event_append(handle, sub_evt + i); if (t != ERROR_NONE){ printf ("----- error:%d\n", t); return -1; } } ret = psh_add_event(handle); if (ret != ERROR_NONE) { printf("ret of psh_add_event() is %d \n", ret); return -1; } event_id = psh_get_event_id(handle); fd = psh_get_fd(handle); printf("event id is %d, fd is %d \n", event_id, fd); dump_event_data(fd, event_id); psh_clear_event(handle); // sleep(200); psh_close_session(handle); return 0; }