Exemple #1
0
void ipc_accept_loop(void *ipc, void *ipc_al_sthread) {

	int client_sd;
	void *ipcctrl_thread_arr = safe_array_init();

	while(sthread_isterminated(ipc_al_sthread) == 0) {

		safe_array_clean(ipcctrl_thread_arr, accept_loop_ipcctrl_thread_cnd);

		if ( -1 == (client_sd = ipcsocket_accept(ipc)) ) {
			break;
		} else {

			Tsthread_params stp;

			stp.execute = accept_loop_ipcctrl_execute;
			stp.finish = accept_loop_ipcctrl_finish;
			stp.user_data = new svr_ipcctrl(client_sd);
			stp.free_on_finish = 0;
			stp.initialize = NULL;

			safe_array_add(ipcctrl_thread_arr, sthread_run(&stp));

		}
	}

	safe_array_clean(ipcctrl_thread_arr, accept_loop_ipcctrl_thread_twt);
	safe_array_free(ipcctrl_thread_arr);

}
supla_client_locations::supla_client_locations() {

   this->arr = safe_array_init();

   this->lck = lck_init();
   ids = NULL;
   ids_count = 0;
}
Exemple #3
0
void accept_loop(void *ssd, void *al_sthread) {

	void *supla_socket = NULL;
	void *svrconn_thread_arr = safe_array_init();


	while(sthread_isterminated(al_sthread) == 0) {

		safe_array_clean(svrconn_thread_arr, accept_loop_srvconn_thread_cnd);

		unsigned int ipv4;

		if ( ssocket_accept(ssd, &ipv4, &supla_socket) == 0  ) {
			break;
		} else {

			if ( supla_socket != NULL ) {

				Tsthread_params stp;

				stp.execute = accept_loop_srvconn_execute;
				stp.finish = accept_loop_srvconn_finish;
				stp.user_data = new serverconnection(ssd, supla_socket, ipv4);
				stp.free_on_finish = 0;
				stp.initialize = NULL;

				safe_array_add(svrconn_thread_arr, sthread_run(&stp));
			}

		}

	}

	safe_array_clean(svrconn_thread_arr, accept_loop_srvconn_thread_twt);
	safe_array_free(svrconn_thread_arr);
}
Exemple #4
0
void supla_datalogger::log_temperature() {
  supla_user *user;
  int a;
  int n = 0;
  void *tarr = safe_array_init();

  while ((user = supla_user::get_user(n)) != NULL) {
    n++;
    user->get_temp_and_humidity(tarr);
  }

  for (a = 0; a < safe_array_count(tarr); a++) {
    supla_channel_temphum *sct =
        (supla_channel_temphum *)safe_array_get(tarr, a);

    if (sct->isTempAndHumidity() == 1)
      db->add_temperature_and_humidity(
          sct->getChannelId(), sct->getTemperature(), sct->getHumidity());
    else
      db->add_temperature(sct->getChannelId(), sct->getTemperature());
  }

  supla_channel_temphum::free(tarr);
}
Exemple #5
0
supla_client_channels::supla_client_channels(supla_client *client) {

	this->client = client;
	this->arr = safe_array_init();

}
Exemple #6
0
supla_device_channels::supla_device_channels() {

	arr = safe_array_init();

}