FreeTRX/MDUV380_firmware/application/include/hardware/radioHardwareInterface.h
2026-07-06 08:45:33 +02:00

103 lines
4 KiB
C

/*
* Copyright (C) 2021-2025 Roger Clark, VK3KYY / G4KYF
*
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* 4. Use of this source code or binary releases for commercial purposes is strictly forbidden. This includes, without limitation,
* incorporation in a commercial product or incorporation into a product or project which allows commercial use.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef _RADIO_HARDWARE_INTERFACE_H_
#define _RADIO_HARDWARE_INTERFACE_H_
#include "main.h"
typedef enum
{
RADIO_DEVICE_PRIMARY = 0U,
#if defined(PLATFORM_MD2017)
RADIO_DEVICE_SECONDARY = 1U,
#endif
RADIO_DEVICE_MAX
} RadioDevice_t;
#define FREQUENCY_UNSET UINT32_MAX
#define FREQUENCY_OUT_OF_BAND UINT32_MAX
#define POWER_UNSET UINT8_MAX
void radioPowerOn(void);
void radioPowerOff(bool invalidateFrequency, bool includeMic);
void radioInit(void);
void radioPostinit(void);
RadioDevice_t radioSetTRxDevice(RadioDevice_t deviceId);
RadioDevice_t radioGetTRxDeviceId(void);
void radioSetBandwidth(bool Is25K);
void radioSetCalibration(void);
void radioSetIF(int band, bool wide);
void radioSetMode(int mode);
void radioSetFrequency(uint32_t freq, bool Tx);
void radioSetTx(uint8_t band);
void radioSetRx(uint8_t band);
void radioReadVoxAndMicStrength(void);
void radioReadRSSIAndNoiseForBand(uint8_t band);
void radioRxCSSOff(RadioDevice_t deviceId);
void radioRxCTCSOn(RadioDevice_t deviceId, uint16_t tone);
void radioRxDCSOn(RadioDevice_t deviceId, uint16_t code, bool inverted);
void radioTxCSSOff(void);
void radioTxCTCSOn(uint16_t tone);
void radioTxDCSOn(uint16_t code, bool inverted);
bool radioCheckCSS(uint16_t tone, CodeplugCSSTypes_t type);
void radioSetTone1(int tonefreq);
void radioSetTone2(int tonefreq);
void radioSetMicGain(uint8_t gain_tx);
void radioSetMicGainFM(uint8_t gain);
void radioAudioAmp(bool on);
void radioSetAudioPath(bool fromFM);
void radioFastTx(bool tx);
void radioSetRxLNAForDevice(RadioDevice_t deviceId);
void radioSelectVoiceChannel(uint8_t channel, uint8_t *voiceGainTx, uint16_t *deviation);
extern RadioDevice_t currentRadioDeviceId;
typedef struct
{
volatile uint32_t trxDMRModeRx;
uint32_t currentRxFrequency;
uint32_t currentTxFrequency;
uint32_t lastSetTxFrequency;
uint32_t trxCurrentBand[2];
uint32_t trxDMRModeTx;
uint32_t currentMode;
volatile uint8_t trxRxSignal;
volatile uint8_t trxRxNoise;
uint8_t txPowerLevel;
uint8_t lastSetTxPowerLevel;
bool currentBandWidthIs25kHz;
bool analogSignalReceived;
bool analogTriggeredAudio;
bool digitalSignalReceived;
} TRXDevice_t;
extern TRXDevice_t *currentRadioDevice;
extern TRXDevice_t radioDevices[RADIO_DEVICE_MAX];
#endif