m_var_pitch = vec;
m_var_azimuth = vec;
- m_gyro.m_time_stamp = 0;
}
template <typename TYPE>
class sensor_data {
public:
vect<TYPE, SENSOR_DATA_SIZE> m_data;
- unsigned long long m_time_stamp;
+ unsigned long long m_time_stamp { 0 };
sensor_data();
sensor_data(const TYPE x, const TYPE y, const TYPE z,
#include "info.h"
#include <stdio.h>
+#include <stdlib.h>
#include <glib.h>
#include <sensor_internal.h>
sensord_get_sensor_list(type, &sensors, &count);
show_info(sensors, count);
- delete sensors;
+ free(sensors);
return true;
}
{
int err;
int count;
- sensor_t *sensors;
+ sensor_t *sensors = NULL;
err = sensord_get_sensors(info.type, &sensors, &count);
ASSERT_EQ(err, 0);
handle = sensord_connect(sensors[info.index]);
+ ASSERT_FREE((handle < 0), sensors);
ASSERT_GE(handle, 0);
+ free(sensors);
+ sensors = NULL;
+
return true;
}
bool sensor_adapter::start(sensor_info info, int &handle)
{
- sensor_t *sensors;
+ sensor_t *sensors = NULL;
int count;
int err;
bool ret;
err = sensord_get_sensors(info.type, &sensors, &count);
ASSERT_EQ(err, 0);
+
+ ASSERT_FREE((info.index >= count), sensors);
ASSERT_LT(info.index, count);
+
+ ASSERT_FREE((info.index < 0), sensors);
ASSERT_GE(info.index, 0);
handle = sensord_connect(sensors[info.index]);
+ ASSERT_FREE((handle < 0), sensors);
ASSERT_GE(handle, 0);
if (is_batch_mode) {
ASSERT_TRUE(ret);
ret = sensord_start(handle, info.powersave);
+ ASSERT_FREE((ret != true), sensors);
ASSERT_TRUE(ret);
free(sensors);
+ sensors = NULL;
return true;
}
} \
} while (0)
+#define ASSERT_FREE(expr, X) \
+ do { if (expr) { free (X); X = NULL; } } while (0)
+
#define ASSERT_TRUE(condition) ASSERT(condition, ==, true)
#define ASSERT_FALSE(condition) ASSERT(condition, ==, false)
#define ASSERT_EQ(left, right) ASSERT(left, ==, right)
err = sensord_get_sensors(ACCELEROMETER_SENSOR, &sensors, &count);
ASSERT_EQ(err, 0);
+ ASSERT_FREE((count < 0), sensors);
ASSERT_GT(count, 0);
free(sensors);
ASSERT_EQ(err, 0);
ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_start(handle, 0);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_change_event_interval(handle, 0, 100);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_change_event_max_batch_latency(handle, 0, 100);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
mainloop::run();
ret = sensord_stop(handle);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_unregister_event(handle, 1);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
ret = sensord_disconnect(handle);
+ ASSERT_FREE(((ret != true) && list), list);
ASSERT_TRUE(ret);
free(list);
-EACCES, "Permission denied[%d, %s]",
id, m_listeners[id]->get_required_privileges().c_str());
- bool need_notify = false;
-
switch (buf.attribute) {
case SENSORD_ATTRIBUTE_INTERVAL:
ret = m_listeners[id]->set_interval(buf.value); break;
namespace ipc {
typedef struct message_header {
- uint64_t id;
- uint32_t type;
- size_t length;
- int32_t err;
- void *ancillary[MAX_HEADER_RESERVED];
+ uint64_t id { 0 };
+ uint32_t type { 0 };
+ size_t length { 0 };
+ int32_t err { 0 };
+ void *ancillary[MAX_HEADER_RESERVED] { nullptr };
} message_header;
class message {