SENSOR_OPTION_ALWAYS_ON not working

SENSOR_OPTION_ALWAYS_ON not working

BY 11 Apr 2017 Native Application Development

Hi, I have a service native app that is reading the HR every second and stores it in a file.

I use the SENSOR_OPTION_ALWAYS_ON option but I noticed that I don’t get a reading every second, the readings seems to be paused from time to time.

What am I doing wrong?

Here is my callback function:

static void    on_sensor_event(sensor_h sensor, sensor_event_s *event, void *data)
{
	char			*str = NULL;
	unsigned long long 	timestamp;
	sensor_type_e		type;
        size_t                  length = 0;


	get_timestamp_ms(&timestamp);
	sensor_get_type(sensor, &type);
        length = snprintf(ret, 0, format, event->values[0], timestamp, event->accuracy);
        str = (char*)malloc(++length);
        if (!str)
            return ;
        sprintf(str, "%.0f,%llu,%i\n", event->values[0], timestamp, event->accuracy);
	store_data_in_file((t_env*)data, type, str);
	free(str);
	str = NULL;
}

 

Here is my code to create the sensor and register the listener:

sensor_type_e    type = SENSOR_HRM;

sensor_is_supported(type, &is_supported);
if (!is_supported)
    continue ;
if (sensor_get_default_sensor(type, &sensor) != SENSOR_ERROR_NONE)
    continue ;
if (sensor_create_listener(sensor, listener) == SENSOR_ERROR_NONE)
    if (sensor_listener_set_event_cb(listener, 1000, on_sensor_event, env) == SENSOR_ERROR_NONE)
        if (sensor_listener_set_option(listener, SENSOR_OPTION_ALWAYS_ON) == SENSOR_ERROR_NONE)
            if (sensor_listener_start(listener) == SENSOR_ERROR_NONE)
            {
                //INIT SOME VARIABLES
            }

Thanks for your help!

 

Written by