]> pilppa.org Git - libplpdevicebus.git/blobdiff - src_server/DeviceManagerServer.cc
added error checks
[libplpdevicebus.git] / src_server / DeviceManagerServer.cc
index ffa688e6ae436483e192bac67a5cd44ed9b5affa..d83accb671f6d4c06c786ce09b868ab5801844fe 100644 (file)
@@ -25,17 +25,24 @@ static void *device_data_reader_thread(void *thread_args_pointer) {
        list<Device *>::iterator        list_iter;
        Device                          *device;
        SensorDevice                    *sensor;
+       long                            read_int_sec;
+       plp::Data                       *data;
 
+       read_int_sec    = DeviceConfig::get_read_interval_seconds();
+       if (read_int_sec < 0)
+               read_int_sec = 600;
        _dev_lst        = (list<Device *> *)thread_args_pointer;
        while(1) {
                for (list_iter = _dev_lst->begin(); list_iter != _dev_lst->end(); list_iter++) {
                        device  = (Device *)*list_iter;
                        sensor = dynamic_cast<SensorDevice *>(device);
                        if (sensor != NULL) {
-                               sensor->get_data();
-                               sleep(60);
+                               data = sensor->get_data();
+                               if (data != NULL)
+                                       delete(data);
                        }
                }
+               sleep(read_int_sec);
        }
        pthread_exit(NULL);
 }
@@ -44,7 +51,10 @@ DeviceManagerServer::DeviceManagerServer(list<Device *> dev_lst_param) {
        //DeviceConfig::set_base_dir_name(storage_dir_param);
        //_dev_lst      = Factory::get_device_list();
        _dev_lst        = dev_lst_param;
-       log_info("device count: %lu\n", _dev_lst.size());
+       /* In some toolchains the size is not unsigned int instead of long
+           unsigned int, and that can cause warnings/errors without typecasting 
+         */
+       log_info("device count: %lu\n", (long unsigned int)_dev_lst.size());
        _lstnr_thrd     = 0;
        pthread_create(&_lstnr_thrd,
                        NULL,
@@ -62,6 +72,7 @@ void DeviceManagerServer::get_device_list(const BusMessage *ret_val) {
        SensorDevice                    *sensor;
        int                             indx;
        ostringstream                   key;
+       string                          data_str;
 
        indx    = 0;
        ((BusMessage *)ret_val)->add_int_parameter(RSP__DEVICE_LIST__DEVICE_COUNT, _dev_lst.size());
@@ -89,8 +100,10 @@ void DeviceManagerServer::get_device_list(const BusMessage *ret_val) {
                                key << RSP__DEVICE_LIST__DATA << indx;
                                data    = sensor->get_data();
                                if (data != NULL) {
-                                       log_debug("returning data: %s\n", data->to_string().c_str());
-                                       ((BusMessage *)ret_val)->add_string_parameter(key.str(), data->to_string());
+                                       data_str = data->to_string();
+                                       log_debug("returning data: %s\n", data_str.c_str());
+                                       ((BusMessage *)ret_val)->add_string_parameter(key.str(), data_str);
+                                       delete(data);
                                }
                        }
                        indx++;
@@ -153,14 +166,18 @@ void DeviceManagerServer::get_latest_data(BusMessage *msg_req_param, const BusMe
                                if (data != NULL) {
                                        cnt     = data->get_value_count();
                                        ((BusMessage *)ret_val)->add_int_parameter(RSP__GET_LATEST_DATA__VALUE_COUNT, cnt);
-                                       ((BusMessage *)ret_val)->add_string_parameter(RSP__GET_LATEST_DATA__DATE, data->get_date().to_string());
-                                       add_data_values_to_bus_message(ret_val, data, RSP__GET_LATEST_DATA__VALUE);
+                                       ((BusMessage *)ret_val)->add_string_parameter(RSP__GET_LATEST_DATA__DATE,
+                                                                               data->get_date().to_string());
+                                       add_data_values_to_bus_message(ret_val,
+                                                                       data, RSP__GET_LATEST_DATA__VALUE);
                                        ((BusMessage *)ret_val)->printout();
                                        dr      = ((DataReader *)reader)->get_daily_summary(MIN);
                                        if (dr != NULL) {
                                                if (dr->get_count() > 0) {
                                                        data    = dr->get_first()->clone();;
-                                                       add_data_values_to_bus_message(ret_val, data, RSP__GET_LATEST_DATA__MIN_VALUE);
+                                                       add_data_values_to_bus_message(ret_val,
+                                                                       data,
+                                                                       RSP__GET_LATEST_DATA__MIN_VALUE);
                                                }
                                                delete(dr);
                                        }
@@ -168,7 +185,9 @@ void DeviceManagerServer::get_latest_data(BusMessage *msg_req_param, const BusMe
                                        if (dr != NULL) {
                                                if (dr->get_count() > 0) {
                                                        data    = dr->get_first()->clone();
-                                                       add_data_values_to_bus_message(ret_val, data, RSP__GET_LATEST_DATA__MAX_VALUE);
+                                                       add_data_values_to_bus_message(ret_val,
+                                                                               data,
+                                                                               RSP__GET_LATEST_DATA__MAX_VALUE);
                                                }
                                                delete(dr);
                                        }