/**
 * @file comms_uhf_intf.h
 *
 * @brief This file has the control blocks, enumeration and function prototypes of SDR control layer of S-Band module
 *
 * @copyright Copyright 2023 Antaris, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

#ifndef COMMS_UHF_INTF_H_
#define COMMS_UHF_INTF_H_

#include "comms_uhf_main.h"


#ifdef __cplusplus
extern "C" {
#endif

/**
* @brief This function config the tx parameter into the comms module
*
* @param[in] tx_cfg : Transmit config
*
* @return sts : status of transmit
*/
#if 0

	e_comms_uhf_tx_cfg_sts comms_uhf_tx_cfg(s_comms_uhf_tx_cfg tx_cfg);
#endif
/**
* @brief This function config the rx parameter into the comms module
*
* @param[in] rx_cfg : Receive config
*
* @return sts : status of receive
*/
#if 0
e_comms_uhf_rx_cfg_sts comms_uhf_rx_cfg(s_comms_uhf_rx_cfg rx_cfg);
#endif

/**
* @brief This function config the sys parameter into the comms module
*
* @param[in] sys_cfg : comms sys config
*
* @return sts : status of sys
*/
#if 0
e_comms_uhf_sys_cfg_sts comms_uhf_sys_cfg(s_comms_uhf_sys_cfg sys_cfg);
#endif
/**
* @brief This function reset the comms modeule
*
* @return sts : status of reset
*/

e_comms_uhf_reset_sts comms_uhf_reset(void);

/**
* @brief This function check the boot for various parameter and initialize
*  respective boot mode
*
* @param[in] mode : comms boot mode
*
* @return sts : status of initialize boot
*/

e_comms_uhf_boot_cfg_sts comms_uhf_boot_cfg(e_comms_uhf_boot_mode mode);

/**
* @brief This function trigger the calibration of the comms module based
* on the configured calibration parameter
*
* @param[in] type : comms calibrate type
*
* @return sts : status of triggered calib comms module
*/
e_comms_uhf_calib_trgr_sts comms_uhf_calib_trgr(e_comms_uhf_calib_type type);

/**
* @brief This function enables the type of tx_rx mode of the comms module
*
* @param[in] mode : comms tx_rx mode
*
* @return sts : status of enabled tx_rx mode type
*/
e_comms_uhf_tx_rx_enbl_sts comms_uhf_tx_rx_enbl(e_comms_uhf_tx_rx_mode mode);

/**
* @brief This function config the tx parameter into the comms module
*
* @param[in] params : pointer to u8
*
* @return sts : status of comms triggered dfu
*/
e_comms_uhf_dfu_trgr_sts comms_uhf_dfu_trg(uint8_t *params);



/**
* @brief This function read the telemetry into comms module
*
* @param[in] type : comms telemetry type
*
* @return sts : status
*/
e_comms_uhf_read_tm_sts comms_uhf_read_tm(e_comms_uhf_tm_type type);

/**
* @brief This function config the tx parameter into the comms module
*
* @param[in] tx_cfg : Transmit config
*
* @return sts : status of transmit
*/
#if 0
e_comms_uhf_tx_cfg_sts comms_uhf_set_tx_cfg(s_comms_uhf_tx_cfg *tx_cfg);
#endif

/**
* @brief This function config the rx parameter into the comms module
*
* @param[in] rx_cfg : Receive config
*
* @return sts : status of receive
*/
#if 0
	e_comms_uhf_rx_cfg_sts comms_uhf_set_rx_cfg(s_comms_uhf_rx_cfg *rx_cfg);
#endif

/**
* @brief This function get the comms transmit configuration.
*
* @param tx_cfg : pointer to Transmit config
* @param size : pointer to size of transmit message
*
* @return status of get tx config
*/
#if 0
e_comms_uhf_tx_cfg_sts comms_uhf_get_tx_c(s_comms_uhf_tx_cfg *tx_cfg, uint16_t *size);
#endif
/**
* @brief This function get the comms receive configuration.
*
* @param rx_cfg : pointer to receive config
* @param size : pointer to size of receive message
*
* @return status of get rx config
*/
#if 0
e_comms_uhf_rx_cfg_sts comms_uhf_get_rx_cfg(s_comms_uhf_rx_cfg *rx_cfg, uint16_t *size);
#endif

/**
* @brief This function set the comms system configuration.
*
* @param sys_cfg : pointer to system config
*
* @return status of set system config
*/
#if 0
e_comms_uhf_sys_cfg_sts comms_uhf_set_sys_cfg(s_comms_uhf_sys_cfg *sys_cfg);
#endif
/**
* @brief This function get the comms system configuration.
*
* @param sys_cfg : pointer to system config
* @param size : pointer to size of system message
*
* @return status of get system config
*/
#if 0
e_comms_uhf_sys_cfg_sts comms_uhf_get_sys_cfg(s_comms_uhf_sys_cfg *sys_cfg, uint16_t* size);
#endif

int8_t sdr_app_sdr_ctrl_uhf_mh_req(void *pld);
int8_t sdr_app_sdr_ctrl_uhf_sdr_cfg_req(void *pld);
int8_t sdr_app_sdr_ctrl_uhf_mode_cfg_req(void *pld);
int8_t sdr_app_sdr_ctrl_uhf_tmr_cfg_req(void *pld);
int8_t sdr_app_sdr_ctrl_uhf_rssi_cfg_req(void *pld);
int8_t sdr_app_sdr_ctrl_uhf_tm_cfg_req(void *pld);
void uhf_initial_sync_hdlr(void);
uint8_t uhf_get_state(void);
int8_t sdr_app_sdr_ctrl_uhf_sdr_gpass_cfg_req(void *pld);





#ifdef __cplusplus
}
#endif
#endif /*COMMS_UHF_INTF_H */
