/*
 * This file is part of the Owl Positioning System (OwlPS) project.
 * It is subject to the copyright notice and license terms in the
 * COPYRIGHT.t2t file found in the top-level directory of this
 * distribution and at
 *   https://code.lm7.fr/mcy/owlps/src/master/COPYRIGHT.t2t
 * No part of the OwlPS Project, including this file, may be copied,
 * modified, propagated, or distributed except according to the terms
 * contained in the COPYRIGHT.t2t file; the COPYRIGHT.t2t file must be
 * distributed along with this file, either separately or by replacing
 * this notice by the COPYRIGHT.t2t file's contents.
 */

/**
 * @file owlps-client.h
 * @brief OwlPS Client library
 *
 * libowlps-client is the library that contains used to send positioning
 * requests (normal, calibration and autocalibration).
 */


#ifndef _LIBOWLPS_CLIENT_
#define _LIBOWLPS_CLIENT_

#include <owlps.h>


/* Function headers */
/// Opens a transmission socket
int owl_create_trx_socket(const char *const dest_host,
                          const uint_fast16_t dest_port,
                          struct sockaddr *const server,
                          const char *const iface) ;
/// Selects a transmission interface for the socket `sockfd`
void owl_use_iface(const int sockfd, const char *const iface) ;
/// Transmits a request
void owl_send_request(const int sockfd,
                      const struct sockaddr *const server,
                      const void *const packet,
                      const uint_fast16_t packet_size,
                      const uint_fast16_t nb_pkt,
                      const uint_fast32_t delay,
                      const bool verbose) ;
/// Transmits a packet
void owl_send_packet(const int sockfd,
                     const struct sockaddr *const server,
                     const void *const packet,
                     const uint_fast16_t packet_size,
                     const bool verbose) ;


#endif // _LIBOWLPS_CLIENT_
