summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e567117)
- change parameter type from int to uint32_t in peripheral_gpio_read()
- change gpio interrupt-related API
Change-Id: Iec4794ef19ab299879d531b7f1615a402a4162de
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
* @return 0 on success, otherwise a negative error value
* @see If the gpio pin is not open, creates gpio handle before reading the value of gpio.
*/
* @return 0 on success, otherwise a negative error value
* @see If the gpio pin is not open, creates gpio handle before reading the value of gpio.
*/
-extern int resource_read_infrared_motion_sensor(int pin_num, int *out_value);
+extern int resource_read_infrared_motion_sensor(int pin_num, uint32_t *out_value);
#endif /* __POSITION_FINDER_RESOURCE_INFRARED_MOTION_SENSOR_H__ */
#endif /* __POSITION_FINDER_RESOURCE_INFRARED_MOTION_SENSOR_H__ */
* @return 0 on success, otherwise a negative error value
* @see If the gpio pin is not open, creates gpio handle before reading the value of gpio.
*/
* @return 0 on success, otherwise a negative error value
* @see If the gpio pin is not open, creates gpio handle before reading the value of gpio.
*/
-extern int resource_read_infrared_obstacle_avoidance_sensor(int pin_num, int *out_value);
+extern int resource_read_infrared_obstacle_avoidance_sensor(int pin_num, uint32_t *out_value);
#endif /* __POSITION_FINDER_RESOURCE_INFRARED_OBSTACLE_AVOIDANCE_SENSOR_H__ */
#endif /* __POSITION_FINDER_RESOURCE_INFRARED_OBSTACLE_AVOIDANCE_SENSOR_H__ */
static Eina_Bool control_sensors_cb(void *data)
{
static Eina_Bool control_sensors_cb(void *data)
{
- int value[MULTIPLE_SENSOR_NUMBER] = { 0, };
+ uint32_t value[MULTIPLE_SENSOR_NUMBER] = { 0, };
int total = 0;
int gpio_num[MULTIPLE_SENSOR_NUMBER] = { 5, 6, 13, 19, 26 };
int i = 0;
int total = 0;
int gpio_num[MULTIPLE_SENSOR_NUMBER] = { 5, 6, 13, 19, 26 };
int i = 0;
resource_sensor_s.opened = 1;
}
resource_sensor_s.opened = 1;
}
- ret = peripheral_i2c_write_byte(resource_sensor_s.sensor_h, GY30_CONT_HIGH_RES_MODE);
+ buf[0] = GY30_CONT_HIGH_RES_MODE;
+ ret = peripheral_i2c_write(resource_sensor_s.sensor_h, buf, 1);
retv_if(ret < 0, -1);
ret = peripheral_i2c_read(resource_sensor_s.sensor_h, buf, 2);
retv_if(ret < 0, -1);
ret = peripheral_i2c_read(resource_sensor_s.sensor_h, buf, 2);
resource_get_info(pin_num)->opened = 0;
}
resource_get_info(pin_num)->opened = 0;
}
-int resource_read_infrared_motion_sensor(int pin_num, int *out_value)
+int resource_read_infrared_motion_sensor(int pin_num, uint32_t *out_value)
{
int ret = PERIPHERAL_ERROR_NONE;
{
int ret = PERIPHERAL_ERROR_NONE;
resource_get_info(pin_num)->opened = 0;
}
resource_get_info(pin_num)->opened = 0;
}
-int resource_read_infrared_obstacle_avoidance_sensor(int pin_num, int *out_value)
+int resource_read_infrared_obstacle_avoidance_sensor(int pin_num, uint32_t *out_value)
{
int ret = PERIPHERAL_ERROR_NONE;
{
int ret = PERIPHERAL_ERROR_NONE;
ret = peripheral_gpio_open(pin_num, &resource_get_info(pin_num)->sensor_h);
retv_if(!resource_get_info(pin_num)->sensor_h, -1);
ret = peripheral_gpio_open(pin_num, &resource_get_info(pin_num)->sensor_h);
retv_if(!resource_get_info(pin_num)->sensor_h, -1);
- ret = peripheral_gpio_set_direction(resource_get_info(pin_num)->sensor_h, PERIPHERAL_GPIO_DIRECTION_OUT);
+ ret = peripheral_gpio_set_direction(resource_get_info(pin_num)->sensor_h, PERIPHERAL_GPIO_DIRECTION_OUT_INITIALLY_LOW);
retv_if(ret != 0, -1);
resource_get_info(pin_num)->opened = 1;
retv_if(ret != 0, -1);
resource_get_info(pin_num)->opened = 1;
resource_get_info(pin_num)->opened = 0;
}
resource_get_info(pin_num)->opened = 0;
}
-int resource_read_touch_sensor(int pin_num, int *out_value)
+int resource_read_touch_sensor(int pin_num, uint32_t *out_value)
{
int ret = PERIPHERAL_ERROR_NONE;
{
int ret = PERIPHERAL_ERROR_NONE;
resource_get_info(echo_pin_num)->opened = 0;
}
resource_get_info(echo_pin_num)->opened = 0;
}
-static void _resource_read_ultrasonic_sensor_cb(gpio_isr_cb_s *data, void *user_data)
+static unsigned long long _get_timestamp(void)
+{
+ struct timespec t;
+ clock_gettime(CLOCK_REALTIME, &t);
+ return ((unsigned long long)(t.tv_sec)*1000000000LL + t.tv_nsec) / 1000;
+}
+
+static void _resource_read_ultrasonic_sensor_cb(peripheral_gpio_h gpio, peripheral_error_e error, void *user_data)
- static unsigned long long timestamp = 0;
+ uint32_t value;
+ static unsigned long long prev = 0;
+ unsigned long long now = _get_timestamp();
resource_read_s *resource_read_info = user_data;
ret_if(!resource_read_info);
ret_if(!resource_read_info->cb);
resource_read_s *resource_read_info = user_data;
ret_if(!resource_read_info);
ret_if(!resource_read_info->cb);
- if (timestamp > 0 && data->value == 0) {
- dist = data->timestamp - timestamp;
+ peripheral_gpio_read(gpio, &value);
+
+ if (prev > 0 && value == 0) {
+ dist = now - prev;
dist = (dist * 34300) / 2000000;
_I("Measured Distance : %0.2fcm\n", dist);
resource_read_info->cb(dist, resource_read_info->data);
dist = (dist * 34300) / 2000000;
_I("Measured Distance : %0.2fcm\n", dist);
resource_read_info->cb(dist, resource_read_info->data);
- peripheral_gpio_unregister_cb(resource_get_info(resource_read_info->pin_num)->sensor_h);
+ peripheral_gpio_unset_interrupted_cb(resource_get_info(resource_read_info->pin_num)->sensor_h);
free(resource_read_info);
}
free(resource_read_info);
}
- timestamp = data->timestamp;
}
int resource_read_ultrasonic_sensor(int trig_pin_num, int echo_pin_num, resource_read_cb cb, void *data)
}
int resource_read_ultrasonic_sensor(int trig_pin_num, int echo_pin_num, resource_read_cb cb, void *data)
ret = peripheral_gpio_open(trig_pin_num, &resource_get_info(trig_pin_num)->sensor_h);
retv_if(!resource_get_info(trig_pin_num)->sensor_h, -1);
ret = peripheral_gpio_open(trig_pin_num, &resource_get_info(trig_pin_num)->sensor_h);
retv_if(!resource_get_info(trig_pin_num)->sensor_h, -1);
- ret = peripheral_gpio_set_direction(resource_get_info(trig_pin_num)->sensor_h, PERIPHERAL_GPIO_DIRECTION_OUT);
+ ret = peripheral_gpio_set_direction(resource_get_info(trig_pin_num)->sensor_h, PERIPHERAL_GPIO_DIRECTION_OUT_INITIALLY_LOW);
retv_if(ret != 0, -1);
resource_get_info(trig_pin_num)->opened = 1;
retv_if(ret != 0, -1);
resource_get_info(trig_pin_num)->opened = 1;
}
if (resource_get_info(echo_pin_num)->sensor_h) {
}
if (resource_get_info(echo_pin_num)->sensor_h) {
- ret = peripheral_gpio_register_cb(resource_get_info(echo_pin_num)->sensor_h, _resource_read_ultrasonic_sensor_cb, resource_read_info);
+ ret = peripheral_gpio_set_interrupted_cb(resource_get_info(echo_pin_num)->sensor_h, _resource_read_ultrasonic_sensor_cb, resource_read_info);