103 lines
4 KiB
C
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
|